Composition Of An OS [closed]
Are all parts of an operating system processes? And in case this does not apply, what is an OS commonly made up of then?
An operating system (OS) consists of a kernel and system programs. Kernel The kernel implements basic abstraction from the hardware to ease up the life of programers to access the HDD, SSD, the screen, or GPU, for example. These services are then provided in shape of system calls, which can be invoked by processes to perform said operations. Since the advent of protection mechanisms, the kernel runs in a higher privileged mode called supervisor mode than the processes (a.k.a. user programs) called user mode. Otherwise, as in good old DOS times, the OS could easily be overwritten by user programs and users could take over the system. There are different types of kernels: Monolithic Kernel The kernel contains all abstraction mechanisms necessary to directly run user programs. It is fast because less interfaces and privilege mode switches are involved but it's technically less secure because every part of the kernel may access everything. Example: Linux (initiated by Linus Torvalds)1 Microkernel The kernel contains the most basic abstraction, which absolutely requires higher privileges granted by the kernel. Everything else like many drivers are implemented in the so-called user space, as opposed to kernel space. The kernel runs slower because more interfaces and privilege mode switches are involved but it's technically more secure because only the innermost kernel parts have the highest privilege levels and everything else needs permission. Example: Minix (initiated by Andrew S. Tanenbaum)1 Exokernel2 An exokernel is an even more rigid microkernel. It provides only the most basic abstraction. I suppose it's exokernel because most of the code is outside (ex - lat. out) the kernel. Example: ExOs (from MIT), Singularity (Microsoft research project), whose security is mostly enforced by static code analysis techniques Unikernel2 Unikernels are highly-specialized and minimal. They consist of some library operating system, which basically is a library running directly on the hardware, and a user-defined part, which determines its actual task. The user chooses from a diversity of library components, whatever fits her/his needs, which eventually constitute a runtime library the user runs her/his software on. I assume the name "unikernels" comes from them serving only one (one - lat. unum) purpose, so they are minimal and specialized. Example (library OS): MirageOS Furthermore, there are hybrids of multiple kinds of kernels and other types of kernels I don't know. But the ones listed above constitute the vast majority of all kernels. System Programs Now we know what the kernel is. But what about the system programs? They are user programs that provide means of actually accessing the system. Examples are a text editor, a window manager, a shell (and Counterstrike ;-)). The kernel alone does not make for a usable system. It provides system calls and such but without actual programs making use of these system calls the OS is useless. Your Question Answered As you see, not all parts of an OS are processes, so not all parts are "executable as processes." The kernel is not a process because it runs in privileged mode and does not run in the context of another kernel, which supervises its actions. 1 If you're interested, you may read the Tanenbaum-Torvalds debate, in which said Minix and Linux creators discuss benefits and drawbacks of monolithic and microkernels. 2 Thanks to #BasileStarynkevitch for your contribution to those topics in this answer.
OS - User stack - not really 4096 of usable memory
how to initialize PCB in an operating system like Linux？
Hardware Support for Paging
What does the User/Supervisor bit in the page table entry mean?
qemu request for a disc image
How does the OS decide data that goes in each page?
SCAN and C-SCAN disk scheduling
Why xv6 scheduler calls sti() in the begining of every loop?
How do i find bits in virtual and physical address?
Why not to double number of registers for fast syscalls?
can i use pen drive for booting os into beagle board xm instead of sd card
How to Calculate Effective Access Time
Had 16-bit DOS a memory access limitation of 1 MB? If yes, how?
Determine addresses and page table size
How to detect operating system with GIMP scheme?
Does ARM have any mechanism like the VESA/VGA text mode console on x86?