第一章 - 计算机操作系统概述
- CTSS:compatible Time-Sharing System
- MULTICS:Multiplexed Infomation and Computing System 多任务系统
深入观察操作系统
资源管理的视角
计算机系统的资源
硬件资源
处理器、内存、外设
信息资源
数据、程序
管理的视角
- 处理器资源:那个程序占有处理器运行?
- 内存资源:程序/数据在内存中如何分布?
- 设备管理:如何分配、去配和使用设备? — IO设备等外设都是由操作系统统一管理,防止造成无序状态
- 信息资源管理:如何访问文件信息?
- 信号量资源:如何管理进程之间的通信
屏蔽资源使用的底层细节
驱动程序:最底层的、直接控制和监视各类硬件(或文件)资源的部分
职责是隐藏底层硬件的具体细节,并向其他部分提供一个抽象的、通用的接口
比如说:打印一段文字或一个文件,既不需知道文件信息存储在硬盘上的细节,也不必知道具体打印机类型和控制细节
资源的共享方式
独占使用方式(时分复用)
如:打印机在一个时间段内只能被一个进程独立使用
并发使用方式
如:一个文件可以同时被多个进程一起读
资源分配策略
- 静态分配方式:进程运行前一次拿到全部独占资源
- 资源使用效率低
- 动态分配方式:使用资源前临时申请
- 可能产生竞争资源的死锁
- 并发访问的难题-详见第六章
- 资源抢占方式
- 被抢夺资源的进程需要回滚执行
控制程序执行的视角
多道程序同时计算
CPU速度与I/O速度不匹配的矛盾,非常突出 – CPU以摩尔定律的速度发展,IO设备的速度受制于机械设备
只有让多道程序同时进入内存争抢CPU运行,才可以够使得CPU和外围设备充分并行,从而提高计算机系统的使用效率。关键是提高CPU的利用率
并行:在同一个时间点有两个事件在同时发生。
并发:在某一个时间区间内,两件事情交替发生。
多道程序设计
指让多个程序同时进入计算机的主存储器进行计算
多道程序设计的特点
- CPU与外部设备充分并行
- 外部设备之间充分并行
- 发挥CPU的使用效率
- 提高单位时间的算题量 — 系统整体性能得到了优化
- 但是,单道程序的运算时间会增加
多道程序系统的实现
- 为进入内存执行的程序建立管理实体:进程
- OS应能管理与控制进程程序的执行
- OS协调管理各类资源在进程间的使用
- 处理器的管理和调度
- 主存储器的管理和调度
- 其他资源的管理和调度
多道程序系统的实现要点
- 如何使用资源:调用操作系统提供的服务例程(如何陷入操作系统)
- 如何复用CPU:调度程序(在CPU空闲时让其他程序运行)
- 如何使CPU与I/O设备充分并行:设备控制器与通道(专用的I/O处理器)
- 如何让正在运行的程序让出CPU:中断(中断正在执行的程序,引入OS处理)
内核是中断驱动的 Reactive
操作控制计算机的视角
计算机系统操作方式
- OS规定了合理操作计算机的工作流程
- OS的操作接口——系统程序
OS提供给用户的功能级接口,为用户提供的解决操作计算机和计算共性问题的所有服务的集合
OS的两类作业级接口
- 脱机作业控制方式:作业控制语言
- 联机作业控制方式:操作控制命令
脱机作业控制方式
OS:提供作业说明语言
用户:编写作业说明书,确定作业加工控制步骤,并与程序数据一并提交
操作员:通过控制台输入作业
OS:通过作业控制程序自动控制作业的执行
例:批处理OS的作业控制方式,UNIX的shell程序,DOS的bat文件
脱机输入/输出技术是为了解决CPU和I/O设备之间速度不匹配的矛盾而提出的,此技术减少了CPU的空闲等待时间,提高了I/O速度。其输入/输出方式如下图所示。
为解决低速输入设备与CPU速度不匹配的问题,可以将用户程序和数据在一台外围机的控制下,预先从低速输入设备(纸带机)输入到输入带上,当CPU需要这些程序和数据时,再直接从输入带高速输入到内存,从而大大加快输入速度,减少CPU等待输入的时间,这就是脱机输入技术。
类似地,当程序运行完毕或告一段落,当CPU需要输出时,无须直接把计算结果送至低速输出设备(打印机),而是高速地把结果送到输出带上,然后在外围机的控制下,把磁带上的计算结果由相应的输出设备输出,这就是脱机输出技术。若输入/输出操作在主机控制下进行,则称为联机输入/输出。
采用脱机输入/输出技术后,低速I/O设备上数据的输入/输出都在外围机的控制下进行,而CPU只与高速的输入带及输出带打交道,从而有效地减少了CPU等待慢速设备输入/输出的时间。
联机作业控制方式
计算机:提供终端(键盘/显示器)
用户:登录系统
OS:提供命令解释程序
用户:联机输入操作控制命令,直接控制作业步的执行
例:分时OS的交互控制方式
命令解释程序
命令解释程序:接受和执行一条用户提出的对作业的加工处理命令
当一个新的批作业被启动,或新的交互型用户登录进系统时,系统就自动地执行命令解释程序,负责读入控制卡或命令行,作出相应解释,并予以执行
会话语言:可编程的命令解释程序
图形化的命令控制方式
多通道交互的命令控制方式
人机交互的角度
操作系统的人机交互部分
OS改善人机界面,为用户使用计算机提供良好的环境
人机交互设备包括传统的终端设备和新型的模式识别设备
OS的人机交互部分用于控制有关设备运行和理解执行设备传来的命令
人机交互功能是决定计算机系统友善性的重要因素,是当今OS研发热点
人机交互的初期发展
交互式控制方式
- 行命令控制方式:1960年代开始使用
- 全屏幕控制方式:1970年代开始使用
斯坦福研究所提出的发展计划
- 始于1960年代,1980年代广泛应用
- 强调人而不是技术是人机交互的中心
- 代表性成果:鼠标、菜单与窗口控制
人机交互发展-WIMP界面
缘起:70年代后期Xerox的原型机Star
特征:窗口(Windows) 、图标(Icons)、菜单(Menu) 和指示装置(PointingDevices)为基础的图形用户界面WIMP
得益:Apple最初采用并大力推动
时间:1990年代开始广泛使用
不足:不允许同时使用多个交互通道,从而产生人-机交互的不平衡
程序接口的视角
操作系统的程序接口
操作系统的程序接口:操作系统为程序运行扩充的编程接口
系统调用:操作系统实现的完成某种特定功能的过程;为所有运行程序提供访问操作系统的接口
POSIX支持
系统调用的实现机制
- 陷入处理机制:计算机系统中控制和实现系统调用的机制。 用户程序陷入系统程序
- 陷入指令:也称访管指令,或异常中断指令,计算机系统为实现系统调用而引起处理器中断的指令。 内核也称为管态
- 每个系统调用都事先规定了编号,并在约定寄存器中规定了传递给内部处理程序的参数
系统调用的实现要点
编写系统调用处理程序
设计一张系统调用入口地址表,每个入口地址指向一个系统调用的处理程序,并包含系统调用自带参数的个数
陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场
- 特权指令只能在内核空间中使用
- 系统调用没有建立名空间,只能按号调用
- 在用户态和内核态中不断切换
- CPU在内核态中管理,需要消耗一段时间,但不能过多消耗
- 模式切换:类似C/S client(请求方的进程) 与 server(应答方的进程),建立了请求应答的关系。特权指令被封装在内核态中,用户态无法直接执行相关指令,所以需要通过接口请求内核的服务
- 保护CPU现场:为了被停下来的进程A再恢复时,仍然能够从停止的地址开始(因为内核空间处理完后,处理器会继续调度,不一定会继续执行A)
Linux系统调用执行流程
dispatch
查系统调用的入口地址表
模式切换
本质:修改模式位
用户:mode = 1
内核:mode = 0
系统结构的视角
微内核:缩小内核的规模。
process要获得文件系统,需要先内核发起请求,再发给文件系统,然后再返回给内核,再返回给process,时间延长