(一)概论篇
操作系统主要功能可以概括为:
(1)fork() -> 开启新的进程;
(2)time-share -> 实现多任务;
(3)isolation between processes -> 所有的进程之间是独立的;
(4)work with each other ->进程之间的通信,比如pipe
总结起来就是三点:多任务,独立进程块,相互通信
设计的不是太好的操作系统内核,提供的库应用可以选择不使用,意味着内核无法控制进程,系统的表现依赖于app是否可以放弃执行权。
好的内核需要做到:
(1)好的内核必须将硬件资源抽象出来,例如我们在unix系统中读写文件,而不是直接操作硬盘。
(2)好的内核提供任务切换接口,所以app不需要考虑任务切换带来的寄存器保存与恢复问题。
(3)好的内核需要安排内存,apps只需要用就可以;
(二)kernel mode && user mode
内核模式拥有一些特殊指令,比如读写硬盘,假如app想要执行这些指令,这个app将会比kill,。同时,内核模式运行与内核空间。
用户模式执行一般指令,运行于用户空间。如果用户app必须执行特殊指令,它必须切换到kernel mode。