操作系统重要引论
操作系统是运行在内核态下的软件(有时候在内核态外运行的的程序也有被认为是操作系统的一部分,如文件系统在用户态下运行)。我们很难给操作系统下一个定义。从功能上去认识操作系统是一个有用的途径。任务一:为应用程序提供计算机资源集的清晰的抽象。任务二:管理所以的硬件资源。
基本术语解释
内核态和用户态
现代计算机多数都支持这两种运行的模式。模式的切换是由硬件保护的。内核态下运行的操作系统程序对所有硬件据有完全的访问权限,并且可以执行所有的机器指令。操作系统对于计算机据有完全的使用权。用户态下程序只能使用计算机指令集的一个子集。那些会影响机器的控制和I/O操作的指令,在用户态下是禁止使用的。抽象是解决复杂性问题的方式
好的抽象可以把一个几乎不可能的任务划分成两个可管理的部分。其第一部分是有关抽象的定义和实现。第二是随时用这些抽象解决问题。从CPU取指令,解码,到执行抽象成多进程。物理内存到地址空间的抽象。磁盘数据块到文件的抽象。天啦!感谢这些天才的抽象,让我们能够如此方便和优雅的使用这么复杂的硬件系统。处理器
CPU从内存中取出指令并执行。在每个CPU基本周期中,首先从内存中取出指令,解码以确定类型和操作数,执行指令。
由于访问内存读取指令的耗时要比执行指令的时间长很多。CPU中有保存变量和临时数据的寄存器。
多数计算机还有一些对程序员可见的寄存器:程序计数器
保存将要取出的下一跳指令的内存地址。堆栈指针寄存器
保存内存中当前栈的顶端。堆栈中保存有输入参数,局部变量,还没有保存在寄存器中的临时变量。程序状态字
保存了CPU优先级,模式(内核态/用户态),其他控制位。允许程序员修改某些位上的值。
指令流水和并行执行现代计算机都有多个cpu,每个cpu上有独立的取指单元,解码单元,执行单元。这样分级的操作就形成了指令流水,和实现了真正的并行,而不是并发。