首页 > 代码库 > 输入输出和死锁

输入输出和死锁

第五章 输入/输出

IO设备大致可以分为两类:块设备、字符设备,块设备把地址存储在固定大小的块中,每个块有自己的地址,字符设备以字符为单位发送或接收一个字符流,而不考虑任何块结构。

控制器的任务是把串行的位流转为字节块,并进行必要的错误校正工作。字节块通常首先在控制器内部的一个缓冲区中按位进行组装,然后再对校验和进行校验并证明字节块没有错误后,再将它复制到主存中。

直接存储器存取(DMA:能够独立于CPU而访问系统总线,它包含若干个可以被CPU读写的寄存器,其中包括一个内存地址寄存器,一个字节计数寄存器和一个或多个控制寄存器。控制寄存器指定要使用的IO端口、传送方向(从I/O设备读会写到IO设备)、传送单位(每次一个字节或每次一个字)以及在一次突发传送中要传送的字节数。

许多总线能够以两种模式操作:每次一个字模式和块模式

休眠状态比睡眠状态更加节省能量。关闭高速缓冲是进入睡眠状态,将主存的内容写到磁盘上,然后关闭主存本身,这种方法是休眠。

第六章 死锁

资源:需要排他性使用的对象称为资源。

可抢占资源:可以从拥有它的进程中抢占而不会产生任何副作用的资源。

不可抢占资源:指在任何不引起相关的计算失败的情况下,无法把它从占有它的进程处抢占过来的资源。

死锁:如果一个进程集合中的每个进程都在等待只能由该进程集合中其他进程才能引发的事件,那么该进程集合就是死锁的。

发生死锁的四个必要条件:

         1)互斥条件,每个资源要么已经分配给了某个进程,要么是可用的。

         2)占有和等待条件,已经得到了某个资源的进程可以再请求新的资源。

         3)不可强占条件,已经分配给一个进程的资源不能强制性的被抢占,他只能被占有它的进程显示的释放。

         4)环路等待条件,死锁发生时,系统中一定有两个或两个以上的进程组成的一条环路,该环路中的每个进程都在等待着下一个进程所占有的资源。

Holt建立的模型:从资源节点到进程节点的有向边代表该资源已被请求、授权并被进程占用。;由进程节点到资源节点的有向边表明当前进程正在请求该进程,并且该进程已经被阻塞,处于等待请求的状态。

有四种处理死锁的策略:

1)  忽略该问题

2)  检测死锁并恢复

3)  仔细对资源进行分配,动态的避免死锁

4)  通过破坏引起死锁的四个必要条件之一,防止死锁的产生。

安全状态:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。


本文出自 “虎哥的博客” 博客,请务必保留此出处http://7613577.blog.51cto.com/7603577/1551828

输入输出和死锁