输入输出.

什么是输入输出

计算机归根结底是为人类服务的,这就要求计算机必须提供某种机制使得人可以向计算机发出命令或操纵计算机。也就说计算机与人之间必须存在某种沟通的机制。 这种沟通的机制就是计算机的输入输出机制。

输入提供的是一个“人→计算机”的通道。即人或外部世界通过输人向计算机发出命令或提供数据。输出提供的则是相反方向的通道,即“计算机→人”的通道。计算机通过这个通道向人或外部世界输出自己的计算结果,包括对其他设备的控制操纵命令。

显然,输入输出的存在才使得计算机的存在有了意义。就像一个人,如果没有输入输出,即他不能与外部世界打交道,则这个人通常被认为是痴呆或白痴。即使这个人实际上是一个天才,情况也是如此。同样,一台没有输人输出的计算机,不管其运算功能多么强大,也是废铁一堆(对于计算机外的世界,或者人类来说)。由此,输入输出也就成为操纵系统设计时的一个重要考虑。

对于操作系统设计人员来说,从高层设计来看,关于输入输出我们要问的问题有两个:

  • 输人输出要达到什么目的?
  • 操作系统是如何实现输人输出功能的?

输入输出的目的

输入输出的目的,从简单来说,就是提供一个人机交互的通道,使得人与计算机能够进行沟通。但这是抽象的层次。具体来说,输入输出的目的是什么呢?

我们在前面讲述进程、内存和文件时说过,操作系统是一个魔术师和管理者。对于输入输出这部分功能来说,也不例外。操纵系统要管理的自然是输入输出设备
而魔幻则是提供一个统一的界面来屏蔽输入输出设备的差异,使得数据的表示能够在不同设备之间相互转换而无需用户的操心。那么到这里,我们就可以得出操作系统输入输出的目的是,

  • 屏敝输入输出设备的差异
  • 在不同设计之间进行数据表示的转换

达到上述目的需要的机制,仿照我们前面的模式,是:设备独立与设备保护。

这里的设备独立指的是输入输出不以设备的不同而转移,即不管输入输出设备是否更好或更新,我们进行输入输出的模式和方法保持不变。而设备保护则是一个输入输出设备的操作不会影响另一个输入输出设备的操作。

那么要想实现设备独立和设备保护,我们需要从硬件和软件两个方面出发进行考虑。下面我们先来探讨一下硬件层面的输人输出,然后再探讨软件层面的输入输出。

输入输出硬件

输入输出设备种类繁多,功能各不相同,操控也不尽相同。对于普通人或者电气工程师来说,输入输出设备呈现的首要特征是其物理组件:芯片、布线、能量供应、电机等诸如此类的东西。而对于软件工程师或程序员来说,输入输出设备呈现的则是程序员或用户界面:可接受的命令、能提供的功能、错误处理机制等。毫无悬念,我们采取的自然是从软件工程师的角度,尤其是操作系统设计人品的视角来对待输人输出。

从程序员或操作系统设计人员的视角来看。所有的输入输出设备可以(大概)划分为两个大类。块设备和字符设备。这种划分是以设备存储和传输数据的方式来决定!块设备,顾名思义,就是以数据块为单位存储和传输数据的输入输出设备,如磁盘、光盘、U盘、磁带等。而字符设备自然是将数据按照字符(字节)为单位来存放和传输数据的设备,如鼠标、键盘、打印机、网络界面等。

当然,上述分类并不是绝对的。例如,一个设备可以同时作为块和字符设备。例如,网络界面通常被认为是一个字符输入输出设备但在某些时候可以与内存进行DMA,从而看上去更像一个块设备。而另外的设备,如时钟,则不属于这两种中的任何一种(时钟是输入输出设备吗?)

字符设备和块设备的最大不同是在寻址。块设备自数据按数据块为单位进行处理,而每块数据块都有一个唯一的磁盘地址。也就是说数据块是可寻址的,而字符设备里的字符是不可寻址的。 当然,由于一个字符占一个字节(对于ASCII码来说),而字节是可以寻址的,很多人会认为字符因此也是可寻址的。但这个理解是不正确的。(为什么?)

输入输出设备的差异性

输入输出设备由于种类不同,制造商不同,技术标准不同,其特性可以有巨大的不同。而这种不同越是明显,对操作系统的设计的挑战就越大。因为屏蔽这些巨大的不同,使得不同的设备相互共存并转不是一件容易的事情。

其中最为明显的一种差异是其数据传输的速度。输入输出设备的传输速度涵盖范围从每秒十个字节到几兆个字节。下表给出的是较为常见的一些设备的数据传输速率。
在这里插入图片描述

设备控制器

输入输出设备本身并不是一个不可分割的整体!而是由不同的部件构成。一般来说,一个输入输出设备至少可以分为两个部分:机械部分和电子部分。

机械部分自然是设备的物理硬件部分,而电子部分则是设备的控制器。
控制器有时也称为适配器,通常为一块印刷电路板。控制器可以处理多个设备,或者说多个同类的设备可以共用一个控制器。下图描述的就是输入输出设备和它们的控制器。
在这里插入图片描述

设备控制器的任务可以简单地分为如下几项:

  • 控制设备的物理运行。
  • 将序列字位流转化为字节块流。
  • 进行纠错操作。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值