操作系统原理
第一章 操作系统概述
一.操作系统的概念和功能
1.1 计算机系统的体系结构
1.1.1 单处理器系统
只有一个主CPU,来执行一个通用指令集。几乎所有单处理器系统都带有其他专用处理器,所有这些专用处理器执行有限指令集,而并不执行用户进程。
1.1.2 多处理器系统(并行系统)
有多个紧密通信的CPU,它们共享总线,有时也共享时钟,内存,外设。相比于单处理器系统,节约了成本,提高了可靠性,因为单个处理器的失灵不会使得整个系统都停止。目前多处理系统有两种类型,第一种是非对称处理,即每个处理器都有各自特定的任务;而比较常用的是对称多处理,即每个处理器都参与完成操作系统的所有任务。多处理系统使系统的内存访问模型从均匀内存访问(UMA)到非均匀内存访问(NUMA)
UMA:CPU访问RAM的所需时间相同(问RAM是啥的,回去看看计算机组成原理吧)。
NUMA: 有的内存访问的所需时间更多,会降低性能。操作系统可以通过资源管理改善NUMA。
多核:CPU集成多个计算核到单个芯片,这种多处理系统就被称为多核。
1.1.3 集群系统
集群系统将多个CPU组合在一起,与多处理系统不同,它是由两个或多个独立系统组成,每个节点可为单处理器系统或多核系统。和多处理系统类似的,它具有高可用性,也就是集群里面有一个或多个系统出错,但仍可继续提供服务,类似多处理系统可靠性。
非对称集群:一台机器处于热备份模式,另一台在运行应用程序,热备份主机只会监视活动服务器,当活动服务器失效时,则热备份主机就变成活动服务器。
对称集群:两个或多个主机都运行应用程序,并且互相监视,这种结构比非对称结构更高效。
并行计算:每个集群的所有计算机可以并发执行一个应用程序,这种应用程序使用专门的技术编写,这种技术即为并行计算。
1.2 操作系统概念
计算机的层次结构:至下而上分别是:裸机,操作系统,应用程序,用户,其中用户既与应用程序接触,也与操作系统接触(应用程序比如原神)
操作系统的定义:操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件
1.3 操作系统结构
1.3.1 多道程序设计
操作系统最重要的一点就是具有多道程序能力,它能够安排编码和数据使得CPU总有一个执行作业,从而提高CPU利用率。
操作系统在内存中同时保存多个任务,但主存的空间太小,肯定不能容纳所有数据,因此先将这些作业(就是上面的编码与数据)保存到磁盘的作业池里面,作业池里面包含了磁盘上的和等待分配内存的所有进程。下图便是多道程序系统的内存分布:
1.3.2 分时系统
对于分时系统,CPU还是通过切换作业来执行多个作业,但由于切换频率很高,用户可以在程序运行时与其交互。
分时系统要求计算机系统是可交互的,允许多个用户同时共享一台计算机,其采用CPU调度和多道程序设计,和多道程序需要在内存中同时保存多个作业。
可交互的:用户通过输入设备(如鼠标键盘等)向操作系统或程序发出指令,并等待输出设备的即时结果,响应时间较短,通常小于1s。
进程:加载到内存并执行的程序,在分时系统中,其为每个用户提供一小部分的分时计算资源,每个用户至少有一个程序在内存中。
CPU调度:如果有多个任务同时等待执行,那么系统应当做出选择
作业调度:如果有多个作业可以被加载到内存,同时内存太小而不能容纳所有作业,那么系统将做出选择
1.4 操作系统的执行
现代操作系统是中断驱动的,如果没有进程需要执行,没有I/O设备需要服务,没有用户需要响应,那么操作系统就会默默等待某个时间的发生。而事件总是由中断或陷阱引起的。
陷阱是一种软件生成的中断,或源于出错,或源于用户程序的特定请求。
1.4.1 双重模式和多重模式
为了确保操作系统正确运行,我们必须将操作系统的代码和用户代码区分开来。至少需要两种单独的运行模式:用户模式和内核模式。计算机硬件可以通过一个模式位bit来表示当前模式,例如内核模式为0,用户模式为1,有了模式位,就可以区分操作系统执行的任务和用户执行的任务了。有时候用户会通过系统调用请求操作系统服务,系统就必须从用户模式切换到内核模式,如下图所示:
可见,硬件在用户模式下执行应用程序,遇到陷阱或中断后会切换到内核模式
特权指令:硬件只能在内核模式下才允许执行的指令,该指令是可能引起损害的机器指令,例如,切换到用户模式的指令就是特权指令,还有一些特权指令有I/O控制,定时器管理,中断管理等(如果在用户模式下尝试去执行特权指令,硬件会认为该指令非法)
指令执行的生命周期:起初操作系统进行控制(内核模式),控制转交给一个用户应用(用户模式),通过陷阱、中断或系统调用回到操作系统(返回到内核模式)
1.4.2 定时器
操作系统应当维持控制CPU,防止用户程序陷入死循环,或不调用系统服务并将控制返给操作系统,为此,可以使用定时器,定时器可以设置成在指定周期(可变或固定均可)后中断计算机
操作系统应当维持控制CPU,防止用户程序陷入死循环,或不调用系统服务并将控制返给操作系统,为此,可以使用定时器,定时器可以设置成在指定周期(可变或固定均可)后中断计算机