操作系统(五)输入/输出(I/O)管理

  • 一、I/O控制器
  • 二、I/O控制方式
    • 程序直接控制方式
    • 中断驱动方式
    • DMA方式
    • 通道控制方式
    • I/O软件层次结构
  • 假脱机技术
  • 设备的分配与回收
  • 缓冲区
    • 单缓冲
    • 双缓冲
    • 循环缓冲区
    • 缓冲池

一、I/O控制器

I/O设备由机械部件电子部件组成
机械部件:I/O设备的机械部件主要用来执行具体I/O操作。
电子部件:I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。

CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。这个电子部件就是I/O控制器,又称设备控制器。CPU可控制I/O控制器,又由I/O控制器来控制设备的机械部件。


①一个I/O控制器可能会对应多个设备;
②数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O;另一些计算机则采用I/O专用地址,即寄存器独立编址。

二、I/O控制方式

程序直接控制方式

中断驱动方式

引入中断机制。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/O的进程(或其他进程)的运行环境,然后继续执行。

DMA方式

通道控制方式

I/O软件层次结构


用户层软件:用户层软件实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。用户层软件将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务。
设备独立性软件:又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。

  1. 向上层提供统一的调用接口(如 read/write 系统调用)
  2. 设备的保护原理类似与文件保护。设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。
  3. 差错处理,设备独立性软件需要对一些设备的错误进行处理
  4. 设备的分配与回收
  5. 数据缓冲区管理,可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异
  6. 建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序。


操作系统系统可以采用两种方式管理逻辑设备表(LUT):
第一种方式,整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统。
第二种方式,为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中。

设备驱动程序:主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置
设备寄存器;检查设备状态等。因为不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道。因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。

中断处理程序:当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。中断处理程序的处理流程如下:

假脱机技术

设备的分配与回收

设备的固有属性可分为三种:独占设备、共享设备、虚拟设备。
独占设备:一个时段只能分配给一个进程(如打印机)
共享设备:可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用。
虚拟设备:采用 SPOOLing 技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用 SPOOLing 技术实现的共享打印机)

静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源
动态分配:进程运行过程中动态申请设备资源


设备控制表(DCT):系统为每个设备配置一张DCT,用于记录设备情况

控制器控制表(COCT):每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理。

通道控制表(CHCT):每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理。

系统设备表(SDT):记录了系统中全部设备的情况,每个设备对应一个表目。

设备分配的步骤

  1. 根据进程请求的物理设备名查找SDT(注:物理设备名是进程请求分配设备时提供的参数)
  2. 查找SDT,找到用户进程指定类型的、并且空闲的设备,将其分配给该进程。操作系统在逻辑设备表(LUT)中新增一个表项。
  3. 根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
  4. 根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。

缓冲区

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区。

单缓冲

双缓冲

循环缓冲区

缓冲池

操作系统(五)输入/输出(I/O)管理相关推荐

  1. 输入/输出(I/O)管理

    标题## 输入/输出(I/O)管理 I/O管理概述 1.1 I/O设备 定义:将数据输入到计算机,或可接受计算机输出数据的外部设备 设备的分类 按信息交换单位 • 块设备 • 信息交换以数据块为单位 ...

  2. 操作系统 | 【五 输入/输出管理】知识点及例题

    一.知识点 1.IO控制器 / 设备控制器(说人话版) (官方正版)CPU 无法直接控制 I /O 设备的机械部件, 因此 I /O 设备还要有一个电子部件作为 CPU 和 I /O 设备机械部 件之 ...

  3. (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节4:I/O软件层次结构

    文章目录 一:用户层软件 二:设备独立性(无关性)软件 三:设备驱动程序 (1)为什么需要驱动 (2)功能 四:中断处理程序 五:硬件设备 I/O软件是操作系统中很特别的存在 它向下与硬件有着密切的联 ...

  4. 黑书《现代操作系统(中文第三版)》课后习题——第五章 输入/输出

    第五章 输入/输出 1.芯片技术的进展已经使得将整个控制器包括所有总线访问逻辑放在一个便宜的芯片上成为可能.这对于图1-5的模型具有什么影响? 答:(题目有问题,应该是图1-6)在此图中,一个控制器有 ...

  5. 操作系统——输入/输出(I/O)管理

    文章目录 1. I/O管理概述 1.1 I/O设备 1.2 I/O控制方式 1.2.1 程序直接控制方式 1.2.2 中断驱动方式 1.2.3 DMA方式 1.2.4 通道控制方式 1.3 I/O子系 ...

  6. 操作系统(5) -- 输入/输出管理

    5.1 I/O管理概述 I/O设备 按使用特性:人机交互外部设备.存储设备.网络通信设备 按信息交换的单位分类:块设备.字符设备 I/O控制方式 外围设备与内存之间的输入/输出方式: 程序直接控制方式 ...

  7. 全网最细海龟 (turtle) 画图讲解 (五):输入/输出文字及鼠标与键盘交互设计

    目录 一.输入/输出文字 1. 输出文字 2. 输入文字 二.鼠标与键盘交互设计 1. 键盘事件 2. 鼠标事件 2.1 获取鼠标点击的位置 3. 计时器 最近博主在 CSDN 上看到许多关于海龟画图 ...

  8. 快速入门丨篇五:如何进行运动控制器输入/输出IO的应用?

        此前,正运动技术给大家讲了,运动控制器的"固件升级".ZBasic程序开发.ZPLC程序开发以及运动控制器与触摸屏的通讯等,今天我们来学习一下如何进行运动控制器输入/输出I ...

  9. DIN22 IPO OC双输入双输出单电源供电光电隔离转换器 输入/输出 3000VDC 五隔离 实现正负双向信号的隔离传输

    概述 导轨安装DIN22 IPO OC系列模拟信号隔离放大器是一种将输入信号隔离放大.转换成按比例输出的直流信号混合集成厚模电路.产品广泛应用在电力.远程监控.仪器仪表.医疗设备.工业自控等需要直流信 ...

最新文章

  1. 常见排序算法复杂度总结
  2. mysql的从节点能否执行事务_MySQL执行事务的语法与流程详解
  3. 云南省农村信用社计算机岗位待遇如何,云南农村信用社薪资待遇如何?
  4. C++ qsort() 函数调用时实参与形参不兼容的问题解决
  5. python基础-python函数参数为print语句时的输出
  6. c语言利用fun求最小值,c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f...
  7. hashMap 根据已有知识知道的
  8. 联发科芯片全线缺货:是OPPO太强还是英特尔抢产能
  9. oracle sequence 应用,oracle应用之使用sequence批量写数据
  10. 2018年全国卷Ⅰ卷理科数学图片版
  11. 使用matlab计算并绘制连续信号的傅里叶变换
  12. MCU 配置 Cyclone FPGA
  13. Qt 6.2的下载和安装
  14. 基于JAVA准妈妈孕期交流平台计算机毕业设计源码+系统+lw文档+部署
  15. 显示农历天气时钟小部件下载_优效日历电脑版-优效日历下载v2.0.10.16
  16. Redis——底层数据结构原理
  17. OKEx货币对价格数量长度及精度
  18. SAP PI PO 接口配置主体传播 RSXMB_CONFIG_PP_NEW
  19. 苹果Meta都在冲的Pancake技术,中国VR团队YVR竟抢先交出产品答卷
  20. MySQL 基础学习笔记(1)

热门文章

  1. Java基础5一数组的常见应用算法
  2. 《你的灯亮着吗?》个人总结
  3. 【javascript】DOM操作方法(3)——document节点属性
  4. 设置UITableView设置contentsize
  5. codeforces 732/D 二分
  6. WebApp 里Meta标签大全
  7. [置顶] Android的IPC访问控制设计与实现
  8. 用GDB Server进行远程调试
  9. 区位码怎么知道点阵里的起始点_自身免疫疾病的GAPS起始饮食改良版
  10. Integer注意_享元设计模式