1 / 23

设备管理

设备管理. 缓冲技术 设备分配程序 设备驱动程序. 缓 冲 技 术. 设备管理中的问题 CPU 速度与设备速度不匹配的问题。 传输大量数据时中断次数太多。 DMA 或通道的“瓶颈”问题。 解决办法:引入缓冲技术。. 缓冲区. 输入设备. CPU. 输出设备. 缓冲的实现方法. 专用硬件缓冲器。 软件缓冲:在内存中划出若干专用区域。 专用缓冲区。 共享缓冲区。. 缓冲的种类. 单缓冲 匹配了速度,但不能并行。 双缓冲 既解决了速度匹配,又可以并行。当设备很多时,实现起来很困难。

cade
Download Presentation

设备管理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 设备管理 缓冲技术 设备分配程序 设备驱动程序

  2. 缓 冲 技 术 • 设备管理中的问题 • CPU速度与设备速度不匹配的问题。 • 传输大量数据时中断次数太多。 • DMA或通道的“瓶颈”问题。 • 解决办法:引入缓冲技术。 缓冲区 输入设备 CPU 输出设备

  3. 缓冲的实现方法 • 专用硬件缓冲器。 • 软件缓冲:在内存中划出若干专用区域。 • 专用缓冲区。 • 共享缓冲区。

  4. 缓冲的种类 • 单缓冲 • 匹配了速度,但不能并行。 • 双缓冲 • 既解决了速度匹配,又可以并行。当设备很多时,实现起来很困难。 • 多缓冲:系统中有多个缓冲区,一些专门用于输入,另一些专门用于输出。 • 缓冲池:多个进程共享,既可以做输入,又可以做输出。

  5. 缓冲池的管理 • 一个缓冲池由多个缓冲区组成。 • 一个缓冲区既可以用于输入,又可以用于输出。 • 一个缓冲区的组成: 设备号 数据块号 缓冲器号 互斥标志位 连接指针 缓冲首部 缓冲体 用于存放数据

  6. 缓冲池的管理 • 在任一时刻,缓冲池有三个队列: • 空闲缓冲区队列em • 存放输入数据的输入队列in • 存放输出数据的输出队列out • 四种工作缓冲区: • 收容输入缓冲区:用于存放输入设备数据。 • 提取输入缓冲区:提取设备输入数据的缓冲区。 • 收容输出缓冲区: • 提取输出缓冲区:

  7. 缓冲池的管理 • 先分析收容输入的过程:从空缓冲队列中取出一个空缓冲区,存入输入数据后,放入in队列中。在该过程中,涉及缓冲区的两个操作。 • 对缓冲池的操作 • 从队列中按一定规则选取一个缓冲区的过程take_buf(type)。 • 把缓冲区按一定的选取规则插入相应的缓冲区的过程add_buf(type)。

  8. 缓冲池的管理 • 但是,缓冲区是临界资源;要想从队列中取缓冲区,前提条件是队列不能为空。 • 因此,对用户进程来说,从队列中取缓冲区和将缓冲区加入队列是互斥和同步关系。 • 供进程申请缓冲区的过程get_buf(type,number)和供进程将缓冲区放入相应缓冲区队列的过程put_buf(type,number)分别如下:

  9. 定义:互斥信号量sem(type)=1 同步信号量 rs(type)=n,表示队列长度 Get_buf(type,number) begin p(rs(type)) p(sem(type)) pointer=take_buf(type,number) v(sem(type)) end put_buf(type,number) begin p(sem(type)) ADD_buf(type,number) v(sem(type)) v(rs(type)) end

  10. 设备分配程序 • 设备分配用数据结构 • 设备分配原则 • 设备分配方式 • 设备分配策略 • 设备分配算法

  11. 设备分配用数据结构 • 设备控制表(DCT) • 设备标识符 • 设备类型 • 设备地址或设备号 • 设备状态 • 等待队列指针 • 与设备相连的I/O控制器指针。

  12. 设备分配用数据结构 • 控制器控制表(COCT) • 控制器标识 • 状态:忙/闲 • 等待队列指针 • 通道指针 • 通道控制表(CHCT) • 通道标识 • 通道状态 • 等待队列指针:队首指针和队尾指针。

  13. 设备分配用数据结构 • 系统设备表(SDT) • 设备标识符 • 设备类型 • 正在使用该设备的进程标识 • DCT指针 • 四个数据结构通过其内部链接指针联系在一起: SDTDCT COCT CHCT

  14. 设备分配原则 • 充分发挥设备的使用效率。 • 避免由于不合理的分配方法造成进程死锁。 • 把用户程序和具体物理设备隔离起来。

  15. 设备分配方式 • 静态分配:在进程运行之前,为其分配所需的所有设备,且在其运行期间,不允许其他进程使用。 无死锁;设备利用率低。 • 动态分配:进程运行期间,根据需要分配设备,使用完后,马上释放。 设备利用率高;会造成死锁。

  16. 设备分配策略 • 先申请先分配:系统按提出I/O申请的先后次序,将进程发出的I/O请求命令排成队列。 • 优先级高者先分配。根据发出I/O请求命令的进程的优先级。

  17. 设备分配算法 • 建立一条从设备到控制器到通道的链。 • 实际上就是根据SDT、DCT、COCT、CHCT中的状态和连接信息来确定一条链。 • 其流程如下:

  18. A 进程I/O请求 检查设备分配的安全性 根据SDT找到DCT指针 N 安全吗? Y Y 设备忙? 入等待队列 将设备分配给进程 N 按分配策略选取占据 该设备的进程 搜索DCT,找到COCT 入控制器 等待队列 忙? 被选中? N N Y 为设备分配控制器 A

  19. 设备驱动程序 • 驱动物理设备、DMA或通道直接进行I/O操作的子程序的集合。 • 负责设置与相应设备有关的寄存器的值;启动设备进行I/O操作;指定操作的类型和数据流向等。 • 每一个设备的每一项操作都对应一个子程序,如何管理这些子程序呢? • 设备开关表:

  20. 操作 设备

  21. I/O控制 • 问题:何时分配设备、何时分配缓冲区、何时驱动设备进行操作、何时响应中断? • I/O控制:从用户进程提出设备请求开始,为进程分配设备、缓冲区、驱动设备进行I/O操作直到响应中断的整个过程,称为I/O控制。 • 流程如下:

  22. 进程设备请求 中断请求 请求处理 分析中断原因 设备分配程序 执行中断处理程序 分配缓冲区 驱动设备运行

  23. 上机(四) 用C语言编写设备分配程序。 说明:(1)不需要编写安全检查模块。 (2)自己设定初始数据。但应注意能够验证各种情况。

More Related