第二章:操作系统
考点1:进程管理
-
进程的状态
-
三态模型
-
五态模型
-
-
前趋图
- 组成:前趋图是一个有向无循环图,由节点和有向线段组成,节点表示进程或程序段,有向线段表示节点间的前趋关系
- 表示:两程序段 Pi 和 Pj 的前趋关系表示为 Pi → Pj ,其中 Pi 是Pj 的前趋, Pj 是 Pi 的后继, 含义是 Pi 执行完毕才能由 Pj 执行
-
信号量与PV操作
- 同步、互斥、临界资源、临界区
- 临界资源:各进程采取互斥的方式,实现共享的资源称作临界资源
- 临界区:每个进程中访问临界资源的那段代码称为临界区,临界区中的临界资源同一时间只能由一个进程(线程)访问
- 互斥:互斥是进程(线程)之间的间接制约关系。当一个进程(线程)进入临界区使用临界资源时,另一个进程(线程)必须等待。只有当使用临界资源的进程退出临界区后,这个进程(线程)才会解除阻塞状态
- 同步:同步是进程(线程)之间的直接的制约关系。相互合作的进程(线程)需要在某些确定点上协调他们的工作,当一个进程(线程) 达到这些点后,除非另一个进程(线程)已经完成某些操作,否则只能等待这些操作结束
- 信号量:信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程,值与相应资源的使用情况有关。
- 值 S ≥ 0:表示某资源的可用数
- 值 S < 0:其绝对值表示阻塞队列中等待该资源的进程数
- P 操作定义:S := S - 1 ,将信号量 S 的值减一
- 若 S ≥ 0,则执行 P 操作的进程继续执行
- 若 S < 0,则置该进程为阻塞状态,并将其插入阻塞队列中
- V 操作定义:S := S + 1,将信号量 S 的值加一
- 若 S > 0,则执行 V 操作的进程继续执行
- 若 S ≤ 0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,执行 V 操作的进程继续执行
- 同步、互斥、临界资源、临界区
-
死锁及银行家算法
- 死锁
- 概念:两个以上的进程(线程)互相都因要求对方已经占有的资源导致无法运行下去的现象,产生的原因是资源竞争及进程推进顺序非法
- 产生条件:
- 互斥条件:进程对其要求的资源进行排他性控制,即一次只允许一个进程使用
- 请求保持条件:零星的请求资源,即获得部分资源后又请求其他资源被堵塞并对已获得的资源保持不放
- 不剥夺条件:进程已获得资源在未使用完之前不能被剥夺,只能在使用完后自己释放
- 环路条件:在进程资源有向图中必构成环路,其中每个进程占有下一个进程申请的一个或多个资源
- 处理
- 预防:使用预先静态分配法和资源有序分配法来预防
- 避免:银行家算法
- 检测:允许死锁发生,但程序会定时运行一个“死锁检测”程序,如果检测到死锁,则设法加以解除。
- 解除:使用资源剥夺法和撤销进程法解除死锁
- 银行家算法
- 相关概念
- Available:可利用资源向量,它是一个含有 m个元素的数组,其中每个元素代表一类可利用资源的数目
- Max:最大需求矩阵,n*m矩阵,表示n个进程的每一个对m类资源的最大需求
- Allocation:分配矩阵,n*m矩阵,表示每个进程已分配的每类资源的数目
- Need:需求矩阵,n*m矩阵,表示每个进程还需要各类资源数 Need[i,j]= Max[i,j]- Allocation[i,j]
- 算法步骤
- 请求性算法步骤
- 设Request i 为进程 Pi 的请求向量。如果 Request i[ j ] == k 那么进程 Pi 需要资源 Rj 的实例数量为 k,
- 当进程 Pi 作出资源请求时,执行下列步骤:
- 若Request i[ j ] ≤ Need[ i, j ],转步骤(2);否则错误返回,因为进程 Pi 超过其最大请求
- 若Request i[ j ] ≤ Available[ j ],转步骤(3);否则进程 Pi 等待,因为没有可用资源
- 假设系统分配了进程 Pi 所请求的资源,则有:
- Available [ j] := Available [ j] - Request i[ j];
- Allocation[i, j] := Allocation[i, j]+Request i[ j];
- Need[i, j] := Need[i, j] - Request i[ j]
- 安全性算法步骤
- 若系统新状态是安全的,则完成分配;若系统新状态是不安全的,则恢复原状态,进程等待
- Work[ j] := Available[ j];Finish[ i] := false;
- 寻找满足条件的 i :Finish[ i] = false;Need[i, j] ≤ Work[ j];若不存在,转步骤(4);
- Work[ j] := Work[ j] + Allocation[i, j];Finish[ i] := true;转步骤(2)
- 若对所有 i,Finish[ i] = true,则系统处于安全状态,否则处于不安全状态
- 若系统新状态是安全的,则完成分配;若系统新状态是不安全的,则恢复原状态,进程等待
- 请求性算法步骤
- 相关概念
- 死锁
考点2:存储管理
-
页式存储
- 页式存储
- 基本原理
- 页或页面:系统将进程的地址空间划分成若干大小相等的区域,称为页或页面
- 块或页框:系统将主存空间划分成与页相同大小的若干物理块,称为块或页框
- 内存分配:在为进程分配主存时,将进程中若干页分别装入多个不相邻的块中
- 地址结构
- 组成:页号P和偏移量W(页内地址)。011位为页内地址(4KB),1231位为页号(1MB)
-
地址变换
-
页号P = 逻辑地址 / 页面大小;页内地址 = 逻辑地址 % 页面大小
-
物理地址 = 物理块号(页号对应) * 页面大小 + 页内偏移
- 组成:页号P和偏移量W(页内地址)。011位为页内地址(4KB),1231位为页号(1MB)
- 页表
- 概念:系统为了保证能够在主存中找到每个页面所对应的物理块,为每个进程建立了一张页面映射表,简称页表。
- 每个页面在页表中占一个表项,记录该页面在主存中对应的物理块号。进程在执行时,通过查找页表可以找到每页所对应的物理块号
- 作用:实现从页号到物理号的地址映射
- 快表
- 概念:在地址映射过程中,共需两次访问主存。第一次访问页表,得到数据的物理地址,第二次才是存取数据。
- 在地址映射机制中增加一个小容量的联想寄存器(相联存储器),称为快表
- 作用:存放当前访问最频繁的少数页的页号及相关信息
- 基本原理
- 页式存储
-
段式存储
-
基本原理
- 段是按照程序的自然分界划分的长度可以动态改变的区域,每段是一组完整的逻辑信息,地址连续,长度不同
-
地址变换
- 存储管理部件首先以段号S为索引访问段表的第S个表项
- 若该表项的有效位为1,则将虚拟地址的段内地址D与该表项的段长字段比较;
- 若段内地址较大则说明地址越界,将产生地址越界中断;
- 否则,将该表项的段起址与段内地址相加,求得主存实际地址并访存。
- 如果该表项的有效位为0,则产生缺页中断,从辅存中调入该页,并修改段表
- 若该表项的有效位为1,则将虚拟地址的段内地址D与该表项的段长字段比较;
- 存储管理部件首先以段号S为索引访问段表的第S个表项
-
-
段页式存储
-
基本原理:
- 段页式存储组织是分段式和分页式结合的存储组织方法,用分段方法来分配和管理虚拟存储器,
- 用分页方法来分配和管理实存,这样可充分利用分段管理和分页管理的优点
-
地址转换
- 物理地址:基地址x、段号s、页号p和页内地址d,求物理地址(((x)+s)+p)*2^(11)+d
-
考点3:文件管理
-
绝对路径和相对路径
- 绝对路径:从根目录开始写起,文件的全名为绝对路径+文件名
- 相对路径:从当前位置下一级目录开始写起
-
索引文件
-
地址向个数:物理块大小/地址项长度,向下取整
-
直接索引,文件大小为 物理盘块大小×索引节点数。
-
一级间接索引,文件大小为 物理盘块大小×索引节点数的次幂。
-
二级间接索引,文件大小为 物理盘块大小×索引节点数的次幂。
-
-
位示图
- 对于位示图,每一个bit位可以表示一个磁盘的占用情况,“0”表示空闲,“1”表示占用。
- 对于字的长度与具体机器字长有关,有题目指定,假设机器字长16位,则每个字可以表示16个磁盘块的占用情况;
- 指定序号为n或第n+1个磁盘,占用情况需要用m=(n+1)/16(向上取整)个字表示,字的序号为m-1。注意其中磁盘序号、字的序号、对应位号都是从0开始,计算过程中会有加1或减1处理。
-
磁盘管理
- 参数
- 磁头(head): 固定在可移动的机械臂上,用于读写数据。
- 磁道(track): 每个盘面都有 n 个同心圆组成,每个同心圆称之为一个磁道。
- 柱面(cylinder): n 个盘面的相同磁道 (位置相同) 共同组成一个柱面。
- 扇区(sector): 扇区是硬盘的最小组成单元,通常是 512 字节。磁道上的扇区数最大为 63 (6 个二进制位)
- 计算
- 存储容量(单位统一)
- 非格式化容量:位密度 × 磁道最小周长(π×内径) × 磁道总数((外径 - 内径)÷ 2 ×道密度) × 面数
- 格式化容量:扇区容量 × 扇区数 × 每面磁道数 × 面数
- 数据传输速率:每磁道存储的用户信息总数目(扇区数 × 每扇区的字节数) × 每秒钟磁盘转动圈数
- 存取时间=寻道时间+等待时间,寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。有时还需要加上数据的传输时间
- 磁盘调度算法
- 先来先服务FCFS(谁先申请先服务谁)
- 最短寻道时间优先SSTF(申请时判断与磁头当前位置的距离,谁短先服务谁)
- 扫描算法SCAN(电梯算法,双向扫描)
- 循环扫描CSCAN(单向扫描)
- 存储容量(单位统一)
- 参数
考点4:设备管理
-
I/O传输控制方式
- 程序查询方式:CPU一直处于询问、等待的过程,占用CPU时间最长,CPU利用率最低
- 中断方式:I/O完成后向CPU发送中断请求信号,CPU和I/O可以并行
- DMA方式:CPU只做初始化,不参与具体数据传输过程
-
虚设备与SPOOLING技术
-
概念:
-
应用场景
-
技术过程
视频来源 软件设计师
-