每日随笔——备战软考2
今天继续学习软考的相关知识,今天学习的是操作系统
学习了进程管理,进程状态,pv操作,死锁问题,逻辑地址,页面置换算法,索引文件路径等相关知识
操作系统地位
计算机系统由软件、硬件组成,没有配置软件的称为裸机
操作系统地位:计算机硬件 》操作系统 》 系统软件 》 应用软件 》 用户
所有其他软件,如编译程序、汇编程序、数据库管理系统等,以及大量应用软件都是建立在操作系统之上的
把操作系统看做用户与计算机之间的接口
进程管理
进程是源分配和独立运行的基本单位
进程管理重点是要研究诸进程之间的并发特性,以及进程间相互合作与资源竞争产生的问题
前趋图:有向无循环图,由节点和单向边组成,节点代表各个程序段的操作,单向边表示前前趋关系 Pi(节点、前趋) -——> Pj(节点、后继),Pi 执行结束 Pj 才能执行
前趋图,有n 个箭头就要设置 n个信号量,按照从小到大顺序写到图中,箭头方向是 P 操作,箭头尾部是 V操作
程序顺序执行的主要特征:顺序性、封闭性(独享资源)、可再现性
程序并发执行的主要特征:失去程序封闭性、程序和机器执行程序的活动不再一一对应、并发程序之间的相互制约性
进程的三态模型
在多道程序系统中,进程在处理器上交替运行,一般由三种状态 运行、就绪、阻塞
运行:当一个进程在处理机(CPU)上运行时,就是运行态
就绪:一个进程获得了除了处理机(CPU)外的所有资源, 一旦得到处理机即可运行,这个时候就是就绪态
阻塞:等待、睡眠,一个进程正在等待某个事件(例如等待I/O完成)发生而停止运行
同步与互斥
同步是合作资源进程之间直接制约的问题
互斥是申请临界资源进程间的间接制约问题
临界区管理原则:
有空即进,临界区无进程,则允许进入,且只能在临界区运行有限时间
无空则等,临界区有进程,其他进程则要等待
有限等待,在外等待的进程,要保证在有限时间可进入
让权等待,进程有CPU 没有资源时,不能进入自己的临界区,要立即释放 CPU 资源,避免忙等
信号量机制
信号量S的物理意义,S>=0表示资源的可用数,S<0 表示等待该资源的进程数
PV 操作是实现同步和互斥的常用方法
P 表示申请一个资源(S = S-1,可以理解为从信号量S 中申请出一个来使用,申请后 S<0 则进程转为阻塞态,插入阻塞队列),
V 表示释放一个资源(S = S+1,可以理解为 释放一个资源到信号量,释放后,S<=0 则从阻塞队列唤起一个进程,插入就绪队列)
PV 操作实现进程互斥
令信号量 mutex 初值为 1,当进入临界区时 执行 P操作,退出临界区时执行V 操作,这两就利用PV 实现代码互斥
PV 操作实现进程的同步
单缓冲区同步(缓冲区只能放一个产品):分为生产者和消费者,需要设置两个信号量, S1 初值为 1表示可放入缓冲区的产品数,S2 初值为0,表示可从缓冲区取出的产品数;每次生产产品 要进行 P(S1) 和 V(S2), 每次消费产品要进行 P(S2) V(S1)
多缓冲区同步(缓冲区可以放多个产品):在 单缓冲区的基础上增加一个信号量 S, 名为互斥信号量,初始值为 1,标记缓冲区可操作的量(缓冲区是个互斥资源);每次生产产品及消费产品是都要增加一个 P(S1) P(S) V(S) V(S2) 操作, S 的PV 操作放中间
死锁:
同类资源分配不当引起的死锁:若采用的资源分配策略是,轮流的为每个进程分配,则可能会导致分配几轮后,没有一个进程达到所需的资源数,这个时候,每个进程都在等待资源分配,形成死锁;
同类资源分配不当引起的死锁的解法:m 为资源总量、n 为进程数、k 为每个进程需要的资源,满足 m >= n * (k-1) + 1 就可以避免死锁
进程资源图
Pi 代表进程,Ri 代表资源类型;每个 Ri 可以有多个资源; 指向进程的箭头表示分配资源;指向资源的箭头表示申请资源;
先分配资源再申请资源,经过分配申请后没有满足资源的进程即为“阻塞”
是否可化简:取决于是否可以在某个进程完成后释放资源,并使得后续进程得以完成
可化简的就是非死锁的
死锁避免
死锁处理策略:鸵鸟策略(不理睬)、预防策略、避免策略、检测与解除死锁
死锁避免算法:银行家算法,即在每次分配资源前检测分配资源后系统是否安全(是否安全取决与分配资源后,系统是否可以有某种进行序列,来将所有的进程都执行完),资源利用率高,但增加了检测的开销
银行家算法题计算:,1. 先算出仍需资源数,2.在算出,剩余资源数
线程
进程在创建、撤销、切换中,系统会付出较大的时空开销,故系统引入的进程不易过多,进程切换频率不易太高,因此引入了线程
线程作为调度和分配的基本单位,进程作为独立分配资源的单位,线程是进程中的一个实体
线程与线程之间不可见,但是线程与线程可以共享进程的资源
局部性原理
时间局限性:程序的某一条指令执行,那在不久的将来该指令可能被再次执行,如果某个存储单元被访问,那不久的将来还可能被再次访问
空间局限性:程序访问了某个存储单元,不久的将来其附近的存储单元也可能被访问
相关题型“淘汰”问题:
在内存中才能被淘汰
先淘汰未访问过的
再淘汰未修改过的
分页存储管理
纯分页存储管理的地址结构: n位的页号 + m位的页内地址
做题技巧:
计算机的页面大小为4k => 则代表n位页内地址 2^n = 4 * 1024 => n=12
页面变换表逻辑地址转物理地址 => 逻辑地址即为纯分页存储管理的地址结构,由n位的页号 + m位的页内地址组成 => 页内地址组成不变,将页号替换成“页面变换表”中对应的物理块号即可
段页式存储管理
段页式存储管理地址结构:n位段号 + k位段内页号 + m位的页内地址
单缓冲区
缓冲区只能有一个“作业”,缓冲区为空时可以输入,缓冲区有作业时可以传送
I/O设备 —输入(T)—> 缓冲区 —传送(M)—> 工作区(处理C)
计算n个作业单缓冲区所花时间:(T+M)*n + C
双缓冲区
缓冲区有两个,每个可存一个”作业“
计算n个作业双缓冲区所花时间: T*n + M + C
磁盘调度算法
先来先服务(FCFS): 按请求访问者的先后顺序来启动磁盘驱动器,平均寻道长度大
最短寻道时间优先(SSTF):让距离当前磁道位置最短的先执行,不考虑访问者的先后顺序
扫描算法或者电梯调度算法(SCAN): 从磁头当前位置开始,沿着磁头移动方向,选择最近的柱面,如果磁头移动方向无请求柱面,则调转方向,选择最近的
循环扫描算法(CSCAN): 在扫描算法的基础上,调转方向后不再选择最近的柱面,而是移动到最里端
旋转调度算法
磁盘旋转不会停下,磁盘旋转完一个扇区,就代表读取了一个扇区的记录,记录读取后的处理时间内,磁盘不会停下
如果是顺序处理n,总时间 = (读时间 + 扇区一圈时间)*(n-1) + 第一个扇区的读时间 + 第一个扇区的处理时间
优化处理:重排扇区,让第一个扇区处理后所停在的位置,在第二个记录所在扇区的起始位置,所耗时 = (读时间+处理时间)*n
多级索引结构
直接地址索引:索引从0开始,一个地址项指向一个磁盘数据块
一级间接地址索引:一个地址项指向一个磁盘索引块(也可以叫一级索引块),一个磁盘索引块又包含很多个地址项,磁盘索引块中的地址项指向一个磁盘数据块
二级间接地址索引:比一级间接地址索引,多了一级磁盘索引块
文件目录
为了实现按名存取,系统为每个文件设置用于描述和控制的数据结构,至少包含文件名和存放文件的物理地址,这个结构称为文件数据块FCB
文件目录是由文件控制块组成的,用来文件检索
文件控制块包含三类信息
基本信息:文件名、文件物理地址、文件长度、文件块数等
存取控制信息:文件存取权限
使用信息:建立日期、最后修改日期、当前使用信息
目录文件的修改时发生崩溃对系统的影响很大
目录结构
多级目录结构:倒置的有根树,也称为树形目录结构
全路径名:从根目录开始,一直到文件名 D:\
绝对路径:从根目录开始,最后是 /
相对路径:从当前目录开始,最后是 /
位视图
位视图用二进制来表示一个物理块的使用情况,0 表示空闲 1表示使用
位视图的大小由磁盘空间大小(物理块数)决定,位视图描述能力强,适合各种物理结构
假设计算机系统n位,那位视图第0个字能对应存储器上的第 0~n-1 号物理块,第1个字能对应存储器上的第 n~2n-1 号物理块后边以此类推