At the highest level, system design is dominated by the choice of hardware and system type.
Beyond this level, the requirements can be divided into two groups: user goals, and system goals.
- User goals include convenience, reliability, security, and speed.
- System goals include ease of design, implemenation, maintenance, flexibility, and efficiency.
At first, operating systems were written in assembly, but now a days C/C++ is the language commonly used
- Small blocks of assembly code are can still be found, though generally only for device drivers.
Using higher level languages allow code to be written faster, is easier to read, and can be debugged easier. It also makes the OS much easier to port to different systems
A monolithic kernel, such as Linux and other Unix systems.
This approach breaks up the operating system into different layers.
This allows implementers to change the inner workings, and increases modularity.
As long as the external interface of the routines doesn’t change, developers have more freedom to change the inner workings of the routines.
With the layer approach, the bottom layer is the hardware, while the highest layer is the user interface
- The main advantage is simplicity of construction and debugging
- The main difficulty is defining the various layers
- The main disadvantage is they tend to be less efficient than other implementations
The Microsoft Windows NT Operating System. The lowest level is a monolithic kernel, but many OS components are at a higher level, but still part of the OS.
This structures the operating system by removing all nonessential portions of the kernel and implementing them as system and user level programs.
- Generally they provide minimal process and memory management, and a communications facility.
- Communication between components of the OS is provided by message passing.
The benefits of the microkernel are as follows:
- Extending the operating system becomes much easier.
- Any changes to the kernel tend to be fewer, since the kernel is smaller.
- The microkernel also provides more security and reliability.
Main disadvantage is poor performance due to increased system overhead from message passing.
A Microkernel architecture.
Booting the system is done by loading the kernel into main memory, and starts its execution.
The CPU is given a reset event, and the instruction register is loaded with a predefined memory location, where execution starts.
- The inintal bootstrap program is found here in the form of read-only memory.
- This program can run diagnostics, initalize all components of the system, and start the operating system.