1.04k likes | 1.25k Views
操作系统原理. 强新建 xasyu@126.com 西安石油大学计算机学院. 参考书. 《 计算机操作系统 》 (汤子赢等 编著)西安电子科技大学出版社 《 计算机操作系统 》 (何炎祥 李飞 李宁 编著)清华大学出版社 《 操作系统教程 》 (第二版)(徐甲同 方 敏 编著) 西安电子科技大学出版社 《 操作系统教程 - 原理和实例分析 》 (孟静 编著) 高等教育出版社 《 计算机操作系统教程 》 (第二版)(左万历 周长林)高等教育出版社 《 操作系统 》 (孟庆昌编著)电子工业出版社 《 操作系统 》 (罗宇 邹鹏 吴刚 等编著)电子工业出版社
E N D
操作系统原理 强新建 xasyu@126.com 西安石油大学计算机学院
参考书 • 《计算机操作系统》 (汤子赢等 编著)西安电子科技大学出版社 • 《计算机操作系统》 (何炎祥 李飞 李宁 编著)清华大学出版社 • 《操作系统教程》(第二版)(徐甲同 方 敏 编著) 西安电子科技大学出版社 • 《操作系统教程-原理和实例分析》(孟静 编著) 高等教育出版社 • 《计算机操作系统教程》(第二版)(左万历 周长林)高等教育出版社 • 《操作系统》(孟庆昌编著)电子工业出版社 • 《操作系统》(罗宇 邹鹏 吴刚 等编著)电子工业出版社 • 《操作系统原理教程》(张丽芬 刘美华 编著)电子工业出版社 • 《操作系统-内核与设计原理》((美)William Stallings 著)电子工业出版社 • 《操作系统 现代观点》(Operating Systems A Modern Perspective Second Edition,Lab Update)(美)Gary Nutt 著 孟祥山 晏益慧 译 机械工业出版社 • 《Linux操作系统结构分析》 (郭玉东 主编)西安电子科技大学出版社
课程目的 不是如何使用操作系统, 而是理解操作系统如何工作 • OS工作方式 • OS内部算法和数据结构 • 设计OS 过程中的问题、解决方案和折中权衡
课程特点 • 实践性强(从实践总结出原理) • 涉及面广(并行程序,性能问题,结构问题,程序方法论,软件工程,等等) • 错综复杂:纵横交叉 • 如何学好操作系统? Learn OS concepts by coding them!
操作系统做什么? #include <stdio.h> int main(int argc, char *argv[]) { puts("hello world"); return 0; } • 用户告诉操作系统执行hello程序 • 操作系统找到该程序,检查其类型 • 检查程序首部,找出正文和数据的地址 • 文件系统找到第一个磁盘块 • 父进程需要创建一个新的子进程,执行hello程序 • 操作系统需要将执行文件映射到进程结构 • 操作系统设置CPU上下文环境,并跳到程序开始处 • 程序的第一条指令执行,失败,缺页中断发生 • 操作系统分配一页内存,并将代码从磁盘读入,继续执行 • 更多的缺页中断,读入更多的页面
操作系统做什么? • 程序执行系统调用,在文件描述符中写一字符串 • 操作系统检查字符串的位置是否正确 • 操作系统找到字符串被送往的设备 • 设备是一个伪终端,由一个进程控制 • 操作系统将字符串送给该进程 • 该进程告诉窗口系统它要显示字符串 • 窗口系统确定这是一个合法的操作,然后将字符串转换成像素 • 窗口系统将像素写入存储映像区 • 视频硬件将像素表示转换成一组模拟信号控制显示器(重画屏幕) • 显示器发射电子束 • 在屏幕上看到hello world
为什么学习操作系统? • 设计操作系统或者修改现有的系统 存在人们意识不到的大量“操作系统” 嵌入式系统(Embedded OS) • 加深对使用的OS的理解,有利于深入编程 用户为了开发应用程序必须与操作系统打交道 • 编程时借鉴操作系统的设计思想和算法 操作系统中所用的许多概念和技巧可以推广应用到其他领域 • 选择购买操作系统 • 我们并不总使用Win95/NT/2000/XP
为什么学习操作系统? • 涉及到计算机科学的很多领域 计算机体系结构/硬件 软件设计 程序设计语言 数据结构 算法 网络 学习核心技术并能在其他地方应用之
操作系统的工作 (1)程序的执行 负责启动每个程序,以及结束程序的工作 (2)完成与硬件有关的工作 (3)完成与应用无关的工作 易于使用,基本服务,统一性 (4)计算机系统的效率与安全问题
硬件相关 应用程序 -----------------------虚机器界面 操作系统 -----------------------物理机器界面 硬件 假如没有操作系统?怎样将目标代码送给硬件?怎样输出 打印结果? →人们将对二进制程序操作从二极发光管读答案
硬件相关 • 指实现代码中包含存储器的物理地址, • 包含对设备接口寄存器和设备接口缓冲区的读写等等 • 实现该工作的过程代码和硬件因素密切相关,即需要设置与测试、使用物理地址、设备接口寄存器等等 • 硬件相关必然复杂繁琐、代码量大 • 硬件相关的工作,其实现代码不通用 由于操作系统承担了上述工作,在其之上的各类程序就没有必要直接同硬件打交道了。硬件改变时,操作系统相应变化即可,其他的程序不用作出改变硬件相关还表现在有关硬件的状态必定带来对应代码的变化
应用软件与现实硬件之间的软件 • 硬件抽象,可移植性 • 有限变为无限(接近) • 提供保护 一台等价的扩展机器(虚拟机),比底层硬件更容易编程
与应用无关 任何一个程序都需要的、最基本的工作 它们具有共性、工作过程相同、与具 体应用无直接关系(即与用户所关心的 应用目标无直接关系)
第一章 操作系统概论 1.1 操作系统的基本概念 1.2 操作系统的形成和发展 1.3 操作系统的分类 1.4 操作系统的功能和主要特征 1.5 操作系统的结构
1.1 操作系统的基本概念 1. 定义 学科的观点操作系统是控制和管理计算机系统的硬件和软件资源,合理地组织计算机工作流程及方便用户使用的程序和数据的集合。 功能的观点 操作系统是一个计算机资源管理系统,它负责计算机系统的全部资源的分配、控制、调度和回收。 用户的观点 操作系统是计算机与用户之间的接口,用户通过这种接口使用计算机。 软件的观点 操作系统是程序和数据结构的集合。 管理的观点 操作系统是计算机硬件和软件资源的合理而协调的管理者。
2. 目标 • (1)方便性 • 用户可通过良好的用户界面来操作/使用计算机(DOS命令,WINDOWS图标)。 • 机器只识别0/1代码,如未配置OS,用户只能用机器语言书写程序。PASCAL语言编写程序—编译—调用OS命令—运行。 • 驱动(I/O 驱动) • (2)有效性 • 系统效率(如CPU用的充足与否)。 • 资源利用率(如内存、I/O设备是否忙碌、OS可标示某设备情况异常,统一管理。磁盘整理。)
(3)可扩充性 IT技术迅速发展,OS应采用模块化结构,象积木一样,可增加修改。 (4)开放性 使用不同厂家的计算机,设备拿有效地协同工作,实现应用程序的可移植性和互操作性。 例如:UNIX对于C语言编制的程序可以直接使用,可移植性好。几十万条指令的程序改动千条左右即可。 3. 作用 (1)系统资源的管理者。 (2)提供资源共享,并对资源使用进行合理调度。 (3)提供I/O接口,简化用户的I/O工作。 (4)验错。
4 . 对待OS的几种观点 • ① 操作系统作为最基本的系统软件 • 计算机系统资源 • 一个计算机系统由两部分构成:系统硬件和系统软件。 系统硬件是指构成计算机系统所必须配置的全部设备。现代计算机系统一般都包含一个或多个处理器、内存、磁盘、光盘、 打印机、时钟、鼠标、键盘、显示器、网络接口以及其它输入输出设备。计算机系统硬件构成了计算机本身和用户作业赖以活动的物质基础。通常,我们把计算机系统中所配置的硬件称为硬件资源。
只有系统硬件而无系统软件的计算机称为裸机。用户直接使用裸机不仅不方便,而且将严重降低系统效率。系统软件是一个计算机系统必须配置的程序和数据的集合。它们是专门为计算机系统所配置的,例如操作系统、各种语言处理程序(汇编程序、编译程序等)、编辑程序、连接装配程序、系统实用程序以及系统维护程序等,这些都可算是系统软件,但是最为重要、最为基本的系统软件便是我们所要讲的操作系统了。 操作系统本身是计算机系统软件中的重要组成部分, 而其物质基础是系统硬件。系统硬件和系统软件统称为计算机系统资源。
计算机系统的层次结构 • 由四层构成,每层代表一组功能并提供相应的接口。 • 接口:掩盖该层内部功能的实现细节,向外部提供一些使用的约定。 图 1.1 计算机系统的层次结构
②操作系统作为资源管理器 (1) 跟踪资源状态。 (2) 分配资源。 (3) 回收资源。 (4) 保护资源。
③操作系统作为虚拟机 • 软件:语言处理程序 虚拟机2 • 软件:操作系统 虚拟机1 • 硬件(裸机) • 虚拟机:二者结合变成了功能更强大使用更方便的机器。 • 为了让用户和程序员在使用计算机时不涉及硬件细节,使硬件细节和程序员隔离开来,需要建立一种简单的高度抽象。这种抽象就是为用户提供一台等价的扩展计算机,这样的计算机称为虚拟计算机,简称虚拟机。
④ 进程的观点 • 从操作系统运行的角度动态的观察操作系统。操作系统是由一些可同时独立运行的进程和一个对这些进程进行协调的核心组成。 • ⑤服务提供者的观点 • 从用户角度来看:操作系统为用户提供一组功能强大的、方便易用的命令或系统调用。 • 操作系统作为标准服务提供者 • • 提供每个用户需要的标准工具(程序创建和执行、存取I/O设备、控制对文件的存取、系统存取、错误检测和回应统计) • • 如标准库、窗口系统
5. 多道程序设计的概念 (1)通道:用于专门完成I/O操作的处理机。 优势:CPU和通道并行工作; 通道和通道并行。 (2)单道系统 一次只加载一个任务处理。 不足:CPU利用率低,外设利用率低; 吞吐量小,作业执行时间长。
(3)多道程序设计 • 多道程序设计的硬件支持 • 中断系统 • 从系统操作的观点来看,中断的定义如下: • ① 对异步或例外事件的一种响应; ② 这一响应自动地保存CPU状态以便将来重新启动;③ 自动转入中断处理程序。
在计算机系统中, 一般将中断分为如下几种类型: (1) I/O中断。 这是外部设备完成了预定I/O操作或在I/O操作中出错所引起的中断。(强迫性中断) (2) 程序中断。 这是由程序中的错误引起的中断。(强迫性中断) (3) 硬件故障中断, 或称机器检验中断。(强迫性中断) (4) 外中断。 外中断来自外部信号, 这些信号可能来自其它机器。 外中断还包括时钟中断, 以及来自键盘的中断。(强迫性中断) (5) 访管中断。 由机器中的访管指令引起的中断。(自愿性中断)
通道技术 • 四级连接;三级控制。 图 1.3 单通路I/O系统
CPU和通道的通信 • CPU与通道之间的关系是主从关系。CPU是主设备,通道是从设备。采用通道方式实现数据传输的过程如下: • (1) 当运行的程序要求数据传输时,CPU向通道发I/O指令,命令通道工作; • (2) 通道接收到CPU的I/O指令后,从内存中取出相应的通道程序,通过执行通道程序完成I/O操作; • (3) 当I/O操作完成(或出错)时,通道以中断方式中断CPU正在执行的程序,请求CPU的处理。
多道程序设计原理 图 1.4 多道程序运行概念图
多道程序设计的实现 • 为实现多道程序设计, 必须妥善解决以下三个问题 • 存储保护和地址重定位。 • (2) 处理机管理和调度。 • (3) 资源的管理和分配。
图 1.6 多道程序设计环境下各程序的 执行和状态的转换
综上所述,可归纳多道程序设计的特点如下: (1) 多道,即主存中有两道或两道以上的程序,它们都处于执行的开始点和结束点之间,也就是说,它们在任一时刻必处于就绪、 运行、 阻塞三种状态之一。 (2) 宏观上并行。从宏观上看,它们在同时执行。 (3) 微观上串行。从微观上看,它们在交替、穿插地执行,因为在任一时刻,在一台处理机上只能执行一道程序的一条指令。
1.2 操作系统的形成和发展 1.2.1 历史 1.第0代(40年代未-50年代初)无操作系统 这时的计算机操作是由程序员采用人工操作方式直接使用计算机硬件系统。 2.第一代(50年代中-50年代未)初级单道批处理系统 它是为了减少人工操作时间和作业转换时间提高CPU利用率而设计的。系统自动成批处理作业,这是初级单道批处理系统。 3.第二代(60年代初-60年代中)多道程序设计共享系统 这一代操作系统包括多道批处理系统、采用交互方式的分时系统和以提高瞬时响应时间为特征的实时系统。
4.第三代(60年代中-70年代中)多模式系统 这一代计算机系统是通用系统,这一代操作系统是多模式系统,即一个系统同时支持批处理、分时处理、实时处理和多重处理。 5.第四代(70年代中- )网络操作系统和分布式操作系统 网络操作系统实现在计算机网络上进行信息交换、资源共享和互操作等功能。分布式操作系统将地域上分散的各系统互连成一个具有整体功能的系统,并可将一个任务分布地在各系统上运行,实现分布式处理。 6.第五代(1995- )移动系统 各种移动设备出现(笔记本、PDA等等) 特点:小型、移动、便宜但有限能力 无线支持
1.2.2 历史上的操作系统 • FMS(FORTRAN Monitor System)和IBSYS • (IBM为7094配备的操作系统) • OS/360(IBM为系列机360配备的操作系统) • CTSS(Compatible Time Sharing System) • MULTICS(MULTiplexed Information and • Computer Service) • UNIX类、Linux • CP/M • MS-DOS、Windows 3.1/95/98/Me、Windows NT、 • Windows 2000/XP、Windows CE、Windows Server 2003
Macintosh • OS/390 • Mach • VxWorks • 嵌入式领域 • 国产操作系统 • 研究型操作系统 • 批处理操作系统- 现代操作系统雏型 • 运行一个作业的步骤: • 将程序写在纸上(用高级语言或汇编语言) • 穿孔成卡片,再将卡片盒交给操作员 • 计算结果从打印机上输出 • 操作员到打印机上撕下运算结果送到输出室 • 程序员稍后可从输出室取到结果 • 操作员从输入室的卡片盒中读入另一个任务 • 如果需要FORTRAN编译器,还要把它取来读入计算机 • 缺点:机时在走来走去时浪费掉
为改进主存和I/O设备之间的吞吐量 • IBM 7094机引入了I/O 处理机概念 • 思想:在输入室收集全部的作业,用一台相对便宜的计算机(IBM 1401计算机),将作业读到磁带上再用较昂贵的计算机(IBM7094)完成真正的计算。 • 典型的操作系统 • FMS(FORTRAN Monitor System,FORTRAN监控系统) • IBMSYS(IBM为7094机配备的操作系统) • 这些操作系统由监控程序,特权指令,存储保护和简单的批处理构成。 • OS/360操作系统 • 20世纪60年代初期,计算机开始采用集成电路,多数厂商有几条完全不同的生产线,生产不同的计算机 • 开发和维护完全不同的产品,对厂商来说是昂贵的 • 新的用户在开始时只需要一台小计算机,后来可能需要一台大的计算机,并希望能在新计算机上执行原有的程序 • 厂家和用户需要软件在不同型号的计算机之间兼容
1964 年IBM 宣布推出System/360计算机系统 • 第一个采用小规模集成电路的主流机型 • 试图一次性地解决上述问题 • 由于所有的计算机都有相同的体系结构和指令集在理论上,为一型号编写的程序可以在其他型号机器上运行。 • IBM System/360的若干问题 • IBM无法写出同时满足互冲突需要的操作系统 • 其实别人也一样不能完成此项任务。 • IBM OS/360文件系统中有类型字段,定义文件的类型,有定长、不定长记录、块状和非块状文件用户对于输出文件的大小,只有通过猜测。 • 存储管理有基地址寄存器寻址方式,程序也可以访问和修改基地址寄存器,但是CPU生成的却是绝对地址,虽然不用进行动态再分配但程序却被“钉死”在调入内存时的物理地址上。
IBM System/360—庞大的软件怪兽 • 数千名程序员写的数百万行汇编语言代码。系统自身占据了大量存储空间和一半的CPU时间。 • 数百万行汇编代码中有成千上万处错误。 • IBM不断发行新的版本试图更正这些错误。 • 每个新版本在更正老错误的同时又引入新错误。 • 随着时间的流逝,错误的数量大致保持不变。 • 多道程序设计技术(multiprogramming) • 在IBM 7094机上,若当前作业因等待I/O而暂停,CUP只能“踏步”直至该I/O完成对于CPU操作密集科学计算问题,浪费时间少。 • 对于商业数据处理,I/O等待时间常占80%-90%。 • 解决办法 • 将内存分几个部分,每部分放不同的作业。 • 当一个作业等待I/O时,另一个作业可以使用CPU。 • 在主存中同时驻留多个作业需要硬件进行保护,以避免信息被窃取或攻击。
Spooling 技术 • 程序卡片被拿到机房后,能够很快将一作业从卡片读入磁盘 • 任何时刻当一作业运行结束,操作系统就将一新作业从磁盘读出,装入空出的内存区运行。 • Spooling技术(Simultaneous Peripheral Operation On Line) • 该技术也用于输出 • 第一个分时操作系统CTSS • 分时系统的思想——1959年在MIT提出 • 每个用户有一个联机终端。在分时系统中,假设20个用户登录,其中17个在思考或谈论或喝咖啡,则CPU可分配给那三个需要的作业(轮流服务)。 • 调试程序的用户常常只发出简短的命令。很少有长的费时命令。 • 计算机能够为许多用户提供交互式、快速服务,同时在CPU空闲时还能在后台运行大作业。
第一个分时系统(CTSS)由MIT的FernandoCorbato 等1961年在一改装的IBM 7090/94机上开发成功(有32个交互式用户) • IBM 7090/94计算机有32K内存,系统用5K,用户用27K,用户存储映象在内存和一台磁鼓之间切换。 • 1962年Manchester大学的Atlas计算机投入运行。运行速度200 kFLOPS。 • 第一个有虚拟存储器(virtual memory)和页面调度(paging) 的机器 • 指令执行是pipelined 的 • MULTICS的灾难 • 1965年在ARPA的支持下MIT、贝尔实验室和通用电气公司决定开发一种“公用计算服务系统”, 希望能够同时支持整个波士顿所有的分时用户。该系统称作MULTICS (MULTiplexedInformation and Computing Service ) • MULTICS设计目标是: • 便利的终端使用——大量远程终端通过电话线接入计算机主机。 • 高可靠的大型文件系统——大容量的用户信息共享;存储和构造层次化信息结构的能力。
MULTICS研制难度超出所有人的预料(PL/1语言)。MULTICS研制难度超出所有人的预料(PL/1语言)。 • 长期研制工作达不到预期目标,1969年4月贝尔实验室退出,通用电气公司也退出。 • 最终,MIT坚持下来,MULTICS成功运行,成为商业产品(通用汽车、福特、美国国家安全局等)。 • 运行MULTICS的计算机系统在九十年代中陆续被关闭(加拿大国防部于2000年10月30日17:08) • MULTICS的意义 • 引入了许多现代操作系统领域概念雏形,对随后的操作系统特别是UNIX的成功有着巨大的影响。 • 小型计算机,电子游戏和UNIX的成功 • 1969年,在贝尔退出MULTICS研制项目后,Ken Thompson和 • Dennis M. Ritchie 想申请经费买计算机从事操作系统研究,但多次申请得不到批准。 • 项目无着落,他们在一台无人用的PDP-7上,重新摆弄原先在MULTICS项目上设计的“空间旅行”游戏。
为了使游戏能够在PDP-7上顺利运行,他们陆续开发了浮点运算软件包、显示驱动软件,设计了文件系统、实用程序、shell 和汇编程序。 • 到了1970年,在一切完成后,给新系统起了个同MULTICS发音相近的名字UNIX。 • 随后,UNIX用C语言全部重写,自此,UNIX诞生了。 • UNIX • UNIX是现代操作系统的代表。Unix运行时的安全性、可靠性 • 以及强大的计算能力赢得广大用户的信赖。 • 促使UNIX系统成功的因素: • 首先,由于UNIX是用C语言编写,因此它是可移植的,UNIX • 是世界上唯一能在笔记本计算机、PC机、工作站直至巨型机上运行的操作系统。 • 第二,系统源代码非常有效,系统容易适应特殊的需求 • 最后,也是最重要的一点,它是一个良好的、通用的、多用户、多任务、分时操作系统。
UNIX • 两个版本系列 • AT&T System V • BSD(Berkeley Software Distribution) • MINUX • VAX (DEC公司) • 其他 • CP/M 操作系统 • 随着大规模集成电路发展,个人计算机时代到来,各种类型的个人计算机和软件层出不穷。 • 1973年Gary Kildall看到对个人计算机操作系统的需求,设计了CP/M操作系统(ControlProgram/Microprocessor or Microcomputer)。 • CP/M操作系统有较好的层次结构。它的BIOS把操作系统的其他模块与硬件配置分隔开,所以它的可移植性好, 具有较好的可适应性和易学易用性。 • 到了1981年,CP/M操作系统成为世界上流行最广的8位操作系统之一。
微软MS DOS • 个人计算机的成功,逼得IBM采取紧急战略行动,决定要在1980年尽快生产出微型计算机,以应付挑战。 • 但没有操作系统不行。要想快就是找现成系统配套,IBM公司洽谈CP/M操作系统不顺利,机遇落到了微软公司。 • 在关键时刻,开发新操作系统时间和人手上已经不可能,微软找到西雅图计算机产品公司,达成由微软经销西雅图计算机产品公司的QDOS操作系统的协议。 • 当时西雅图公司并不知道QDOS将被转卖给IBM,否则历史将会怎样演变,谁也无法知晓。 • IBM在1981年推出个人计算机,宣布了DOS操作系统 • 随着IBM PC和MS DOS普及,CP/M逐渐走向下坡路。 • MS DOS有优良的文件系统,但受到Intel x86体系结构的限制,缺乏以硬件为基础的存储保护机制。 • 它属于单用户单任务操作系统。 • 从1981的1.0版到1998年在Windows 95/98之下的7.0版,MS DOS历经了16个年头。 • 迄今仍有MS DOS爱好者继续开发各种DOS软件产品。
拯救苹果公司的Macintosh(MAC OS) • 在推出IBM PC机后,市场卷起一股龙卷风,IBM自己也没有料到产品会有如此巨大的成功。 • IBM的成功说明必有其他公司失败。甚至连苹果公司也遇到了问题,销售数量落到了兰色巨人的后面。 • 苹果公司推出Lisa机遭到失败,Apple III型也遭到失败。 • 分析家们认为,在微机市场上的战斗似乎兰色巨人要嬴了。 • 施乐Palo Alto研究中心——70年代的计算机研究思想库 • 世界上第一台个人计算机Alto,1972年在这里出现。 • 图形界面,手持鼠标,面向对象程序设计;微机网络,桌面出版和激光打印等等;具有先进概念和技术的原型都首次出现在这里。 • 1979年苹果公司允许施乐公司购买一百万股的苹果公司股票作为回报,施乐公司允许苹果公司的少数人员,包括乔布斯,在有限的时间内考察施乐公司Palo Alto研究中心内部,并同该思想库的研究人员交谈。 • 苹果公司对Palo Alto研究中心内的技术大感吃惊 • 他们更吃惊的是,施乐公司在拥有这些宝贵技术的同时竟然什么也没有做!
对Palo Alto研究中心这些科学家们而言,苹果公司的人是他们第一次遇到真正理解他们技术的人。 • 这些科学家们后来有的去了苹果公司,微软公司,有的最终创办了自己的公司。 • 在访问的基础上,苹果决定立即开发采用这些新技术的个人计算机。 • 苹果公司已看到,IBM PC机的技术有多么糟糕,但他们卖得又是特别的好。 • MAC OS、鼠标的新型个人计算机 • 1984年,人们看到一则广告:“What was that?”和对Macintosh的介绍, 这是配有图形界面操作系统MAC OS和鼠标的新型个人计算机。 • MAC机一上市立即在市场上获得极大的成功。 • 当年比尔.盖茨都说,这是一台他的妈妈也能使用的计算机。 • Macintosh把苹果公司从连续的失败中拯救出来。苹果公司又开始向前发展。 • 正是Mac先进图形界面操作系统技术,超前PC机若干年,造就了一批苹果的忠实追随者。