程序员的网络日志 程序员的网络日志
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理
  • C语言
  • 数据结构
  • 汇编语言
  • 操作系统
  • Linux
  • 编译原理
  • 计算机网络
  • 数据库
  • Java基础
  • JavaWeb
  • 笔记软件
  • Quicker
  • Qttabar
  • Wgesture
  • 浏览器与插件
  • 视频播放器
  • 待办清单
  • 终端软件
  • uTools
  • 番茄盒子
  • 网站日记
  • 赞赏支持
  • 关于本站
  • 如何搭建一个博客
  • 如何搭建一个邮箱
GitHub (opens new window)
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理
  • C语言
  • 数据结构
  • 汇编语言
  • 操作系统
  • Linux
  • 编译原理
  • 计算机网络
  • 数据库
  • Java基础
  • JavaWeb
  • 笔记软件
  • Quicker
  • Qttabar
  • Wgesture
  • 浏览器与插件
  • 视频播放器
  • 待办清单
  • 终端软件
  • uTools
  • 番茄盒子
  • 网站日记
  • 赞赏支持
  • 关于本站
  • 如何搭建一个博客
  • 如何搭建一个邮箱
GitHub (opens new window)
  • 计算机科学导论

  • 数字电路

  • 计算机组成原理

  • 数据结构

  • 操作系统

    • 操作系统
    • 操作系统概述
    • 什么是操作系统
    • 进程
    • 存储
    • 文件
    • IO
      • 5.1 I/O硬件原理
    • 死锁
    • 多媒体操作系统
    • 多处理机系统
    • 安全
    • 实例研究1:Linux
  • Linux

  • 编译原理

  • 计算机网络

  • 数据库

  • 计算机科学导论
  • 计算机基础
  • 操作系统
程序狗
2022-07-25
目录

IO

# 第5章 输入/输出

除了提供抽象(例如,进程(和线程)、地址空间和文件)以外,操作系统还要控制计算机的所有I/O(输入/输出)设备。操作系统必须向设备发送命令,捕捉中断,并处理设备的各种错误。它还应该在设备和系统的其他部分之间提供简单且易于使用的接口。如果有可能,这个接口对于所有设备都应该是相同的,这就是所谓的设备无关性。I/O部分的代码是整个操作系统的重要组成部分。操作系统如何管理I/O是本章的主题。

本章的内容是这样组织的:首先介绍I/O硬件的基本原理,然后介绍一般的I/O软件。I/O软件可以分层构造,每层都有明确的任务。我们将对这些软件层进行研究,看一看它们做些什么,以及如何在一起配合工作。

在此之后将详细介绍几种I/O设备:磁盘、时钟、键盘和显示器。对于每一种设备我们都将从硬件和软件两方面加以介绍。最后,我们还将介绍电源管理。

# 5.1 I/O硬件原理


不同的人对于I/O硬件的理解是不同的。对于电子工程师而言,I/O硬件就是芯片、导线、电源、电机和其他组成硬件的物理部件。对程序员而言,则只注意I/O硬件提供给软件的接口,如硬件能够接收的命令、它能够完成的功能以及它能够报告的错误。本书主要介绍怎样对I/O设备编程,而不是如何设计、制造和维护硬件,因此,我们的讨论限于如何对硬件编程,而不是其内部的工作原理。然而,很多I/O设备的编程常常与其内部操作密切相关。在下面三节中,我们将介绍与I/O硬件编程有关的一般性背景知识。这些内容可以看成是对1.4节介绍性材料的复习和扩充。

# 5.1.1 I/O设备

I/O设备大致可以分为两类:块设备(block device)和字符设备(character

device)。块设备把信息存储在固定大小的块中,每个块有自己的地址。通常块的大小在512字节至32

768字节之间。所有传输以一个或多个完整的(连续的)块为单位。块设备的基本特征是每个块都能独立于其他块而读写。硬盘、CD-ROM和USB盘是最常见的块设备。

如果仔细观察,块可寻址的设备与其他设备之间并没有严格的界限。磁盘是公认的块可寻址的设备,因为无论磁盘臂当前处于什么位置,它总是能够寻址其他柱面并且等待所需要的磁盘块旋转到磁头下面。现在考虑一个用来对磁盘进行备份的磁带机。磁带包含按顺序排列的块。如果给出命令让磁带机读第N块,它可以首先向回倒带,然后再前进直到第N块。该操作与磁盘的寻道相类似,只是花费的时间更长。不过,重写磁带中间位置的块有可能做得到,也有可能做不到。即便有可能把磁带当作随机访问的块设备来使用,也是有些勉为其难的,毕竟通常并不这样使用磁带。

另一类I/O设备是字符设备。字符设备以字符为单位发送或接收一个字符流,而不考虑任何块结构。字符设备是不可寻址的,也没有任何寻道操作。打印机、网络接口、鼠标(用作指点设备)、老鼠(用作心理学实验室实验),以及大多数与磁盘不同的设备都可看作是字符设备。

这种分类方法并不完美,有些设备就没有包括进去。例如,时钟既不是块可寻址的,也不产生或接收字符流。它所做的工作就是按照预先规定好的时间间隔产生中断。内存映射的显示器也不适用于此模型。但是,块设备和字符设备的模型具有足够的一般性,可以用作使处理I/O设备的某些操作系统软件具有设备无关性的基础。例如,文件系统只处理抽象的块设备,而把与设备相关的部分留给较低层的软件。

I/O设备在速度上覆盖了巨大的范围,要使软件在跨越这么多数量级的数据率下保证性能优良,给软件造成了相当大的压力。图5-1列出了某些常见设备的数据率,这些设备中大多数随着时间的推移而变得越来越快。

图 5-1 某些典型的设备、网络和总线的数据率

# 5.1.2 设备控制器

I/O设备一般由机械部件和电子部件两部分组成。通常可以将这两部分分开处理,以提供更加模块化和更加通用的设计。电子部件称作设备控制器(device

controller)或适配器(adapter)。在个人计算机上,它经常以主板上的芯片的形式出现,或者以插入(PCI)扩展槽中的印刷电路板的形式出现。机械部件则是设备本身。这一安排如图1-6所示。

控制器卡上通常有一个连接器,通向设备本身的电缆可以插入到这个连接器中。很多控制器可以操作2个、4个甚至8个相同的设备。如果控制器和设备之间采用的是标准接口,无论是官方的ANSI、IEEE或ISO标准还是事实上的标准,各个公司都可以制造各种适合这个接口的控制器或设备。例如,许多公司都生产符合IDE、SATA、SCSI、USB或火线(IEEE

1394)接口的磁盘驱动器。

控制器与设备之间的接口通常是一个很低层次的接口。例如,磁盘可以按每个磁道10

000个扇区,每个扇区512字节进行格式化。然而,实际从驱动器出来的却是一个串行的位(比特)流,它以一个前导符(preamble)开始,接着是一个扇区中的4096位,最后是一个校验和,也称为错误校正码(Error-Correcting

Code,ECC)。前导符是在对磁盘进行格式化时写上去的,它包括柱面数和扇区号、扇区大小以及类似的数据,此外还包含同步信息。

控制器的任务是把串行的位流转换为字节块,并进行必要的错误校正工作。字节块通常首先在控制器内部的一个缓冲区中按位进行组装,然后在对校验和进行校验并证明字节块没有错误后,再将它复制到主存中。

在同样低的层次上,监视器的控制器也是一个位串行设备。它从内存中读入包含待显示字符的字节,并产生用来调制CRT电子束的信号,以便将结果写到屏幕上。该控制器还产生信号使CRT电子束在完成一行扫描后做水平回扫,并且产生信号使CRT电子束在整个屏幕扫描结束后做垂直回扫。如果没有CRT控制器,那么操作系统程序员只能对显像管的模拟扫描直接进行编程。有了控制器,操作系统就可以用几个参数(这些参数包括每行的字符数或像素数、每屏的行数等)对其初始化,并让控制器实际驱动电子束。平板TFT显示器的工作原理与此不同,但是也同样复杂。

# 5.1.3 内存映射I/O

每个控制器有几个寄存器用来与CPU进行通信。通过写入这些寄存器,操作系统可以命令设备发送数据、接收数据、开启或关闭,或者执行某些其他操作。通过读取这些寄存器,操作系统可以了解设备的状态,是否准备好接收一个新的命令等。

除了这些控制寄存器以外,许多设备还有一个操作系统可以读写的数据缓冲区。例如,在屏幕上显示像素的常规方法是使用一个视频RAM,这一RAM基本上只是一个数据缓冲区,可供程序或操作系统写入数据。

于是,问题就出现了:CPU如何与设备的控制寄存器和数据缓冲区进行通信?存在两个可选的方法。在第一个方法中,每个控制寄存器被分配一个I/O端口(I/O

port)号,这是一个8位或16位的整数。所有I/O端口形成I/O端口空间(I/O port

space),并且受到保护使得普通的用户程序不能对其进行访问(只有操作系统可以访问)。使用一条特殊的I/O指令,例如

IN REG,PORT

CPU可以读取控制寄存器PORT的内容并将结果存入到CPU寄存器REG中。类似地,使用

OUT PORT,REG

CPU可以将REG的内容写入到控制寄存器中。大多数早期计算机,包括几乎所有大型主机,如IBM

360及其所有后续机型,都是以这种方式工作的。

上次更新: 2022/8/7 09:00:48
文件
死锁

← 文件 死锁→

最近更新
01
关于我
10-19
02
如何搭建个人邮箱
08-03
03
编译原理概述
07-31
更多文章>
Theme by Vdoing | Copyright © -2022 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式