欢迎来到天天文库
浏览记录
ID:40209235
大小:109.00 KB
页数:23页
时间:2019-07-26
《操作系统-设备管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、设备管理缓冲技术设备分配程序设备驱动程序缓冲技术设备管理中的问题CPU速度与设备速度不匹配的问题。传输大量数据时中断次数太多。DMA或通道的“瓶颈”问题。解决办法:引入缓冲技术。输入设备缓冲区CPU输出设备缓冲的实现方法专用硬件缓冲器。软件缓冲:在内存中划出若干专用区域。专用缓冲区。共享缓冲区。缓冲的种类单缓冲匹配了速度,但不能并行。双缓冲既解决了速度匹配,又可以并行。当设备很多时,实现起来很困难。多缓冲:系统中有多个缓冲区,一些专门用于输入,另一些专门用于输出。缓冲池:多个进程共享,既可以做输入,又可以
2、做输出。缓冲池的管理一个缓冲池由多个缓冲区组成。一个缓冲区既可以用于输入,又可以用于输出。一个缓冲区的组成:缓冲体缓冲首部设备号数据块号缓冲器号互斥标志位连接指针用于存放数据缓冲池的管理在任一时刻,缓冲池有三个队列:空闲缓冲区队列em存放输入数据的输入队列in存放输出数据的输出队列out四种工作缓冲区:收容输入缓冲区:用于存放输入设备数据。提取输入缓冲区:提取设备输入数据的缓冲区。收容输出缓冲区:提取输出缓冲区:缓冲池的管理先分析收容输入的过程:从空缓冲队列中取出一个空缓冲区,存入输入数据后,放入in队列
3、中。在该过程中,涉及缓冲区的两个操作。对缓冲池的操作从队列中按一定规则选取一个缓冲区的过程take_buf(type)。把缓冲区按一定的选取规则插入相应的缓冲区的过程add_buf(type)。缓冲池的管理但是,缓冲区是临界资源;要想从队列中取缓冲区,前提条件是队列不能为空。因此,对用户进程来说,从队列中取缓冲区和将缓冲区加入队列是互斥和同步关系。供进程申请缓冲区的过程get_buf(type,number)和供进程将缓冲区放入相应缓冲区队列的过程put_buf(type,number)分别如下:定义:互
4、斥信号量sem(type)=1同步信号量rs(type)=n,表示队列长度Get_buf(type,number)beginp(rs(type))p(sem(type))pointer=take_buf(type,number)v(sem(type))endput_buf(type,number)beginp(sem(type))ADD_buf(type,number)v(sem(type))v(rs(type))end设备分配程序设备分配用数据结构设备分配原则设备分配方式设备分配策略设备分配算法设备分配
5、用数据结构设备控制表(DCT)设备标识符设备类型设备地址或设备号设备状态等待队列指针与设备相连的I/O控制器指针。设备分配用数据结构控制器控制表(COCT)控制器标识状态:忙/闲等待队列指针通道指针通道控制表(CHCT)通道标识通道状态等待队列指针:队首指针和队尾指针。设备分配用数据结构系统设备表(SDT)设备标识符设备类型正在使用该设备的进程标识DCT指针四个数据结构通过其内部链接指针联系在一起:SDTDCTCOCTCHCT设备分配原则充分发挥设备的使用效率。避免由于不合理的分配方法造成进程死锁。
6、把用户程序和具体物理设备隔离起来。设备分配方式静态分配:在进程运行之前,为其分配所需的所有设备,且在其运行期间,不允许其他进程使用。无死锁;设备利用率低。动态分配:进程运行期间,根据需要分配设备,使用完后,马上释放。设备利用率高;会造成死锁。设备分配策略先申请先分配:系统按提出I/O申请的先后次序,将进程发出的I/O请求命令排成队列。优先级高者先分配。根据发出I/O请求命令的进程的优先级。设备分配算法建立一条从设备到控制器到通道的链。实际上就是根据SDT、DCT、COCT、CHCT中的状态和连接信息来确定
7、一条链。其流程如下:进程I/O请求根据SDT找到DCT指针设备忙?Y入等待队列N按分配策略选取占据该设备的进程被选中?NYAA检查设备分配的安全性安全吗?NY将设备分配给进程搜索DCT,找到COCT忙?入控制器等待队列N为设备分配控制器设备驱动程序驱动物理设备、DMA或通道直接进行I/O操作的子程序的集合。负责设置与相应设备有关的寄存器的值;启动设备进行I/O操作;指定操作的类型和数据流向等。每一个设备的每一项操作都对应一个子程序,如何管理这些子程序呢?设备开关表:OPENCLOSECON子程序入口地址P
8、RNTTY操作设备I/O控制问题:何时分配设备、何时分配缓冲区、何时驱动设备进行操作、何时响应中断?I/O控制:从用户进程提出设备请求开始,为进程分配设备、缓冲区、驱动设备进行I/O操作直到响应中断的整个过程,称为I/O控制。流程如下:进程设备请求请求处理设备分配程序分配缓冲区驱动设备运行中断请求分析中断原因执行中断处理程序上机(四)用C语言编写设备分配程序。说明:(1)不需要编写安全检查模块。(2)自己设定初始数据。但应注意
此文档下载收益归作者所有