This should be the basic way to design an Operating System
General
An OS takes care for all input and output in a computer system. It manages users, processes, memory management, printing, telecommunication, networking etc.
It sends data to a disk, the printer, the screen and other peripherals connected to the computer
And because every machine is build different, commands for in or output will have to be treated differently too. In almost all cases an Operating System is not one large big behemoth but consists of many small system programs governed by the core or kernel of the OS. Because of the compactness of these small supporting programs it is easier to rewrite parts or packages of the OS than to redesign an entire program.
In general programmers only have to make a "call" to the system to make things happen
This not only makes their live less miserable but the production time becomes shorter. As well as that programs can run on different types of machines with the same family of CPU's without changing anything in the program. This is what makes a standard Operating System so important.
In fact any form of standardization is important for production and compatibility
Operating System Design Principles
Operating system design is a complex task. One of the driving forces behind software engineering was the complexity of OS design. (See, for example, The Mythical Man Month by Frederick Brooks).
.
System design goals:
User interface: should the interface be easy to learn by a novice user, or should it be designed for the convenience of an experienced user? (multiple user interfaces?)
Efficient system resource management. Unfortunately, the more complete the resource management, the more overhead.
Security. Once again, the more secure a system is the less efficient it is.
Flexibility. Most operating systems come preconfigured for many different devices. Part of the process of setting up a particular machine is to construct a version of the operating system that is tuned for the local installation. This tuning often involves setting certain limits, such as the maximum number of processes. It also involves specifying the attached hardware so that only the necessary drivers will be loaded. Some operating systems can load and unload drivers automatically at run-time.
Portability. Will the operating system be portable to widely varying types of hardware, or just different models of a particular class of hardware?
Backwards compatibility and emulation. Is it important that software that ran under previous operating system versions or under different operating systems be supported?
.
Layered design:
Operating system consists of multiple layers. Each layer depends on the on the layer(s) beneath it.
http://www.thocp.net/software/operating ... ystems.htm