操作系统的功能:
- 进程管理。实质上是对处理机的执行时间进行管理,采用多道程序等技术将 CPU 的时间合理的分配给每个任务,主要包括进程控制,进程同步,进程通信和进程调度
- 文件管理。主要包括文件存储空间管理,目录管理,文件的读/写管理和存取控制
- 存储管理。存储管理是对主存储器空间进行管理,主要包括存储分配与回收,存储保护,地址映射(变换)和主存扩充
- 设备管理。实质是对硬件设备的管理,包括对输入/输出设备的分配,启动,完成和回收
- 作业管理。包括任务,界面管理,人机交互,图形界面,语音控制和虚拟现实等
进程管理
进程的组成:进程控制块 PCB(唯一标志),程序(描述进程要做什么),数据(存放进程执行时所需数据)
三态图
前驱图
用来表示哪些任务可以并行执行,哪些任务之间有顺序关系,具体如下图。可知 A B C 可以并行执行,但是必须 A B C 都执行完后,才能执行 D,这就确定了两点:任务间的并行,任务间的先后顺序
进程资源图
用来表示进程和资源之间的分配和请求关系
P 代表进程,R 代表资源,R 方框内有几个圆球代表有几个资源。在上图中,R1 指向 P1,表示 R1 有一个资源分配给了 P1,P1 指向 R2,表示 P1 还需要请求一个 R2 的资源才能执行
- 阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续,如上图中 P2
- 非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中 P1,P3
当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态
进程同步与互斥
互斥:某资源在同一时间内只能由一个任务单数使用,使用时需要加锁,使用完后解锁才能被其他任务使用。如打印机
同步:多个任务可以并发执行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题。如自行车和汽车
信号量
互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为 1
同步信号量:对共享资源的访问控制,初值一般是共享资源的数量
P 操作和 V 操作
都是原子操作,用来解释进程间的同步和互斥原理
P 操作:申请资源,S=S-1,若 S >= 0,则执行 P 操作的进程继续执行,若 S < 0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列
V 操作:释放资源,S=S+1,若 S > 0,则执行 V 操作的进程继续执行;若 S <= 0,则从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被 P 操作阻塞的进程可以继续执行),然后执行 V 操作的进程继续
死锁
当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁
死锁产生的四个必要条件:资源互斥,每个进程占有资源并等待其他资源,系统不能剥夺进程资源,进程资源图是一个环路
死锁资源计算:系统内有 n 个进程,每个进程都需要 R 个资源,那么其发生死锁的最大资源数为:n * (R - 1),
其不发生死锁的最小资源数为:n (R - 1) + 1*
存储管理
存储器的结构:寄存器 - 高速缓存Cache - 主存 - 外存
地址重定位:将逻辑地址转换为实际主存物理地址的过程,分为静态重定位(在程序装入主存就完成了转)、动态重定位(边运行边转换)
分区存储管理
所谓分区存储组织,就是整存,将某进程运行所需的内存整体一起分配给它,然后再执行,有三种分区方式,仅了解
- 固定分区
- 可变分区
- 可重定位分区
分页存储管理
如果采用分区存储,都是整存,当进程运行所需的内存大于系统内存时,就无法将整个进程调入内存。若要解决此问题,就要采用段式、页式存储组织
逻辑页分为 页号 和 页内地址
页内地址:就是物理偏移地址,
页号:页号与物理块号并非按序对应的,需要查询页表,才能得知页号对应的物理块号,再用物理块号加上偏移地址得出真正物理地址
物理地址和逻辑地址的页内偏移地址是一样的,只需要求出页号和物理块号的之间的对应关系,首先需要求出页号的位数,得出页号,再去页表里查询其对应的物理块号,使用此物理块号和页内偏移地址组合,就能得到物理地址
页面置换算法
- 先进先出算法 FIFO
- 最近最少使用 LRU
淘汰原则:优先淘汰最近未访问的,而后淘汰最近未被修改的页面
快表
- 是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快。一般用来存放当前访问最频繁的少数活动页面的页号
- 快表是将页表存于 Cache 中,慢表是将页表存于内存上。慢表需要访问两次内存才能取出页,而快表是访问一次 cache 和一次内存,因此更快
真题
- 页面大小 4k = 2^12 次方,得出需要 12 位才能表示偏移量
- 通过逻辑地址 1D16H, 12 位表示偏移量,也就是对应 16 进制 3 位,也就是 D16 表示页内偏移量,1 表示页号
- 通过 页号 1 从表内查找到对应的物理块号是 3
- 物理地址 = 物理块号 + 页内偏移地址 = 3 + D16 = 3D16H
段式存储管理
分页是根据物理空间划分,每页大小相同;分段是根据逻辑空间划分,每段是一个功能,便于共享,但是大小不同
地址表示:(段号,段内偏移)。其中段内偏移不能超过该段号对应的段长,否则越界错误,而此地址对应的真正内存地址应该是:段号对应的基地址 + 段内偏移
段页式存储管理
对进程空间先分段,后分页
设备管理
I/O 软件
当用户程序视图读一个硬盘文件时,需要通过操作系统实现这一操作。
- 与设备无关软件检查告诉缓存中有无要读的数据块
- 若没有,则调用设备驱动程序,向 I/O 硬件发出一个请求
- 然后,用户进程阻塞并等待磁盘操作的完成
- 当磁盘操作完成时,硬件产生一个中断,转入中断处理程序。中断处理程序检查中断的原因,识别到这时磁盘读取操作已经完成,于是唤醒用户进程取回从磁盘读取的信息,从而结束此次 I/O 请求
虚设备和 SPOOLING 技术
- 一台实际的物理设备,例如打印机,在同一时间只能由一个进程使用,其他进程只能等待,且不知道什么时候打印机空闲,此时,极大浪费了外设的工作效率
- 引入 SPOOLING(外围设备联机操作)技术,就是在外设上建立两个数据缓冲区,分别称为输入井和输出井,这样无论多少进程,都可以共用这一台打印机,只需要将打印命令发出,数据就会排队存储在缓冲区中,打印机会自动按顺序打印,实现了物理外设的共享,使得每个进程都感觉在使用一个打印机,这就是物理设备的虚拟化
文件管理
索引文件结构
如图所示,系统中有 13 个索引节点
- 0-9 为直接索引,即每个索引节点存放的是内容,假设每个物理盘大小为 4KB,共可以存 4KB * 10 = 40KB 数据
- 10 号索引节点为一级间接索引节点,大小为 4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每个地址占 4B,则共有 1024 个地址(4KB * 1024 / 4B),对应 1024 个物理盘,可以存 1024 * 4KB = 4096KB 数据
- 二级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘块地址,而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为 1024 * 1024 * 4KB 数据
真题
文件存储空间管理
位示图:这种方法时在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位对应文件存储上的一个物理块,取值 0 和 1,分别表示空闲和占用