面 向 ! " 世 纪 课 程 教 材 #$%&’(() *$+,$- .(+ !"-& /$0&1+2
操作系统教程 费翔林
孙钟秀
主编
骆
谢
斌
立
编著
内容提要 操作系统是计算机系统的核心和灵魂,是计算机系统...
195 downloads
1470 Views
12MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
面 向 ! " 世 纪 课 程 教 材 #$%&’(() *$+,$- .(+ !"-& /$0&1+2
操作系统教程 费翔林
孙钟秀
主编
骆
谢
斌
立
编著
内容提要 操作系统是计算机系统的核心和灵魂,是计算机系统必不可少的组成部分。本书在前两版的基础上 进行了全面修订,系统地介绍了操作系统的经典内容和最新发展,选择当代具有代表性的 !"#$%&’ ())) * +, 和 -./+ 类(包括 0123、0%456"’、7"#89)主流操作系统作为实例贯穿全书。 本书共分八章,覆盖了操作系统的基本概念、基本方法、设计原理和实现技术,尽可能系统、清晰、全 面、综合地展示操作系统的概念、特性和精髓。力求做到:概念清晰、结构合理;取材得当、启发思考。为便 于教学,与教材相配套提供了 ::; 讲稿(可以从高教出版社网站 &&&< =>:< >$8< ?# 上下载获得),同时各章配 有丰富的思考题和应用题。 本书既可作为高等院校计算机科学与技术专业本科教材或参考书,也可供计算机等级考试、水平考试 的考生以及计算机技术和软件开发人员阅读参考。
第三版前言 操作系统是计算机系统的重要组成部分,操作系统课程是计算机教育的必修课程,作为 计算机专业的核心课,不但高等院校计算机相关专业学生必须学习它,而且从事计算机行业 的从业人员也需要深入了解它。为了更好地学习和透彻地理解操作系统的基本原理和计算 机系统的运作过程,一本适用的操作系统教材显得十分重要。本教材是多年来操作系统教 学和科学研究相结合的产物,是继《操作系统教程》第一版和第二版之后,更新教学内容后的 新版本。本教材第一、二版多年来在南京大学和国内很多高校计算机专业的教学过程中得 到了广泛的应用,曾在 !""# 年第二届全国高等学校优秀教材评选中获国家级优秀教材奖。 进入 #$ 世纪 "$ 年代以后,计算机科学技术突飞猛进,而操作系统又是计算机领域最活 跃的分支之一,操作系统的新概念、新技术和新方法层出不穷,促使现代操作系统发生了巨 大的变化。为了适应这种发展的趋势,操作系统的教材必须尽快更新。除了反映经典内容 外, 当代操作系统的最新成果也应尽快、准确、全面地组织到教材中。国外非常重视操作系 统教材的建设和更新工作,近年来又出版了若干有影响的操作系统教材。为此,我们在多年 教学工作的基础上,结合国内外最新的资料和教材编写了本教材,以适应信息社会计算机科 学技术飞速发展的形势和社会用人单位对计算机教学内容要求改革的迫切需求。 本教材的特点之一是:既致力于传统操作系统基本概念、基本技术、基本方法的阐述,又 融合现代操作系统最新技术发展和应用的讨论,着眼于操作系统学科知识体系的系统性、先 进性和实用性。本教材的特点之二是:把操作系统成熟的基本原理与当代具有代表性的具 体实例;操作系统的设计原理与操作系统的实现技术;操作系统的理论知识与操作系统的实 践实习紧密地结合起来。选择了具有代表性的 %&’()*+ #$$$ , -. 和 /01- 类(包括 2345、 2)678&+、9&’:;)主流操作系统作为实例贯穿全书,这十分有益于学生深入理解操作系统的整 体概念和牢固掌握操作系统设计与实现的精髓。本教材保持早期版本教材的编写特点,力 求做到概念清晰、结构合理,内容丰富、取舍得当,由浅入深、循序渐进,既有利于学生的知识 获取,又有利于学生的能力培养,希望能达到较好的教学效果。 本教材是一本关于操作系统的基本概念、基本方法、设计原理和实现技术的教材,目的 是尽可能系统、清晰、全面、综合地展示当代操作系统的概念、特点、本质和精髓。全书共分 八章,每章的最后一节是小结。全书涉及的内容有: 第一章操作系统概论。介绍操作系统的基本概念、多道程序设计技术、操作系统的形成 和发展,操作系统的分类;操作系统的服务、操作系统的功能、操作系统的接口;操作系统的
・(・
第三版前言
结构,并以 !"#$%&’ ())) * +, 为例着重介绍了客户 * 服务器结构;对流行的一些主要操作系 统也作了简单介绍。 第二章处理机管理。从处理器和中断技术开始,介绍了中断的概念、分类、处理、优先级 和多重中断。接着,引入进程和线程的概念,介绍进程管理的实现模型、线程不同级别的实 现方法,介绍处理机调度的三个层次,着重讨论了各种单处理机调度算法,也涉及到多处理 机调度算法和实时调度算法。实例研究讨论了 !"#$%&())) * +,、-%./0"’ 和 1"#23 中断处理, 456+ -789、!"#$%&’())) * +, 和 1"#23 处理机调度算法。 第三章并发进程。介绍进程的顺序性和并发性,进程的协作和竞争,以进程交互、进程 控制、进程通信和进程死锁问题为重点,讨论并发程序设计有关技术和各种进程互斥、同步、 通信机制和工具。最后介绍了 !"#$%&’())) * +, 的同步和通信机制,1"#23 的信号量机制。 第四章存储管理。讨论存储管理的基本功能、各种传统存储管理技术、虚拟存储管理技 术和最新 的 存 储 管 理 技 术,如 多 级 页 表、反 置 页 表 等。实 例 研 究 深 入 介 绍 了 6#:;. 3 0EFE7
#"#",
记录型信号量解决生产者— 消费者问题 ……………………(!#?)
)GDE=3712C)………………………(-$;) !";"; !"$
选择调度算法的原则 …………(-$;)
#"#";
记录型信号量解决读者— 写者问题 ………………………(!##)
批处理作业的管理与调度 …………(-$/)
!"$"-
作业和进程的关系 ……………(-$/)
!"$"!
批处理作业的管理 ……………(-$/)
!"$"#
批处理作业的调度 ……………(-$.)
!"$",
作业调度算法 …………………(-$.)
#","-
管程和条件变量 ………………(!#$)
低级调度 ……………………………(-/#)
#","!
B689E 方法实现管程 ……………(!,-)
!"/"-
低级调度的功能 ………………(-/#)
#","#
B82:62 方法实现管程 …………(!,,)
!"/"!
低级调度算法 …………………(-/#)
!"/"#
实时调度 ………………………(-/5)
#";"-
信号通信机制 …………………(!;!)
!"/",
多处理器调度 …………………(-/.)
#";"!
共享文件通信机制 ……………(!;,)
!"/";
实例研究:%&’( )*+, 调度
#";"#
共享存储区通信机制 …………(!;/)
算法 ……………………………(-5#)
#";",
消息传递通信机制 ……………(!;5)
实例研究:: !??? @ (A
#";";
有关消息传递实现的若干
!"/
!"/"$
#"#"$
问题 ……………………………(!#;) #",
#";
管程 …………………………………(!#$)
进程通信 ……………………………(!;!)
调度算法 ………………………(-5;) !"/"/ !"5
实例研究:01234 调度算法 ……(-.;)
本章小结 ……………………………(-..)
记录型信号量解决理发师
问题 ……………………………(!$-) #"$
死锁 …………………………………(!$$)
#"$"-
死锁的产生 ……………………(!$$)
目
录
・!・
!"#"$
死锁的定义 ……………………($#%)
!"#"!
死锁的防止 ……………………($#%)
&")"4
虚拟存储器的概念 ……………(!$%)
!"#"&
死锁的避免 ……………………($’()
&")"$
请求分页虚拟存储管理 ………(!!()
!"#")
死锁的检测和解除 ……………($%()
&")"!
请求分段虚拟存储管理 ………(!)()
&")"&
请求段页式虚拟存储管理 ……(!)$)
!"’
实例研究:*+,-./0 $((( 1 23 的同步 和通信机制 …………………………($%!)
!"’"4
&"#
*+,-./0 $((( 1 23 的同步和 互斥机制 ………………………($%!)
!"’"$
&")
虚拟存储管理 ………………………(!$%)
实例研究:9,:;< 2%# 1 3;,:+6= 存储管理硬件设施 …………………(!)&)
&"#"4
———段选择符和段描述符 ……(!)&)
*+,-./0 $((( 1 23 进程通信 机制 ……………………………($%&)
9,:;< 7%# 1 3;,:+6= 段机制
&"#"$
9,:;< 7%# 1 3;,:+6= 运行模式
!"%
实例研究:5+,67 信号量机制 ………($%))
!"8
本章小结 ……………………………($%8)
&"#"!
9,:;< 7%# 1 3;,:+6= 地址转换 ……(!)#)
习题三 ……………………………………($84)
&"#"&
9,:;< 7%# 1 3;,:+6= 页式或段页式
第四章 &"4
选择 ……………………………(!)#)
存储管理 …………………………(!(&) 存储器 ………………………………(!(&)
地址转换 ………………………(!)%) &"’
实例研究:*+,-./0 $((( 1 23 虚拟 存储管理 ……………………………(!#()
&"4"4
存储器的层次 …………………(!(&)
&"4"$
快速缓存 ………………………(!())
&"’"4
进程地址空间布局 ……………(!#()
&"4"!
地址转换与存储保护 …………(!(#)
&"’"$
用户空间内存分配 ……………(!#4)
连续存储空间管理 …………………(!(’)
&"’"!
内存管理的实现 ………………(!##)
&"$
&"$"4
单用户连续存储管理 …………(!(’)
&"$"$
固定分区存储管理 ……………(!(8)
&"%"4
5+,67 虚拟存储管理概述 ………(!’!)
&"$"!
可变分区存储管理 ……………(!44)
&"%"$
5+,67 进程的虚拟地址空间 ……(!’!)
分页式存储管理 ……………………(!4’)
&"%"!
5+,67 物理内存空间的管理 ……(!’#)
&"!"4
分页式存储管理的基本原理 …(!4’)
&"%"&
用户态内存的申请与释放 ……(!’%)
&"!"$
相联存储器和快表 ……………(!48)
&"%")
内存的共享和保护 ……………(!’8)
&"!"!
分页式存储空间的分配
&"%"#
交换空间、页面换出和调入 ……(!’8)
和去配 …………………………(!$()
&"%"’
缓冲机制 ………………………(!%4)
&"!
&"!"&
&"%
实例研究:5+,67 虚拟存储管理 ……(!’!)
分页存储空间的页面共享
&"8
和保护 …………………………(!$4)
习题四 ……………………………………(!%&)
&"!")
多级页表 ………………………(!$$)
第五章
&"!"#
反置页表 ………………………(!$&)
)"4
本章小结 ……………………………(!%$) 设备管理 …………………………(!84) 9 1 > 硬件原理 ………………………(!84)
分段式存储管理 ……………………(!$))
)"4"4
9 1 > 系统 ………………………(!8$)
&"&"4
程序的分段结构 ………………(!$))
)"4"$
9 1 > 控制方式 …………………(!8$)
&"&"$
分段式存储管理的基本原理 …(!$))
)"4"!
设备控制器 ……………………(!8’)
&"&"!
段的共享 ………………………(!$’)
&"&"&
分段和分页的比较 ……………(!$’)
&"&
)"$
9 1 > 软件原理 ………………………(!88)
)"$"4
9 1 > 软件的设计目标和原则 …(!88)
目
・’・
录
!"#"#
$ % & 中断处理程序 ……………(’(()
程序 ……………………………(’’()
!"#")
设备驱动程序 …………………(’(#)
!"5"’
6237089 #((( % :; $ % & 处理 ……(’’’)
!"#"’
与硬件无关的操作系统 $ % &
!"5"!
6237089 #((( % :; 高速缓存 管理 ……………………………(’’+)
软件 ……………………………(’()) !"#"!
用户空间的 $ % & 软件 …………(’(’)
!",
实例研究: 设备管理 …………(’-#)
具有通道的 $ % & 系统管理 …………(’(!)
!","*
设备管理概述 ……………(’-#)
!")"*
通道命令和通道程序 …………(’(!)
!","#
硬盘管理 …………………(’-’)
!")"#
$ % & 指令和主机 $ % & 程序 ……(’(+)
!",")
网络设备 …………………(’-!)
!")")
通道启动和 $ % & 操作过程 ……(’(,)
!","’
设备驱动程序 ……………(’-!)
!")
!"’
缓冲技术 ……………………………(’*()
!"*(
!"’"*
单缓冲 …………………………(’**)
!"’"#
双缓冲 …………………………(’**)
第六章
!"’")
多缓冲 …………………………(’*#)
-"*
本章小结……………………………(’--)
习题五 ……………………………………(’-5) 文件管理 …………………………(’+#) 文件 …………………………………(’+))
驱动调度技术 ………………………(’*))
-"*"*
文件的概念 ……………………(’+))
!"!"*
存储设备的物理结构 …………(’*))
-"*"#
文件的命名 ……………………(’+))
!"!"#
循环排序 ………………………(’*!)
-"*")
文件的类型 ……………………(’+’)
!"!")
优化分布 ………………………(’*-)
-"*"’
文件的属性 ……………………(’+!)
!"!"’
交替地址 ………………………(’*+)
-"*"!
文件的存取方法 ………………(’++)
!"!"!
搜查定位 ………………………(’*+)
-"*"-
文件的使用 ……………………(’+5)
!"!"-
独立磁盘冗余阵列 ……………(’#()
!"!"+
提高磁盘 $ % & 速度的一些
-"#"*
文件目录与文件目录项 ………(’+,)
方法 ……………………………(’#))
-"#"#
一级目录结构 …………………(’5()
设备分配 ……………………………(’#’)
-"#")
二级目录结构 …………………(’5*)
!"-"*
设备独立性 ……………………(’#’)
-"#"’
树形目录结构 …………………(’5#)
!"-"#
设备分配 ………………………(’#!)
!"!
!"-
-"#
-")
文件目录 ……………………………(’+,)
文件组织与数据存储 ………………(’5’)
虚拟设备 ……………………………(’#+)
-")"*
文件的存储 ……………………(’5’)
!"+"*
问题的提出 ……………………(’#+)
-")"#
文件的逻辑结构 ………………(’5’)
!"+"#
./001234 的设计和实现 …………(’#5)
-")")
文件的物理结构 ………………(’,()
!"+")
./001234 应用例子 ………………(’)()
!"+
!"5
-"’
文件系统其他功能的实现 …………(’,-)
实例研究:6237089 #((( % :; 的
-"’"*
文件系统调用的实现 …………(’,-)
$ % & 系统 ……………………………(’)*)
-"’"#
?@$: 文件系统调用 ……………(’,5)
6237089 #((( % :; $ % & 系统结构
-"’")
文件卷的安装和使用 …………(!(’)
和组件 …………………………(’)*)
-"’"’
文件共享 ………………………(!(+)
6237089 #((( % :; $ % & 系统的
-"’"!
层次式文件系统模型 …………(!*#)
数据结构 ………………………(’)+)
-"’"-
辅存空间管理 …………………(!*))
6237089#((( % :; 设备驱动
-"’"+
内存映射文件 …………………(!*!)
!"5"* !"5"# !"5")
目
录
・%・
虚拟文件系统 …………………(%&’)
’"%".
病毒的特性 ……………………(%’.)
实例研究:()*+, 文件管理 …………(%&-)
’"%"0
病毒的类型 ……………………(%’.)
!"%"&
()*+, 文件管理概述 ……………(%&-)
’"%"#
反病毒的方法 …………………(%’0)
!"%".
()*+, 文件系统安装 ……………(%./)
’"%"%
电子邮件病毒 …………………(%’%)
!"%"0
虚拟文件系统 123 ……………(%..)
!"%"#
文件系统管理的缓冲机制 ……(%.’)
’"!"&
机制、策略与模型 ………………(%’%)
!"%"%
系统打开文件表和主要文件
’"!".
身份认证机制 …………………(%-.)
操作 ……………………………(%.-)
’"!"0
授权机制 ………………………(%-’)
456. 文件系统 …………………(%0.)
’"!"#
加密机制 ………………………(!&/)
’"!"%
审计机制 ………………………(!&%)
!"#"$ !"%
!"%"! !"!
实例研究:789:;73 ./// < 5= 文件系统 ……………………………(%0#)
!"!"& !"!".
’"!
’"’
7)*>?@A ./// < 5= 文件系统
保护的基本机制、策略与模型
……(%’%)
实例研究:7)*>?@A ./// < 5= 的 安全机制 ……………………………(!&!)
概述 ……………………………(%0#)
’"’"&
7)*>?@A ./// < 5= 安全性概述 …(!&!)
7)*>?@A ./// < 5= 文件系统模型和
’"’".
7)*>?@A ./// < 5= 安全性系统
23: 体系结构 …………………(%0!)
组件 ……………………………(!&’)
!"!"0
9623 文件系统驱动程序 ………(%#/)
’"’"0
7)*>?@A ./// < 5= 保护对象 ……(!&’)
!"!"#
9623 在磁盘上的结构 …………(%#.)
’"’"#
访问控制策略 …………………(!&$)
!B!B%
9623 的实现机制 ………………(%#%)
’"’"%
访问令牌 ………………………(!&-)
!"!"!
9623 可恢复性支持 ……………(%#-)
’"’"!
安全描述符 ……………………(!&-)
!"!"’
9623 安全性支持 ………………(%%/)
!"’
本章小结 ……………………………(%%&)
习题六 ……………………………………(%%.) 第七章
操作系统的安全与保护 …………(%%!)
’"$
本章小结 ……………………………(!..)
习题七 ……………………………………(!.0) 第八章 $"&
网络和分布式操作系统 …………(!.!) 计算机网络概述 ……………………(!.!)
’"&
安全性概述 …………………………(%%!)
$"&"&
计算机网络的概念 ……………(!.!)
’".
安全威胁及其类型 …………………(%%’)
$"&".
数据通信基本概念 ……………(!.-)
’"0
保护 …………………………………(%!&)
$"&"0
网络体系结构 …………………(!0&)
’"0"&
操作系统保护层次 ……………(%!&)
’"0".
内存储器的保护 ………………(%!&)
$"."&
网络操作系统概述 ……………(!0$)
’"0"0
面向用户的访问控制 …………(%!.)
$".".
几个流行的网络操作系统 ……(!0-)
’"0"#
面向数据的访问控制 …………(%!.)
$"."0
网络操作系统实例 ……………(!#/)
’"#
入侵者 ………………………………(%!0)
$".
$"0
网络操作系统 ………………………(!0$)
分布式操作系统 ……………………(!#0)
’"#"&
入侵技术 ………………………(%!0)
$"0"&
分布式系统概述 ………………(!#0)
’"#".
口令保护 ………………………(%!%)
$"0".
分布式进程通信 ………………(!##)
’"#"0
入侵检测 ………………………(%!$)
$"0"0
分布式资源管理 ………………(!%/)
病毒(恶意软件)……………………(%’/)
$"0"#
分布式进程同步 ………………(!%#)
病毒及其威胁 …………………(%’/)
$"0"%
分布式系统中的死锁 …………(!!%)
’"%
’"%"&
目
・$・ !"#"$
分布式文件系统 ………………($$%)
!"#"%
分布式进程迁移 ………………($%#)
录 网络服务 ………………………($12) !"2
实例研究:3()45 网络体系结构 ……(%//)
实例研究:’()*+,- ./// 网络体系
!"$
本章小结 ……………………………(%/0)
结构和网络服务 ……………………($%$)
习题八 ……………………………………(%/#)
!"&"0
’()*+,- ./// 网络体系结构 …($%$)
参考文献 ……………………………………(%/$)
!"&".
’()*+,- ./// 的层次化
!"&
第一章
!"!
!"!"!
操作系统概论
操作系统概观
操作系统的定义和目标
操作系统(#$%&’()*+ ,-.(%/,简称 #,)的出现、使用和发展是近四十余年来计算机软件的 一个重大进展。尽管操作系统尚未有一个严格的定义,但一般认为操作系统是管理系统资 源、控制程序执行、改善人机界面、提供各种服务,合理组织计算机工作流程和为用户有效使 用计算机提供良好运行环境的一种系统软件。 计算机发展到今天,从个人机到巨型机,无一例外都配置一种或多种操作系统,操作系 统已经成为现代计算机系统不可分割的重要组成部分,它为人们建立各种各样的应用环境 奠定了重要基础。配置操作系统的主要目标可归结为: ! 方便用户使用。#, 通过提供用户与计算机之间的友善接口来方便用户使用。 ! 扩大机器功能。#, 通过扩充改造硬件设施和提供新的服务来扩大机器功能。 ! 管理系统资源。#, 有效管理好系统中所有硬件软件资源,使之得到充分利用。 以改进系统性能和提高系统效率。 ! 提高系统效率。#, 合理组织好计算机的工作流程, ! 构筑开放环境。#, 遵循有关国际标准来设计和构造,以构筑出一个开放环境。其 含义主要是指:遵循有关国际标准(如开放的通信标准、开放的用户接口标准、开放的线程库 标准等);支持体系结构的可伸缩性和可扩展性;支持应用程序在不同平台上的可移植性和 可互操作性。 计算机系统包括硬件和软件两个组成部分。硬件是所有软件运行的物质基础,软件能 充分发挥硬件潜能和扩充硬件功能,完成各种系统及应用任务,两者互相促进、相辅相成、缺 一不可。图 ! 0 ! 给出了一个计算机系统的软硬件层次结构。其中,每一层具有一组功能并 提供相应的接口,接口对层内掩盖了实现细节,对层外提供了使用约定。 硬件层提供了基本的可计算性资源,包括处理器、寄存器、存储器,以及各种 1 2 # 设施和 设备,这些设施和设备组成了计算机系统的硬件,它可以按照用户的需要接收与存储信息、 进行数据处理和输出运算结果,是操作系统和软件赖以工作的基础。操作系统层通常是最
第一章
・$・
图!"!
操作系统概论
计算机系统的层次结构
靠近硬件的软件层,对计算机硬件作首次扩充和改造,主要完成资源的调度和分配,信息的 存取和保护,并发活动的协调和控制等许多工作。操作系统是上层其他软件运行的基础,为 编译程序和数据库管理系统等系统程序的设计者提供了有力支撑。系统程序层的工作基础 建立在被操作系统改造和扩充过的机器上,利用操作系统提供的扩展指令集,可以较为容易 地实现各种各样的语言处理程序、数据库管理系统和其他系统程序。此外,还提供种类繁多 的实用程序,如连接装配程序、库管理程序、诊断排错程序、分类 # 合并程序等供用户使用。 应用程序层解决用户特定的或不同应用需要的问题,应用程序开发者借助于程序设计语言 来表达应用问题,开发各种应用程序,既快捷又方便。而最终用户则通过应用程序与计算机 系统交互来解决他的应用问题。
!"!"#
操作系统的作用与功能
操作系统在计算机系统中的作用可以从三个方面来理解: 操作系统是用户与计算机硬件之间的接口。可以认为操作系统是对计算机硬件系统的 第一次扩充,用户通过操作系统来使用计算机系统。换句话说,操作系统紧靠着计算机硬件 并在其基础上提供了许多新的设施和能力,从而,使得用户能够方便、可靠、安全、高效地操 纵计算机硬件和运行自己的程序。例如,改造各种硬件设施,使之更容易使用;提供原语和 系统调用,扩展机器的指令系统,而这些功能到目前为止还难于由硬件直接实现。操作系统 还能合理组织计算机的工作流程,协调各个部件有效工作,为用户提供一个良好的运行环 境。经过操作系统改造和扩充过的计算机不但功能更强,使用也更为方便,用户可以直接调
454
操作系统概观
・3・
用操作系统提供的各种功能,而无需了解许多软硬件本身的细节,对于用户来讲操作系统便 成为他与计算机硬件之间的一个接口。 操作系统为用户提供了虚拟机(!"#$%&’ (&)*"+,)。许多年以前,人们就认识到必须找到 某种方法把硬件的复杂性与用户隔离开来,经过不断的探索和研究,目前采用的方法是在计 算机裸机上加上一层又一层的软件来组成整个计算机系统,同时,为用户提供一个容易理解 和便于程序设计的接口。在操作系统中,类似地把硬件细节隐藏并把它与用户隔离开来的 情况处处可见,例如,- . / 管理软件、文件管理软件和窗口软件向用户提供了一个越来越方 便的使用 - . / 设备的方法。由此可见,每当在计算机上覆盖了一层软件,提供了一种抽象, 系统的功能便增加一点,使用就更加方便一点,用户可用的运行环境就更加好一点。所以, 当计算机上覆盖了操作系统后,可以扩展基本功能,为用户提供了一台功能显著增强,使用 更加方便,安 全 可 靠 性 好,效 率 明 显 提 高 的 机 器,称 为 虚 拟 计 算 机,或 操 作 系 统 虚 拟 机 (!"#$%&’ (&)*"+,)。 操作系统是计算机系统的资源管理者。在计算机系统中,能分配给用户使用的各种硬 件和软件设施总称为资源。资源包括两大类:硬件资源和信息资源。其中,硬件资源分为处 理器、存储器、- . / 设备等;- . / 设备又分为输入型设备、输出型设备和存储型设备;信息资源 则分为程序和数据等。操作系统的重要任务之一是对资源进行抽象研究,找出各种资源的 共性和个性,有序地管理计算机中的硬件、软件资源,跟踪资源使用情况,监视资源的状态, 满足用户对资源的需求,协调各程序对资源的使用冲突,研究使用资源的统一方法,为用户 提供简单、有效的资源使用手段,最大限度地实现各类资源的共享,提高资源利用率,从而, 使得计算机系统的效率有很大提高。 资源管理是操作系统的一项主要任务,而控制程序执行、扩充机器功能、提供各种服务、 方便用户使用、组织工作流程、改善人机界面等等都可以从资源管理的角度去理解。下面就 从资源管理的观点来看操作系统具有的几个主要功能。 !" 处理器管理 处理器管理的第一项工作是处理中断事件。硬件只能发现中断事件,捕捉它并产生中 断信号,但不能进行处理,配置了操作系统,就能对中断事件进行处理。 处理器管理的第二项工作是处理器调度。处理器是计算机系统中一种稀有和宝贵的资 源,应该最大限度地提高处理器的利用率。在单用户单任务的情况下,处理器仅为一个用户 的一个任务所独占,处理器管理的工作十分简单。为了提高处理器的利用率,操作系统采用 了多道程序设计技术。在多道程序或多用户的情况下,组织多个作业或任务执行时,就要解 决处理器的调度、分配和回收等问题。近年来设计出各种各样的多处理器系统,处理器管理 就更加复杂。为了实现处理器管理的功能,描述多道程序的并发执行,操作系统引入了进程 (0#1),22)的概念,处理器的分配和执行都是以进程为基本单位;随着并行处理技术的发展,
・*・
第一章
操作系统概论
为了进一步提高系统并行性,使并发执行单位的粒度变细,并发执行的代价降低,操作系统 又引入了线程( !"#$%&)的概念。对处理器的管理和调度最终归结为对进程和线程的管理和 调度,包括: (’)进程控制和管理; (()进程同步和互斥; ())进程通信; (*)进程死锁; (+)线程 控制和管理; (,)处理器调度,又分高级调度,中级调度和低级调度。 正是由于操作系统对处理器的管理策略不同,其提供的作业处理方式也就不同,例如, 批处理方式、分时处理方式、实时处理方式等等。从而,呈现在用户面前,成为具有不同处理 方式和不同特点的操作系统。 !" 存储管理 存储管理的主要任务是管理存储器资源,为多道程序运行提供有力的支撑,便于用户使 用存储资源,提高存储空间的利用率。存储管理的主要功能包括: (’)存储分配。存储管理 将根据用户程序的需要分配给它存储器资源,这是多道程序能并发执行的首要条件,当然程 序运行结束时,还需回收存储资源。(()存储共享。存储管理能让内存储器(又叫主存储器) 中的多个用户程序实现存储资源的共享,以提高存储器的利用率。())地址转换与存储保 护。存储管理负责把用户的逻辑地址转换成物理地址,同时要保证各个用户程序相互隔离 起来互不干扰,更不允许用户程序访问操作系统的程序和数据,从而,保护系统和用户程序 存放在存储器中的信息不被破坏。(*)存储扩充。由于受到处理器寻址能力的限制,一台计 算机的物理内存容量总是有限的,难以满足用户大型程序的需求,而外存储器容量大且价格 便宜。存储管理还应该能从逻辑上来扩充内存储器,把内存和外存混合起来使用,为用户提 供一个比内存实际容量大得多的逻辑编程空间,方便用户的编程和使用。 操作系统的这一部分功能与硬件存储器的组织结构和支撑设施密切相关,操作系统设 计者应根据硬件情况和用户使用需要,采用各种相应的有效存储资源分配策略和保护措施。 #" 设备管理 设备管理的主要任务是管理各类外围设备,完成用户提出的 - . / 请求,加快 - . / 信息的 传送速度,发挥 - . / 设备的并行性,提高 - . / 设备的利用率,以及提供每种设备的设备驱动 程序和中断处理程序,为用户隐蔽硬件细节,提供方便简单的设备使用方法。为实现这些任 务, 设备管理应该具有以下功能: (’)提供外围设备的控制与处理; (()提供缓冲区的管理; ())提供设备独立性; (*)外围设备的分配和去配; (+)实现共享型外围设备的驱动调度; ( ,) 实现虚拟设备。 $" 文件管理 上述三种管理是针对计算机硬件资源的管理。文件管理则是针对系统中的信息资源的 管理。在现代计算机中,通常把程序和数据以文件形式存储在外存储器(又叫辅存储器)上, 供用户使用,这样,外存储器上保存了大量文件,对这些文件如不能采取良好的管理方式,就
!.!
操作系统概观
・%・
会导致混乱或破坏,造成严重后果。为此,在操作系统中配置了文件管理,它的主要任务是 对用户文件和系统文件进行有效管理,实现按名存取;实现文件的共享、保护和保密,保证文 件的安全性;并提供给用户一整套能方便使用文件的操作和命令。具体来说,文件管理要完 成以下任务: (!)提供文件的逻辑组织方法; (")提供文件的物理组织方法; (#)提供文件的存 取方法; ($)提供文件的使用方法; (%)实现文件的目录管理; (&)实现文件的共享和存取控 制; (’)实现文件的存储空间管理。 !" 网络与通信管理 计算机网络源于计算机与通信技术的结合,近二十年来,从单机与终端之间的远程通 信,到今天全世界成千上万台计算机联网工作,计算机网络的应用已十分广泛。联网操作系 统至少应具有以下管理功能: (!)网上资源管理功能。计算机网络的主要目的之一是共享资 源,网络操作系统应实现网上资源的共享,管理用户应用程序对资源的访问,保证信息资源 的安全性和完整性。(")数据通信管理功能。计算机联网后,结点之间可以互相传送数据, 进行通信,通过通信软件,按照通信协议的规定,完成网络上计算机之间的信息传送。(#)网 络管理功能。包括故障管理、安全管理、性能管理、记帐管理和配置管理等。 #" 用户接口 为了使用户能灵活、方便地使用计算机和系统功能,操作系统还提供了一组友好的使用 其功能的手段称用户接口,它包括两大类:程序接口和操作接口。用户通过这些接口能方便 地调用操作系统功能,有效地组织作业及其工作和处理流程,并使整个系统能高效地运行。
$"$"%
操作系统的主要特性
$" 并发性( &’(&)**+(&+) 并发性是指两个或两个以上的事件或活动在同一时间间隔内发生。操作系统是一个并 发系统,并发性是它的重要特征,操作系统的并发性是指计算机系统中同时存在若干个运行 着的程序,因此,它应该具有处理和调度多个程序同时执行的能力。内存中同时有多个用户 程序,或内存中同时有操作系统程序和用户程序被启动交替、穿插地执行,这些都是并发性 的例子。发挥并发性能够消除计算机系统中部件和部件之间的相互等待,有效地改善系统 资源的利用率,改进系统的吞吐率,提高系统效率。例如,一个程序等待 ( ) * 时,就出让 +,-,操作系统调度另一个程序占有 +,- 运行。这样一来,在程序等待 ( ) * 时,+,- 便不会 空闲,使得多个 ( ) * 设备可同时在输入输出,也可使得设备 ( ) * 和 +,- 计算同时进行,这就 是并发技术。 并发性虽然能有效改善系统资源的利用率,但却会引发一系列的问题,使操作系统的设 计和实现变得复杂化。如,怎样从一个运行程序切换到另一个运行程序?以什么样的策略
・5・
第一章
操作系统概论
来选择下一个运行的程序?怎样将各个运行程序隔离开来,使之互不干扰,免遭对方破坏? 怎样让多个运行程序互通消息和协作完成任务?怎样协调多个运行程序对资源的竞争?多 个运行程序共享文件数据时,如何保证数据的一致性?操作系统必须具有控制和管理程序 并发执行的能力,为了更好的解决上述问题,操作系统必须提供机制和策略来进行协调,以 使各个并发进程能顺利推进,并获得正确的运行结果。另外,操作系统还要合理组织计算机 的工作流程,协调各类硬软件设施工作,充分提高资源的利用率,充分发挥系统的并行性。 采用了并发技术的系统又称为多任务系统( !"#$%$&’(%)* ’+’$,!),计算机系统中,并发实 际上是一个物理 -./ 在若干道程序之间多路复用,这样就可以实现运行程序之间的并发, 以及 -./ 与 0 1 2 设备、0 1 2 设备与 0 1 2 设备之间的并行,并发性的实质是对有限物理资源强 制行使多用户共享以提高效率。在多处理器系统中,程序的并发性不仅体现在宏观上,而且 体现在微观上,这称为并行的。并行性( 3&4#,#%’!)是指两个或两个以上事件或活动在同一 时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同 -./ 上同时执行。而 在分布式系统中,多台计算机的并存使程序的并发性得到了更充分的发挥,因为,同一时刻 每台计算机上都可以有程序在执行。可见并行的事件或活动一定是并发的,但反之并发的 事件或活动未必是并行的,并行性是并发性的特例,而并发性是并行性的扩展。由于并发技 术的本质思想是:当一个程序发生事件(如等待 0 1 2)时出让其占用的 -./ 而由另一个程序 运行,据此不难看出,实现并发技术的关键之一是如何对系统内的多个运行程序(进程)进行 切换的技术。 !" 共享性( #$%&’()) 共享性是操作系统的另一个重要特性。共享指计算机系统中的资源(包括硬件资源和 信息资源)可被多个并发执行的用户程序和系统程序共同使用,而不是被其中某一个程序所 独占。出于经济上的考虑,一次性向每个用户程序分别提供它所需的全部资源不但是浪费 的,有时也是不可能的。现实的方法是让操作系统程序和多个用户程序共用一套计算机系 统的所有资源,因而,必然会产生共享资源的需要。资源共享的方式可以分成两种: 第一种是互斥访问。系统中的某些资源如打印机、磁带机、卡片机,虽然它们可提供给 多个程序使用,但在同一时间段内却只允许一个程序访问这些资源,即要求互相排斥地使用 这些资源。当一个程序还在使用该资源时,其他欲访问该资源的程序必须等待,仅当占有者 访问完毕并释放资源后,才允许另一个程序对该资源进行访问。这种同一时间内只允许一 个程序访问的资源称临界资源,许多物理设备,以及某些数据和表格都是临界资源,它们只 能互斥地被访问和共享。 第二种是同时访问。系统中还有许多资源,允许同一时间内多个程序对它们进行访问, 这里“同时”是宏观上的说法,从微观上看多个程序访问资源仍然是交错的,只是这种交错访 问的顺序对访问的结果没有影响罢了。典型的可供多个程序同时访问的资源是磁盘,各种
010
操作系统概观
・/・
可重入程序也可被同时访问。 与共享性有关的问题是资源分配、信息保护、存取控制等,必须要妥善解决好这些问题。 共享性和并发性是操作系统两个最基本的特性,它们互为依存。一方面,资源的共享是 因为程序的并发执行而引起的,若系统不允许程序并发执行,自然也就不存在资源共享问 题。另一方面,若系统不能对资源共享实施有效管理,必然会影响到程序的并发执行,甚至 程序无法并发执行,操作系统也就失去了并发性,导致整个系统效率低下。 !" 异步性( #$%&’()*&+$,) 操作系统的第三个特性是异步性,或称随机性。在多道程序环境中,允许多个进程并发 执行,由于资源有限而进程众多,多数情况下,进程的执行不是一贯到底,而是“走走停停”。 例如,一个进程在 !"# 上运行一段时间后,由于等待资源满足或事件发生,它被暂停执行, !"# 转让给另一个进程执行。系统中的进程何时执行?何时暂停?以什么样的速度向前推 进?进程总共要化多少时间执行才能完成?这些都是不可预知的,或者说该进程是以异步 方式运行的,其导致的直接后果是程序执行结果可能不惟一。异步性给系统带来了潜在的 危险,有可能导致进程产生与时间有关的错误,可以说操作系统运行在随机的环境下。但只 要运行环境相同,操作系统必须保证多次运行进程,都会获得完全相同的结果。 操作系统中的随机性处处可见,例如,作业到达系统的类型和时间是随机的;操作员发 出命令或按按钮的时刻是随机的;程序运行发生错误或异常的时刻是随机的;各种各样硬件 和软件中断事件发生的时刻是随机的等等,随机性并不意味着操作系统就无法控制资源的 使用和程序的执行,操作系统内部产生的事件序列有许许多多可能,而操作系统的一个重要 任务是必须确保捕捉任何一种随机事件,正确处理可能发生的随机事件,正确处理任何一种 产生的随机事件序列,否则将会导致严重后果。 -" 虚拟性( .+)/0#1) 虚拟性是指操作系统中的一种管理技术,它是把物理上的一个实体变成逻辑上的多个 对应物,或把物理上的多个实体变成逻辑上的一个对应物的技术。显然,前者是实际存在的 而后者是虚构假想的,采用虚拟技术的目的是为用户提供易于使用、方便高效的操作环境。 例如,在多道程序系统中,物理 !"# 可以只有一个,每次也仅能执行一道程序,但通过多道 程序和分时使用 !"# 技术,宏观上有多个程序在执行,就好像有多个 !"# 在为各道程序工 作一样,物理上的一个 !"# 变成了逻辑上的多个 !"#。 $%&&’()* 技术可把物理上的一台独占 设备变成逻辑上的多台虚拟设备;窗口技术可把一个物理屏幕变成逻辑上的多个虚拟屏幕; 通过时分或频分多路复用技术可以把一个物理信道变成多个逻辑信道;+,- 的 .- 技术把 物理上的一台计算机变成逻辑上的多台计算机。虚拟存储器则是把物理上的多个存储器 (主存和辅存)变成逻辑上的一个(虚存)的例子。
第一章
・2・
!"#
!"#"!
操作系统概论
操作系统的形成和发展
人工操作阶段
从计算机诞生到 $% 年代中期的计算机属于第一代计算机,机器速度慢、规模小、外设 少,操作系统尚未出现。由程序员采用手工方式直接控制和使用计算机硬件,程序员使用机 器语言编程,并将事先准备好的程序和数据穿孔在纸带或卡片上,从纸带或卡片输入机将程 序和数据输入计算机。然后,启动计算机运行程序,程序员可以通过控制台上的按钮、开关 和氖灯来操纵和控制程序,运行完毕,取走计算输出的结果,才轮到下一个用户上机。 随着时间的推移,汇编语言产生了,在汇编系统中,数字操作码被记忆码代替,程序按固 定格式的汇编语言书写。系统程序员预先编制一个汇编程序,它把用汇编语言书写的“源程 序”解释成计算机能直接执行的机器语言格式的目标程序。随后,一些高级程序设计语言相 继出现,&’()(*+、*,-’,、和 .’/’, 语言分别于 !0$1" !0$2、和 !0$0 年设计完成并投入使 用,进一步方便了编程。 执行时需要把汇编程序或编译系统以及源程序和数据,都穿在卡片或纸带上,然后,再 装入和执行。其大致过程为: (!)人工把源程序用穿孔机穿在卡片或纸带上; (#)将准备好的汇编程序或编译系统装入计算机; (3)汇编程序或编译系统读入人工装在输入机上的穿孔卡片或穿孔带上的源程序; (4)执行汇编过程或编译过程,产生目标程序,并输出到目标卡片迭或纸带; ($)通过引导程序把装在输入机上的目标程序读入计算机; (1)执行目标程序,从输入机上读入人工装好的数据卡片或数据带上的数据; (5)产生计算结果,把执行结果从打印机上或卡片机上输出。 上述方式比直接用机器语言前进了一步,程序易于编制和读取,汇编程序或编译系统可 执行存储、分配等辅助工作,从而,在一定程度上减轻了用户的负担。但是计算机的操作方 式并没有多大改变,仍然是在人工控制下进行程序的装入和执行。人工操作方式存在严重 缺点: ! 用户独占资源。用户一个个、一道道的串行算题,上机时独占了全机资源,造成计算 机资源利用率不高,计算机系统效率低下。 ! 人工干预较多。要求程序员装纸带或卡片、按开关、看氖灯等等。手工操作多了,不 但浪费处理机时间,而且也极易发生差错。
!ED
操作系统的形成和发展
・A・
! 计算时间拉长。由于数据的输入,程序的执行、结果的输出均是联机进行的,因而, 每个用户从上机到下机的时间拉得非常长。 这种人工操作方式在慢速的计算机上还能容忍,但是随着计算机速度的提高,其缺点就 更加暴露出来了。譬如,一个作业在每秒 ! 万次的计算机上,需运行 ! 个小时,作业的建立 和人工干预化了 " 分钟,那么,手工操作时间占总运行时间的 #$ ;当计算机速度提高到每 秒 !% 万次时,作业运行时间仅需 & 分钟,而手工操作不会有多大变化,仍为 " 分钟,这时手 工操作时间占了总运行时间的 #%$ 。由此看出缩短手工操作和人工干预时间是十分必要 的。此外,随着 ’() 速度迅速提高而 * + , 设备速度却提高不多,导致 ’() 与 * + , 设备之间 的速度不匹配,矛盾越来越突出,需要妥善解决这些问题。
!"#"#
管理程序阶段
早期批处理系统借助于作业控制语言变革了计算机的手工操作方式。用户不再通过开 关和按钮来控制计算机的执行,而是通过脱机方式使用计算机,通过作业控制卡来描述对作 业的加工和控制步骤,并把作业控制卡连同程序、数据一起提交给计算机的操作员,操作员 收集到一批作业后一起把它们放到卡片机上输入计算机。计算机上则运行一个驻留在内存 中的执行程序,以对作业进行自动控制和成批处理,自动进行作业转换以减少系统空闲和手 工操作时间。其工作流程如下:执行程序将一批作业从纸带或卡片机输入到磁带上,每当一 批作业输入完成后,执行程序自动把磁带上的第一个作业装入内存,并把控制权交给作业。 当该作业执行完成后,执行程序收回控制权并再调入磁带上的第二个作业到内存执行。计 算机在执行程序的控制下就这样连续地一个作业一个作业地执行,直至磁带上的作业全部 做完。这种系统能实现作业到作业的自动转换,缩短作业的准备和建立时间,减少人工操作 和干预,让计算机尽可能地连续运转。 早期的批处理系统中,一开始作业的输入和输出均是联机的,联机 * + , 的缺点是速度 慢,* + , 设备和 ’() 仍然串行工作,’() 时间浪费相当大,为此,在批处理中引进了脱机 * + , 技术。除主机外,另设一台辅机,该机仅与 * + , 设备打交道,不与主机连接。输入设备上的 作业通过辅机输到磁带上, 这叫脱机输入;主机负责从磁带上把作业读入内存执行,作业完成 后, 主机负责把结果输出到磁带上, 这叫脱机输出; 然后, 由辅机把磁带上的结果信息在打印机 上打印输出。这样一来, * + , 工作脱离了主机,辅机和主机可以并行工作,大大加快了程序的 处理和数据的输入及输出, 这称作脱机 * + , 技术, 这比早期联机处理系统具有了处理能力。 为了发挥批处理系统的性能,缩短作业的准备和建立时间,驻留在内存工作的执行程序 的功 能 得 到 了 很 大 的 扩 充,进 化 到 管 理 程 序( -./01.23 452035- )。 678( 6,9:9;< 752035( *>7 @%AB 752035- 8=/3.4)是这类系统的典型实例。管理程序的内存组织如 8=/3.4)和 *>8?8 图 ! C D 所示,它的主要功能小结如下:
・ ;B ・
第一章
操作系统概论
! 自动控制和处理作业流。管理程序把控制权传送 给一个作业,当作业运行结束时,它又收回控制权,继续
中断处理 设备驱动
调度下一个作业执行,自动控制和处理作业流,减少了作
作业定序
业的准备和建立时间。作业流的自动控制和处理依靠作
命令和 !$) 语言解释器
业控制语言( !"# $"%&’"( )*%+,*+-),因而,促进了作业控制 语言的发展。作业控制语言是由一些描述作业控制过程
用 户
的语句组成的,每个语句附有一行作业或作业步信息编
程
码,并以穿孔卡的形式提供。例如,./!01 卡表示启动一个
序
新作业;./234 卡表示调用 2053564 编译系统;./ 6.7 卡 表示调用汇编程序;./ )068 卡表示调用装配程序;./8636
区
卡指定数据;./594 卡执行用户程序;./:48 卡表示一个作 业结束。管理程序通过输入、解释并执行嵌入用户作业
图; ? 0 控制功能。系统提供标准 > ? 0 程序,用户通过管理程序获得和 使用 > ? 0 设备,减轻了用户驱动物理设备的负担。管理程序还能处理某些特殊设备和设备 故障,改进了设备的可靠性和可用性。 ! 提供库程序和程序装配功能。库程序包括:汇编程序、2053564 语言编译程序、标 准 > ? 0 程序、标准子程序等。通常,用户程序必须调用库程序才能执行下去,装配工作由管 理程序完成。所有程序都按相对地址编址,管理程序把相应库程序和用户程序进行装配,并 转换成绝对地址形式的目标程序,以便执行。 ! 提供简单的文件管理功能。用户通过输入设备输入程序和数据,为了反复使用,用 户希望能把这些信息保存起来,以便随时使用,这就产生了文件系统。从此,用户可按文件 名字,而不是信息的物理地址进行存取,方便灵活,安全可靠。
!"#"$
多道程序设计与操作系统的形成
!" 多道程序设计 在早期的单道批处理系统中,内存中仅有单个作业在运行,致使系统中仍有许多资源空 闲, 设备利用率低,系统性能较差。如图 ; < @ 所示,当 $A9 工作时,外部设备不能工作;而
$@’
操作系统的形成和发展
・ $$ ・
外部设备工作时,!"# 必须等待。
图$%&
单道算题运行时处理器的使用效率
’( 世纪 )( 年代初,有两项技术取得了突破:中断和通道,这两种技术结合起来为实现 !"# 和 * + , 设备的并行工作提供了基础,这时,多道程序的概念才变成了现实。 多道程序设计(-./01234536--175)是指允许多个程序(作业)同时进入一个计算机系统的 内存储器并启动进行交替计算的方法。也就是说,计算机内存中同时存放了多道(二个以上 相互独立的)程序,它们均处于开始和结束点之间。从宏观上看是并行的,多道程序都处于 运行过程中,但都未运行结束;从微观上看是串行的,各道程序轮流占用 !"#,交替地执行。 引入多道程序设计技术的根本目的是提高 !"# 的利用率,充分发挥计算机系统部件的并行 性,现代计算机系统都采用了多道程序设计技术。 下面来分析多道程序设计技术提高资源利用率和系统吞吐率的原理。从第二代计算机 开始,计算机系统具有处理器和外围设备并行工作的能力,这使得计算机的效率有所提高。 但是,仅仅这样做,计算机的效率仍不会很高。例如,计算某个数据处理问题,要求从输入机 (速度为 ) 8(( 字符 + 秒)输入 9(( 个字符,经处理(费时 9’ -:)后,将结果(假定为 ’ ((( 个字 符)存到磁带上(磁带机速度为 $( 万字符 + 秒),然后,再读 9(( 个字符处理,直至所有的输入 数据全部处理完毕。如果处理器不具有和外围设备并行工作的能力,那么,上述计算过程如 图 $ % & 所示,不难看出在这个计算过程中,处理器的利用率为: 9’( + ;< = 9’ = ’()!&9> 分析上面的例子,可以看出效率不高的原因,当输入机输入 9(( 个字符后,处理器只花 了 9’ -: 就处理完了,而这时第二批输入数据还要再等 ?< -: 时间才能输入完毕,在此期间 !"# 一直空闲着。 这个例子说明单道程序工作时,计算机系统的各部件的利用率没有得到充分发挥。为 了提高效率,考虑让计算机同时接受两道算题,当第一道的程序在等待外围设备的时候,让 第二道的程序运行,以降低 !"# 空闲等待时间,那么,处理器的利用率显然可以有所提高。 例如,计算机在接受上述算题时还接受了另一道算题:从另一台磁带机上输入 ’ ((( 个字 符,经 8’ -: 的处理后,从行式打印机(速度为 $ &9( 行 + 分)上输出两行。
第一章
・ !) ・
图!"#
操作系统概论
两道算题运行时处理器的使用效率
当这两道算题同时进入内存计算时,计算过程示意在图 ! " # 中。其中,$! 表示程序甲 占用 %$& 对输入机输入的 ’(( 个字符进行处理,由于 ’) *+ 处理便结束,下次处理要等待 ,- *+之后,故这个时间段内 %$& 是空闲的。系统调度程序乙工作,它从磁带机上输入 ) ((( 个字符后,$) 表示对这批数据进行处理。相应的 . / 0 设备和 %$& 的操作都是并行的。不难 算出,此时处理器的利用率为: (’) 1 #))/ !’( ! 234 由此可以看出,让几个程序同时进入内存计算比一个个串行地进行计算时的 %$& 效率 要高。因为,当某个程序因故不能继续运行下去时,管理程序便把 %$& 分给另外一个程序 执行,这样可使 %$& 和 . / 0 设备尽量都处于忙碌状态,这就是要采用多道程序设计方法的 主要原因。具有处理器和外围设备并行工作能力的计算机采用多道程序设计技术后,可以 提高处理器和 . / 0 设备的并行性,从而,也就能提高整个系统的效率,即增加单位时间内算 题的数量。例如,有甲、乙两道程序,如果让一个程序独占计算机单道运行时每道程序要花 去一个小时,若此时处理器的利用率为 3(4 ,粗略地说,甲(或乙)程序执行时所需要的处理 器时间为: ! 小时 5 3(4 6 !- 分钟 假定甲、乙两个程序按多道程序设计方法同时运行,处理器的利用率达 ’(4 ,那么,要 提供 32 分钟的处理器时间,大约要运行 7) 分钟。所以,粗略地估计,采用多道程序设计技 术时只要大约 7) 分钟就可以将两个程序计算完毕。然而,由于操作系统调度要花费处理器 时间,所以,实际花费的时间可能还要长些,例如,共要花 -( 分钟。而单道运行时,甲、乙依 次执行完需 !)( 分钟。因而;采用多道程序设计方法后可以提高效率: (!)( " -()/ !)(!334 但是从甲、乙两个程序来看,如果单道运行,它花 2( 分钟就可以得到结果,而多道运行 时,却要花 -( 分钟才有结果,延长了 )( 分钟,即延长了 334 的时间。所以,采用多道程序设
!@=
操作系统的形成和发展
・ !H ・
计方法后,提高了系统效率,即增长了单位时间的算题量,但是,对于每一个程序来说,却延 长了计算时间。所以,多道程序设计技术提高资源利用率和系统吞吐率是以牺牲用户的作 业周转时间为代价的。对于一些实时响应的计算问题,延长 !"# 的计算时间可能都是难以 接受的。因此,这个问题在多道程序设计中必须引起注意。 在多道程序设计中,还有一个值得注意的问题是道数的多少。从表面上看,似乎道数越 多越能提高效率,但是道数的多少绝不是任意的,它往往由系统的资源以及用户的要求而 定。例如,如果上述甲、乙两个程序都要用行式打印机,而系统只有一台行式打印机,就算它 们被同时接受进入计算机内存运行,未必能提高效率。因为,可能程序甲计算了一段时间后 要等程序乙不再使用行式打印机时,即程序乙结束后,才能继续运行。此外,内存储器的容 量和用户的响应时间等因素也影响多道程序道数的多寡。可以采用概率方法来算出 $%& 的利用率,假如一个程序等待 ’ ( ) 操作的时间占其运行时间的比例为 ! ,当内存中有 " 个程 序时,则所有 " 个程序都等待 ’ ( ) 的概率是 !" ,亦即这时 $%& 是空闲的。那么, $%& 的利用率 * ! + !" 其中," 称多道程序的道数或度数( ,-./-- 01 234567/0./82269.),可见 $%& 的利用率是 " 的函数。如果进程平均花费 :"# 的时间等待 ’ ( ) 操作,为了使 $%& 时间的浪费低于 !"# , 粗略计算至少要有 !" 个程序在内存中多道运行。事实上,一个用户程序等待从终端输入信 息或等待磁盘 ’ ( ),等待时间超过 :"# 也是常有的事。上述 $%& 利用率计算模型很粗略,但 却是有效的。假设计算机有 ! ;< 内存,操作系统占用 ="" >= 磁 盘操作系统)、; 公 司),45 ? @( A"8,%’%BC 公 司),D’%’( E5E 公 司),F, 公司)和 !"#$%&’ () (A"8,%’%BC 公司)。我国中科院北京软件 工程研究中心已研制出具有自主版权的嵌入式操作系统 I4D),’%#21 L2=2 是 5;< 公司开发的一种用于给家庭、办公室和移动信息电器创建联网应 用而专门开发的 L2=2 应用环境。它继承了 L2=2 产品家属跨硬件平台的优秀特性,非常适宜 更新换代快的信息电器的应用开发。同时,5;< 公司又开发出专门用于信息电器应用开发 的实时操作系统 L2=2 45 B%, (%#’/3>,’ 和适用于存储空间有限的专用实时嵌入式操作系统 )37>$$>$ L2=2。I4D)< 是由中科院凯思软件集团开发的嵌入式操作系统(又称“女娲”操作 系统),I4D)< 是一个微内核结构的多任务可抢占实时操作系统,核心程序约占 MN-O,用 ( 语言编写。主要特点有:单用户多任务、支持多进程多线程、提供多种设备驱动程序、图形用 户界 面、!"#JKPDE、支 持 Q7KJMK ? RN 字 符 集(汉 字)。 I%0># 支 持 面 向 信 息 电 器 产 品 的 D>,’%#21 L2=2 应用环境,可以开发在机顶盒、媒体电话、汽车导航器、嵌入式工控设备、联网服 务等许多方面的应用。
MSJ
!"#"!
操作系统提供的服务和用户接口
操作系统提供的基本服务
操作系统要为用户程序的执行提供一个良好的运行环境,它要为程序及其用户提供各 种服务,当然不同的操作系统提供的服务不完全相同,但有许多共同点。提供操作系统共性
!:#
操作系统提供的服务和用户接口
・ "( ・
服务为程序员带来了方便,使编程任务变得更加容易,操作系统提供给程序和用户的共性服 务大致有: (!)创建程序。提供各种工具和服务,程序的编辑工具和调试工具,帮助用户编程并生 成高质量的源程序等服务。 (")执行程序。将用户程序和数据装入主存,为其运行做好一切准备工作并启动和执行 程序。当程序编译或运行出现异常时, 应能报告发生的情况, 终止程序执行或进行适当处理。 (#)数据 $ % &。程序运行过程中需要 $ % & 设备上的数据时,可以通过 $ % & 命令或 $ % & 指 令, 请求操作系统的服务。操作系统不允许用户直接控制 $ % & 设备,而能让用户以简单方式 实现 $ % & 控制和读写数据。 (’)信息存取。文件系统让用户按文件名来建立、读写、修改以及删除文件,使用方便, 安全可靠。当涉及多用户访问或共享文件时,操作系统将提供信息保护机制。 (()通信服务。在许多情况下,一个进程要与另外的进程交换信息,这种通信一般分为 两种情况,一是在同一台计算机上执行的进程之间通信;二是在被网络连接在一起的不同计 算机上执行的进程之间通信。进程通信可以借助共享内存( )*+,-. /-/0,1)方法实现,也可 以使用消息传送(/-))+2- 3+))452)技术实现。采用前一种方法,操作系统要让两个进程连结 到共享存储区;采用后一种方法,操作系统实现消息在进程之间的移动。 (6)错误检测和处理。操作系统能捕捉和处理各种硬件或软件造成的差错或异常,并 让这些差错或异常造成的影响缩小在最小范围内,必要时及时报告给操作员或用户。 此外,操作系统除上述提供给用户的服务外,还具有另外一些功能,以保证它自身高效 率、高质量地工作,从而,使得多个用户程序能够有效地共享系统资源,提高系统效率,这些 功能有: (!)资源分配。多道作业同时运行时,每一个必须获得系统资源。系统中的各类资源 均由操作系统管理,如 789 时间、内存资源、文件存储空间等,都配有专门的分配程序,而其 他资源(如 $ % & 设备)配有通用的申请与释放程序。例如,为了能更好地利用 789,操作系统 配有 789 调度例行程序,专门关注 789 的使用,掌握欲使用 789 的进程的状态。再如,可以 设置一个例行程序探查未被使用的磁带驱动器,并且标记在内部表格,以便把它分给新用 户,还可配置例行程序用来分配绘图仪、调制 % 解调器和其他外围设备。 (")统计。当希望知道用户使用计算机资源的情况,如用了多少?什么类型?以便用 户付款或简单地进行使用情况统计,统计结果可以作为进一步改进系统服务,对系统进行重 组的有价值的数据。 (#)保护。在多用户多任务计算机系统中,保护意味着对系统资源的所有存取都要确保 受到控制。用户程序对各种资源的需求经常发生冲突, 为此, 操作系统必须做出合理的调度。 操作系统提供了许多服务,底层的服务通过系统调用来实现,可被用户程序直接使用。
第一章
・ 87 ・
操作系统概论
高层的服务通过系统程序来实现,用户不必自己编写程序而是借助命令管理或 !"#$$ 来请求 执行完成各种功能的系统程序。
!"#"$
操作系统提供的用户接口
操作系统可以通过程序接口和操作接口两种方式把它的服务和功能提供给用户,反过 来也可以这样说,用户可以通过两个接口来调用操作系统提供的服务和功能,如图 % & ’。
图%&’
用户和操作系统间的两种接口
程序接口又称应用编程接口 ()*( (++$,-./,01 )2032.44,13 *1/#25.-#),程序中使用这个接 口可以调用操作系统的服务和功能。许多操作系统的程序接口由一组系统调用( !6!/#4 -.$$)组成,因此,用户在编写的程序中使用“系统调用”就可以获得操作系统的底层服务,使 用或访问系统管理的各种软硬件资源。 操作接口又称作业(或功能)级接口,是操作系统为用户操作控制计算机工作和提供服 务的手段的集合,通常可借助操作控制命令、图形操作界面(命令),以及作业控制语言(命 令)等等来实现。
!"#"#
程序接口与系统调用
!" 系统调用 系统调用是为了扩充机器功能、增强系统能力、方便用户使用而在内核中建立的过程 (函数)。用户程序或其他系统程序通过系统调用就可以访问系统资源,调用操作系统功能, 而不必了解操作系统内部结构和硬件细节,它是用户程序或其他系统程序获得操作系统服 务的惟一途径。有些计算机系统中,把系统调用称为广义指令。广义指令与机器指令是不 相同的,机器指令由硬件实现,而广义指令(系统调用)是由操作系统在机器指令(访管指令)
(+*
操作系统提供的服务和用户接口
・ CI ・
基础上实现的、能完成特定功能的过程或子程序。操作系统为用户提供系统调用也出于安 全和效率考虑,使得用户态程序不能自由地访问内核关键数据结构或直接访问硬件资源。 “基于 !"#$ 的可移植操作系统接口”是国际标准化组织给出的有关系统调用的国际标 准 %&’#$())*+( ( %,-./012 &32-/.456 ’78.29 #5.2-:/;2 0/82< ,5 !"#$),任何操作系统只有符合这 一标准,才有可能运行 !"#$ 程序。这个标准指定了系统调用的功能,但并未明确规定系统 调用以什么形式实现,是库函数,还是其他形式。目前许多操作系统都有完成类似功能的系 统调用,至于在细节上的差异就比较大了。早期操作系统的系统调用使用汇编语言编写,这 时的系统调用可看成是扩展的机器指令,因而,能在汇编语言编程中直接使用。在一些程序 设计语言(如 = 语言)中,往往提供一些与各系统调用对应的库函数(有些库函数与系调调 用无关),因而,在高级语言中,应用程序可通过对应的库函数来使用系统调用,库函数的目 的是隐藏访管指令的细节,使系统调用更象过程调用,但一般地说,库函数属于用户程序而 非系统程序。最新推出的一些操作系统,如 !"#$ 新版本、>45?@、A45 写文件
/(--8
F-CE#/-*$C-.
移动文件指针
68%#. > .6%#.
B.-5C > K-6&L- 2#.-7C&.4
建立 > 删除目录
(C5C
1-CE#/-)CC.#9?C-(M@
获得文件属性
!" 系统调用的实现要点 每个操作系统都提供几十到几百条系统调用。在操作系统中,实现系统调用功能的机 制称陷入 或 异 常 处 理 机 制,由 于 系 统 调 用 而 引 起 处 理 器 中 断 的 机 器 指 令 称 访 管 指 令 ( (?D-.L#(&.),陷入指令( C.5D)或异常中断指令( #$C-..?DC)。在操作系统中,每个系统调用都事 先规定了编号,称功能号,在访管或陷入指令中必须指明对应系统调用的功能号,在大多数 情况下,还附带有传递给内部处理程序的参数。 系统调用的实现有以下几点:一是编写系统调用处理程序;二是设计一张系统调用入口 地址表,每个入口地址都指向一个系统调用的处理程序,有的系统还包含系统调用自带参数 的个数;三是陷入处理机制,需开辟现场保护区,以保存发生系统调用时的处理器现场。图 N O P 是系统调用的处理过程。 参数传递是系统调用中应处理好的问题,不同的系统调用需传递给系统调用处理程序 不同的参数,反之,系统调用执行的结果也要以参数形式返回给用户程序。实现用户程序和 系统调用之间的参数传递可采用以下方法:一是访管指令或陷入指令自带参数,可以规定指 令之后的若干单元存放的是参数,这叫直接参数;或者在指令之后紧靠的单元中存放参数的
!3(
操作系统提供的服务和用户接口
图!"#
・ ’2 ・
陷入机构和系统调用处理过程
地址,这叫间接参数,由间接地址再指出参数的存放区。二是通过 $%& 的通用寄存器传递 参数,这种方法不宜传递大量参数。改进的方法是:在内存的一个区或表中存放参数,其首 地址送入寄存器,实现参数传递。三是在内存中开辟专用堆栈区域传递参数。 !" 系统调用与过程(函数)调用的区别 程序中执行系统调用或过程(函数)调用,虽然都是对某种功能或服务的需求,但两者从 调用形式到具体实现都有很大区别。 (!)调用形式不同。过程(函数)使用一般调用指令,其转向地址是固定不变的,包含在 跳转语句中,但系统调用中不包含处理程序入口,而仅仅提供功能号,按功能号调用。 (’)被调用代码的位置不同。过程(函数)调用是一种静态调用,调用程序和被调用代 码在同一程序内,经过连接编辑后作为目标代码的一部份。当过程(函数)升级或修改时,必 须重新编译连接。而系统调用是一种动态调用,系统调用的处理代码在调用程序之外(在操 作系统中),这样一来,系统调用处理代码升级或修改时,与调用程序无关。而且,调用程序 的长度也大大缩短,减少了调用程序占用的存储空间。 (()提供方式不同。过程(函数)往往由编译系统提供,不同编译系统提供的过程(函 数)可以不同;系统调用由操作系统提供,一旦操作系统设计好,系统调用的功能、种类与数 量便固定不变了。 ())调用的实现不同。程序使用一般机器指令(跳转指令)来调用过程(函数),是在用户 态运行的;程序执行系统调用,是通过中断机构来实现,需要从用户态转变到核心态,在管理 状态执行。因此程序执行系统调用安全性好。 #" $%&’( 的系统调用 *+,-. 采用类似 &/01 技术实现系统调用,用户不能任意拦截或修改,保证了内核的安全
第一章
・ >( ・
操作系统概论
性。 !"#$% 最多可以有 &’( 个系统调用,应用程序和 )*+,, 通过系统调用机制访问 !"#$% 内核 (功能)。每个系统调用由两部分组成: (&)核心函数:是实现系统调用功能的(内核)代码,作 为操作系统的核心驻留在内存中,是一种共享代码,用 - 语言书写。它运行在核心态,数据 也存放在内核空间,通常它不能再使用系统调用,也不能使用应用程序可用的库函数。(.) 接口函数:是提供给应用程序的 /01,以库函数形式存在 !"#$% 的 ,"23 4 中,该库中存放了所 有系统调用的接口函数的目标代码,用汇编语言书写。其主要功能是把系统调用号、入口参 数地址传送给相应的核心函数,并使用户态下运行的应用程序陷入核心态。 !"#$% 中有一个用汇编语言编写的系统调用入口程序 +#567( 878 94,, 542,+),它包含了 系统调用入口地址表和所有系统调用核心函数的名字,而每个系统调用核心函数的编号由 "#9,$:+ ; 48< ; $#"85:3 * 定义: (&’&()*++(,*-+.) !"#$% (&’& 08 &’&)*++) +/01 2%3456 "73!
9
+/01 2%3456 "73!(&’& .:8,)
;
+/01 2%3456 "73!(&’& )
?
+/01 2%3456 "73!(&’& =.*@)
A
+/01 2%3456 "73!(&’& B=8,.)
C
+/01 2%3456 "73!(&’& /D.0)
E
(&’& )+/&.) +/01 2%3456 "73!
F
GGG GGG GGG +/01 2%3456 73!(&’& 08 &’&)*++ ) +/01 2%3456 "73!(&’& 08 &’&)*++ ) +/01 2%3456 "73!(&’&(H )
;I9
!"#$% 的系统调用号就是系统调用入口表中位置的序号,所有系统调用通过接口函数将 系统调用号传给内核,内核转入系统调用控制程序,再通过调用号的位置来定位核心函数, ( "#5=(*)中断实现。系统调用控制程序的工作流程为: (&)取系统调 !"#$% 内核的陷入由 (%=( 用号,检验合法性; (.)建立调用堆栈,保护现场信息; (>)根据系统调用号定位核心函数地 址; (?)根据通用寄存器内容,从用户栈中取入口参数; (@)核心函数执行,把结果返回应用程 序; (A)执行退栈操作,判别调度程序 89*+:$,+6 是否要被执行。
!"#"$
操作接口与系统程序
!" 作业控制方式 下面提出这样一个问题,用户如何来向操作系统提交作业和说明运行意图呢?操作系 统一般都提供了联机作业控制方式和脱机作业控制方式两个作业级的接口,这两个接口使
!+ 用的手段为:操作控制命令和作业控制语言(命令)。 (!)联机用户接口———操作控制命令 这是为联机用户提供的调用操作系统功能,请求操作系统为其服务的手段,它由一组命 令及命令解释程序组成,所以也称为命令接口。当用户在键盘上每键入一条命令后,系统便 立即转入命令解释程序,对该命令进行处理和执行。用户可先后键入不同命令,来实现对他 的作业的控制,直至作业完成。 不同操作系统的命令接口有所不同,这不仅体现在命令的种类,数量及功能方面,也可 能体现在命令的形式、用法等方面。不同的用法和形式组成了不同的用户界面,常用的用户 界面可分成以下几种: !)字符显示式用户界面 主要通过命令语言来实现的,又可分成两种方式: ! 命令行方式 命令语言具有规定的词法、语法和语义,它以命令为基本单位来完成预定的工作任务, 完整的命令集构成了命令语言,反映了系统提供给用户可使用的全部功能。每个命令以命 令行的形式输入并提交给系统,一个命令行由命令动词和一组参数构成,它指示操作系统完 成规定的功能。对新手用户来说,命令行方式十分繁琐,难以记忆;但对有经验的用户而言, 命令行方式用起来快捷便利、十分灵活,所以,至今许多操作员仍欢迎并使用这种命令形式。 简单命令的一般形式为:"#$$%&’ %()! %()* + + + %()& 其中 "#$$%&’ 是命令名,又称命令动词,其余为该命令所带的执行参数,有些命令可以 没有参数。 ,-&./ 常用的命令可以分成五大类:!)文件管理类:0’、01$#’、01#2&、01)(3、0#$$、03、 0(435、’-66、6-78、6-&’、7&、79、$:’-(、$;、#’、3(、32’、($、($’-(。 * )进程管理类:%5、:-77、$%-7、&-08、 .3、39、5-$8、2(-58、$89)。 )软件开发类:00、6??、7#)-&、7#)#.5、9-@8、4%00、;-、8$%09、’A9、78/、$%:8、7-&5、7’。B)系统维护类: ’%58、$%&、3%992’、9554、554、21#。 " 批命令方式 在使用操作命令过程中,有时需要连续使用多条命令,有时需要多次重复使用若干条命 令;还有时需要有选择地使用不同命令,用户每次都将这一条条命令由键盘输入,既浪费时 间,又容易出错。现代操作系统都支持一种特别的命令称为批命令,其实现思想如下:规定 一种特别的文件称批命令文件,通常该文件有特殊的文件扩展名,例如,CD E FGD 约定为 HIJ。用户可预先把一系列命令组织在该 HIJ 文件中,一次建立,多次执行。从而,减少输 入次数,方便用户操作,节省时间,减少出错。更进一步,操作系统还支持命令文件使用一套 控制子命令,从而,可以写出带形式参数的批命令文件。当带形式参数的批命令文件执行
・ F. ・
第一章
操作系统概论
时,可用不同的实际参数去替换,从而,一个这样的批命令文件可以执行不同的命令序列,大 大增强了命令接口的处理能力。 !"#$ 和 %&’() 的 *+,-- 不但是一种交互型命令解释程序,也是一种命令级程序设计语言 解释系统,它允许用户使用 *+,-- 简单命令、位置参数和控制流语句编制带形式参数的批命 令文件,称作 *+,-- 文件或 *+,-- 过程,*+,-- 可以自动解释和执行该文件或过程中的命令。 .)图形化用户界面 用户虽然可以通过命令行方式和批命令方式来获得操作系统的服务,并控制自己的作 业运行,但却要牢记各种命令的动词和参数,必须严格按规定的格式输入命令,这样既不方 便又浪费时间。于是,图形化用户接口 /!# ( /012+&34 !4,0 #’5,0613,)便应运而生,是近年来最 为流行的联机用户接口形式。 /!# 采用了图形化的操作界面,使用 7#89 技术(即窗口 7&’:;&3,),引入形象的各种图标将系统的各项功能、各种应用程序和文件,直 观、逼真地表示出来。用户可以通过选择窗口、菜单、对话框和滚动条完成对他们的作业和 文件的各种控制和操作。此时,用户不必死记硬背操作命令,而能轻松自如地完成各项工 作,使计算机系统成为一种非常有效且生动有趣的工具。 ?@ 年代推出 的 主 流 操 作 系 统 都 提 供 了 /!#,/!# 的 鼻 祖 首 推 $,0;) 公 司 的 91-; A&5; B,4,103+ C,’5,0 于 D?ED 年在 *510E@D@ 工作站操作系统中的图形用户接口;D?EF 年 A22-, 公司 又在 A22-, %&41 机和 813&’5;4+ 机上的操作系统中成功使用 /!#;之后,还有 8&30;4;65 公司的 7&’:;