第 1章 操作系统概述
1.1 操作系统的地位计算机系统由硬件和软件组成操作系统在硬件基础上的第一层软件是其它软件和硬件的接口游戏 MIS 。。。
编译器 命令解释器 网络,数据库操作系统机器语言微程序物理设备
1.2 操作系统的定义操作系统是计算机系统中的一个系统软件,
是一些程序模块的集合 ——
它们能以尽量有效合理方式组织和管理计算机的软硬件资源,合理的组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能,使得用户能够灵活,方便,有效的使用计算机,使整个计算机系统能高效的运行。
有效,系统效率
(如 CPU用的充足与否)
资源利用率
(如内存,外部设备是否忙碌)
合理:
公平与否,如果不公平则会产生,死锁,或,饥饿,
方便:
用户界面
1.3 操作系统的特征并发:
在计算机系统中同时存在多个程序,
从宏观上看这些程序是同时在执行的。
从微观上讲任何时刻只有一个程序在执行,
微观上说这些程序在 CPU上轮流执行。
并行,(与并发相同,但多指硬件支持)
共享:
操作系统与多个用户的程序共同使用计算机上的资源操作系统特征随机性:
操作系统必须随时对以不可预测的次序发生的事件进行响应考虑周密、设计适当操作系统特征
1.4 操作系统的发展操作系统发展是随着计算机硬件技术的发展而发展的目标:充分利用硬件
1.4.1 概述操作系统历史划分为 4个阶段第 0 阶段硬件非常昂贵,没有操作系统控制台 一个用户
一次完成一个功能(计算,I/O,用户思考 /反应)
程序通过卡片装入
用户在控制台前调试程序
工作效率非常低
每一用户都要自行编写涉及到硬件的源代码
工作量大,难度高,易出错,需要大量人力和物力第 1 阶段硬件昂贵,人力便宜简单批处理:装入程序、运行、打印结果、撤出、再重复
用户把程序(卡片或磁带)交给负责调度的操作员(系统管理员)
常驻监控程序 自动地装入程序、运行、
撤出作业
需要存储管理、重定位和保护机制
硬件使用较为高效,
但(从输出)调试困难
CPU 与 I/O 操作交叉覆盖
后期,Spool 数据到磁盘上
早期:将慢速设备转到同 CPU 相连的快速磁带驱动器上增加:缓冲,DMA,中断处理作业被送 ( spool) 到磁盘仍然是单个作业,利用率低多道程序批处理系统
在磁盘上多个作业等待运行
多道程序 - 同时运行 多个作业
- 选择若干作业准备运行( 调度 )
并装入内存( 存储管理 )
- 运行一个作业,当它等待时
(如需安装磁带,等键按下)
切换至内存中的另一个作业多道程序设计:多个用户共享系统增加:存储保护,重定位利用率高(多个作业)
有必要采用并发程序设计技术操作系统成为研究焦点:需要处理复杂性
首次面对重大失败:
- MULTICS 于 1963 年开始,
直至 1969 年才发布
- IBM 的 OS/360 发布时,
带着已知的 1000 个错误
早期计算机:单控制方式
- CPU负责计算,也负责传输
早期计算机的使用方式
- 一个用户独占全部资源
- 浪费,CPU与外设速度不匹配手工操作方式和高速机器之间的不匹配
提高资源利用率
- 多部件并行,多任务共享通道引入:传输和 CPU相对独立中断引入:各部件的协调动作成为可能体系结构的发展可以支持 OS
多道程序运行模式第 2 阶段硬件较以前便宜,人力昂贵交互式 分时处理
一台计算机,多个便宜终端
- 所有用户可与系统立即交互
- 调试比较方便
磁盘便宜,故可在线存放程序和数据
- 1 张穿孔卡片 = 100个字节
- 1 MB = 10K卡片
- OS/360 有若干英尺长度的卡片
新问题
- 易于使用,提高人的生产力
- 合理的响应时间
- 引入文件系统,使用户可存取数据
解决
- 需要抢占式调度以便保持适当的响应时间
- 需要避免抖动(程序在内存中过于频繁的对换)
- 需要提供适用的安全检测
成功:
一群计算机迷 ( Tomson,
Ritchie ) 在贝尔实验室发展出了 UNIX。
(这样他们可以在一台无人使用的 DEC PDP-7 小型计算机上玩星际探险游戏)
成功:
Ken Thompson,Dennis Ritchie
1983年图灵奖获得者
1999年 4月 美国国家技术金奖第 3 阶段硬件非常便宜,人力昂贵目标:
充分利用人和时间个人计算
CPU 便宜到可在每台终端上安装,
功能强大有效
- 成为大众的计算机
放弃多道程序、并发和保护机制,
使 OS 回归简单
使用户再次与系统交互
增强文件系统
响应时间,保护更为重要网络
允许不同机器很容易共享资源
- 共享,安全操作系统的历史,
变化 !
意味着技术总在改变要适应、折衷权衡
1.4.2 历史上的操作系统随历史线索,介绍一些重要的操作系统
真空管时代 (1946年 -1955年 )
晶体管时代 (1955年 -1965年 )
集成电路时代 (1965年 -1980年 )
大规模集成电路时代 (1980年 -至今 )
第一台数字计算机英国数学家 Charles Babbage( 1792-1871) 设计
Babbage投入了毕生精力但却没能让它成功地运行起来因为当时的技术不可能达到需要的精度当然,这个分析机没有操作系统二战对武器设计的需要美国,英国和德国等国家开始了电子数字计算机的研究工作哈佛大学的 Howard Aiken
普林斯顿高等研究院的 John Neumann( 冯 ·诺依曼 )
宾夕法尼亚大学的 J.Presper Eckert和 William
Mauchley
德国电话公司的 Konraad Zuse以及其他一些人都使用真空管成功地建造了运算机器真空管计算机( 1945年 -1955年)时期没有程序设计语言 ( 甚至没有汇编 ),更谈不上操作系统程序员提前预约一段时间,然后到机房将他的插件板插到计算机里期盼着在接下来的时间中几万个真空管不会烧断从而可以计算自己的题目
ENIAC计算机运算速度,1000次 /每秒,数万个真空管,占地 100平方米
50年代早期出现了穿孔卡片程序写在卡片上然后读入计算机但计算过程则依然如旧晶体管计算机( 1955年 -1965年)时期
50年代晶体管发明计算机比较可靠,可成批地生产用户可指望计算机长时间运行,完成一些工作
FORTRAN 1954年提出,1956年设计完成
ALGOL 1958年引入
COBOL 1959年引入设计人员,生产人员,操作人员,程序人员和维护人员之间第一次有了明确的分工要运行一个作业,先将程序写在纸上 ( 用高级语言或汇编语言 )
然后穿孔成卡片,再将卡片盒交给操作员计算结果从打印机上输出操作员到打印机上撕下运算结果送到输出室程序员稍后可从取到结果然后,操作员从输入室的卡片盒中读入另一个任务如果需要 FORTRAN编译器,还要把它取来读入计算机机时在走来走去时被浪费批处理操作系统 - 现代操作系统雏型为了改进主存和 I/O设备之间的吞吐量
IBM 7094机引入了 I/O 处理机概念其思想是:在输入室收集全部的作业,用一台相对便宜的计算机如 IBM 1401计算机,将它们读到磁带上另外用较昂贵的计算机,如 IBM7094来完成真正的计算基本控制卡片是现代作业控制语言和命令解释器的先驱第二代计算机典型的操作系统
FMS( FORTRAN Monitor System,FORTRAN监控系统 )
IBMSYS( IBM为 7094机配备的操作系统 )
这些操作系统由监控程序,特权指令,存储保护和简单的批处理构成第三代集成电路计算机( 1965年 -1980年)时期
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,Compatible Time Sharing System)
分时系统实际上是多道程序的一个变种
分时系统的思想于 1959年在 MIT提出
每个用户有一个联机终端
在分时系统中,假设 20个用户登录其中 17个在思考或谈论或喝咖啡则 CPU可给那三个需要的作业轮流分配服务
调试程序的用户常常只发出简短的命令而很少有长的费时命令
所以计算机能够为许多用户提供交互式快速服务同时在 CPU空闲时还能在后台运行大作业
第一个分时系统由 MIT的 Fernando Corbato 等
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 (MULTiplexed
Information and Computing Service )
MULTICS设计目标是:便利的远程终端使用,
大量终端通过电话线接入计算机主机高可靠的大型文件系统;大容量的用户信息共享;存储和构造层次化信息结构的能力
MULTICS研制难度超出了所有人预料长期研制工作达不到预期目标,1969年 4月贝尔实验室退出,通用电气公司也退出了但最终,经过多年的努力,MULTICS成功地应用运行 MULTICS的计算机系统在九十年代中陆续被关闭
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机,工作站直至巨型机上运行的操作系统
第二,系统源代码非常有效,系统容易适应特殊的需求
最后,也是最重要的一点,它是一个良好的,通用的,多用户,多任务,分时操作系统第四代大规模集成电路计算机( 1980年 -至今)
CP/M 操作系统
随着大规模集成电路发展,个人计算机时代到来了各种类型的个人计算机和软件层出不穷
1973年 Gary Kildall看到对个人计算机操作系统的需求,设计了 CP/M 操作系统 (Control
Program/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机若干年,造就了一批苹果的忠实追随者一波三折的微软 Windows操作系统
1983年 10月,PC机竞争厂家的图形界面相关产品上市
面对市场压力,比尔,盖茨在 1983年 11月 10日宣布推出 Windows操作系统
然而宣布容易,交货就不简单了,Windows交货期的灾难,成了当年计算机界的笑柄
直到 1985年 11月 20日,Windows 1.0才正式上市
Windows的历史记录
Windows在当时微软历史上创了几个记录:延迟交货次数最多,投入开发人员最多,开发时间最长,更换主管人员最多
不过几年之后,Windows终于创造了销售成绩最佳的历史记录
1992年 4月,推出 Windows 3.1,1993年 5月,发表
Windows NT
Windows 95,Windows CE,Windows 98,Windows
2000
个人计算机采用 Windows占 90% 以上,微软公司成了垄断 PC行业的同义词基于微内核的 Mach操作系统
1975年 Rochester大学开发了 RIG 操作系统
系统设计者之一 Richard Rashid 移居到 CMU后,在
DARPA支持下,1984年开始了 Mach的开发
希望 Mach能与 UNIX兼容,运行线程,更好的进程通信机制,支持多处理机及好的虚拟存储系统
Mach第一个版本是 1986年为 VAX 11/784四 CPU多处理机发布
1988年的 Mach 2.5版包含了大量的 BSD UNIX的代码
1989年,Mach 内核中去掉了所有的 BSD UNIX的代码,
剩下了一个纯的 Mach微内核,这就是 Mach 3.0版本,
它是 OSF发布的基础
Mach中采用了许多当代操作系统使用的技术,
微内核,线程,进程间消息传递和面向对象的设计方法等等
在 Mach的基础上,有不少用于微处理器,多处理器以及超级计算机的操作系统和实时嵌入式操作系统陆续设计和开发出来,如 OSF/1,DCE
Unix,NeXT等等
IBM大型计算机操作系统 OS/390
90年代末期,电子商务发展刺激对计算能力的要求,
导致大型机市场的再度升温
三十年的改进,IBM S/390已成为有高可靠性,可扩展性,及安全可用性的现代大型计算机系统
支 持 即 UNIX 95标准,UNIX应 用 程 序 可 在 IBM
OS/390上运行
同时还可继续运行 S/390应用程序,包括 S/370上开发的应用程序
包括 TCP/IP的多种通信协议,具有高网络安全性
采用面向对象程序设计,并行处理,分布式处理以及客户机 /服务器技术,具有较强的互操作性,可移植性与可扩展性
由于历史渊源,OS/390有不同的系统运行方式,
S/370本机模式,支持原先在 S/370运行的程序
ESA/390模式,支持到 10个 240M处理器内存和 256个通道
ESA/390 LPAR模式,系统可分成最多十个部分,每个部分有自己的 CPU,存储器和通道,且分别运行不同的操作系统,如 S/370,ESA/370 和 ESA/390等
在 PC机时代,人们曾经估计大型计算机会衰亡
IBM S/390是大型计算机复活的一个典型那么,在 21世纪的 Internet和后 PC的时代,大型机还会有什么演化,只有让时间来说明嵌入式操作系统的代表 VxWorks
VxWorks支持各种工业标准,包括 POSIX,ANSI C
和 TCP/IP网络协议
VxWorks运行系统的核心是一高效率的微内核
微内核支持各种实时功能,包括快速多任务处理,
中断支持,抢占式和轮转式调度
微内核设计减轻了系统负载并可快速响应外部事件
从只需几千字节存储器的深嵌式产品设计到复杂高端实时系统设计,开发人员有八十多个选件并可构成上百个不同的配置
VxWorks开发主机,Windows 9x,Windows NT,Sun
Solaris,SunOS,HP-UX等
支持目标微处理器,86,68k,PPC,CPU 32,i960,
SPARC,SPARCLite,SH,ColdFire,R3000,R4000,
C16X,ARM,MIPS等
在,极地登陆者,号,,深空二号,和火星气候轨道器等登陆火星探测器上,就采用了 VxWorks
VxWorks负责火星探测器全部飞行控制,包括飞行纠正,载体自旋和降落时的高度控制等,而且还负责数据收集和与地球的通信工作
目前在国内也占据嵌入式开发系统市场主要份额
Internet时代与 Linux
1990年秋天,Linus在芬兰首都赫尔辛基大学学习操作系统课程,因为上机需要排队等待,Linus买了台 PC机,开发了第一个程序,程序包括两个进程,
向屏幕上写字母,然后用定时器来切换进程
Linus需要终端仿真程序来存取 Usenet新闻组的内容,于是他写了从调制解调器上接发信息的程序以及显示器,键盘和调制解调器的驱动程序
然后写了磁盘驱动程序,文件系统,一旦有了进程切换,文件系统和设备驱动程序,当然就拥有了一个操作系统原型,或者至少是它的一个内核
Linux就以这样极其古怪但也极其自然式问世操作系统领域中新的操作系统
有线电视机顶盒领域,PowerTV
移动通信领域,EPOC
掌上计算机领域,Palm OS
数字影像领域,Digita
研究中的新的操作系统
哈佛大学的 VINO,使应用得以重用内核构件
犹他州大学的 OSKit,提供构造操作系统所需的基础构件,也提供高层次构件 。 OSKit可用来构造新的 OS
MIT Exokernel,该系统只有一个极小的核 。 系统抽象通过 Library Operating System完成
加州大学伯克利分校 NOW集群操作系统,100台 Ultra
SPARC-I处理机集群,排名于世界最快的 200台超级计算机之内
NASA空间飞行中心 (GSFC)研制 Beowulf项目开始于
1994年,用商业化的微型计算机,Linux和以太网等构造集群 。 已有世界各地的约六十个大学和研究机构在使用思考和回顾
个人计算机的兴起,结束了 IBM的霸主地位
Internet普及,Linux的成功,极大地推动了当代操作系统的研究发展活动
据不完全统计,当前在 Internet上,有超过 100
个操作系统的项目在 14个国家中进行着
一批批的程序设计员们自愿通过互联网组织成为研究小组,从事着各类操作系统的研究开发工作
在一些影响全球的操作系统的诞生和发展过程中,
大师们设计那些知名操作系统的初始动机真是各不相同的
一个操作系统成功的缘由,似乎也在于某种机遇,
往往是有心裁花花不开,无心插柳柳成行
未来操作系统的发展是否还会是这个模式?
在 Internet时代,新概念,新思想,新原理和新技术层出不穷
谁又能预测,未来会有什么样的新型操作系统在国际互联网上问世呢 !
思考和回顾
1.4.3 操作系统的分类批处理操作系统(多道批处理)
分时操作系统实时操作系统嵌入式操作系统个人计算机操作系统网络操作系统分布式操作系统
1.4.3.1 批处理操作系统工作方式:
用户将作业交给系统操作员系统操作员将许多用户的作业组成一批作业之后输入到计算机中,在系统中形成一个自动转接的连续的作业流启动操作系统系统自动、依次执行每个作业最后由操作员将作业结果交给用户卡片早期批处理系统
IBM
1401
IBM
7094
IBM
1401
输入磁带磁带机卡片阅读机输出磁带打印机
Op e r a t in g S y s t e m
$END
$RUN
Data for program
$LOAD
Fortran program
$FORTRAN
$JOB,10,429754
Cherry Chen
典型的
FMS JOB 结构批处理操作系统特点:
多道,
(注:多道指某个作业占用 CPU,若由于某种原因暂时不用 CPU 则系统让第二个作业占用 CPU)
成批处理:
批处理操作系统特点成批处理:
用户自己不能干预自己作业的运行,
一旦发现作业错误不能及时改正,
并延长开发软件时间,
所以适用于成熟的程序。
Spooling系统 ( 技术 )
1961年,英国曼彻斯特大学,Atalas机
Simultaneous Peripheral Operation
On-Line
同时的外围设备联机操作 --假脱机技术利用磁盘作缓冲,将输入、计算、输出分别组织成独立的任务流,使 I/O和计算真正并行
Spooling系统工作原理
- 作业进入到磁盘上的输入井
- 按某种调度策略选择几种搭配得当的作业,并调入内存
- 作业运行的结果输出到磁盘上的输出井
- 再由磁盘上的输出井将结果送到打印机
批处理操作系统
- 优点:作业流程自动化效率高,吞吐率高吞吐量:
单位时间内处理作业的个数
- 缺点:无交互手段,调试程序困难
1.4.3.2 分时操作系统
工作方式,
一台主机连接了若干个终端每个终端有一个用户在使用交互式的向系统提出命令请求系统接受每个用户的命令采用时间片轮转方式处理服务请求并通过交互方式在终端上向用户显示结果用户根据上步结果发出下道命令主机终端分时操作系统
时间片:
操作系统将 CPU的时间划分成若干个片段,
称为时间片操作系统以时间片为单位,轮流为每个终端用户服务每次服务一个时间片
(其特点是利用人的错觉,使人感觉不到 )
分时操作系统特点
多路性
交互性
,独占,性
及时性分时操作系统多路性:
同时有多个用户使用一台计算机宏观上看是多个人同时使用一个 CPU
微观上是多个人在不同时刻轮流使用 CPU
分时操作系统交互性:
用户根据系统响应结果进一步提出新请求
(用户直接干预每一步 )
分时操作系统
“独占,性:
用户感觉不到计算机为其他人服务
( OS提供虚机器,各个用户的虚机器互不干扰)
及时性
系统对用户提出的请求及时响应分时操作系统实现 ( 条件 ),
终端设备轮转算法会话语言一般资源独占,“滚进滚出”方法分时操作系统追求目标:
及时响应
(根据指标是响应时间 )
响应时间:
从终端发出命令到系统给予回答所经历的时间分时操作系统影响响应时间的因素:
- 机器处理能力
- 请求服务的时间长短
- 系统中连接的终端数目
- 服务请求的分布
- 调度算法(时间片的选取)
通用操作系统分时系统与批处理系统结合原则:分时优先,批处理在后
“前台”:需频繁交互的作业
“后台”:时间性要求不强的作业
1.4.3.3 实时操作系统分类:
第一类:实时过程控制工业控制,军事控制,,..
第二类:实时通信 ( 信息 ) 处理电讯 ( 自动交换 ),银行,飞机订票实时操作系统主要追求目标:
对外部请求在严格时间范围内作出反应
有高可靠性
完整性实时系统必须和先进的技术装备相结合
1.4.3.4 个人计算机操作系统
(单用户多任务 )
计算机在某一时间内为单用户服务,
其追求目标是界面友好,使用方便
1.4.3.5 网络操作系统它是基于计算机网络的,
是在各种计算机操作系统上,
按网络体系结构协议标准开发的软件,
包括网络管理,通讯,安全,资源共享和各种网络应用。
目标:是相互通讯及资源共享网络操作系统网络服务应用程序通信软件
(协议支持)
单机操作系统用户应用程序局域网操作系统的结构通信软件
(协议支持)
1.4.3.6 分布式操作系统它基于两种环境,
多机 (CPU)系统或网络是网络操作系统的更高级的形式,
它保持了网络操作系统的全部功能分布式操作系统,
特征,
1.是一个统一的操作系统
2.资源进一步共享
3.透明性,
资源共享,分布,用户并不知道,对用户来讲是透明的,
4.自治性,
处于分布式系统的多个主机处于平等地位网络和分布式的区别,
(1) 分布具有各个计算机间相互通讯,
无主从关系;网络有主从关系
(2) 分布式系统资源为所有用户共享;
而网络有限制地共享
(3) 分布式系统中若干个计算机可相互协作共同完成一项任务
1.4.3.7 嵌入式操作系统什么是嵌入式系统?
在各种设备、装置或系统中,完成特定功能的软硬件系统它们是一个大设备、装置或系统中的一部分,这个大设备、装置或系统可以不是“计算机”
通常工作在反应式或对处理时间有较严格要求环境中由于它们被嵌入在各种设备、装置或系统中,因此称为嵌入式系统嵌入式系统软件:用于提供系统所需的功能和灵活性硬件 = (处理器,ASIC、存储器 … )
用于提供所需的性能以及部分安全机制专用门阵列 模拟 I/O
处理器核 存储器嵌入式操作系统,是运行在嵌入式智能芯片环境中,
对整个智能芯片以及它所操作、控制的各种部件装置等等资源进行统一协调、调度、指挥和控制的系统软件在嵌入式系统中的 OS,称为嵌入式操作系统典型嵌入式操作系统的特性
完成某一项或有限项功能;不是通用型的
在性能和实时性方面有严格的限制
能源、成本和可靠性通常是影响设计的重要因素
占有资源少、易于连接
系统功能可针对需求进行裁剪、调整和生成以便满足最终产品的设计要求嵌入式操作系统开发环境
通常配有源码级可配置的系统模块设计
丰富的同步原语
可选择的调度算法
可选择内存分配策略
定时器与计数器
多方式中断处理支持
多种异常处理选择
多种通信方式支持
标准C语言库
数学运算库和开放式应用程序接口嵌入式操作系统的应用嵌入计算的各种应用特点掌上电脑:
运算速度,100 KIPS
在大小上优化、支持手写、低能耗工业设备:
运算速度,1 MIPS
安全优先,控制流程为主军事装备运算速度,1 GFLOPS
可靠性最重要嵌入式操作系统的应用智能卡移动通信计算机外设机顶盒零售设备印刷机复印机 互联网服务器电话交换设备
1.5 研究操作系统的几种观点
作为软件来看的观点
资源管理的观点
进程的观点
虚机器观点
1.5.1 作为软件来看的观点软件的特性外在特性:
软件是种语言,是界面界面,使用方式 (命令,系统调用等 )
内在特性:
软件的结构
a.由有几部分组成
b.每个部分的功能
c.部分之间的关系
1.5.2 资源管理的观点操作系统 ---资源管理者硬件资源:
CPU,内存,
外部设备 (I/O设备,外存,时钟等 )
软件资源:
硬盘上的文件,信息管理资源
记录资源使用状况如 哪些资源空闲,好坏与否,被谁使用,
使用多长时间等
合理的分配资源静态分配策略
(在程序运行前分配,但效率不高 )
动态分配策略
(在程序运行过程中何时用资源,何时分配。
其缺点是会出现死锁 )
具体完成分配
回收资源资源管理的目的实现资源共享提高资源利用率
1.5.3 进程的观点是从操作系统运行的角度动态的观察操作系统从这个观点来看:
操作系统是由一些可同时独立运行的进程和一个对这些进程进行协调的核心组成,
进程:
完成某一特定功能的程序是程序的一次执行过程是动态有生命的,当它执行时存在,否则消亡
1.5.4 虚机器观点从操作系统内部结构来看:
把操作系统分成若干层每一层完成其特定功从而构成一个虚机器,
并对上一层提供支持通过逐层功能扩充,最终完成整个操作系统虚机器而操作系统虚机器向用户提供各种功能,
完成用户请求
1.5.5 提供服务在操作系统之外从用户角度来看:
操作系统为用户提供一组功能强大的、
方便易用的命令或系统调用
1.6 操作系统功能
CPU(进程 )管理存储管理文件管理设备管理作业管理操作系统的硬件环境操作系统在硬件之上,软件之下,直接与硬件打交道
CPU
中断系统堆栈通道地址映射机制存储保护设施
CPU
CPU状态
CPU状态的转换
CPU指令系统两类指令
特权指令:允许操作系统使用,不允许一般用户使用
(如修改程序状态字 ;设置中断屏蔽;启动
I/O设备 ;清内存 ;设置时钟;停机等 )
非特权指令:一般用户可用的
CPU状态:
在 PSW中专门设置一位,根据运行程序使用指令的权限而设置
PSW (Program Status Word )
– 一个或一组寄存器,
条件码,状态信息位
允许中断位
管理 (OS)/用户态位
CPU状态:
管态 (特态,系统态 ):能执行指令全集 (包括特权,非特权指令 ),具有改变 CPU状态的能力,操作系统在管态下运行目态 (普态 ):只能执行非特权指令,用户程序在目态下运行,(如果在目态下用户执行了特态指令,则产生中断,由操作系统得到控制权,而特权指令被停止,)
( 这两种状态时可转换的 )
CPU状态的转换目态 --管态其转换的唯一途径是通过中断管态 --目态可用设置 PSW(修改程序状态字 )可实现中断
特点,
中断系统的概念
中断源
中断类型
中断响应
中断处理
中断优先级
中断屏蔽
中断嵌套中断 概述中断是现代计算机系统中基本设施之一,它起着通讯联络作用,协调系统对各种外部事件的响应和处理。中断是实现多道程序的必要条件。
引入中断的目的解决主机与外设的并行工作问题提高可靠性实现多机联系实现实时控制中断定义:
CPU对系统发生的某个事件作出的一种反应:
CPU暂停正在执行的程序,保留现场后自动转去执行相应事件的处理程序,处理完成后返回断点,继续执行被打断的程序。
特点,
1) 中断随机的
2) 中断是可恢复的
3) 中断是自动处理的中断系统的概念中断由软硬件协同处理中断装置,指发现中断,响应中断的硬件中断处理程序,由软件来完成中断系统 =中断装置 +中断处理程序
中断源:引起中断发生的事件
中断寄存器:记录中断
中断字:中断寄存器的内容系统堆栈,
在内存开辟的一块区域,用于临时保存现场中断类型强迫性中断正在运行的程序所不期望的,由于某种硬件故障或外部请求引起的自愿性中断用户在程序中有意识安排的中断,是由于用户在编制程序时因为要求操作系统提供服务,有意使用,访管,指令或系统调用,使中断发生中断类型强迫性中断输入 /输出 (I/O)中断:主要来自外部设备通道程序性中断:运行程序中本身的中断
(如溢出,缺页中断,缺段中断,地址越界 )
时钟中断控制台中断硬件故障中断类型自愿性中断执行 I/O,创建进程,分配内存信号量操作,发送 /接收消息中断响应,
发现中断、接收中断的过程
(由硬件完成)
* 发现中断源 (识别中断原因 )
* 保存现场,将中断向量推入系统堆栈
* 引出中断处理程序中断响应 具体做法,
CPU在执行每条指令后扫描中断寄存器,
查看有无中断请求。
如果没有,则运行下一条指令;
如果有中断请求,则通过交换中断向量引出(进入)中断处理程序设备控制器或其他系统硬件发出中断处理器完成当前指令的执行处理器接受中断处理器将 PSW和
PC推入系统堆栈处理器根据中断类型读入新的 PC值硬件完成的工作保存进程状态的其余信息进程中断恢复进程状态信息从系统堆栈恢复原
PSW和 PC
软件完成的工作
P S W PC
......
P S W P C
......
......
程序状态字 指令计数器
系统堆栈
PSW1 PC1
PSW2 PC2
PSW3 PC3
PSW4 PC4
PSW5 PC5
PC1
PC2
PC3
中断处理
* 保存现场 (保存未被硬件保存的现场 )
* 识别中断的具体原因
* 根据中断原因处理中断事件
* 中断返回强迫性中断事件 自愿性中断事件保存现场信息 保存现场信息取出中断码 取出访管号分析中断原因 分析何种系统调用转相应处理程序是否中断嵌套由系统恢复现场 由系统恢复现场 转低级调度程序返回上层中断 返回目态程序需要切换进程
T F
F T
Op e r a t in g S y s t e m
输入输出中断处理
1,I/O正常结束如果要继续传输,准备好数据,启动通道如果有进程等待 I/O结束,将其唤醒
2,I/O传输错误进行 I/O复执,多次不成功,通知系统操作员设备故障时钟中断处理进行系统管理及维护有关的工作:
1、进程管理
2、作业管理
3、资源管理
4、事件处理
5、系统维护
6、实现软件时钟控制台中断处理系统操作员利用控制台向系统发出中断请求:
按下控制台上某一个按钮,
产生一个中断信号(相当于一个操作命令)
操作系统转到相应的处理程序
(与具体系统有关)
硬件故障中断处理主要工作是保存现场,并向系统操作员报告故障信息,以及估计对系统造成的破坏,对系统进行可能的恢复排除故障必须有人工干预
电源故障处理
主存故障处理内存校验线路发现奇偶校验错误或海明校验错误而引起的中断,停止相关进程的执行,向系统操作员报告错误及单元号程序性中断处理两种策略:
1、由系统处理该中断事件可能影响其他进程或操作系统
(内存访问地址越界,执行非法特权指令,
缺页,缺段等)
* 报告出错的进程号、出错位置和错误性质
* 调入段或页
2、由用户处理该中断事件只影响其自身
(浮点溢出、阶码下溢、除数为零等)
如果用户程序不提供特定的处理程序,操作系统将按照标准处理方法进行处理
on <中断条件 ><中断续元入口 >
例,on devide_zero goto LA;
运行前,编译系统为每个用户生成一个中断续元入口表,规定好每个中断事件对应的表目中断事件 0:中断续元运行环境 0 中断续元入口 0
中断事件 1:中断续元运行环境 1 中断续元入口 1
中断事件 2:中断续元运行环境 2 中断续元入口 2
………………………,..
中断事件 m 中断续元运行环境 m 中断续元入口 m
自愿性中断处理访管指令,SVC n?
SVC:指令码
n:访管中断号(整数)
中断发生时,硬件中断装置将访管中断号送入老的程序状态字中的内中断码字段,访管中断总控程序从系统堆栈中将其取出,并根据它转入对应的服务程序自愿性中断处理用户使用访管指令的一般形式为:
准备参数
SVC n?
取返回值根据具体访管要求约定,参数及返回值可以通过寄存器或内存传递自愿性中断处理在高级语言中一般表现为与过程调用类似的形式:
返回值 =系统调用名(参数 1,参数 2,… )
编译程序会将?翻译成?的形式,其中系统调用名对应?,不同的系统调用对应不同的整数 n
用户程序用户堆栈中断续元表中断续元运行程序中断向量处理程序硬件系统堆栈寄存器 溢出访问
PSW LA
......
LA
PSW PC
PSW1 PC1
PC1
......
RET
......
......
......,.....
......
操作系统
Op e r a t in g S y s t e m
中断优先级中断优先级是由硬件规定的,系统根据引起中断事件的重要性与紧迫程度将中断源划分为若干个级别当有多个中断同时发生时,系统根据中断优先级决定响应中断次序,优先响应级别高的中断;
对同级中断按硬件规定次序中断屏蔽中断发生时,CPU不予响应的状态 。
常用于必须连续运行的程序,防止任务被中断干扰;或执行处理某一类中断,防止其它中断干扰在 PSW中设置一个中断屏蔽位,通过设置中断屏蔽指令完成开中断与管中断来进行中断屏蔽中断嵌套在处理中断时又响应新的中断时钟硬件时钟软件时钟晶体震荡每个脉冲使计数器减 1
用来装入计数器初值硬件时钟:
某个寄存器来模拟
(根据脉冲频率定时加 1)
绝对时钟:
绝对时间,一般不会中断相对时钟:
如闹钟,每隔固定时间发一次中断软件时钟:
用作相对时钟,
(用内存单元来模拟时钟 )
CPU保护,防止进程得到 CPU后不放弃控制权解决:分配给每个进程一段时间(时间片),
时间片到,发时钟中断,控制权交给操作系统通道引入通道的目的为了使 CPU从 I/O事务中解脱出来,
同时为了提高 CPU与设备、设备与设备之间的并行度通道定义:
独立于 CPU的专门负责数据输入 /输出传输工作的处理机,对外部设备实现统一管理,代替
CPU对输入 /输出操作进行控制,从而使输入 /
输出操作可和 CPU并行操作地址映射机制同时有多个程序在内存,
程序在内存的位置不是固定的而是随机的存储保护设施
多用户,多任务操作系统,OS给每个运行进程分配一个存储区域问题:
多个程序同时在同一台机器上运行,怎样才能互不侵犯?
保护的目的:
防止用户程序破坏 OS
防止用户程序互相干扰保护的硬件支持:
为了保证软件程序只影响程序的内部,硬件提供两项功能
地址转换一对寄存器:基地址寄存器,限长寄存器
两种状态运行
CPU
Translation
Box
(MMU)
虚拟地址物理地址物理空间数据读或写
(不需转换)
现代体系结构中的地址转换
code
data
heap
stack
程序 2
虚地址空间
data2
stack1
code1
heap1
code2
stack2
data1
heap2
OS code
OS data
OS heap
& stacks
程序 1
虚地址空间
code
data
heap
stack
内存地址转换地址转换,
地址空间:
一个程序可以访问的所有地址限制程序做什么可以通过限制它的访问达到看内存的两种角度:
从 CPU的角度:程序所能看到的是虚存
从存储角度:物理内存两种状态运行
操作系统中:可以做任何事 ( 核心态 )
用户程序中:限制只能访问属于它自己的空间 ( 用户态 )
划分每一地址空间,使其行为不能造成破坏
I/O处理对硬盘的输入 /输出包括:
物理磁盘,磁盘控制器,CPU,内存,存储控制器磁盘控制器理解设备操作的细节,
可编程以执行所需的操作 ( 读,写,
格式化 )
OS根据 I/O操作请求的参数对磁盘控制器编程
磁盘控制器启动 I/O( CPU不干预 )
例如,读块并存放在缓冲区中
磁盘控制器将块传送给内存 ( DMA,CPU不干预 )
磁盘控制器中断 CPU表示操作结束应用程序标准库用户态核心态 可移动 OS层依赖于机器 OS的层硬件典型 UNIX操作系统结构
1.1 操作系统的地位计算机系统由硬件和软件组成操作系统在硬件基础上的第一层软件是其它软件和硬件的接口游戏 MIS 。。。
编译器 命令解释器 网络,数据库操作系统机器语言微程序物理设备
1.2 操作系统的定义操作系统是计算机系统中的一个系统软件,
是一些程序模块的集合 ——
它们能以尽量有效合理方式组织和管理计算机的软硬件资源,合理的组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能,使得用户能够灵活,方便,有效的使用计算机,使整个计算机系统能高效的运行。
有效,系统效率
(如 CPU用的充足与否)
资源利用率
(如内存,外部设备是否忙碌)
合理:
公平与否,如果不公平则会产生,死锁,或,饥饿,
方便:
用户界面
1.3 操作系统的特征并发:
在计算机系统中同时存在多个程序,
从宏观上看这些程序是同时在执行的。
从微观上讲任何时刻只有一个程序在执行,
微观上说这些程序在 CPU上轮流执行。
并行,(与并发相同,但多指硬件支持)
共享:
操作系统与多个用户的程序共同使用计算机上的资源操作系统特征随机性:
操作系统必须随时对以不可预测的次序发生的事件进行响应考虑周密、设计适当操作系统特征
1.4 操作系统的发展操作系统发展是随着计算机硬件技术的发展而发展的目标:充分利用硬件
1.4.1 概述操作系统历史划分为 4个阶段第 0 阶段硬件非常昂贵,没有操作系统控制台 一个用户
一次完成一个功能(计算,I/O,用户思考 /反应)
程序通过卡片装入
用户在控制台前调试程序
工作效率非常低
每一用户都要自行编写涉及到硬件的源代码
工作量大,难度高,易出错,需要大量人力和物力第 1 阶段硬件昂贵,人力便宜简单批处理:装入程序、运行、打印结果、撤出、再重复
用户把程序(卡片或磁带)交给负责调度的操作员(系统管理员)
常驻监控程序 自动地装入程序、运行、
撤出作业
需要存储管理、重定位和保护机制
硬件使用较为高效,
但(从输出)调试困难
CPU 与 I/O 操作交叉覆盖
后期,Spool 数据到磁盘上
早期:将慢速设备转到同 CPU 相连的快速磁带驱动器上增加:缓冲,DMA,中断处理作业被送 ( spool) 到磁盘仍然是单个作业,利用率低多道程序批处理系统
在磁盘上多个作业等待运行
多道程序 - 同时运行 多个作业
- 选择若干作业准备运行( 调度 )
并装入内存( 存储管理 )
- 运行一个作业,当它等待时
(如需安装磁带,等键按下)
切换至内存中的另一个作业多道程序设计:多个用户共享系统增加:存储保护,重定位利用率高(多个作业)
有必要采用并发程序设计技术操作系统成为研究焦点:需要处理复杂性
首次面对重大失败:
- MULTICS 于 1963 年开始,
直至 1969 年才发布
- IBM 的 OS/360 发布时,
带着已知的 1000 个错误
早期计算机:单控制方式
- CPU负责计算,也负责传输
早期计算机的使用方式
- 一个用户独占全部资源
- 浪费,CPU与外设速度不匹配手工操作方式和高速机器之间的不匹配
提高资源利用率
- 多部件并行,多任务共享通道引入:传输和 CPU相对独立中断引入:各部件的协调动作成为可能体系结构的发展可以支持 OS
多道程序运行模式第 2 阶段硬件较以前便宜,人力昂贵交互式 分时处理
一台计算机,多个便宜终端
- 所有用户可与系统立即交互
- 调试比较方便
磁盘便宜,故可在线存放程序和数据
- 1 张穿孔卡片 = 100个字节
- 1 MB = 10K卡片
- OS/360 有若干英尺长度的卡片
新问题
- 易于使用,提高人的生产力
- 合理的响应时间
- 引入文件系统,使用户可存取数据
解决
- 需要抢占式调度以便保持适当的响应时间
- 需要避免抖动(程序在内存中过于频繁的对换)
- 需要提供适用的安全检测
成功:
一群计算机迷 ( Tomson,
Ritchie ) 在贝尔实验室发展出了 UNIX。
(这样他们可以在一台无人使用的 DEC PDP-7 小型计算机上玩星际探险游戏)
成功:
Ken Thompson,Dennis Ritchie
1983年图灵奖获得者
1999年 4月 美国国家技术金奖第 3 阶段硬件非常便宜,人力昂贵目标:
充分利用人和时间个人计算
CPU 便宜到可在每台终端上安装,
功能强大有效
- 成为大众的计算机
放弃多道程序、并发和保护机制,
使 OS 回归简单
使用户再次与系统交互
增强文件系统
响应时间,保护更为重要网络
允许不同机器很容易共享资源
- 共享,安全操作系统的历史,
变化 !
意味着技术总在改变要适应、折衷权衡
1.4.2 历史上的操作系统随历史线索,介绍一些重要的操作系统
真空管时代 (1946年 -1955年 )
晶体管时代 (1955年 -1965年 )
集成电路时代 (1965年 -1980年 )
大规模集成电路时代 (1980年 -至今 )
第一台数字计算机英国数学家 Charles Babbage( 1792-1871) 设计
Babbage投入了毕生精力但却没能让它成功地运行起来因为当时的技术不可能达到需要的精度当然,这个分析机没有操作系统二战对武器设计的需要美国,英国和德国等国家开始了电子数字计算机的研究工作哈佛大学的 Howard Aiken
普林斯顿高等研究院的 John Neumann( 冯 ·诺依曼 )
宾夕法尼亚大学的 J.Presper Eckert和 William
Mauchley
德国电话公司的 Konraad Zuse以及其他一些人都使用真空管成功地建造了运算机器真空管计算机( 1945年 -1955年)时期没有程序设计语言 ( 甚至没有汇编 ),更谈不上操作系统程序员提前预约一段时间,然后到机房将他的插件板插到计算机里期盼着在接下来的时间中几万个真空管不会烧断从而可以计算自己的题目
ENIAC计算机运算速度,1000次 /每秒,数万个真空管,占地 100平方米
50年代早期出现了穿孔卡片程序写在卡片上然后读入计算机但计算过程则依然如旧晶体管计算机( 1955年 -1965年)时期
50年代晶体管发明计算机比较可靠,可成批地生产用户可指望计算机长时间运行,完成一些工作
FORTRAN 1954年提出,1956年设计完成
ALGOL 1958年引入
COBOL 1959年引入设计人员,生产人员,操作人员,程序人员和维护人员之间第一次有了明确的分工要运行一个作业,先将程序写在纸上 ( 用高级语言或汇编语言 )
然后穿孔成卡片,再将卡片盒交给操作员计算结果从打印机上输出操作员到打印机上撕下运算结果送到输出室程序员稍后可从取到结果然后,操作员从输入室的卡片盒中读入另一个任务如果需要 FORTRAN编译器,还要把它取来读入计算机机时在走来走去时被浪费批处理操作系统 - 现代操作系统雏型为了改进主存和 I/O设备之间的吞吐量
IBM 7094机引入了 I/O 处理机概念其思想是:在输入室收集全部的作业,用一台相对便宜的计算机如 IBM 1401计算机,将它们读到磁带上另外用较昂贵的计算机,如 IBM7094来完成真正的计算基本控制卡片是现代作业控制语言和命令解释器的先驱第二代计算机典型的操作系统
FMS( FORTRAN Monitor System,FORTRAN监控系统 )
IBMSYS( IBM为 7094机配备的操作系统 )
这些操作系统由监控程序,特权指令,存储保护和简单的批处理构成第三代集成电路计算机( 1965年 -1980年)时期
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,Compatible Time Sharing System)
分时系统实际上是多道程序的一个变种
分时系统的思想于 1959年在 MIT提出
每个用户有一个联机终端
在分时系统中,假设 20个用户登录其中 17个在思考或谈论或喝咖啡则 CPU可给那三个需要的作业轮流分配服务
调试程序的用户常常只发出简短的命令而很少有长的费时命令
所以计算机能够为许多用户提供交互式快速服务同时在 CPU空闲时还能在后台运行大作业
第一个分时系统由 MIT的 Fernando Corbato 等
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 (MULTiplexed
Information and Computing Service )
MULTICS设计目标是:便利的远程终端使用,
大量终端通过电话线接入计算机主机高可靠的大型文件系统;大容量的用户信息共享;存储和构造层次化信息结构的能力
MULTICS研制难度超出了所有人预料长期研制工作达不到预期目标,1969年 4月贝尔实验室退出,通用电气公司也退出了但最终,经过多年的努力,MULTICS成功地应用运行 MULTICS的计算机系统在九十年代中陆续被关闭
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机,工作站直至巨型机上运行的操作系统
第二,系统源代码非常有效,系统容易适应特殊的需求
最后,也是最重要的一点,它是一个良好的,通用的,多用户,多任务,分时操作系统第四代大规模集成电路计算机( 1980年 -至今)
CP/M 操作系统
随着大规模集成电路发展,个人计算机时代到来了各种类型的个人计算机和软件层出不穷
1973年 Gary Kildall看到对个人计算机操作系统的需求,设计了 CP/M 操作系统 (Control
Program/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机若干年,造就了一批苹果的忠实追随者一波三折的微软 Windows操作系统
1983年 10月,PC机竞争厂家的图形界面相关产品上市
面对市场压力,比尔,盖茨在 1983年 11月 10日宣布推出 Windows操作系统
然而宣布容易,交货就不简单了,Windows交货期的灾难,成了当年计算机界的笑柄
直到 1985年 11月 20日,Windows 1.0才正式上市
Windows的历史记录
Windows在当时微软历史上创了几个记录:延迟交货次数最多,投入开发人员最多,开发时间最长,更换主管人员最多
不过几年之后,Windows终于创造了销售成绩最佳的历史记录
1992年 4月,推出 Windows 3.1,1993年 5月,发表
Windows NT
Windows 95,Windows CE,Windows 98,Windows
2000
个人计算机采用 Windows占 90% 以上,微软公司成了垄断 PC行业的同义词基于微内核的 Mach操作系统
1975年 Rochester大学开发了 RIG 操作系统
系统设计者之一 Richard Rashid 移居到 CMU后,在
DARPA支持下,1984年开始了 Mach的开发
希望 Mach能与 UNIX兼容,运行线程,更好的进程通信机制,支持多处理机及好的虚拟存储系统
Mach第一个版本是 1986年为 VAX 11/784四 CPU多处理机发布
1988年的 Mach 2.5版包含了大量的 BSD UNIX的代码
1989年,Mach 内核中去掉了所有的 BSD UNIX的代码,
剩下了一个纯的 Mach微内核,这就是 Mach 3.0版本,
它是 OSF发布的基础
Mach中采用了许多当代操作系统使用的技术,
微内核,线程,进程间消息传递和面向对象的设计方法等等
在 Mach的基础上,有不少用于微处理器,多处理器以及超级计算机的操作系统和实时嵌入式操作系统陆续设计和开发出来,如 OSF/1,DCE
Unix,NeXT等等
IBM大型计算机操作系统 OS/390
90年代末期,电子商务发展刺激对计算能力的要求,
导致大型机市场的再度升温
三十年的改进,IBM S/390已成为有高可靠性,可扩展性,及安全可用性的现代大型计算机系统
支 持 即 UNIX 95标准,UNIX应 用 程 序 可 在 IBM
OS/390上运行
同时还可继续运行 S/390应用程序,包括 S/370上开发的应用程序
包括 TCP/IP的多种通信协议,具有高网络安全性
采用面向对象程序设计,并行处理,分布式处理以及客户机 /服务器技术,具有较强的互操作性,可移植性与可扩展性
由于历史渊源,OS/390有不同的系统运行方式,
S/370本机模式,支持原先在 S/370运行的程序
ESA/390模式,支持到 10个 240M处理器内存和 256个通道
ESA/390 LPAR模式,系统可分成最多十个部分,每个部分有自己的 CPU,存储器和通道,且分别运行不同的操作系统,如 S/370,ESA/370 和 ESA/390等
在 PC机时代,人们曾经估计大型计算机会衰亡
IBM S/390是大型计算机复活的一个典型那么,在 21世纪的 Internet和后 PC的时代,大型机还会有什么演化,只有让时间来说明嵌入式操作系统的代表 VxWorks
VxWorks支持各种工业标准,包括 POSIX,ANSI C
和 TCP/IP网络协议
VxWorks运行系统的核心是一高效率的微内核
微内核支持各种实时功能,包括快速多任务处理,
中断支持,抢占式和轮转式调度
微内核设计减轻了系统负载并可快速响应外部事件
从只需几千字节存储器的深嵌式产品设计到复杂高端实时系统设计,开发人员有八十多个选件并可构成上百个不同的配置
VxWorks开发主机,Windows 9x,Windows NT,Sun
Solaris,SunOS,HP-UX等
支持目标微处理器,86,68k,PPC,CPU 32,i960,
SPARC,SPARCLite,SH,ColdFire,R3000,R4000,
C16X,ARM,MIPS等
在,极地登陆者,号,,深空二号,和火星气候轨道器等登陆火星探测器上,就采用了 VxWorks
VxWorks负责火星探测器全部飞行控制,包括飞行纠正,载体自旋和降落时的高度控制等,而且还负责数据收集和与地球的通信工作
目前在国内也占据嵌入式开发系统市场主要份额
Internet时代与 Linux
1990年秋天,Linus在芬兰首都赫尔辛基大学学习操作系统课程,因为上机需要排队等待,Linus买了台 PC机,开发了第一个程序,程序包括两个进程,
向屏幕上写字母,然后用定时器来切换进程
Linus需要终端仿真程序来存取 Usenet新闻组的内容,于是他写了从调制解调器上接发信息的程序以及显示器,键盘和调制解调器的驱动程序
然后写了磁盘驱动程序,文件系统,一旦有了进程切换,文件系统和设备驱动程序,当然就拥有了一个操作系统原型,或者至少是它的一个内核
Linux就以这样极其古怪但也极其自然式问世操作系统领域中新的操作系统
有线电视机顶盒领域,PowerTV
移动通信领域,EPOC
掌上计算机领域,Palm OS
数字影像领域,Digita
研究中的新的操作系统
哈佛大学的 VINO,使应用得以重用内核构件
犹他州大学的 OSKit,提供构造操作系统所需的基础构件,也提供高层次构件 。 OSKit可用来构造新的 OS
MIT Exokernel,该系统只有一个极小的核 。 系统抽象通过 Library Operating System完成
加州大学伯克利分校 NOW集群操作系统,100台 Ultra
SPARC-I处理机集群,排名于世界最快的 200台超级计算机之内
NASA空间飞行中心 (GSFC)研制 Beowulf项目开始于
1994年,用商业化的微型计算机,Linux和以太网等构造集群 。 已有世界各地的约六十个大学和研究机构在使用思考和回顾
个人计算机的兴起,结束了 IBM的霸主地位
Internet普及,Linux的成功,极大地推动了当代操作系统的研究发展活动
据不完全统计,当前在 Internet上,有超过 100
个操作系统的项目在 14个国家中进行着
一批批的程序设计员们自愿通过互联网组织成为研究小组,从事着各类操作系统的研究开发工作
在一些影响全球的操作系统的诞生和发展过程中,
大师们设计那些知名操作系统的初始动机真是各不相同的
一个操作系统成功的缘由,似乎也在于某种机遇,
往往是有心裁花花不开,无心插柳柳成行
未来操作系统的发展是否还会是这个模式?
在 Internet时代,新概念,新思想,新原理和新技术层出不穷
谁又能预测,未来会有什么样的新型操作系统在国际互联网上问世呢 !
思考和回顾
1.4.3 操作系统的分类批处理操作系统(多道批处理)
分时操作系统实时操作系统嵌入式操作系统个人计算机操作系统网络操作系统分布式操作系统
1.4.3.1 批处理操作系统工作方式:
用户将作业交给系统操作员系统操作员将许多用户的作业组成一批作业之后输入到计算机中,在系统中形成一个自动转接的连续的作业流启动操作系统系统自动、依次执行每个作业最后由操作员将作业结果交给用户卡片早期批处理系统
IBM
1401
IBM
7094
IBM
1401
输入磁带磁带机卡片阅读机输出磁带打印机
Op e r a t in g S y s t e m
$END
$RUN
Data for program
$LOAD
Fortran program
$FORTRAN
$JOB,10,429754
Cherry Chen
典型的
FMS JOB 结构批处理操作系统特点:
多道,
(注:多道指某个作业占用 CPU,若由于某种原因暂时不用 CPU 则系统让第二个作业占用 CPU)
成批处理:
批处理操作系统特点成批处理:
用户自己不能干预自己作业的运行,
一旦发现作业错误不能及时改正,
并延长开发软件时间,
所以适用于成熟的程序。
Spooling系统 ( 技术 )
1961年,英国曼彻斯特大学,Atalas机
Simultaneous Peripheral Operation
On-Line
同时的外围设备联机操作 --假脱机技术利用磁盘作缓冲,将输入、计算、输出分别组织成独立的任务流,使 I/O和计算真正并行
Spooling系统工作原理
- 作业进入到磁盘上的输入井
- 按某种调度策略选择几种搭配得当的作业,并调入内存
- 作业运行的结果输出到磁盘上的输出井
- 再由磁盘上的输出井将结果送到打印机
批处理操作系统
- 优点:作业流程自动化效率高,吞吐率高吞吐量:
单位时间内处理作业的个数
- 缺点:无交互手段,调试程序困难
1.4.3.2 分时操作系统
工作方式,
一台主机连接了若干个终端每个终端有一个用户在使用交互式的向系统提出命令请求系统接受每个用户的命令采用时间片轮转方式处理服务请求并通过交互方式在终端上向用户显示结果用户根据上步结果发出下道命令主机终端分时操作系统
时间片:
操作系统将 CPU的时间划分成若干个片段,
称为时间片操作系统以时间片为单位,轮流为每个终端用户服务每次服务一个时间片
(其特点是利用人的错觉,使人感觉不到 )
分时操作系统特点
多路性
交互性
,独占,性
及时性分时操作系统多路性:
同时有多个用户使用一台计算机宏观上看是多个人同时使用一个 CPU
微观上是多个人在不同时刻轮流使用 CPU
分时操作系统交互性:
用户根据系统响应结果进一步提出新请求
(用户直接干预每一步 )
分时操作系统
“独占,性:
用户感觉不到计算机为其他人服务
( OS提供虚机器,各个用户的虚机器互不干扰)
及时性
系统对用户提出的请求及时响应分时操作系统实现 ( 条件 ),
终端设备轮转算法会话语言一般资源独占,“滚进滚出”方法分时操作系统追求目标:
及时响应
(根据指标是响应时间 )
响应时间:
从终端发出命令到系统给予回答所经历的时间分时操作系统影响响应时间的因素:
- 机器处理能力
- 请求服务的时间长短
- 系统中连接的终端数目
- 服务请求的分布
- 调度算法(时间片的选取)
通用操作系统分时系统与批处理系统结合原则:分时优先,批处理在后
“前台”:需频繁交互的作业
“后台”:时间性要求不强的作业
1.4.3.3 实时操作系统分类:
第一类:实时过程控制工业控制,军事控制,,..
第二类:实时通信 ( 信息 ) 处理电讯 ( 自动交换 ),银行,飞机订票实时操作系统主要追求目标:
对外部请求在严格时间范围内作出反应
有高可靠性
完整性实时系统必须和先进的技术装备相结合
1.4.3.4 个人计算机操作系统
(单用户多任务 )
计算机在某一时间内为单用户服务,
其追求目标是界面友好,使用方便
1.4.3.5 网络操作系统它是基于计算机网络的,
是在各种计算机操作系统上,
按网络体系结构协议标准开发的软件,
包括网络管理,通讯,安全,资源共享和各种网络应用。
目标:是相互通讯及资源共享网络操作系统网络服务应用程序通信软件
(协议支持)
单机操作系统用户应用程序局域网操作系统的结构通信软件
(协议支持)
1.4.3.6 分布式操作系统它基于两种环境,
多机 (CPU)系统或网络是网络操作系统的更高级的形式,
它保持了网络操作系统的全部功能分布式操作系统,
特征,
1.是一个统一的操作系统
2.资源进一步共享
3.透明性,
资源共享,分布,用户并不知道,对用户来讲是透明的,
4.自治性,
处于分布式系统的多个主机处于平等地位网络和分布式的区别,
(1) 分布具有各个计算机间相互通讯,
无主从关系;网络有主从关系
(2) 分布式系统资源为所有用户共享;
而网络有限制地共享
(3) 分布式系统中若干个计算机可相互协作共同完成一项任务
1.4.3.7 嵌入式操作系统什么是嵌入式系统?
在各种设备、装置或系统中,完成特定功能的软硬件系统它们是一个大设备、装置或系统中的一部分,这个大设备、装置或系统可以不是“计算机”
通常工作在反应式或对处理时间有较严格要求环境中由于它们被嵌入在各种设备、装置或系统中,因此称为嵌入式系统嵌入式系统软件:用于提供系统所需的功能和灵活性硬件 = (处理器,ASIC、存储器 … )
用于提供所需的性能以及部分安全机制专用门阵列 模拟 I/O
处理器核 存储器嵌入式操作系统,是运行在嵌入式智能芯片环境中,
对整个智能芯片以及它所操作、控制的各种部件装置等等资源进行统一协调、调度、指挥和控制的系统软件在嵌入式系统中的 OS,称为嵌入式操作系统典型嵌入式操作系统的特性
完成某一项或有限项功能;不是通用型的
在性能和实时性方面有严格的限制
能源、成本和可靠性通常是影响设计的重要因素
占有资源少、易于连接
系统功能可针对需求进行裁剪、调整和生成以便满足最终产品的设计要求嵌入式操作系统开发环境
通常配有源码级可配置的系统模块设计
丰富的同步原语
可选择的调度算法
可选择内存分配策略
定时器与计数器
多方式中断处理支持
多种异常处理选择
多种通信方式支持
标准C语言库
数学运算库和开放式应用程序接口嵌入式操作系统的应用嵌入计算的各种应用特点掌上电脑:
运算速度,100 KIPS
在大小上优化、支持手写、低能耗工业设备:
运算速度,1 MIPS
安全优先,控制流程为主军事装备运算速度,1 GFLOPS
可靠性最重要嵌入式操作系统的应用智能卡移动通信计算机外设机顶盒零售设备印刷机复印机 互联网服务器电话交换设备
1.5 研究操作系统的几种观点
作为软件来看的观点
资源管理的观点
进程的观点
虚机器观点
1.5.1 作为软件来看的观点软件的特性外在特性:
软件是种语言,是界面界面,使用方式 (命令,系统调用等 )
内在特性:
软件的结构
a.由有几部分组成
b.每个部分的功能
c.部分之间的关系
1.5.2 资源管理的观点操作系统 ---资源管理者硬件资源:
CPU,内存,
外部设备 (I/O设备,外存,时钟等 )
软件资源:
硬盘上的文件,信息管理资源
记录资源使用状况如 哪些资源空闲,好坏与否,被谁使用,
使用多长时间等
合理的分配资源静态分配策略
(在程序运行前分配,但效率不高 )
动态分配策略
(在程序运行过程中何时用资源,何时分配。
其缺点是会出现死锁 )
具体完成分配
回收资源资源管理的目的实现资源共享提高资源利用率
1.5.3 进程的观点是从操作系统运行的角度动态的观察操作系统从这个观点来看:
操作系统是由一些可同时独立运行的进程和一个对这些进程进行协调的核心组成,
进程:
完成某一特定功能的程序是程序的一次执行过程是动态有生命的,当它执行时存在,否则消亡
1.5.4 虚机器观点从操作系统内部结构来看:
把操作系统分成若干层每一层完成其特定功从而构成一个虚机器,
并对上一层提供支持通过逐层功能扩充,最终完成整个操作系统虚机器而操作系统虚机器向用户提供各种功能,
完成用户请求
1.5.5 提供服务在操作系统之外从用户角度来看:
操作系统为用户提供一组功能强大的、
方便易用的命令或系统调用
1.6 操作系统功能
CPU(进程 )管理存储管理文件管理设备管理作业管理操作系统的硬件环境操作系统在硬件之上,软件之下,直接与硬件打交道
CPU
中断系统堆栈通道地址映射机制存储保护设施
CPU
CPU状态
CPU状态的转换
CPU指令系统两类指令
特权指令:允许操作系统使用,不允许一般用户使用
(如修改程序状态字 ;设置中断屏蔽;启动
I/O设备 ;清内存 ;设置时钟;停机等 )
非特权指令:一般用户可用的
CPU状态:
在 PSW中专门设置一位,根据运行程序使用指令的权限而设置
PSW (Program Status Word )
– 一个或一组寄存器,
条件码,状态信息位
允许中断位
管理 (OS)/用户态位
CPU状态:
管态 (特态,系统态 ):能执行指令全集 (包括特权,非特权指令 ),具有改变 CPU状态的能力,操作系统在管态下运行目态 (普态 ):只能执行非特权指令,用户程序在目态下运行,(如果在目态下用户执行了特态指令,则产生中断,由操作系统得到控制权,而特权指令被停止,)
( 这两种状态时可转换的 )
CPU状态的转换目态 --管态其转换的唯一途径是通过中断管态 --目态可用设置 PSW(修改程序状态字 )可实现中断
特点,
中断系统的概念
中断源
中断类型
中断响应
中断处理
中断优先级
中断屏蔽
中断嵌套中断 概述中断是现代计算机系统中基本设施之一,它起着通讯联络作用,协调系统对各种外部事件的响应和处理。中断是实现多道程序的必要条件。
引入中断的目的解决主机与外设的并行工作问题提高可靠性实现多机联系实现实时控制中断定义:
CPU对系统发生的某个事件作出的一种反应:
CPU暂停正在执行的程序,保留现场后自动转去执行相应事件的处理程序,处理完成后返回断点,继续执行被打断的程序。
特点,
1) 中断随机的
2) 中断是可恢复的
3) 中断是自动处理的中断系统的概念中断由软硬件协同处理中断装置,指发现中断,响应中断的硬件中断处理程序,由软件来完成中断系统 =中断装置 +中断处理程序
中断源:引起中断发生的事件
中断寄存器:记录中断
中断字:中断寄存器的内容系统堆栈,
在内存开辟的一块区域,用于临时保存现场中断类型强迫性中断正在运行的程序所不期望的,由于某种硬件故障或外部请求引起的自愿性中断用户在程序中有意识安排的中断,是由于用户在编制程序时因为要求操作系统提供服务,有意使用,访管,指令或系统调用,使中断发生中断类型强迫性中断输入 /输出 (I/O)中断:主要来自外部设备通道程序性中断:运行程序中本身的中断
(如溢出,缺页中断,缺段中断,地址越界 )
时钟中断控制台中断硬件故障中断类型自愿性中断执行 I/O,创建进程,分配内存信号量操作,发送 /接收消息中断响应,
发现中断、接收中断的过程
(由硬件完成)
* 发现中断源 (识别中断原因 )
* 保存现场,将中断向量推入系统堆栈
* 引出中断处理程序中断响应 具体做法,
CPU在执行每条指令后扫描中断寄存器,
查看有无中断请求。
如果没有,则运行下一条指令;
如果有中断请求,则通过交换中断向量引出(进入)中断处理程序设备控制器或其他系统硬件发出中断处理器完成当前指令的执行处理器接受中断处理器将 PSW和
PC推入系统堆栈处理器根据中断类型读入新的 PC值硬件完成的工作保存进程状态的其余信息进程中断恢复进程状态信息从系统堆栈恢复原
PSW和 PC
软件完成的工作
P S W PC
......
P S W P C
......
......
程序状态字 指令计数器
系统堆栈
PSW1 PC1
PSW2 PC2
PSW3 PC3
PSW4 PC4
PSW5 PC5
PC1
PC2
PC3
中断处理
* 保存现场 (保存未被硬件保存的现场 )
* 识别中断的具体原因
* 根据中断原因处理中断事件
* 中断返回强迫性中断事件 自愿性中断事件保存现场信息 保存现场信息取出中断码 取出访管号分析中断原因 分析何种系统调用转相应处理程序是否中断嵌套由系统恢复现场 由系统恢复现场 转低级调度程序返回上层中断 返回目态程序需要切换进程
T F
F T
Op e r a t in g S y s t e m
输入输出中断处理
1,I/O正常结束如果要继续传输,准备好数据,启动通道如果有进程等待 I/O结束,将其唤醒
2,I/O传输错误进行 I/O复执,多次不成功,通知系统操作员设备故障时钟中断处理进行系统管理及维护有关的工作:
1、进程管理
2、作业管理
3、资源管理
4、事件处理
5、系统维护
6、实现软件时钟控制台中断处理系统操作员利用控制台向系统发出中断请求:
按下控制台上某一个按钮,
产生一个中断信号(相当于一个操作命令)
操作系统转到相应的处理程序
(与具体系统有关)
硬件故障中断处理主要工作是保存现场,并向系统操作员报告故障信息,以及估计对系统造成的破坏,对系统进行可能的恢复排除故障必须有人工干预
电源故障处理
主存故障处理内存校验线路发现奇偶校验错误或海明校验错误而引起的中断,停止相关进程的执行,向系统操作员报告错误及单元号程序性中断处理两种策略:
1、由系统处理该中断事件可能影响其他进程或操作系统
(内存访问地址越界,执行非法特权指令,
缺页,缺段等)
* 报告出错的进程号、出错位置和错误性质
* 调入段或页
2、由用户处理该中断事件只影响其自身
(浮点溢出、阶码下溢、除数为零等)
如果用户程序不提供特定的处理程序,操作系统将按照标准处理方法进行处理
on <中断条件 ><中断续元入口 >
例,on devide_zero goto LA;
运行前,编译系统为每个用户生成一个中断续元入口表,规定好每个中断事件对应的表目中断事件 0:中断续元运行环境 0 中断续元入口 0
中断事件 1:中断续元运行环境 1 中断续元入口 1
中断事件 2:中断续元运行环境 2 中断续元入口 2
………………………,..
中断事件 m 中断续元运行环境 m 中断续元入口 m
自愿性中断处理访管指令,SVC n?
SVC:指令码
n:访管中断号(整数)
中断发生时,硬件中断装置将访管中断号送入老的程序状态字中的内中断码字段,访管中断总控程序从系统堆栈中将其取出,并根据它转入对应的服务程序自愿性中断处理用户使用访管指令的一般形式为:
准备参数
SVC n?
取返回值根据具体访管要求约定,参数及返回值可以通过寄存器或内存传递自愿性中断处理在高级语言中一般表现为与过程调用类似的形式:
返回值 =系统调用名(参数 1,参数 2,… )
编译程序会将?翻译成?的形式,其中系统调用名对应?,不同的系统调用对应不同的整数 n
用户程序用户堆栈中断续元表中断续元运行程序中断向量处理程序硬件系统堆栈寄存器 溢出访问
PSW LA
......
LA
PSW PC
PSW1 PC1
PC1
......
RET
......
......
......,.....
......
操作系统
Op e r a t in g S y s t e m
中断优先级中断优先级是由硬件规定的,系统根据引起中断事件的重要性与紧迫程度将中断源划分为若干个级别当有多个中断同时发生时,系统根据中断优先级决定响应中断次序,优先响应级别高的中断;
对同级中断按硬件规定次序中断屏蔽中断发生时,CPU不予响应的状态 。
常用于必须连续运行的程序,防止任务被中断干扰;或执行处理某一类中断,防止其它中断干扰在 PSW中设置一个中断屏蔽位,通过设置中断屏蔽指令完成开中断与管中断来进行中断屏蔽中断嵌套在处理中断时又响应新的中断时钟硬件时钟软件时钟晶体震荡每个脉冲使计数器减 1
用来装入计数器初值硬件时钟:
某个寄存器来模拟
(根据脉冲频率定时加 1)
绝对时钟:
绝对时间,一般不会中断相对时钟:
如闹钟,每隔固定时间发一次中断软件时钟:
用作相对时钟,
(用内存单元来模拟时钟 )
CPU保护,防止进程得到 CPU后不放弃控制权解决:分配给每个进程一段时间(时间片),
时间片到,发时钟中断,控制权交给操作系统通道引入通道的目的为了使 CPU从 I/O事务中解脱出来,
同时为了提高 CPU与设备、设备与设备之间的并行度通道定义:
独立于 CPU的专门负责数据输入 /输出传输工作的处理机,对外部设备实现统一管理,代替
CPU对输入 /输出操作进行控制,从而使输入 /
输出操作可和 CPU并行操作地址映射机制同时有多个程序在内存,
程序在内存的位置不是固定的而是随机的存储保护设施
多用户,多任务操作系统,OS给每个运行进程分配一个存储区域问题:
多个程序同时在同一台机器上运行,怎样才能互不侵犯?
保护的目的:
防止用户程序破坏 OS
防止用户程序互相干扰保护的硬件支持:
为了保证软件程序只影响程序的内部,硬件提供两项功能
地址转换一对寄存器:基地址寄存器,限长寄存器
两种状态运行
CPU
Translation
Box
(MMU)
虚拟地址物理地址物理空间数据读或写
(不需转换)
现代体系结构中的地址转换
code
data
heap
stack
程序 2
虚地址空间
data2
stack1
code1
heap1
code2
stack2
data1
heap2
OS code
OS data
OS heap
& stacks
程序 1
虚地址空间
code
data
heap
stack
内存地址转换地址转换,
地址空间:
一个程序可以访问的所有地址限制程序做什么可以通过限制它的访问达到看内存的两种角度:
从 CPU的角度:程序所能看到的是虚存
从存储角度:物理内存两种状态运行
操作系统中:可以做任何事 ( 核心态 )
用户程序中:限制只能访问属于它自己的空间 ( 用户态 )
划分每一地址空间,使其行为不能造成破坏
I/O处理对硬盘的输入 /输出包括:
物理磁盘,磁盘控制器,CPU,内存,存储控制器磁盘控制器理解设备操作的细节,
可编程以执行所需的操作 ( 读,写,
格式化 )
OS根据 I/O操作请求的参数对磁盘控制器编程
磁盘控制器启动 I/O( CPU不干预 )
例如,读块并存放在缓冲区中
磁盘控制器将块传送给内存 ( DMA,CPU不干预 )
磁盘控制器中断 CPU表示操作结束应用程序标准库用户态核心态 可移动 OS层依赖于机器 OS的层硬件典型 UNIX操作系统结构