【操作系统】五、输入输出(I/O)管理:1. I/O 管理概述(I/O控制器、I/O 控制方式、I/O 软件层次结构、层次间接口)

news2024/10/23 2:07:06

输入输出(I/O)管理

文章目录

  • 输入输出(I/O)管理
  • 十、I/O 管理
    • 1.设备分类
    • 2. I/O 控制器
      • 2.1功能
      • 2.2组成
    • ❗3. I/O 控制方式
      • 3.1 程序直接控制方式
      • 3.2 中断驱动方式
      • ❗3.3 ==DMA==方式
        • 3.3.1 DMA控制器
      • 3.4 通道控制方式
    • ❗4. I/O 软件层次结构
      • 4.1用户层软件
      • ❗4.2==设备独立性软件==
      • 4.3设备驱动程序
      • 4.4中断处理程序
    • 5. 层次间接口
      • 5.1输入输出 应用程序接口
        • 5.1.1阻塞、非阻塞I/O
      • 5.2设备 驱动程序接口

十、I/O 管理

“I/O”就是“输入/输出”(Input/Output)。

I/O设备:外部设备。就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。

系统为每台设备确定一个编号以便区分和识别设备,这个编号叫设备的绝对号

UNIX系统将外部设备抽象为一种特殊文件,用户可以使用与文件操作相同的方式对外部设备进行操作。

1.设备分类

  • 1)按使用特性分类:
  1. 人机交互类外部设备

    数据传输速度慢,如:鼠标键盘。用于人机交互。

  2. 存储设备

    数据传输速度块,如:移动硬盘、光盘。用于数据存储。

  3. 网络通信设备

    数据传输速度介于上述二者之间,如猫、路由器。用于网络通信。

  • 2)按传输速率分类:
  1. 低速设备
  2. 中速设备
  3. 高速设备
  • 3)按信息交换的单位分类
  1. 块设备

    数据传输的基本单位是。传输速率较高,可寻址,即对它可随机地读/写任一块。如磁盘。

    • 特征:可寻址
    • I/O控制方式主要采用DMA
  2. 字符设备

    数据传输的基本单位是字符。传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式。如鼠标键盘。

2. I/O 控制器

I/O设备分为机械部件、电子部件。

  • 机械部件

    机械部件主要用来执行具体I/O操作。

    如:我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂、磁盘盘面。

  • 电子部件I/O控制器、设备控制器)

    电子部件通常是一块插入主板扩充槽的印刷电路板。

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

注:在计组中也叫“I/O接口”。

详见:计算机组成原理 - 7.输入输出系统 - 2. I/O接口

CPU可控制I/O控制器,又由I/O控制器来控制设备的机械部件。

2.1功能

I/O控制器的功能:

  1. 接受和识别CPU发出的命令;

    如CPU发来的read/write命令,I/O控制器中会有相应的控制寄存器来存放命令和参数。

  2. 向CPU报告设备的状态;

    I/O控制器中会有相应的状态寄存器,用于记录l/O设备的当前状态。如:1表示空闲,0表示忙碌。

  3. 数据交换;

    I/O控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。

  4. 地址识别

    类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”。I/O控制器通过CPU提供的“地址”来判断CPU要读/写的是哪个寄存器。

2.2组成

I/O控制器的组成:

在这里插入图片描述

【注意】

  1. 一个I/O控制器可能会对应多个设备
  2. 数据寄存器控制寄存器状态寄存器可能有多个。(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。
    • 有的计算机会让这些寄存器占用内存地址的一部分,与内存地址编址连续,称为内存映像I/O
      • 内存映像I/O优点:简化了指令。可以采用对内存进行操作的指令来对控制器进行
        操作
    • 另一些计算机则采用I/O专用地址,就是内存是内存的编码,控制器寄存器从0开始有新编址,即寄存器独立编址
      • 寄存器独立编址缺点:需要设置专门的指令来实现对控制器的操作,不仅要指明寄存器的地址,还要指明控制器的编号。

❗3. I/O 控制方式

详见:计算机组成原理 - 7.输入输出系统 - 3. I/O控制方式

3.1 程序直接控制方式

CPU会 轮询 检查控制器状态。

在这里插入图片描述

  • CPU干预的频率

很频繁,I/O操作开始之前、完成之后需要CPU介入,并且在等待l/O完成的过程中CPU需要不断地轮询检查。

  • 数据传送的单位

每次读/写一个

  • 数据的流向

读操作(数据输入):I/O设备→CPU(指CPU寄存器)→内存。

写操作(数据输出):内存→CPU→I/O设备。

每个字的读/写都需要CPU的帮助。

  • 主要缺点和主要优点

优点:实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为“程序直接控制方式”)。

缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状态,CPU利用率低。

【注意】它不会进入阻塞态。

在这里插入图片描述

3.2 中断驱动方式

引入 中断机制 。流程描述:

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

【注意】

  1. CPU会在每个指令周期的末尾检查中断;
  2. 中断处理过程中需要保存、恢复进程的运行环境,这个过程是需要一定时间开销的。可见,如果中断发生的频率太高,也会降低系统性能。

在这里插入图片描述

  • CPU干预的频率

每次I/O操作开始之前、完成之后需要CPU介入。等待I/O完成的过程中CPU可以切换到别的进程执行。

  • 数据传送的单位

每次读/写一个字

  • 数据的流向

读操作(数据输入):I/O设备→CPU→内存。

写操作(数据输出):内存→CPU→I/O设备。

  • 主要缺点和主要优点

优点:与“程序直接控制方式”相比,在“中断驱动方式”中,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升。

缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间

❗3.3 DMA方式

与“中断驱动方式”相比,DMA方式(Direct Memory Access,直接存储器存取。主要用于块设备的I/O控制)有这样几个改进:

  1. 数据的传送单位是“”。不再是一个字、一个字的传送;
  2. 数据的流向是从设备直接放入内存,或者从内存直接到设备。
  3. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。

在这里插入图片描述

  • CPU干预的频率

仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。

  • 数据传送的单位

每次读/写一个或多个(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)

  • 数据的流向(不再需要经过CPU

读操作(数据输入):I/O设备→内存。

写操作(数据输出):内存→I/O设备。

  • 主要缺点和主要优点

优点:数据传输以“块”为单位,CPU介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加。CPU和I/O设备的并行性得到提升

多用于块设备(eg.磁盘)。

缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块。

如果要读/写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要分别发出多条I/O指令,进行多次中断处理才能完成。

3.3.1 DMA控制器

DMA控制器也是一种特殊的I/O控制器

在这里插入图片描述

3.4 通道控制方式

通道:一种硬件,可以理解为是“弱鸡版的CPU”。通道可以识别并执行一系列通道指令。

与CPU相比,通道可以执行的指令很单一,并且通道程序是放在主机内存中的,也就是说通道与CPU共享内存

在这里插入图片描述

  • CPU干预的频率

极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预。

  • 数据传送的单位

每次读/写一组数据块。

  • 数据的流向(在通道的控制下进行)

读操作(数据输入):I/O设备→内存。
写操作(数据输出):内存→I/O设备。

  • 主要缺点和主要优点

缺点实现复杂,需要专门的通道硬件支持

优点:CPU、通道、I/O设备可并行工作,资源利用率很高。

❗4. I/O 软件层次结构

  • 用户层软件
  • 设备独立性软件(设备无关性软件)
  • 设备驱动程序
  • 中断处理程序

在这里插入图片描述

4.1用户层软件

用户层软件实现的功能:

  1. 向上,实现了与用户交互的接口,用户可直接使用该层提供的、与l/O操作相关的库函数对设备进行操作。
  2. 向下,将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务。

eg:printf("hello, world!");会被翻译成等价的write系统调用,当然,用户层软件也会在系统调用时填入相应参数。

拓展:Windows操作系统向外提供的一系列系统调用,但是由于系统调用的格式严格,使用麻烦,因此在用户层上封装了一系列更方便的库函数接口供用户使用((Windows API)。

❗4.2设备独立性软件

设备独立性软件,又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。I/O系统的最高层软件(在往上就是用户)。

  • 什么是设备独立性?

设备独立性:是指操作系统把所有外部设备统一当作成特殊文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。

  • 为什么要引入设备独立性?(优点)

引入设备独立性后可以:

  1. 可以方便用户操作,易于实现IO重定向;
  2. 使程序运行不受具体机器的影响;
  3. 调高设备的利用率和分配时的灵活性;
  4. 提高系统的可适应性和可扩展性;

  • 设备独立性软件主要实现的功能(如何实现设备独立性):
  1. 向上层提供统一的调用接口(如read/write系统调用)。

    提供:

    • 控制寄存器
    • 状态寄存器
    • 控制命令
  2. 设备的保护

    原理类似与文件保护。设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。

  3. 差错处理

    设备独立性软件需要对一些设备的错误进行处理。

  4. 设备的分配与回收

  5. 数据缓冲区管理

    可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异。

  6. 建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序

    用户或用户层软件发出l/O操作相关系统调用的系统调用时,需要指明此次要操作的I/O设备的逻辑设备名。

    eg:去学校打印店打印时,需要选择打印机1/打印机2/打印机3,其实这些都是逻辑设备名

    设备独立性软件需要通过“逻辑设备表LUT,Logical UnitTable)”来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序。

    注:这个也是对设备进行分配的改进方法(见本章6.2.4设备分配的步骤)。

4.3设备驱动程序

设备驱动程序:主要负责对硬件设备的具体控制(写命令),将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等。

【注意】驱动程序一般会以一个独立进程的方式存在。

不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道。因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。

4.4中断处理程序

详见:计算机组成原理 - 7.输入输出系统 - 3.2程序中断方式

操作系统 - 1.操作系统 - 4.中断、异常

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

【考点】 理解并记住I/O软件各个层次之间的顺序,要能够推理判断某个处理应该是在哪个层次完成的。

最常考的是:设备独立性软件设备驱动程序这两层。

只需理解一个特点即可:

  • 直接涉及到硬件具体细节、且与中断无关的操作肯定是在设备驱动程序层完成的;
  • 没有涉及硬件的、对各种设备都需要进行的管理工作都是在设备独立性软件层完成的。

5. 层次间接口

  • 用户层软件&设备独立软件之间有:输入输出 应用程序接口
  • 设备独立软件&设备驱动程序之间有:设备 驱动程序接口

5.1输入输出 应用程序接口

在这里插入图片描述

  • 字符设备接口

get/put系统调用:向字符设备读/写一个字符

  • 块设备接口

read/write系统调用:向块设备的读写指针位置读/写多个字符

seek系统调用:修改读写指针位置。

  • 网络设备接口

网络设备接口,又称"网络套接字(socket)接口”。

socket系统调用:创建一个网络套接字,需指明网络协议(TCP? UDP? )。

bind:将套接字绑定到某个本地“端口”。

connect:将套接字连接到远程地址。

read/write:从套接字读/写数据。

在这里插入图片描述

5.1.1阻塞、非阻塞I/O

阻塞I/O:应用程序发出I/O系统调用,进程需转为阻塞态等待。

eg:字符设备接口――从键盘读一个字符get、scanf。

非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待

eg:块设备接口――往磁盘写数据write。

5.2设备 驱动程序接口

类似虚拟文件系统(VFS)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【最新发布】华硕Windows10系统一键下载安装!

今天https://www.xitongzhijia.net/小编给大家带来一款适合华硕电脑安装的Windows10系统,该版本系统基于最新Windows10 22H2 19045.5011 64位专业版离线制作,安全无毒,系统打印机驱动意外卸载的问题得到了修复,也解决了一些系统安…

HT8787B 可任意限幅、内置自适应升压的2x9.0W立体声音频功放

1、特征 可任意配置的限幅功能 自由配置音频限制幅度,使输出音频信号限制在固 定失真水平内 内置自动限温控制功能 -适应不同散热条件,避免出现过温关断现象 高效自适应G类升压功能,有效延长播放时间 可调节最大限流值,有效防止电…

数据链路层的流量控制和可靠传输机制

目录 1. 选择等待协议(Stop-and-Wait Protocol) 工作原理: 2. 后退N帧协议(Go-Back-N ARQ) 工作原理: 3. 选择重传协议(Selective Repeat ARQ) 工作原理: 4. 总结 …

学安全的同学都有必要了解的安全产品,雷池社区版(WAF)

网络应用防火墙(WAF,Web Application Firewall)已成为保障网站和应用安全的核心技术之一。 雷池社区版作为国内自主研发的一款优秀开源WAF,凭借其高效、易用和强大的防护能力,成为众多安全从业者学习与使用的首选工具…

HBuilder X中搭建Vue-cli项目组件和路由以及UI库使用(二)

一、创建组件 &#xff08;1&#xff09;在vj1项目src|右键|vue文件 &#xff08;2&#xff09;组件常用模版 <!--该标签用于写HTML代码,必须有一个根标签,如下<div>是根标签--> <template> <div>首页</div> </template><!--该标签用…

【未公开0day】9.9付费进群系统 wxselect SQL注入漏洞【附poc下载】

免责声明&#xff1a;本文仅用于技术学习和讨论。请勿使用本文所提供的内容及相关技术从事非法活动&#xff0c;若利用本文提供的内容或工具造成任何直接或间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果均与文章作者及本账号无关。 fofa语…

git提交到github个人记录

windows下git下载 1.进入git官网https://git-scm.com/downloads/win 一直默认选项即可 2.在settings中SSH and GPG keys中Add SSH key 3.选择git cmd git使用 1.配置用户名&#xff0c;和邮箱 git config --global user.email "youexample.com" git config --g…

Gradle 下载 -- 腾讯镜像

首先查看腾讯镜像里是否有你需要的镜像文件&#xff1a;腾讯 gradle 镜像 例如&#xff1a; 在使用时&#xff0c;只需要替换 gradle-wrapper.properties 文件中的 distributionUrl 就可以了 简单替换地址之后&#xff0c;完全可以使用

【数据结构-栈】力扣155. 最小栈

设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int…

SD NAND Flash 小容量存储解决方案及其STM32测试例程讲解

文章目录 前言一、Flash闪存是什么&#xff1f;二、SD NAND Flash三、STM32测试例程四、总结 前言 随着移动存储技术的快速发展和便携式数字设备的广泛应用&#xff0c;Flash闪存作为非易失性存储解决方案&#xff0c;在各种电子设备中扮演着越来越重要的角色。本文提供关于Fl…

在调用微信公众号H5页面支付提示签名失败

利用的是APIv2密钥&#xff0c;通过咨询微信支付客服&#xff0c;通过验签工具都验证了&#xff0c;没有问题&#xff0c;但是在发布后&#xff0c;环境中还是提示支付验签失败&#xff0c;不知道是什么原因&#xff0c;不知道有没有人遇到过&#xff0c;求大神指点下&#xff…

Kubernetes--深入理解Service与CoreDNS

文章目录 Service功能Service 的常见使用场景 Service的模式iptablesIPVS Service类型ClusterIPNodePortLoadBalancerExternalName Service的工作机制EndpointEndpoint 与 Service 的关系Endpoint 的工作原理命令操作 CoreDNSCoreDNS 的配置CoreDNS 的典型插件Corefile 示例Cor…

程序员的自我修养(链接、装载与库)--摘录与汇总(二)

程序和进程的区别(P150) 程序是一个静态的概念&#xff0c;是一些预先编译好的指令和数据集合的一个文件进程是一个动态的概念&#xff0c;它是程序运行时的一个过程 程序和进程有什么区别 程序&#xff08;或者狭义上讲可执行文件&#xff09;是一个静态的概念&#xff0c;它…

PHP:下拉列表,颜色展示

PHP展示下拉列表&#xff0c;选项设置为数据库存储颜色进制&#xff0c;colorname是颜色名称&#xff0c;color是颜色进制 一、表结构 produce_info_nav1_colorshow produce_info_nav1 二、核心代码 //查询对应默认颜色 $sql_selcolor "SELECT color FROM produce_i…

机器学习篇-day07-朴素贝叶斯和特征降维

一. 朴素贝叶斯算法 朴素贝叶斯算法介绍 利用概率值进行分类的一种机器学习算法 复习概率 相互独立&#xff1a;如果P(AB) P(A)P(B)&#xff0c;则称事件A与事件B相互独立 比如&#xff1a;女神喜欢程序员的概率&#xff0c;女神喜欢产品经理的概率&#xff0c;两个事件没有…

詹妮弗洛佩兹的比基尼影集显示,与本阿弗莱克离婚期间她正处于最勇敢的时刻

詹妮弗洛佩兹已然正式终结了其饱含浓情蜜意的时代&#xff01;此乃我……当下之时代&#xff0c;且于同本阿弗莱克离异之际&#xff0c;步入了迄今最为英勇无畏的时代&#xff0c;此番全新的摄影集便是有力的明证。 10 月 9 日&#xff0c;《采访》杂志展示了一系列洛佩兹用作…

水文监测系统的多功能性与作用深度剖析

在现代水利管理中&#xff0c;水文监测系统作为重要的技术手段&#xff0c;正发挥着日益关键的作用。这一系统&#xff0c;也被称为水文信息自动化采集系统&#xff0c;通过自动或半自动的方式&#xff0c;实现了对江河、湖泊、水库等水体以及地下水的实时监测&#xff0c;涵盖…

功能强大且简单易用的实时算法视频监控,智慧快消开源了。

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。 基于多年的深度…

jmeter 对 dubbo 接口测试是怎么实现的?有哪几个步骤

目录 前言 一.先了解下 dubbo 的原理&#xff0c;最好自己搭建一个案例可参考以下方式搭建 http://09792bb8.wiz03.com/share/s/09uiKU3j2kR120MIpT2AdLm70pfBmE1zFApv2jiDZ01GhE8j 二.编写 dubbo 测试脚本 前言 最近使用工作中使用jmeter调用dubbo接口进行接口测试&#xf…

SLAM中的加权最小二乘法

一、数学描述 机器人携带传感器在环境中运动可由 运动方程 和 观测方程 描述。 其中 表示时刻&#xff1b; 表示 时刻的位姿&#xff1b; 是运动传感器的读数或者输入&#xff1b; 为路标点&#xff1b; 表示观测数据。 为运动噪声&#xff0c;例如对机器人下达了前进 1m 的指…