A kernel is the central part of an operating system.
It manages the operations of the computer and
the hardware - most notably memory and CPU time. It provides services so programs can request the use of the disk or other piece of hardware, manages the file system and sets interrupts for the CPU to enable multitasking. It handles the rest of start-up as well as input/output requests from software, translating them into data-processing instructions for the central processing unit. It handles memory and peripherals like keyboards, monitors, printers, and speakers. A monolithic kernel is an operating system architecture where the entire operating system is working in kernel space. A monolithic kernel, which contains many device drivers. A microkernel, which only contains basic functionality. A microkernel is a piece of software that contains the near-minimum amount of functions and features required to implement an operating system. A modern computer operating system usually segregates virtual memory into kernel space and user space.[a] Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour. User mode is where all user programs execute. It does not have access to RAM and hardware. The reason for this is because if all programs ran in kernel mode, they would be able to overwrite each other’s memory. If it needs to access any of these features – it makes a call to the underlying API. Each process started by windows except of system process runs in user mode. A virtual machine (VM) is an emulation of a computer system. Multiprogramming is a rudimentary form of parallel processing in which several programs are run at the same time on a uniprocessor. Since there is only one processor, there can be no true simultaneous execution of different programs. Instead, the operating system executes part of one program, then part of another, and so on. To the user it appears that all programs are executing at the same time. Input/output operations are considered privileged instructions, accessible only in kernel mode. Each attempt to access kernel (monitor) memory or other user’s memory should be immediately sanctioned by issuing a (fatal) trap instruction, treated as a fatal error. The main purpose of memory protection is to prevent a process from accessing memory that has not been allocated to it. This prevents a bug or malware within a process from affecting other processes, or the operating system itself. Protect the processor by using a timer, set-up for a specified amount of time, fixed or variable.