"Any problem in the computer science field can be solved by adding an indirect middle layer"
This sentence almost summarizes the key points of the design of the computer system software architecture. The entire architecture is designed in strict hierarchy from top to bottom. The entire system of computer system software is like this. Each component in the system, such as the operating system itself, many applications, software systems, and even many hardware structures are organized and designed at this level. The location of various software in the system software architecture.
Each layer must communicate with each other. Since communication is required, there must be a communication protocol.Interface)The lower layer of the interface is the interface provider defined by it. The upper layer of the interface is the interface user, and it uses the interface to implement the required functions. In a hierarchy, the interface is carefully designed and remains stable as much as possible. Theoretically, any layer can be modified or replaced as long as it follows the interface. In addition to hardware and applications, the other layer is called the middle layer. Each middle layer is packaged and extended to the layer below it. This ensures that applications and hardware are relatively independent. For example, hardware and operating systems are constantly evolving, however, the software originally designed for the 80386 chip and the DOS system can still run under the latest multi-core processor Windows Vista, which maintains backward compatibility between the hardware and the operating system itself, on the other hand, the reason is that the hierarchical structure is designed.
Recently, the popular virtual machine technology adds a virtual layer between hardware and operating systems, allowing a computer to run multiple operating systems at the same time. This is also a benefit of hierarchies. In the case of as few changes or even no changes to other layers as possible, new hierarchies can provide unprecedented functions.
In our software system, applications are at the top, such as web browsers, email clients, multimedia players, and image browsers. From the perspective of the entire hierarchy, development tools and applications belong to the same level, because they all use an interface, that isOperating System Application Programming Interface (API). The application interface provider isRuntime Library, What kind of Runtime Library provides what kind of API, such as the posix api provided by the glibc library in Linux; Windows API provided by the Windows Runtime Library.
The Runtime library usesSystem Call Interface(System Call Interface), system call interfaces are often provided in the form of software interruption. For example, Linux uses 0x80 interrupt as the system call interface, in Windows, 0x2e is used as the system call interface.
The operating system kernel layer is the user of the hardware interface on the hardware layer, while the hardware is the interface definition. The hardware interface definition determines the operating system kernel, specifically, it is how the driver operates the hardware and communicates with the hardware. This kind of interface is often called the hardware specification. The hardware vendor provides the hardware specification, developers of operating systems and drivers write operating systems and drivers by reading various hardware programming interface standards specified in the hardware specification documentation.
Architecture of Computer Software