1 00:00:06,530 --> 00:00:07,669 Let's talk about the kernel. 2 00:00:08,789 --> 00:00:11,250 To use computer hardware, a kernel is needed. 3 00:00:12,289 --> 00:00:16,809 The kernel has core operating system components and it dynamically loads drivers. 4 00:00:18,109 --> 00:00:21,089 And the kernel ensures security, stability and performance. 5 00:00:21,850 --> 00:00:27,899 It's really the most essential part of the operating system and it has main responsibilities. 6 00:00:28,800 --> 00:00:34,990 It is responsible for processes, it's responsible for memory management, for file system 7 00:00:34,990 --> 00:00:41,179 management, for device management, for networking, for interrupt handling and hardware communication. 8 00:00:42,119 --> 00:00:46,780 And it uses system calls to provide user space interaction. 9 00:00:47,659 --> 00:00:52,019 What does that mean? Well, that means that if you run an application in user 10 00:00:52,019 --> 00:00:56,379 space that needs to communicate with the kernel, it uses a so called system call. 11 00:00:57,039 --> 00:01:00,819 That's a deep level instruction that you will normally never find unless you are 12 00:01:00,819 --> 00:01:04,599 going to search for it or you are going to use the audit subsystem. 13 00:01:06,079 --> 00:01:08,439 So let's talk about user space and system space. 14 00:01:09,299 --> 00:01:10,900 The kernel audience is system space. 15 00:01:11,659 --> 00:01:15,060 That is a privileged execution environment where no restrictions apply. 16 00:01:16,019 --> 00:01:20,604 You can't have restrictions in system space because it is about the kernel. And 17 00:01:20,604 --> 00:01:25,189 the kernel needs full access to the hardware, which is used by using drivers. 18 00:01:25,930 --> 00:01:29,790 Drivers, also known as kernel modules, are also a part 19 00:01:29,790 --> 00:01:33,650 of system space and applications normally run in user space. 20 00:01:34,650 --> 00:01:36,569 And that is a restricted environment. 21 00:01:37,409 --> 00:01:40,914 And for applications to access components that are running in 22 00:01:40,914 --> 00:01:44,419 system space, as just mentioned, system calls are used. 23 00:01:45,060 --> 00:01:51,680 Before continuing, I would like to make a drawing to make it more clear what exactly this user space and system space is doing.