1、- 1 - 外文原文 - 2 - - 3 - - 4 - - 5 - - 6 - - 1 - 中文翻译 1.1 什么是操作系统? 大多数的计算机使用者有过使用操作系统的经验, 但是却很难给操作系统下一个精 确的定义。部分的问题在于,操作系统执行两种基本上不相关的功能,扩展到机器和管 理资源,并且依赖是谁在谈论,你通常会听到关于其中一种功能或是另一种。下面让我 们同时看看两者。 操作系统做为延展的机器 像在前面提到的,大多数计算机的构建体系(指令集,存储器结构,I/O 以及总线 结构)在机器语言级是原始的并且难于编程,尤其对于输入/输出。为了更具体的说明 这一点,让我们先简要的看看被使用在许多基
2、于 Intel 个人计算机上的利用 NEC PD765 可兼容的控制器芯片的软盘 I/O 是怎样完成的。 (在这本书中,我们提到的“软盘”和“磁 盘”是可以互换的。 )PD765 具有 16 位指令,每一个都被指定载入 1 至 9 个字节到设备 寄存器中。这些指令是为了读、写数据,移动磁盘装备,格式化磁轨,并且还被用来初 始化、执行、复位以及重新校准控制器和设备。 大多数的基本指令是读和写,每一个要求 13 个参数,被装进 9 个字节。这些参数 指定了某些事物,像被读取的磁盘分区地址,每个轨道的扇区数目,物理媒质上使用的 录音模式,交互扇区的间隔空间以及怎样处理一个被删除的数据地址标记。如果你
3、不理 解这个 Mumbo Jumbo,不要担心;也就是说,精确的观点更加的深奥。当一个操作完 成后,控制器的芯片返回 23 中状态并且错误域被封装进入 7 个字节。如果这还不够的 话,磁盘程序员必须被一直提醒发动机是开的还是关的。如果发动机是关闭的,它必须 在数据被读或写之前打开(伴有长时间的启动延迟) 。发动机不能太长时间的关闭,否 则软盘将会损坏。因此,程序员被强迫处理长时间启动延迟与之相对的损坏磁盘(以及 丢失数据)之间的平衡。 如果没有进入真正的细节, 那清楚的是一般的程序员大概不会想要很仔细的研究软 盘(或者硬盘,它也是同样复杂和困难的)的编程。相反的,程序员想处理的是简单的, 高级
4、的抽象物。以磁盘为例,一个典型的抽象物会是磁盘包含了指定文件的集合。每个 文件可以被打开进行读或者写,然后在被读或写之后,最终关闭。诸如,像使用改进的 频率调节是否可以录音, 发动机当前的状态是什么这样的细节, 不应该出现在抽象物中, 表达给使用者。 程序对程序员隐瞒了硬件的事实,并且呈现出了一个漂亮、简单的被命名的文件, 当然,这些可被读和写的文件就是操作系统。就像操作系统向程序员隐藏了磁盘硬件, 并展现了一个简单的面向文件的界面,它也同时隐蔽了很多令人不高兴的麻烦,涉及到 中断、时钟、存储器管理和其他底层的东西。这么说来,操作系统提供的 abstraction比 起下面硬件提供的要简单和容易。 - 2 - 这样看来, 操作系统的功能是为使用者提供了比底层硬件更易于编程的扩展机或是 虚拟机的等价物。操作系统是怎样达到这个目标的是一个很长的故事,我们会通过这本 书详细的了解。简单的概括,操作系统提供了程序能够获得的多种服务,通过被叫做系 统调用的特殊指令。在以后的章节中,我们会调查一些更加普通的系统调用。 操作系统做为资源管理器 把操作系统的概念做为主要提供给用户一个简洁的界面是一种自