操作系统
# 一、计算机系统层次结构
# 二、前趋图
这种题的做法就是先将信号量得到,按照顺序 12 23 24 34 35,分别得到 s1 到 s5。P1—> P2,就是 V—>P。中间信号量就是 S1 然后就可以根据题得到答案了。
# 三、前驱图
规律就是找到 I —> C —> P。
# 四、进程
注意
五态模型仅需了解,三态模型需要掌握
# 五、信号量机制和 PV 操作
信号量机制和 PV 操作是操作系统中用于实现进程间同步和互斥的重要概念和机制。
信号量是一个用于同步的计数器。它可以被进程或线程用于协调彼此的并发操作。通常,信号量被用于两个目的:同步和互斥。
PV 操作(也称为 wait 和 signal 操作)是对信号量的两种基本操作。
PV 操作包括:
P(proberen)操作:在进程需要进入临界区前执行,用于获取或等待信号量。如果信号量大于 0,则减少其值并继续执行;如果信号量等于 0,则进程会被阻塞,直到信号量的值大于 0。
V(verhogen)操作:在退出临界区后执行,用于释放或增加信号量。它会增加信号量的值,并且如果有任何等待该信号量的进程,它会唤醒其中一个进程。
PV 操作可以用于实现不同类型的同步和互斥机制,如互斥锁、条件变量、生产者消费者问题等。
需要注意的是,信号量机制和 PV 操作是基于原子操作的,即它们是不可中断的操作,这确保了操作的原子性和正确性。在实际的多线程编程中,使用信号量机制和 PV 操作可以确保线程之间的协调和互斥,避免竞态条件和死锁等问题的发生。
# 六、进程的同步与互斥
没弄明白
# 七、死锁
当有 n 个进程、m 个资源、且每个进程所需要的资源数为 k,并且系统采用的分配策略是轮流地为每个进程分配资源时,(软考题目都是这个策略)。
判断是否会发生死锁的公式如下:
为真就不会发生死锁、为假就会发生死锁。
# 八、进程资源图
进程(Process):
- 用圆圈表示进程,框内标注进程的名称或标识符。
- 根据系统的实际情况,可能还会标注进程的状态、优先级等信息。
资源(Resource):
- 用方框表示资源,框内有小圆点标注资源的名称或标识符。
- 可以使用不同的颜色或图标表示不同类型的资源。
依赖关系:
- 使用箭头表示进程和资源之间的依赖关系。
- 如果一个进程请求使用一个资源,箭头从进程指向资源。
- 如果一个进程已经拥有一个资源,箭头从资源指向进程。
先分配,后申请
如果没有一个进程是非堵塞的,那么进程资源图一定是不可化简的,是死锁的。
如果有进程是非阻塞的,那么就有可化简的希望,要自行判断是否能够运行完所有进程。
以上图来举例,根据先分配后申请来看,P1 可以运行,运行完成后归还资源,P2 、P3 也可以运行了
# 九、死锁避免
一般是拥有的总资金数为 15,投资 4 个项目 P1、P2、P3、P4,各项目需要的最大资金数分别是 6、8、8、10,然后说每项申请加 1 个资金,然后求一些的尚需资金等等。
# 十、线程
线程可以共享进程的所有资源,但是线程和线程之间是不可见的,即线程不能和线程共享资源。
# 十一、局部性原理
- 时间局限性是指如果程序中的某条指令一旦执行,则不久的将来该指令可能再次被执行:如果某个存储单元被访问,则不久以后该存储单元可能再次被访问。产生时间局限性的典型原因是在程序中存在着大量的循环操作。
- 空间局限性是指一旦程序访问了某个存储单元,则在不久的将来,其附近的存储单元也最有可能被访问。即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型原因为程序是顺序执行的。
如果页帧号为 — 那么这个就一定不能被淘汰,然后从状态为开始看,为 1 的不能淘汰。
# 十二、分页存储管理
这个和上面的一般是在一起考的,会在后面加上一个比如:假定页面大小为 4KB,逻辑地址为十六进制 2C25H,该地址经过变换后,其物理地址应为十六进制____
这个如果给定的条件不变都是 4K ,那么就容易,将十六进制的第一位转成 10 进制,然后在表格中找到就行了。
但是如果题目给的是物理页的大小为 1KB,那么进程 A 中逻辑地址为 1024(十进制),那么就是将这个 10 进制转成 2 进制,然后第一位对应表中的值就是答案。
# 十三、段页式存储管理
# 十四、单缓冲区和双缓冲区
# 十五、磁盘调度算法
在磁盘调度管理中,通常应先进行移臂调度,再进行旋转调度。
在访问不同柱面的信息时,需要先进行移臂调度,之后进行旋转调度。
在访问同一磁道的信息时,只需要进行旋转调度。
先来先服务 (FCFS):按请求访问者的先后次序启动磁盘驱动器,而不考虑它们要访问的物理位置。例如,有一个磁盘队列,其 I/O 对各个柱面上块的请求顺序为 98、183、37、122、14、124、65、67。如果磁头开始位于 53,那么 FCFS 调度算法将从 53 移到 98,接着再到 183、37、122、14、124、65,最后到 67,总的磁头移动为 个柱面,平均寻道长度 = 。
最短寻道时间优先 (SSTF):让离当前磁道最近的请求访问者启动磁盘驱动器,即让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后次序,这样就克服了先来先服务调度算法中磁头移动过大的问题。例如,有一个磁盘队列,其 I/O 对各个柱面上块请求顺序为 98、183、37、122、14、124、65、67。如果磁头开始位于 53,那么采用 SSTF 调度算法。与开始磁头位置 (53) 最近的请求是位于柱面 65。当位于柱面 65,下一个最近请求位于柱面 67。从柱面 67,由于柱面 37 比 98 还要近,所以下次处理 37。如此继续进行,会处理柱面 14,按着 98、122、124,最后处理 183 上的请求。总的磁头移动为 个柱面,如图 5.35 所示,平均寻道长度 =。
扫描算法 (SCAN) 或电梯调度算法:总是从磁头当前位置开始,沿磁头的移动方向去选择离当前碰头最近的那个柱面的请求。如果沿磁头的方向无请求访问时,就改变磁头的移动方向。在这种调度方法下磁头的移动类似于电梯的调度,所以它也称为电梯调度算法。例如,有一个磁盘队列,其 I/O 对各个柱面上的块请求顺序为 98、183、37、122、14、124、65、67。如果磁头开始位于 53。采用 SCAN 算法时,不但要知道磁头的当前位置,还要知道磁头的移动方向。如果碰头朝 0 方向移动,那么磁头会先处理服务 37,再处理 14。此时朝 0 方向再无请求,磁头会掉转方向,朝磁盘的另一端移动,并处理位于柱面 65、67、98、122、124 和 183 上的请求。总的磁头移动为 个柱面如图 5.36 所示,平均寻道长度 =。
循环扫描算法 (CSCAN) 单向扫描算法:循环扫描调度算法是在扫描算法的基础上改进的。为了减少延迟,规定磁头单向移动,例如,只是自里向外移动,从当前位置开始沿磁头的移动方向去选择离当前磁头最近的那个柱面访问,如果沿磁头的方向无请求访问时,磁头立即返回到最里面的欲访问的柱面,再亦即将最小柱面号紧接着最大柱面号构成循环,进行循环扫描。例如,有一个磁盘队列,其 I/O 对各个柱面上的块请求顺序为 98、183、37、122、14、124、65、67。如果磁头开始位于 53。采用 CSCAN 算法时,假设磁头移动方向是从柱面 0 到柱面 199 方向。先处理服务 65,再处理 67、98、122、124、183 上的请求,此时该方向再无请求处理,磁头会掉转方向移动到最里端,再依次处理 14、37 上的请求。总的磁头移动为 个柱面,如图 5.37 所示,平均寻道长度 =
注意
关于这个题就是把每个对应的柱面号和请求顺序写出来,然后按照题目给的算法对比一下。
# 十六、旋转调度算法
例如:假设磁盘旋转速度为 20ms / 圈,每读一个记录后处理需要 4ms。若格式化时每个磁道被分为 10 个扇区,有 10 个逻辑记录存放在同一磁道上,其排序顺序如表 5.12 所示,初始时读写头停在记录 A 处,程序处理这些记录的次序正好为 A~J,处理完这些记录的总时间是多少?请给出一种记录优化分布方案,使处理程序能在尽可能短的时间内处理这些记录,优化后的处理时间是多少?
解:经过一个扇区的时间 =ms,处理一个记录的时间 = 2ms+4ms=6ms。当处理完记录 A 后,读写头已转到记录 D 处,为了读出记录 B,必须再转一圈少两个记录 (记录 D 到记录 B),花费时间为 16s。程序处理过程如下:
- 读记录 A,转在记录 D 处
- 转一圈少两个记录,读记录 B,转在记录 E 处
- 转一圈少两个记录,读记录 C,转在记录 F 处
- 转一圈少两个记录,读记录 D,转在记录 G 处
- 转一圈少两个记录,读记录 E,转在记录 H 处
- 转一圈少两个记录,读记录 F,转在记录 I 处
- 转一圈少两个记录,读记录 G,转在记录了处
- 转一圈少两个记录,读记录 H,转在记录 A 处
- 转一图少两个记录,读记录 I,转在记录 B 处
- 转一圈少两个记录,读记录 J
- 这样的总时间 ms。
例如:某磁盘有 100 个磁道,磁头从一个磁道移至另一个磁道需要 6ms。文件在磁盘上非连续存放,逻辑上相邻数据块的平均距离为 10 个磁道,每块的旋转延迟时间及传输时间分别为 100ms 和 20ms,则读取一个 100 块的文件需要