OS Organization and System Calls
Isolation
操作系统(OS)是硬件(hardware)和应用程序的中间体。下面将假想没有OS的情况下,从隔离性(isolation)(所谓的隔离性在我的理解看来有两个含义,1. 指应用程序与hardware的隔离,2.指应用程序与应用程序的隔离。下面从隔离性的角度讲述为什么需要OS。
CPU
如下图,多个程序需要使用CPU时,需要保证协同调度(Cooperative Scheduling)的机制,即shell
运行一段时间后,需要让echo
也能有机会运行。可下图的设计不能保证这种机制,比如shell
程序中有死循环,那么echo
永远也无法获取CPU。
Memory
如果应用程序直接运行在硬件资源如物理内存上,shell
和echo
的内存之间是没有边界的。比如内存地址0x1000被shell
占有,如果echo
程序将数据存储在0x1000,echo
就会覆盖shell
程序内存的内容。
![截屏2022-06-17 18.19.57](http://cdn.zhengyanchen.cn/img202206171820394.png)
以上的两点问题对应着OS实现的两个机制
- 多进程对CPU的分时复用(Multiplexing)
- 物理内存的隔离性(Isolation)
从Isolation的角度看Unix接口
接口通过抽象硬件资源,从而使强隔离性成为可能性.即:普通的应用程序会通过Unix接口使用硬件资源,但它又不能直接使用硬件资源,OS将帮助应用程序完成这一过程,OS将会实现Multiplexing和Isolation。
-
接口
fork
创建了进程(process) ,但实际要使用的是CPU。process其实是对CPU的抽象。这并不意味着CPU和process的一一对应,以RISC-V处理器为例,它有四个核,当有四个process时,可以做到一个process占用一个核。但有更多process时,则需要OS调度process是实现分时复用。