输入输出入门

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

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

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

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

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

输入输出的目的

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

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

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

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

这里的设备独立指的是输入输出不以设备的不同而转移,即不管输入输出设备如何更好或更新,我们进行输入输出的模式和方法保持不变

而设备保护则是一个输入输出设备的操作不会影响对另一个输入输出设备的操作。

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

输入输出硬件

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

从程序员或操作系统设计人员的视角来看,所有的输入输出设备可以(大概)划分为两个大类:

块设备
字符设备

这种划分是以设备存储和传输数据的方式来决定。
块设备,顾名思义,就是以数据块为单位存储和传输数据的输入输出设备,如磁盘、光盘、U盘、磁带等。
而字符设备自然是将数据按照字符(字节)为单位来存放和传输的设备,如鼠标、键盘、打印机、网络界面等。

当然,上述分类并不是绝对的。有时,一个设备可以同时作为块设备和字符设备。

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

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

输入输出设备的差异性

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值