operating-system


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.

Related Links

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?

Categories

HOME
extjs
plesk
ontouchlistener
softlayer
redmine
concurrency
enums
dronekit-python
linker
sentry
cocotb
wine
stack-overflow
fireloop
csrf
feature-extraction
scala-ide
spam
gitkraken
hdl
quantitative-finance
perfino
chronicle-queue
pyopencl
webviewclient
beego
running-object-table
points
acrobat
dnsmasq
fusion
xenapp
commonsware-cwac
memory-fences
nest
custom-keyboard
directfb
bootstrap-sass
java-stream
bean-validation
forms-authentication
contactless-smartcard
notesview
web-inspector
jenkins-slave
spongycastle
return-type
xcglogger
sony-future-lab-n
nonlinear-functions
renderman
spring.net
dtd
rational-performance-test
metabase
tablespace
data-management
spring-mongo
cdo.message
node-glob
highest
calcite
screen-orientation
embeddedwebserver
shell-extensions
dos2unix
lifetime
n-tier-architecture
nesper
back
quantify
aho-corasick
maven-central
windows-messages
air-native-extension
xmi
particle-swarm
colon
sunstudio
asp.net-mvc-3-areas
oembed
clrprofiler
msinfo32
taskkill
prototypal-inheritance
drawimage
boost-foreach
groovy-console
3des
pyjamas
outlook-2007-addin
activestate
resharper-5.0
bucket

Resources

Database Users
RDBMS discuss
Database Dev&Adm
javascript
java
csharp
php
android
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App