进程管理3《第二章》

实现临界区互斥的基本方法
软件实现:
单标执法(生死系于别人):违背空闲让进,资源利用不充分
双标志先检查(不礼貌):违背忙则等待,检查和修改不能一次进行
双标志后检查:违背空闲让进和有限等待,会产生饥饿
Peterson 算法:
Pi 进程 pj 进程
flag[i]=true;turn=j;---------------------flag[j]=true;turn=i;
While(flag[j]&&turnj);------------ While(flag[i]&&turni);
Critical section; -----------------------Critical section;
flag[i]=FLASE;-------------------------flag[j]=FLASE;
Remainder section; ------------------Remainder section;
硬件实现:
中断屏蔽:在单处理机系统中,操作的原子性可通过中断屏蔽(18)的方法实现
硬件指令法:TextAndSet 指令、Swap 指令
原语:指操作系统中实现一些具有特定功能的程序段,这些程序段的执行过程是不可分割的,
即其执行过程不允许被中断。16
原语特点:执行过程不允许被中断(原子性)

管程
定义:是由一组数据以及定义在这组数据之上的这组数据的操作组成的软件模块,这组操作 能初始化并改变管程中的数据和同步进程。
组成:局部于管程结构数据说明、对该数据结构进行操作的一组过程、对局部于管程的共享 数据设置初始值的语句。
特征:局部于管程的数据只能被局部于管程内的过程所访问;
一个进程只有同过调用管程内的过程才能进入管程所访问共享数据
每次仅允许一个进程在管程内执行某个内部过程。

经典同步问题
生产者与消费者、
特征:容器<=容量、生产行为与消费行为
生产者关心剩余空间 empty,消费者关心已占用空间 full
读者(团)与写者问题
特征:资源会不会被占有,同步问题中变量要互斥
写者关心文件是否被占有
读者团:第一个读者:占有文件
中间读者 :只增加人数,其余不关心 加一个计数器 count
最后一个读者:释放文件
哲学家进餐问题
解决方法:
(1) 至多只允许有四位哲学家同时进餐。最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐。
(2) 仅当哲学家的左、右两只筷子均可用时,才允许他拿起筷子进餐。 
(3) 规定奇数号哲学家先拿他左边的筷子,偶数号哲学家拿右边的筷子 。
死锁的基本概念
死锁:如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,
那么该组进程是死锁的。
产生死锁的根本原因:竞争资源,资源推进
竞争不可抢占式资源引起死锁,竞争可消耗资源引起死锁,进程推进顺序不当引起死锁。
处理策略:鸵鸟算法(视而不见)、预防死锁,避免死锁,死锁的检测与解除
安全状态:指系统能够按照某种进程推进顺序为每个进程分配其所需要的资源,直到每个进程都能顺利完成。
死锁预防;
破坏产生死锁的必要条件:
1)互斥条件(资源独占),不可行 2)请求和保持条件(部分分配),一次申请完
3)不可抢占资源(不可剥夺),强行剥夺要付出代价 4)循环等待条件,有序申请
死锁避免(系统安全状态、银行家算法)
死锁检测与解除。
死锁的检测:把资源分配图加以简化,来检测当系统处于 S 状态时是否为死锁状态。
S 为死锁的充分条件是:当且仅当 S 状态的资源分配图是不可完全简化的。
解除死锁的方法:抢占资源、终止进程(终止所有死锁进程,逐个终止进程)、 进程回退

你可能感兴趣的:(操作系统,linux,多线程)