软件设计师考试 操作系统基本原理( 二 )


第五节 进程管理——pv操作
临界资源:诸进程间需要互斥方式对其进行共享的资源 , 如打印机 , 磁带机等 。
临界区:每个进程中访问临界资源的那段代码称为临界区 。
信号量:是一种特殊的变量 , 符号为s , 只用于pv操作
PV操作:
图注:S代表信号量 , 其中P操作表示:S自减一 , 然后判断是否小于零 , 若小于零则将该进程阻塞起来 , 并将其放入进程队列中 , 让进程处于等待状态 , 若不小于零 , 则表示可以往下面执行;该操作即为将进程“挂起”或“申请资源” , 该操作一般用于”运行需要条件的操作“ 。V操作表示:S自增一 , 然后判断S是否小于等于零 , 若是 , 则从进程队列中拿出一个进程 , 并唤醒该进程 , 使其继续执行;若不是 , 则可以继续往下面的步骤执行;该操作即将进程“唤醒”或“释放资源” , 一般将该操作用于”没有任何约束的上来就可以运行的操作“ 。
pv操作示例:
pv操作例题:
题注:
1:这里Sn 的使用是很清楚的,进店->出店,所以选项里带sn 操作的肯定可以排除了
2:信号量操作很关键的点就是,线程唤起做操作前一定是需要做P操作的,不然这个资源就可能被无限线程操作,所以对b1来说一定是个P操作,(选项排除sn 也只剩P 操作选项了…),同样对a1,a2 中一定有个P操作,表示付款进程占据了资源,很显然就是不能上来就P操作,因为s1,s2初始信号量都为0,上来P操作线程就直接挂起了,后面所有流程也就没有了(因为b那边肯定是P操作了),即a1是V,a2是P,这里可以得到1的答案为A,从选项可以看出S1代表付款资源,S2代表收银资源,所有b1操作肯定是P(s2),得到2的答案为C
pv操作与前趋图
图注:这种例题通过观察箭头的指向来解题 , 被指箭头用p操作 , 指向箭头就用v操作 , 有几个箭头就用几次 。
第六节 进程管理——死锁问题
问题描述:进程管理是操作系统的核心 , 但如果设计不当 , 就会出现死锁问题 , 如果一个进程在等待一件不可能发生的事 , 则进程就死锁了 , 此时该进程将一直占用部分系统资源 , 而如果多个进程产生死锁 , 就会造成系统资源被占用完毕 , 进而造成系统死锁 。
解决方案:提高系统资源容量;常见习题:计算机系统至少需要多少资源将不可能发生死锁问题;
例题:
图解:一个进程在得到所有所需资源之后将释放自身占用的资源 , 因此该例题至少需要13个资源则不可能发生死锁 。计算方法:将每个进程所需资源减去一然后把他们相加 , 总数再加一 , 即为避免死锁所需的最少资源 。
死锁的条件及处理方式:
发生死锁的四大必要条件
1.进程互斥
2.保持和等待:在资源总量并未满足完成进程所需资源的总量前提下 , 每个进程都保持自身占用的资源不变并且一直等待其他进程完成以获取其释放的系统资源
3.不剥夺:系统不会把已分配给一个进程的资源剥夺掉分配给其他进程
4.环路等待:如总共有三个进程 , A等待B , B等待C , C等待A;诸如此类的 , 等待的进程形成了一个闭合环状
注:死锁的预防就是通过打破四大条件来进行
死锁的避免
1.有序资源分配法:将系统资源按照顺序分配给进程 , 一个进程完成后才将资源分配给下一个进程