引论(一)

1.1 什么是操作系统

作为扩展机器的操作系统

操作系统的作用就是提供给用户一个扩展的机器或者虚拟的机器的等价物,这样就比基本的硬件要易于编程

对程序员隐匿硬件真相,并且提供一个简洁的可以读写的命名文件视图,毫无疑问,这种程序就是操作系统

操作系统给出的抽象都比基本的硬件要简单和易于使用

这种概念是一个自上而下的观点

操作系统的一个主要任务:隐藏硬件,呈现给程序(程序员)良好、清晰、优雅、一直的抽象

抽象—管理复杂性的关键

  • 实例:文件

操作系统的实际客户是应用程序(通过应用程序员)

应用程序接口—系统调用

作为资源管理者的操作系统

按照自底向上的观点,操作系统则用来管理一个复杂系统的各个部分。

现代计算机都包含处理器、存储器、时钟、磁盘、鼠标、网络接口、激光打印机以及其他许多设备,从这个角度看,操作系统的任务是在相互竞争的程序间有序地控制这些设备的分配

简而言之,这种观点认为操作系统其直呼要任务就是记录下谁在使用哪个资源、批准资源请求、统计使用情况以及协调来自不同程序和用户的请求冲突

资源管理有两种方式:按时间和按空间

  • 按时间复用:处理机
  • 按空间复用:存储器

1.2 操作系统历史

第一台真正的数字计算机是英国数学家Charles Babbage(1792-1871)设计的。Babbage投入毕生精力去建造他的“分析机”,但却没能让它成功地运行起来。因为它是纯机械式的,而当时的技术不可能使分析机的零部件达到他所需要的精度。很显然,分析机没有操作系统。

有趣的是,Babbage认识到他的分析机需要软件,于是他雇佣了一个年轻的女子,英国著名诗人拜伦的女儿Ada Lovelace为他工作。Ada由此成了世界上第一位程序员,Ada程序设计语言就是用她的名字命名。

第一代计算机(1945-1955):真空管和插板

从Babbage之后一直到二战,数字计算机几乎没有什么进展。在40年代中期,哈佛大学的Howard Aiken、普林斯顿高等研究院的John.Von Neumann(冯.诺依曼)、宾夕法尼亚大学的J.Presper Eckert和William Mauchley、德国电话公司的Konrad Zuse、以及其他一些人都成功地使用真空管建造了计算机。这些机器非常庞大,往往使用数万个真空管,占据几个房间,然而其运算速度却不如现在最便宜的个人计算机。

在计算机出现的早期,每台机器都有一个小组专门来设计、制造、编程、操作和维护。编程全部采用机器语言,通过在一些插板上的硬连线来控制其基本功能,这时没有程序设计语言(甚至没有汇编语言),操作系统更是闻所未闻。机器的使用方式是程序员提前在墙上的机时表上预约一段时间,然后到机房将他的插板插到计算机里,在接下来的几小时里计算自己的题目。这时的计算机很不可靠,因为几万个真空管中任何一个发生故障,计算机就无法运行。这个阶段基本上所有的题目都是数值计算问题。 到50年代早期,出现了穿孔卡片,这时就可以不用插板,而是将程序写在卡片上然后读入计算机,但其他过程则依然如故。

第二代计算机(1955-1965):晶体管和批处理系统

50年代发明的晶体管极大地改变了计算机的状况。这时的计算机已经很可靠,厂商可以成批地生产计算机并卖给客户,客户可以长时间地使用它来完成一些有用的工作。至此,第一次将设计人员、生产人员、操作员、程序员和维护人员分开。

这个时期的计算机安装在空调房间里,有专人操作。由于其价格昂贵,仅有少数大公司、主要的政府部门和大学才买得起。运行一个作业时,程序员首先将程序写在纸上(用FORTRAN或汇编语言),然后用穿孔机制成卡片,最后将这些卡片交给操作员。

计算机运行完当前任务后,其计算结果从打印机上输出,操作员从打印机上取得运算结果并送到输出室,程序员就可从该处取到运算结果,然后,操作员再从卡片上读入另一个任务。如果需要FROTRAN编译器,操作员还要从别处取来读入计算机。当操作员在机房里走来走去时,许多机时被浪费掉了。

由于当时计算机非常昂贵,人们很自然地开始想办法减少机时的浪费,答案就是批处理系统。该模型如下图所示。

程序员将卡片带到1401-->1401将作业读到磁带上-->操作员将输入磁带送到7094-->7094计算-->操作员将输出磁带送到1401-->1401打印结果

典型的FMS作业结构—第二代

第二代计算机主要用于科学与工程计算

第二代计算机主要用于科学计算,这些题目大多用FORTRAN语言和汇编语言编程。典型的操作系统是FMS(FORTRAN Monitor System-FORTRAN监控系统)和IBSYS(IBM为7094机配备的操作系统)。

第三代计算机(1965-1980):集成电路芯片和多道程序

在60年代初期,多数计算机厂商都有两条完全不同并且互不兼容的生产线:面向字的复杂科学计算及工程计算和面向字符的商用计算机。对厂商来说,开发和维护两种完全不同的产品是很昂贵的。同时,许多新的计算机用户开始时只需要一台小计算机,到后来则可能需要一台较大的计算机,而且要求能够更快地执行原有的程序。

IBM公司试图通过引入360系统来解决这两个问题。所有的计算机都有相同的体系结构和指令集,为一种型号机器编写的程序起码在理论上可以在其他所有型号的机器上运行。

“单一家族”思想的最大缺点是所有软件,包括操作系统,都要能够在所有机器上运行。其结果是一个庞大的极其复杂的操作系统,其规模比FMS大大约二到三个数量级。其中包含有数千名程序员写的数百万行汇编语言代码。同时,其中也有成千上万处错误。

抛开OS/360的庞大和存在的问题,它的确很好地满足了大多数用户的要求。同时它们也使第二代操作系统缺乏的几项关键技术得到广泛应用。其中最重要的是多道程序(multiprogramming)

  • 内存中只有一个作业时,当作业等待I/O而暂停时,CPU只能等待—浪费了CPU时间

  • 解决方法,将内存分成几部分,分别存放不同的作业,当一个作业等待I/O时,另一个作业可以使用CPU

多道程序系统:三个作业在内存中

第三代计算机的另一项技术是:spooling(Simultaneous Peripheral Operation OnLine-联机的即时外部设备操作)。 当卡片拿到机房后可以很快滴从卡片上把作业读入磁盘。这样,当运行的作业完成时,操作系统可随时从磁盘中载入新的作业到当前空出来的内存部分,并且运行它,这种技术称为假脱机技术,该技术也同时用于输出。有了假脱机技术,就不再需要1401了,也不必将磁带搬来搬去。

第三代操作系统实质上仍旧是批处理系统。 程序员们希望很快得到响应,这种需求就导致了分时系统的出现,这是多道程序的一个变种,该技术是的每个用户都有一个在线终端。在分时系统中,假设有20个用户登录,而其中17个在思考或喝咖啡,则CPU可轮流分配给那三个需要得到服务的作业。计算机能够为一些用户提供快速的交互式服务,同时在CPU空闲时还能运行后台的大作业。

第三代计算机的另一个主要进展是小型机的崛起,这以1961年DEC的PDP-1作为起点,很快PDP便有了一系列机型。UNIX的雏形就是在一台PDP-7机器上开发出来的。由于UNIX的源代码公开,许多组织都开发了他们各自的UNIX版本,这些版本互不兼容。为了使同一个程序在所有不同的UNIX系统上都能运行,IEEE拟定了一个UNIX的标准,称作POSIX。POSIX定义了相互兼容的UNIX系统必须支持的一个最小的系统调用接口。

第四代计算机(1980-现在):个人计算机

随着大规模集成电路的发展,芯片在每平方厘米的硅片上可以集成数千个晶体管,于是个人计算机时代到来了。从体系结构上看,个人计算机与PDP-11并无二致,但就价格而言却相去甚远。通常,公司的一个部门或大学里的一个院系配备一台小型机,而个人计算机却使每个人都能拥有自己的计算机。

随着计算能力越来越容易获得,尤其是具有高品质图形功能的交互式计算的普及,为个人计算机编制软件成为一项重要的产业。此类软件多数对用户很友好,也就是说用户基本不用怎么学习便能够使用这些软件。在个人计算机和工作站领域有两种主流操作系统:MS-DOS和UNIX。

MS-DOS广泛用于IBM PC及其他采用Intel 80X86芯片的计算机。尽管MS-DOS的最初版本相当简陋,但其后续的版本包含了许多新特性。MS-DOS的后续产品-Windows起初运行于MS-DOS之上,但从Windows95开始windows就是可引导的操作系统,它不再需要MS-DOS的支持。微软的另一个操作系统是Windows NT,它在某些层次上与Windows95兼容,但其核心则完全重写。

UNIX在工作站和高档计算机领域(如网络服务器)占据了统治地位,尤其对于采用高性能RISC芯片的计算机。

从80年代中期开始出现一种有趣的发展趋势,就是运行网络操作系统(Network Operating Systems)和分布式操作系统(distributed operating systems)(Tenenbaum, 1995)的个人计算机网络的崛起。与之相反,一个分布式操作系统在用户看来就像一个普通的单处理机系统。

真正的分布式操作系统不仅仅是在单机操作系统上增添一小段代码,其原因是分布式系统与集中式系统有本质的区别。例如,分布式系统通常允许一个应用在多台处理器上同时运行,因此需要更复杂的处理器调度算法来获得最大的并行度。

网络中的通信延迟往往导致分布式算法必须能适应信息不完备、信息过时甚至信息不正确的环境。

第五代计算机(1990-现在):移动计算机

第一台智能手机—N9000(诺基亚)

典型的操作系统:

  • SymbianOS
  • iOS
  • Android

1.3 计算机硬件回顾

简单的个人计算机的组成部分

处理器

  • 最重要的硬件就是CPU
  • 计算机的大脑就是CPU,它从内存中读取指令,并且执行他们
    1. 程序计数器PC
    2. 堆栈指针SP
    3. 程序状态字PSW
    4. 流水线、超标量
    5. CPU模式:内核态、用户态
    6. 超线程

(a)三级流水线

(b)超标量计算机体系结构CPU

存储器

第二个主要的组件是存储器

  • 存储器应该异常迅捷(比执行一条指令还快,这样CPU就不会因为存储器而阻碍)、容量巨大而且非常便宜
  • 现在还没有技术可以满足所有这些要求,一次只能采取其他的方法
  • 存储器系统是一个层次结构

典型的存储器层次。图中数字只是近似的估计

磁盘

磁盘驱动器的结构

磁带

  • 存储体系的最后一层
  • 用于磁盘的备份,可保存大量的数据
  • 成本便宜,可移动

I/O设备

I/O设备与操作系统的相互作用非常频繁

I/O设备一般由两个部分组成:控制器和设备吱声

每种类型的控制器需要不同的软件来空值

实现输入和输出有三种不同的方式

  1. 忙等待(busy waiting)
  2. 终端(interrupt)
  3. DMA(Direct Memory Access,直接存储器存取)

(a)启动I/O设备和获得中断的步骤

(b)CPU的中断方式

总线

大型Pentium系统的总线结构

该系统有八条中线(cache、局部、内存、PCI、SCSI、USB、IDE和ISA),每一条的传输速率和功能都不一样。操作系统必须知晓所有这些总线,以便配置和管理

两条主要的总线是原始的IBM PC ISA总线和它的后继PCI总线

启动计算机

Pentium的启动过程

  1. 运行BIOS:检查RAM、键盘、其他基本设备;扫描总线机器上设备;根据CMOS中的设备清单启动设备(BIOS配置程序)

  2. 启动设备上的第一个扇区读入内存并执行;从活动分区读入第二个启动装载模块;该装载模块被读入操作系统并启动

  3. 操作系统询问BIOS,获取配置信息,将设备驱动程序调入内核,初始化有关表格,创建进程,启动登录程序或GUI

1.4 操作系统大观园

大型机操作系统

操作系统的高端是针对大型机的,这些房间大小般的计算机仍然可以在大型公司的数据中心找到。大型机也被用千高端的Web服务器(大型电子商务站点的服务器)以及b2b(business-to-business)事务的服务器。

大型机的操作系统主要面向同时处理许多作业,而这些作业绝大部分都需要海量的I/O。它们一般提供三种服务:批处理、事务处理和分时。

服务器操作系统

它们运行千服务器上,这些服务器可能是大型的个人计算机、工作站,甚或是大型机。

它们通过网络同时为多个用户服务,并且允许用户共享硬件和软件资源。

服务器可以提供打印服务、文件服务或者Web服务。 Internet提供商运行许多服务器以支持他们的客户, Web站点使用服务器贮存网页以及处理呼入(incoming)请求。

典型的服务器操作系统有UNIX和Windows 2000。 Linux也在服务器领域逐渐普及了。

多处理器操作系统

在一个系统中连接多个CPU ,这些系统称为并行计算机、多计算机系统或者多处理器系统,这取决千如何连接以及共享哪些设备。

它们需要特殊的操作系统,不过通常都采用服务器操作系统的变种,加上有关通信和连通性方面的特性。

个人计算机操作系统

它们的任务就是为单个用户提供良好的界面。他们广泛用于字处理、电子表格和 Internet访问。

一般的例子有Windows 9x/Me/2000/XP、 Macintosh操作系统以及 Linux。

个人计算机操作系统是如此的众所周知,几乎无需再作介绍。事实上,许多人甚至不知道还有其他类型的操作系统。

掌上计算机操作系统

掌上计算机或个人数字助理 PDA

处理移动电话、数码照相及其他功能

嵌入式操作系统

嵌入式系统运行于控制设备的计算机上,而这些计算机通常并不被认为是计算机,例如电视机、微波炉和移动电话。

它们通常具有实时系统的特征,不过同时由千受到尺寸、内存以及能量限制而使得它们更为特殊。

这种操作系统的例子有 PalmOS和 Windows CE(Consumer Electronics)。

传感器节点操作系统

微小传感器节点网络,节点是一种可以彼此通信并且使用无线通信基站的微型计算机

传感器是一种内建有无线电的电池驱动的小型计算机,长时间工作在户外,失效节点较多,其网络必须足够健壮。

节点上运行操作系统。可以响应外部事件

实时操作系统

这些系统的特征就是把时间作为一个关键参数。通常它们必须符合严格的时间界限。

如果动作必须在确定的时刻(或者在一个确定的范围内)发生,这就是硬实时系统(hard real-time system)。

另外一种实时系统是软实时系统(soft real-time system) , 在这种系统中,偶尔错过时间界限是可以接受的。数字音频或者多媒体系统就属于此列。

VxWorks和 QNX是著名的实时操作系统。

智能卡操作系统

最小的操作系统运行于智能卡上。智能卡是一种信用卡大小的、包含CPU芯片的设备。它们有着非常苛刻的处理能力和内存约束。

很多智能卡只能处理单个功能,例如电子支付,不过其他的可以处理多个功能。

通常这些系统都是专利系统。

posted @ 2020-05-17 17:32  我係死肥宅  阅读(332)  评论(0编辑  收藏  举报