操作系统
考点概况
-
进程管理:进程与线程、前趋图、信号量与PV操作、死锁、银行家算法、进程资源管理
-
存储管理:段页式存储、页面置换算法
-
文件管理:地址路径、索引文件、位视图
-
设备管理:需设备、SPOOLING技术
操作系统的地位
1、进程管理
1.1 程序顺序执行特征
1.2 PV操作实现前趋图
-
P操作:申请资源,s= s - 1
-
v操作:释放资源,s= s + 1
-
s代表信号量,初始值为0
做题技巧:入P出V
1.3 程序并发执行和前驱图
程序并发执行时的特征如下:
(1)失去了程序的封闭性。
(2)程序和机器的执行程序的活动不再一一对应。
(3)并发程序间的相互制约性。
程序并发执行的问题
1.4 进程的三态模型
某进程在等待的东西如果被另外一个进程给释放了,那这个进程就会从等待变成就绪状态,因为它等待的东西已经有了所以就不会继续等待
1.5 进程的同步与互斥
有空即进,无空则等,有限等待,让权等待
1.6 信号量机制和PV操作
- 信号量S的物理意义:S≥0 表示某资源的可用数,若 S<0,则其绝对值表示阻塞队列中等待该资源的进程数。
https://www.bilibili.com/video/BV1AY411E7GC?p=26
1.7 PV操作实现进程间同步和互斥
这里S1理解为缓冲区的空间,S2理解为缓冲区产品的数量,例如上面是单缓冲区,所以S1为1,就是缓冲区中每次只能存放一个,V(S2)是指商品数量新增一个,所以上面图的整个理解就是生产一个商品放缓冲区,P(S1)这是把S1的值减1这样S1就为0,如果后面生产者又生产了一个产品这个时候S1还是0的话那就会堵塞在那里,可以把S1为0理解为缓冲区满了,然后V(S2)是把S2的值加一,表示生产了一个产品在缓冲区,然后消费者去消费产品就是通过P(S2)来实现的,消费完后就释放缓冲区也就是V(S1)来实现
多个缓冲区一般是要三个信号量,一个是互斥的信号量初始值为1,一个是缓冲区容量的信号量初始值为n(这个n是缓冲区能存多少个的容量),一个是缓冲区已经生成了多少个产品,初始值为0
S1和S5都是互斥信号量,值都为1,S2值为n,S4值为m
1.8 死锁
什么是死锁?
- 各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进
什么时候会发生死锁?
- 对不可剥夺资源的不合理分配(数量和顺序),可能导致死锁
死锁产生的四个必要条件
- 互斥条件、不剥夺条件、请求和保持条件、循环等待条件
死锁发生条件
- 只要满足
m >= n * (k-1)+1
那就不会发生死锁,m为资源数量,n为进程数量,k为每个进程需要的资源数量
锁的处理
银行家算法
注意一下进程释放的资源数是最大需求量的数而不是已分配资源数,一开始我就是这里搞错了
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=50
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=51
看清楚题目是要发生死锁的最小值,取2在那个表达式的范围内是不会发生死锁的
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=41
1.9 进程资源图
这就是进程资源图,三个考点,根据这个图判断哪些进程会堵塞?能不能化简(其实就是会不会发生死锁)?化解顺序是怎样的?(不发生死锁的时候进程工作顺序是怎样的)?
上面这个图中P1-P3是表示进程,R1和R2是表示资源种类,里面的圆圈是表示这个种类的资源数量有多少个,由进程指向资源的是表示申请资源,反之表示分配资源
忘记怎么做下面的了就看视频
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=44
这里要注意第26题中我一开始是给P1先申请资源的,所以就会导致后两个进程都堵塞,但是我发现没有这个选项,其实它这里有两个进程都可以运行,P1和P3这两个进程,但是一次只能运行一个,你选P1先运行可以,选P3先运行也可以,所以C选项是符合的,也就是能够在第一次申请资源的时候就有足够的资源的进程就是非阻塞节点
1.10 线程
只要知道同一个进程中的多个线程不能共享该进程的栈指针,但是可以共享该进程的代码、打开的文件、全局变量
2、内存管理
2.1 局部性原理
其实就是谁最近被访问了或者修改了那它就大概率还会被访问或修改,所以不能被淘汰,优先淘汰的是最近没有被访问或者修改的
2.2 分页存储管理
物理地址是3C20H,这里有个技巧,不用把1C20都转为2进制,根据题目来转,例如上面的4k表示页内地址有12位,那C20就是页内地址,不用动,所以页号为1**(不用转,直接是多少那就页号是多少)**,对应物理块号为3,那物理地址就是3C20H
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=59
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=64
2.3 段页式存储管理
注意上面的这个最多有多少个段、页、页的大小都不是固定的,要看题目给的地址位数,这里段号是31-24+1=8,页号是23-12+1=12,页内地址是11-0+1=12,也就分别是28,212,212,只是页内地址转为了k为单位
注意两个地方,第一个所有的值都不是固定的,第二个页号的描述是最大允许有多少个页,而不是每个页均有多少个页
2.4 单缓冲区
下面这个公式是用来计算单缓冲区花费的时间(T+M)*n+C
T为输入的时间,M为传输的时间,n为作业的个数,C为处理的时间
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=70
2.5 双缓冲区
下面这个公式是用来计算双缓冲区花费的时间
T * n+M+C
T为输入的时间,M为传输的时间,n为作业的个数,C为处理的时间
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=71
套公式即可
3、设备管理
3.1 磁盘调度算法
先来先服务(FCFS)
最短寻道时间优先(SSTF)
扫描算法(SCAN)或电梯调度算法
这里我是按照之前学的,把这些请求顺序从小到大排好序列(要把磁头起始位置和0也加进去),也就是0、14、37、53、65、67、98、122、124、183,然后看磁头是往哪里走,把起始位置当做原点,如果向0走,那就是53往左边数,53-37-14,注意0只是位置参考不算进来,然后到了0已结走投无路了那就掉头,但是掉头是从原点开始算的,所以就是53往右数,65-67-98-122-124-183,最后把两个合在一起就是53-37-14-65-67-98-122-124-183,计算其中的差值就可
循环扫描算法(CSCAN)或单向扫描算法
总的来说后两种算法难点,不太熟,先来先服务和最短寻道时间优先算法移动臂的运动方向随时改变,然后知道每个算法对应的英文是什么
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=76
3.2 旋转调度算法
这里只要知道如果顺序处理的情况下那总时间是(读时间+处理时间+每个扇区旋转时间n-2)(n-1)+(读时间+处理时间),这里的n是记录数量
优化后就是刚好旋转后就是对应的记录,总时间为(读时间+处理时间)*n
特别注意:这里的磁头它旋转的时候是不会停下来的,也就是在处理记录的时候磁头还是会继续往下转,而不会留下来等记录处理完
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=78
答案:(27)246 (28)54
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=80
答案:(27)102 (28)30
3.3 多级索引结构
注意这里下标都是从0开始的
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=85&spm_id_from=pageDriver
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=86
如果只告诉了磁盘块的大小,那就是暗示索引块大小和数据块大小都为磁盘块大小,块号就是地址项
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=87
4、文件管理
4.1 文件目录
4.2 目录结构
- 相对路径:从当前目录开始的,最后面一般是加
\
- 绝对路径:从根目录开始
- 全文件名:绝对路径\文件名
特别注意:这里Java-prog\和Program\Java-prog\都是可以表示相对路径的
4.3 位示图
- 位示图:用二进制的一位来表示一个物理块的使用情况,0空闲1占用
这个题目和上面那个题目差不多,但是有个地方要注意,上面那个题目没有给出位示图字编号是从多少开始的,所以默认为从1开始,只要位示图字从1开始的那计算结果要加1,然后这个题是位示图字从0开始的,计算结果不用加1
位示图字编号从1开始要加1,从0开始不用加1,无论是否被整除
杂题
杂题1
杂题2
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=108
杂题3
杂题4
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=110
杂题5
杂题6
讲解地址:https://www.bilibili.com/video/BV1AY411E7GC?p=112
杂题7
杂题8
杂题9
杂题10
杂题11
杂题12
杂题13
杂题14
可移植性并不是指所写的程序不作修改就可以在任何计算机上运行,而是指当条件有变化时,程序无需作很多修改就可运行。
这里不选易移植性是因为后面还有句针对硬件变化进行结构与功能上的配置,移植性没这个本事
评论区