进程管理
进程状态:

在进程中,左为三态模型为基础,右边五态模型是满足较为复杂的情况,多了静止就绪状态和静止阻塞状态。其中,在等待状态和运行状态中,它没有直接从等待变到运行,因为cpu不允许直接将整个程序放入,因此是采用时间片的方式进行运行。静止就绪,例如打电话时听歌操作,当打电话的时候,把音乐挂上,在打电话完以后,则再调度回来。
前驱图:
表达任务的约束条件,哪些任务是共同完成,哪些是必须完成的。
进程的同步和互斥:
互斥:如千军万马过独木桥
同步:速度有差异,在一定情况停下等待。
注意:互斥和同步在这里并不是反义,互斥反义词是共享,同步反义词是异步。
PV操作:
P操作:阻塞操作
V操作:唤醒操作


PV操作,假设对生产者进行分析,生产者生产一个产品:
1、使用P(S1),因此S=S-1 S1=0
2、进行判断为F,因此继续执行
3、放入产品,执行V(S2) 因此S2=S2+1 S2=1
4、判断为F,可继续执行生产者。
5、此时在这再进行P(S1),此时S1=0条件判断为T,所有程序要队列。
假设对消费者进行分析:
1、消费者对缓存中判断是否存在,执行P(S2), S2=0
2、判断为F,继续往下执行。
3、取出缓存,执行V(S1),S1=0,判断为T,此时要调用进程,调用队列,也就是变相的提醒生产者。
PV操作与前驱图的结合:
解题:

对于前驱图结合PV操作,有一个非常简单且高效的解决方法:
首先对前驱图进行分析,并且标出其信号量。
如上图中P1----->P2这一关系,首先标出信号量,P1为S1,P2为S2,P3为S3,P4为S4,P5为S5,这里标记信号量遵守的是,从上到下,从左到右的方法。
接着,最关键的地方就是对于------>,箭头左边(底端---),为V(S)操作;箭头右端(顶端 >)为P(S)操作,可以通过这个方法快速判断PV操作。
死锁问题:
(一般是计算最少多少个资源不会产生死锁)
关于计算多少资源不发生死锁的问题:k*(n-1)+1个资源。k为进程数,n为单个进程的资源数。
银行家算法:一般可以把选项代录,判断哪些能正常运行。
例题:

对于上述题目,首先我们得计算出,系统每个进程 剩下的资源数。
然后去判断哪个进程可以先实行,并且不会出现死锁,进程的优先级,主要是为了保证没有死锁的条件下,完成进程释放资源。如系统剩下的资源数为R1=2,R2=1,R3=0,那么此时只能选择P2进程,因为P2进程只需要(2,2,1),而系统已经分配(2,1,1),在进程结束后,资源数又增加为(4,2,1),一次类推,就可以找到最合适的进程顺序。
计算样式如下: 
储存管理
分区存储组织:
首次适应算法:在首先能放入的空间,切出一个适合的大小。如4K,先遇到9K,就切9K给4K。
最佳适应算法:把空间练成一个链,找到最小且能容下这个空间的切片,再把剩下的空间链入链路。(缺点:切出的空间太小,碎片太多。)
最差适应算法:与最佳适应算法相反,这里用最大空间来切。
循环首次适应算法:把空闲空间连接成一个环状,用循环的方式,平均对空间进行存储。
页式存储组织:

存储的方式为页表型,将程序分为一块一块的程序,分别存进页里面,当需要用哪些程序部分就调入哪方面的程序。
优点:利用率高,碎片小,分配及管理简单。
缺点:增加了系统开销(页表记录了他们的关系,要定位时,肯定需要查表。);可能产生抖动。
段式存储组织:

存储方式是按空间来定,根据段的大小在内存空间切出相应的段,与页式存储不同,页表是固定分割。
段页式存储组织:
先分段再分页。

快表:

页面置换算法:
最优算法、随机算法、先进先出(FIFO)算法、最近最少使用(LRU)算法。
重点:先进先出(FIFO)算法、最近最少使用(LRU)算法。

文件管理
索引文件结构:

空闲存储空间的管理
位视图法(重要):

设备管理
程序控制方式:主要为查询。
程序中断方式:会主动干涉。
DMA方式:专门建立控制器,cpu只做介入,主要都是由DMA来控制。
spooling技术:做等待作用,例如打印机的等待,当共同共用资源,就会开辟队列,这样就会任务等待。
微内核操作系统(明白微内核和单体内核的区别)

184

被折叠的 条评论
为什么被折叠?



