前言:I/O设备管理既在操作系统也在计算机组成原理中都有涉及,但是他们的侧重点不一样,且讲解比较凌乱,这部分往往包含了很多领域的不同设备和与设备相关的应用程序,学习起来也比较模糊抽象。说真的,博主在计算机组成原理学了一遍,又在操作系统再学一遍,学完真的什么也不知道,因为它太散了,单独提起这个知识点你会,已放到题目了,不同的概念名词,彻底懵了,因此博主下定决心要把它按自己的方式把知识点整合起来,方便理解和记忆,这里也分享给大家。

操作系统如何进行设备管理_应用程序

一.I/O设备

这个I/O设备的名词解释我也不说了,没有具体定义,但应该都知道。

1.I/O设备分类

操作系统如何进行设备管理_应用程序_02

按传输速率分类没什么好说的,看图就行

按信息交换的单位分类:

块设备:

  • 以数据块为信息交换单位
  • 传输速率高
  • 可寻址
  • 通常采用DMA控制方式
  • eg:磁盘

字符设备:

  • 以字符为信息交换单位
  • 传输速率低
  • 不可寻址
  • 通常采用中断控制方式
  • eg:键盘、打印机

按设备的共享属性分类:

独占资源:

  • 一段时间内只允许一个进程访问,属于临界资源
  • 可能引起死锁
  • eg:打印机

共享设备:

  • 一段时间内允许多个进程访问,但同一时间只能有一个设备进行访问(可以并发,但不能并行)
  • 不会导致死锁
  • 必须是可寻址、可随机访问的设备
  • eg:磁盘

虚拟设备:

它是什么呢?它是把一台物理上的独占设备虚拟化若干逻辑设备,严格来说,虚拟设备在物理上它是独占设备,但是在逻辑上它是共享设备,即可以在一个时间段内允许多个进程访问。这里没有明确的属性,知道虚拟设备是什么就行。

2.设备控制器

I/O接口(设备控制器、I/O控制器)位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还要具有按CPU发来的命令去控制设备工作的功能,主要由三部分组成:

操作系统如何进行设备管理_应用程序_03

  • 1)设备控制器与CPU的接口。该接口有三类信号线:数据线、地址线和控制线。数据线通常与两类寄存器相连:数据寄存器(存放从设备送来的输入数据或从CPU送来的输出数据)和控制/状态寄存器(存放从CPU送来的控制信息或设备的状态信息)。
  • 2)设备控制器与设备的接口。一个设备控制器可以连接一个或多个设备,因此控制器中有一个或多 个设备接口。每个接口中都存在数据、控制和状态三种类型的信号。
  • 3)I/O逻辑用于实现对设备的控制。它通过以一组控制线 与CPU交互,对从CPU收到的I/O命令进行译码。CPU启动设备时,将启动命令发送给控制器,同时通过地址线把地址发送给控制器,由控制器的I/O逻辑对地址进行译码,并相应地对所选设备进行控制。

这里的易错点也就是,在设备管理器中实现设备控制功能的其实是I/O逻辑

设备控制器的主要功能有:

  • ①接收和识别CPU发来的命令,如磁盘控制器能接收读、写、查找等命令;
  • ②数据交换,包括设备和控制器之间的数据传输,以及控制器和主存之间的数据传输;
  • ③标识和报告设备的状态,以供CPU处理;
  • ④地址识别;
  • ⑤数据缓冲;
  • ⑥差错控制。

3.I/O端口

I/O端口是指设备控制器中可被CPU直接访问的寄存器,主要有以下三类寄存器。

  • 数据寄存器:实现CPU和外设之间的数据缓冲。
  • 状态寄存器:获取执行结果和设备的状态信息,以让CPU知道是否准备好。
  • 控制寄存器:由CPU写入,以便启动命令或更改设备模式。

在计组中,可把I/O端口理解为一种物理连接点,因此存在一个等式:I/O端口+控制逻辑=I/O接口。所以做计组的题,一定不要把I/O端口与I/O接口混淆。

为了实现CPU与I/O端口进行通信,有两种方法:

  • 1)独立编址。为每个端口分配一个I/O端口号,所有I/O端口形成I/O端口空间,普通用户程序不能对其进行访问,只有操作系统使用特殊的I/O指令才能访问端口。
  • 2)统一编址。又称内存映射I/O,每个端口被分配唯一的内存地址,且不会有内存被分配这一地址,通常分配给端口的地址靠近地址空间的顶端。

博主是这么理解的,这些端口也就是寄存器在内存中,我们知道内存本身就是有一个内存地址的,统一编址就是还是按内存地址来,只是每个端口现在给你分配一个内存地址来表示你的位置;而独立编址就不关内存什么事,它自己给端口编号,就是重新定义一种专门用于表示端口的编址方式,形成自己的地址表达方式。

二.I/O控制方式

操作系统在这里写得比较简洁,但是在计算机组成原理里又重点介绍了这一部分,而且这一部分的知识点确实比较繁杂,过两天我写一篇专门针对I/O控制方式的博客,详细介绍各种控制方式,这里我们 先列举408范围内的四种I/O控制方式,但不详细写。

  • 程序直接控制方式
  • 中断驱动方式
  • DMA方式
  • 通道控制方式

三.I/O软件层次结构

考研操作系统关于这一章的考试重点,必须必须掌握。

1.I/O软件

这里我首先想问你,I/O软件是什么?你知道吗,这里很多考研辅导书都不解释,还得博主自己查资料理解,我们刚刚不是学的I/O设备嘛,操作系统的主要功能之一不是要实现设备管理吗,操作系统在计算机组成原理中我们是不是把它理解为系统级别的软件叫系统软件,它是属于软件这一层的。好了,了解这个之后,现在告诉你I/O软件是用于管理和控制I/O设备的软件,这里的软件是系统软件这一层,所以可以说I/O软件是操作系统的一部分。

I/O软件涉及的面很宽,往下与硬件有着密切关系,往上又与虚拟存储器系统、文件系统和用户直接交互,它们都需要I/O软件来实现I/O操作(如果继续把操作系统细分的话,它相当于在操作系统的底层)。

为使复杂的I/O软件能具有清晰的结构、良好的可移植性和易适应性,目前已普遍采用层次式结构的I/O软件。将系统中的设备管理模块分为若干个层次,每层都是利用其下层提供的服务,完成输入/输出功能中的某些子功能,并屏蔽这些功能实现的细节,向高层提供服务。在层次式结构的I/O软件中,只要层次间的接口不变,对某一层次中的软件的修改都不会引起其下层或高层代码的变更,仅最低层才涉及硬件的具体特性。

操作系统如何进行设备管理_应用程序_04

这里你应该看明白,它划分了四个层次哦,最下面的硬件不是哦,之所以画上去是为了更好的表达它在整个计算机组成里面的层次结构。

2.用户层I/O软件

实现与用户交互的接口,用户可直接调用在用户层提供的、与IO操作有关的库函数,对设备进行操作。一般而 言,大部分的I/O软件都在操作系统内部,但仍有一小部分在用户层,包括与用户程序链接在一起的库函数。用户层软件必须通过一组系统调用来获取操作系统服务。

3.设备独立软件(系统调用处理程序)

用于实现用户程序与设备驱动器的统一接口、设备命令、设备的保护及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。

设备独立性也称设备无关性,使得应用程序独立于具体使用的物理设备。为实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名来请求使用某类设备;而在系统实际执行时,必须将逻辑设备名映射成物理设备名使用。所以这一层也可以叫设备无关软件。

使用逻辑设备名的好处是:①增加设备分配的灵活性;②易于实现I/O重定向,所谓I/O重定向,是指用于1/O操作的设备可以更换( 即重定向),而不必改变应用程序。为了实现设备独立性,必须再在驱动程序之上设置一层设备独立性软件。

总体而言,设备独立性软件的主要功能可分为以下两个方面:①执行所有设备的公有操作,包括:对设备的分配与回收;将逻辑设备名映射为物理设备名;对设备进行保护,禁止用户直接访问设备;缓冲管理;差错控制;提供独立于设备的大小统一的逻辑块,屏蔽设备之间信息交换单位大小和传输速率的差异。②向用户层(或文件层)提供统一接口。 无论何种设备,它们向用户所提供的接口应是相同的。例如,对各种设备的读/写操作,在应用程序中都统一使用read/write命令等。

4.设备驱动程序

与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。通常,每类设备配置-一个设备驱动程序,它是I/O进程与设备控制器之间的通信程序,常以进程形式存在。设备驱动程序向上层用户程序提供一-组标准接口,设备具体的差别被设备驱动程序所封装,用于接收上层软件发来的抽象IO要求,如read和write命令,转换为具体要求后,发送给设备控制器,控制I/O设备工作;它也将由设备控制器发来的信号传送给上层软件,从而为I/O内核子系统隐藏设备控制器之间的差异。

5.中断处理程序

用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完毕再恢复被中断进程的现场后,返回到被中断进程。

中断处理层的主要任务有:进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态等。由于中断处理与硬件紧密相关,对用户而言,应尽量加以屏蔽,因此应放在操作系统的底层,系统的其余部分尽可能少地与之发生联系。

四.应用程序I/O接口

在I/O系统与高层之间的接口中,根据设备类型的不同,又进一步分为若干接口。

(1)字符设备接口

字符设备是指数据的存取和传输是以字符为单位的设备,如键盘、打印机等。基本特征是传输速率较低、不可寻址,并且在输入/输出时通常采用中断驱动方式。get和put操作。由于字符设备不可寻址,只能采取顺序存取方式,通常为字符设备建立一个字符缓冲区,用户程序通过get操作从缓冲区获取字符,通过put操作将字符输出到缓冲区。in-control指令。字符设备类型繁多,差异甚大,因此在接口中提供一种通 用的in-control 指令来处理它们(包含了许多参数,每个参数表示一个与具体设备相关的特定功能)。字符设备都属于独占设备,为此接口中还需要提供打开和关闭操作,以实现互斥共享。

(2)块设备接口

块设备是指数据的存取和传输是以数据块为单位的设备,典型的块设备是磁盘。基本特征是传输速率较高、可寻址。磁盘设备的I/O常采用DMA方式。隐藏了磁盘的二维结构。在二维结构中,每个扇区的地址需要用磁道号和扇区号来表示。块设备接口将磁盘的所有扇区从0到n-1依次编号,这样,就将二维结构变为一种线性序列。将抽象命令映射为低层操作。块设备接口支持上层发来的对文件或设备的打开、读、写和关闭等抽象命令,该接口将上述命令映射为设备能识别的较低层的具体操作。内存映射接口通过内存的字节数组来访问磁盘,而不提供读/写磁盘操作。映射文件到内存的系统调用返回包含文件副本的一个虚拟内存地址。只在需要访问内存映像时,才由虚拟存储器实际调页。内存映射文件的访问如同内存读写- -样简 单,极大地方便了程序员。

(3)网络设备接口

现代操作系统都提供面向网络的功能,因此还需要提供相应的网络软件和网络通信接口,使计算机能够通过网络与网络上的其他计算机进行通信或上网浏览。许多操作系统提供的网络I/O接口为网络套接字接口,套接字接口的系统调用使应用程序创建的本地套接字连接到远程应用程序创建的套接字,通过此连接发送和接收数据。

(4)阻塞/非阻塞I/O

操作系统的I/O接口还涉及两种模式:阻塞和非阻塞。阻塞IO是指当用户进程调用IO操作时,进程就被阻塞,需要等待I/O操作完成,进程才被唤醒继续执行。非阻塞I/O是指用户进程调用I/O操作时,不阻塞该进程,该I/O调用返回一个错误返回值,通常,进程需要通过轮询的方式来查询I/O操作是否完成。 大多数操作系统提供的I/O接口都是采用阻塞I/O

五.题目练习

1.以下关于设备属性的叙述中,正确的是( B )。 A.字符设备的基本特征是可寻址到字节,即能指定输入的源地址或输出的目标地址 B.共享设备必须是可寻址的和可随机访问的设备 C.共享设备是指同--时间内允许多个进程同时访问的设备 D.在分配共享设备和独占设备时都可能引起进程死锁

2.本地用户通过键盘登录系统时,首先获得键盘输入信息的程序是( A)。 A.命令解释程序 B.中断处理程序 C.系统调用服务程序 D.用户登录程序

提示:这一题重点是键盘啊,键盘是一种典型的通过中断控制方式的设备。

3.用户程序发出磁盘I/O请求后,系统的处理流程是:用户程序→系统调用处理程序-→设备驱动程序→中断处理程序。其中,计算数据所在磁盘的柱面号、磁头号、扇区号的程序是( C)。 A.用户程序 B.系统调用处理程序 C.设备驱动程序 D.中断处理程序

提示:不同的磁盘,它的柱面号、磁头号、扇区号都是不同的,他们的具体计算过程应该由商家提供的设备驱动程序完成。

六.总结

本文只是设备管理的基础,连设备怎么分配都没写呢,下文继续哦。