Pages

Monday, April 15, 2013

differences between operating systems and application software


The operating system acts as a host for all other software on the computer system and offers hardware services to them by acting as a virtual machine and hides the complexity of the hardware. It is the software what operates all the hardware functions and software on the computer system. That is the reason it is called "operating system". Other usuall names for the operating system was a "master program", "supervisor", "kernel", "controller", "core" or "nucleus". 

(4)the User
(3)Application Programs
(2)System Software
(1)Operating System
(0)Hardware

The operating system (level 1) allows other software work on the computer (level 0). Other software are system programs (level 2), system libraries (level 2), and application programs with their own software libraries (level 3). System programs are such what offers user interface to the operating system or for the other application programs so the user (level 4) can use the computer. System libraries are shared libraries what gets used by system programs or application programs. Typical system library is a C-library and system programs like command interpreter offering command line interface or Xorg offering a graphical windowsystem for graphical desktops. Application programs are then the typical software that user use, like word, spreadhseet, painting program, web browser and music player.

The typical operating system has one of the most used architectures. A monolithic, server-client or layered. The operating system is structured by different ways on every architecture. There are multiple different architectures and what belongs to the operating system itself, is mostly case-by-case. 

Monolithic architecture is the first and so on oldest way to build operating system. That time the operating system was mostly know as kernel. The kernel alone includes all the functions of the operating system. It works alone in the kernel space and alone as supervisor. The operating system was working alone in the kernel space and was protected from tampering by running all system software in the different address space called as userland or user space. The monolithic kernel is the operating system and offers all the system calls for the user space. User can extend the system calls what the monolithic OS offers by using a system call wrapper what is normal system software top of the operating system. Usually it is a C library but user can write easily own. The monolithic operating system can be modular as well. But the modularity is on binary level only and not on the architecture level. When module is attached to the kernel, it works just like it would be compiled as part of it. 

It is crucial but subtle point to understand that the monolithic kernel is the operating system alone and no other software belongs to it. 

The demanded need for theoretical better security and stableness (while losing speed) caused that other OS architecture was born and was called server-client. The operating system sliced to multiple parts. The most important part of that OS was the microkernel what included only the most important features of the OS. All other OS functions like device drivers, filesystem, network protocols (OSI layer 3), memory management etc, was spread to run as protected process in the different address space. The pure server-client architecture is that microkernel works alone in the kernel space and all other parts of the OS works in user space. They are called as operating system servers or modules and the microkernel controls them with IPC (Inter-Process Communication). They acts like servers for all the other software on the software system, but are modules for the microkernel. You can mix the server-client architecture by moving some, if not all modules/servers back to the kernel space but even then they are not part of the microkernel. Servers are protected from each other and all other software on the software system. Every server runs in supervisor mode like the microkernel as well and every operating system server offers system calls to other programs. It is crucial to understand that the modularity is on architecture level and on binary level.Together the microkernel and modules build up the complete operating system.

The third architecture is a layered model what is based to the microkernel idea to have a tiny microkernel and OS servers. But instead running every server alone offering their functions to other system software, they are layered. Every layer uses lower level layer functions and offers owns for others top of it. Every layer offers system calls and they pass calls from top to bottom when needed. The microkernel controls all the layers.

Then there is few more rare architectures what has even smaller kernel than what microkernel is. Typical microkernel has few thousands lines of code. The nanokernel or exokernels has less than that. While the monolithic kernel including all OS functions from device drivers to memory management, filesystems, it's size is counted in millions lines of code. Linux OS is now today over 11 million lines of code, mostly device drivers. 

Some corporations wanted to market their own server-client architecture operating system as better than pure microkernel-based operating systems. They tried to push a new ideal architecture called Hybrid kernel. It was told to be as fast as the monolithic operating system, but as secure and stable as the pure server-client architecture OS. It was not success on the science side but was successfully on the marketing side for normal people. The hybrid kernel is not a new architecture for the OS. It includes the typical microkernel but it just is not pure by the original idea. Some of the OS servers are moved back to the kernel space (separated from the microkernel itself) and some, like device drivers, are running still on the other user space. Some of the technologies allows the whole server-client operating system run in one address space but every process is a SIP.

Then there are very rare architectures where the operating system has multiple kernels. Every CPU core is assigned by own kernel. The kernel controls the core and together all OS servers can use them when needed.

It is very crucial, but subtle point, that application programs like games, web browsers, mediaplayers, office software, text editors and so on are NOT part of the operating system. The user can not interact with the operating system. User sees other software and interact through them with the operating operating system what operates all the hardware and software on the computer system .

0 comments:

Post a Comment