操作系统:IO管理概述

在这里插入图片描述

在这里插入图片描述

🌈个人主页:godspeed_lucip
🔥 系列专栏:OS从基础到进阶

🏆🏆本文完整PDF源文件请翻阅至文章底部下载。🏆🏆



1 I/O设备的基本概念与分类

1.1 总览

image1

1.2 什么是IO设备

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

1.3 IO设备的分类

1.3.1 按使用特性

image3

1.3.2 按传输速率

image4

1.3.3 按信息交换的单位

image5

1.4 总结

image6

2 I/O控制器

2.1 什么是IO控制器?

image1

2.2 IO控制器的功能

image2

2.3 IO控制器的组成

2.3.1 CPU与控制器的接口

(1)该部分实现的功能
用于实现CPU与控制器之间的通信。CPU通过控制线发出命令;通过地址线指明要操作的设备;通过数据线来取出(输 入)数据,或放入(输出)数据
(2)基本组成
①数据寄存器
当设备输入时,存放设备输入的数据(比如键盘键入的字符);当CPU对设备输出时,存放CPU输入的数据。是双向的。

②控制寄存器
CPU发出的IO指令中可能包含一些其他的参数,放在控制寄存器中。是单向的。

③状态寄存器
存放各设备的状态,比如1表示空闲,0表示忙碌,CPU从其中读取。是单向的。

2.3.2 IO逻辑

(1)该部分实现的功能
负责接收和识别CPU 的各种命令(如地址译码),并负责对设备发出命令

2.3.3 控制器与设备机器设备的接口

(1)该部分实现的功能
用于实现控制器与设备之间的通信
(2)基本组成
①与各设备连接的接口
各接口都要实现传输
Ⅰ 数据信息(传送输入/ 输出数据)
Ⅱ 状态信息(设备向控制器反馈自己的状态)
Ⅲ 控制信息(控制器向设备发出控制信息)。

2.3.4 总体示意图

image3

注意

image4

编址方式

(1)内存映像编址
①解释
内存映射 I/O。控制器中的寄 存器与内存地址统一编址
image5
②优点
简化了指令。可以采用对内存进行操作的指令来对控制器进行操作

(2)寄存器独立编址
①解释
寄存器独立编制。 控制器中的寄存器使用单独的地址
image6
②缺点
需要设置专门的指令来实现对控制器的操作,不仅要指明寄存器的地址,还要指明控制器的编号

2.4 总结

image7

3 I/O控制方式

3.1 总览

image1

3.2 程序直接控制方式

3.2.1 什么是程序直接控制方式?

已键盘向CPU键入数据为例:

(1)CPU向控制器发出读指令。 于是设备启动,并且状态寄存器设为 1(未就绪)
(2)CPU轮询检查控制器的状态 (其实就是在不断地执行程序的循环,若 状态位一直是 1,说明设备还没准备好要输入的数据, 于是CPU会不断地轮询,知道状态为为0(设备已经完成输入)
(3)输入设备准备好数据后将数据传给控制器,并报告自身状态(已就绪)
(4)控制器将输入的数据放到数据寄存器中, 并将状态改为0 (已就绪)
(5)CPU发现设备已就绪,即可将数据寄存器中的内容读入CPU的寄存器中,再把CPU寄存器中的内容放入内存
(6)若还要继续读入数据,则CPU 继续发出读指令

3.2.2 完成一次读写操作的流程

image2

3.2.3 CPU干预的频率

image3

3.2.4 数据传送的单位?

每次读写一个字

3.2.5 数据的流向?

image4

3.2.6 优缺点

image5

3.3 中断驱动方式

3.3.1 什么是中断驱动方式

image6

3.3.2 注意

image7

3.3.3 完成一次读写操作的流程

image8

3.3.4 CPU干预的频率

image9

3.3.5 数据传送的单位

每次读/写一个字

3.3.6 数据的流向

与程序直接控制方式类似
image10

3.3.7 主要优缺点

image11

3.4 DMA控制器方式

3.4.1 DMA控制器的基本组成

image12
DR、MAR、DC、CR都是操作系统中的寄存器:
image13

3.4.2 DMA方式的工作流程

以键盘键入数据为例:
CPU将数据存放在内存中的地址存入MAR,DMA负责读取键盘键入的字符,将其存放在DR中,待键入结束后,再将DR中的数据存入MAR中显示的内存地址,并发出中断请求,使CPU进行处理。

3.4.3 完成一次读/写操作的流程

image14

3.4.4 CPU干预的频率

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

3.4.5 数据传送的单位

image15

3.4.6 数据的流向

不再经过CPU

image16

3.4.7 主要优缺点

image17

3.4.8 注意

(1)DMA读取数据的过程中,是一次读入一个字,再将读取的字存入DR中,但对于CPU来说,好像是一次读入了一块的数据。
(2)每次读写的只可以是连续的块,如果想读写离散的块,就必须发送多次中断。

3.5 通道控制方式

3.5.1 基本工作流程

(1)CPU向通道发出I/O指令。指明通道程序(可以理解为CPU下派的任务清单)在内存中的位置,并指明要操作的是哪个I/O设备。之后CPU就切换到其他进程执行了。
(2)通道执行内存中的通道程序,它其中指明了要读入/写出多少数据,读/写的数据应放在内存的什么位置等信息
(3)通道执行完规定的任务后,向CPU发出中断信号,之后 CPU对中断进行处理

3.5.2 通道程序的基本组成

image18
在通道程序中,CPU可以指派一堆任务,同时读/写的数据也不必是连续的,只要指定了内存中的位置就可以。这是对DMA控制方式的改进。

3.5.3 完成一次读/写操作的流程

image19

3.5.4 CPU干预的频率

image20

3.5.5 数据传送的单位

每次读/写一组数据块

3.5.6 数据的流向

数据是在通道的控制下进行的。
image21

3.5.7 优缺点

image22

3.6 总结

image23

4 I/O软件基本层次结构

4.1 基本架构

image1

4.2 用户层软件

4.2.1 主要的功能

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

4.2.2 例子

例如C语言中的"printf(“Hello\n”)",printf就是方便用户使用的库函数,而它会被翻译成write系统调用。
对于一些需要参数的系统调用,用户在使用库函数时显然也应该填入相应的参数。

4.3 设备独立性软件

4.3.1 解释

image2
这一层会向用户层提供系统调用的接口,所以有时候也被成为系统调用层。

4.3.2 主要的功能

(1)向上层(用户层)提供统一的调用接口
比如read、write系统调用

(2)设备的保护
原理类似于文件保护。设备被看做是一种特殊的文件(UNIX系统中),不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。

(3)差错处理
设备可能会出错,因此设备独立性软件需要对一些设备的错误进行处理

(4)设备的分配与回收
设备属于一种临界资源,对临界资源的分配和回收是相当重要的。

(5)数据缓冲区管理
通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异

(6)建立逻辑设备名到物理设备名的映射关系
①解释
image3
②逻辑设备表的基本结构
image4
③管理逻辑设备表的方法

image5根据设备类型选择调用相应的驱动程序

驱动程序的说明见下第四大点

4.4 设备驱动程序

4.4.1 什么是驱动程序?

简单来说,就是驱动计算机里软件的程序

4.4.2 为什么要有驱动程序?

不同设备的内部结构也不同,其内部硬件特性也不同。而这些特性、结构只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作,程序才可以正常运行。

4.4.3 驱动程序的功能

image6

4.4.4 注意

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

4.5 中断处理程序

4.5.1 解释

image7

4.5.2 处理流程

image8

4.6 总结

image9

5 输入输出应用接口与设备驱动接口

5.1 总览

image1

5.2 输入输出应用程序接口

5.2.1 为什么要有应用程序接口?

不同类型设备的I/O操作的细节是不同的,因此无法使用一个统一的接口对所有的设备进行调用。
我们之前已经学习过I/O软件的层次结构,设备独立软件层的任务之一就是给用户层提供标准的接口。

5.2.2 字符设备接口

比如:键盘
image2

5.2.3 块设备接口

image3

5.2.4 网络设备接口

(1)解释
image4
(2)主机之间通信过程描述
①主机1、主机2中的一个进程使用socket系统调用,创建一个网络套接字(可以理解为在内核区申请一片空间)。套接字会绑定主机的一个端口(bind系统调用)。

②发送方主机1中使用write系统调用向内存中写入一些数据。并将数据移入网卡进行发送,这个过程需要 “设备无关性软件” 调用 “网络控制器驱动程序”

③主机1在发送之前显然已经知道主机2的socket套接字绑定的端口(可以通过一些协议实现)。结合IP地址及端口,主机1的数据就可以精确发送到主机2中。

④主机2收到数据后通过网卡将其存在内存中,这个过程需要“中断处理程序”调用“网络控制器驱动程序”。进程使用read系统调用进行读取。

(3)示意图
image5

5.3 阻塞与非阻塞I/O

5.3.1 阻塞I/O

应用程序发出I/O系统调用,进程需转为阻塞态等待。比如说:C语言中的scanf函数,只要键盘没有输入字符,那么程序就不会往下继续执行,也就是被阻塞了。

5.3.2 非阻塞I/O

应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。比如说:在块设备接口往磁盘写数据的过程中,只要块设备将数据复制到内核中去了,那么就可以交给内核执行,而自己就可以进行其他的工作。

5.4 设备驱动程序接口

5.4.1 解释

不同厂商生产的I/O设备的结构不同,其驱动程序也不同。可能相同的系统调用但是其参数又不一致。这样,设备独立层软件在享受驱动程序提供的服务时就会出现问题。
操作系统规定好设备驱动程序的接口标准,各厂商必须按要求开发设备驱动程序。

6 总结

本文PDF文件下载链接:提取码:ikun

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

在这里插入图片描述

在这里插入图片描述

  • 41
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值