1、范立南 刘飒 编著北京大学出版社,操作系统实用教程第1章操作系统概述,第1章操作系统概述,1.1 操作系统的定义 1.2 操作系统的功能 1.3 操作系统的分类和发展 1.4 操作系统的实现,1.1操作系统的定义,1.1.1 计算机系统层次结构,图1-1计算机系统的层次视图,1.1操作系统的定义,近年来,大型软件都是采用层次式结构进行构建的,也就是将一个软件分成若干个层次。在此,同样可以用一个层次式的0S模型来描述操作系统,该模型分为三个层次(如图1-2所示),包括:用户接口;对对象操纵和管理的软件集合;操作系统对象。,1.1操作系统的定义,图1-2 0S层次模型,1.1操作系统的定义,1.1
2、.2 操作系统的定义狭义操作系统包含程序:核心态运行程序,用户态运行的命令解释器和系统调用库。广义操作系统包含程序:除上述外,许多提供系统常用功能的实用程序,库程序。因此,操作系统可以被定义为集如下三方面为一体的程序集合:(1)控制和管理计算机系统的硬件和软件资源;(2)合理的组织计算机的工作流程;(3)方便用户使用。管理目标:使硬件、软件资源的利用率最高;服务宗旨:给用户尽可能多的服务和最大的方便;服务项目:程序界面由系统调用命令组成,给用户编程提供方便;联机用户界面由键盘命令、屏幕命令组成;脱机用户界面作业控制命令。,1.1操作系统的定义,1.1.3 操作系统的发展 1人工操作阶段 2早期
3、的批处理 3多道程序系统 4分时操作系统 5实时操作系统 6通用操作系统,1.2 操作系统的功能,1.2.1 操作系统在计算机系统中的地位及运行环境1操作系统在计算机系统中的地位(1)计算机系统管理中心(相当于社会中的政府地位);(2)最复杂最精确的人工开发的管理系统;(3)在计算机系统中不可缺少,如果缺少操作系统,用户不可能上机使用计算机资源。2操作系统运行环境 操作系统是一个众多程序模块的集合。根据运行环境,这些模块大致分为3类:第1类是在系统初启时便与用户程序一起主动参与并发运行的,如作业管理程序、输入输出程序等。它们由时钟中断、外设中断所驱动。第2类是直接面对用户态(亦称常态、或目态)
4、程序的,这是一些“被动”地为用户服务的程序。这类程序的每一个模块都与一条系统调用指令对应,仅当用户执行系统调用指令时,对应的程序模块才被调用、被执行。系统调用指令的执行是经过陷入中断机构处理的。因此从这个意义上说,第2类程序也是由中断驱动的。第3类是那些既不主动运行也不直接面对用户程序的、隐藏在操作系统内部的、由前2类程序调用的模块。既然前2类程序是由中断驱动的,那么第3类程序也是由中断驱动的。应当注意,操作系统本身的代码运行在核心态(亦称管态、特态)。从用户态进入核心态的惟一途径是中断。,1.2 操作系统的功能,1.2.2 操作系统的特征 操作系统具有五大特征,其中前两项是操作系统的基本特征
5、,不具备这两项的管理程序不能被称为操作系统。1并发性 2共享性 3虚拟性 4异步性 5可重构性,1.2 操作系统的功能,1.2.3 操作系统的功能 从资源管理的角度看,操作系统主要 功能分四大模块,包括处理机管理,存储器管理,设备管理,文件、作业管理、通信事务管理。此外,为了方便用户使用操作系统,还给用户提供了一个友好的用户接口。,1.2 操作系统的功能,1.2.4 操作系统的结构设计模式 1模块化结构 2层次化结构 3微内核OS结构 4客户/服务器模式 5对象模式 6对称多处理模式,1.2 操作系统的功能,1.2.5 操作系统的设计规范 1系统效率 系统效率是操作系统的一个重要性能指标。它包
6、括资源利用率(高)、吞吐量(大)、周转时间(短)及响应时间(少)等。2系统可靠性 系统可靠性是指系统发现、诊断和恢复硬件与软件故障的能力。可以通过以下三个指标说明。可靠性R(Reliability):通常用系统的平均无故障时间MTBF(Mean Time Failures)来度量。指系统能正常工作的平均时间值。R越大,系统可靠性越高。可维护性S(Serviceability):通常用平均故障修复时间MTRF(Mean Time Repair Fault)来度量。指从故障发生到故障修复所需要的平均时间。S越小,系统可修复能力越强,可维护性越高。可用性A(Availability):指系统运行的整
7、个时间内,能正常工作的概率。,1.2 操作系统的功能,3可移植性 可移植性是指把一个操作系统从一种硬件环境移植到另一种硬件环境时,系统仍能正常工作的能力。操作系统发生移植时,代码修改的量越小,系统效率越高。4可伸缩性 可伸缩性是指操作系统对添加软、硬件资源的适应能力,尤其是指可添加到硬件中的CPU资源的能力。亦即操作系统可运行在不同种类的计算机上,例如从原来的单处理机扩充到多处理机的系统上,操作系统仍能正常运行。5兼容性 它主要指软件的兼容性,是操作系统能够执行为其他版本操作系统或为属同一系列的早期版本操作系统所编写的软件的能力。6安全性 安全性是指操作系统应具有一定的安全保护措施,包括保护和
8、保密。诸如密码设置、账号检查、系统接入检测、各用户资源分配和资源保护、用户的资源不受他人侵犯等。,1.3 操作系统的分类和发展,1.3.1 操作系统的分类1批处理操作系统 批处理操作系统是一种早期的大型机用操作系统。批处理出现的目的在于提高系统资源的利用率和系统的吞吐量,现代操作系统大都具有批处理功能。(1)单道批量处理系统 单道批处理系统是操作系统的雏形。优点是:自动性。顺利情况下,磁带上的作业可一个接一个地运行,无需人工干预。顺序性。按进入磁带的顺序进入主存。单道性。主存中只有一个作业在运行。缺点是:一次只能运行一个作业,这对于昂贵的计算机系统来说,资源的利用率就显得有点低了。,1.3 操
9、作系统的分类和发展,(2)多道批处理系统 多道批处理系统,就是在外存中存在有大量作业,并将这些作业按一定要求排成队列,从这些队列中,选出几个作业进入内存多道运行。当有作业运行完成退出系统时,就自动从作业队列中选取若干作业进入内存,从而使作业批量运行,而无需人工干预。在OS中引入多道程序设计技术可带来以下好处:提高CPU的利用率。可提高内存和I/O设备利用率。增加系统吞吐量。多道批处理系统的特征:多道性、无序性、调度性。多道批处理系统的优缺点:资源利用率高、系统吞吐量大、平均周转时间长、无交互能力。,1.3 操作系统的分类和发展,2分时操作系统 分时系统实现中的关键问题是及时接收、及时处理。一般
10、采用时间片轮转的方式,使一台计算机为多个终端用户服务,能保证足够快的响应时间,并提供交互会话能力。因此它具有下述特点:(1)交互性。(2)及时性。(3)多用户同时性。(4)独立性。分时系统技术为现代操作系统的设计奠定了基础,也为网络时代的到来开辟了新路。,1.3 操作系统的分类和发展,3实时操作系统 实时系统是另外一类联机的操作系统。它主要随着计算机应用于实时控制和实时信息处理领域中而发展起来的。所谓“实时”就是表示要“及时”,实时系统就是指系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对事件的处理,并控制所有实时任务协调一致地运行。实时系统的主要特点是提供即时响应和高可靠性,往往
11、具有一定的专用性。实时系统在一般领域具有五个独特的要求:决定性、响应性、用户控制、可靠性和弱失效操作。实时系统的特征为多路性、独立性、及时性、交互性、高可靠性。实时系统与批处理系统、分时系统相比,资源的利用率可能较低。,1.3 操作系统的分类和发展,实时系统与分时系统是有区别的,主要是:(1)分时系统提供一种随时可供多个用户使用的、通用性很强的计算机系统工程,用户与系统之间具有较强的交互作用或会话能力;而实时系统的交互作用能力相对来说较差。一般地,实时系统是具有特殊用途的专用系统,仅允许终端操作员访问数量有限的专用程序,即命令较简单,操作员不能书写程序或修改一组已存在的程序。(2)分时系统对响
12、应时间的要求是以人们能接受的等待时间为依据的,其数量级通常规定为秒;而实时系统对响应时间一般有严格要求,它是以控制过程或信息处理过程所能接受的延迟来确定的,数量级可达毫秒,甚至微秒级。(3)虽然分时系统也要求系统可靠,但实时系统对可靠性的要求更高。因为实时系统控制、管理的目标往往是重要的经济、军事、商业目标,而且需要现场立即进行处理,任何差错都可能带来巨大的经济损失,甚至引发灾难性的后果。因此,在实时系统中必须采取相应的硬件和软件措施来提高系统的可靠性,如硬件往往采取双机工作方式,软件加入多种安全保护措施等。,1.3 操作系统的分类和发展,4通用操作系统 批处理系统、分时系统和实时系统是操作系
13、统的三种基本类型,在此基础上又发展了具有多种类型操作特征的操作系统,称为通用操作系统。它可以同时兼有批处理、分时、实时处理和多重处理的功能,或其中两种以上的功能。5个人计算机上的操作系统 个人计算机上的操作系统是一联机的交互式的单用户操作系统,它提供的联机交互功能与通用分时系统所提供的十分相似。6网络操作系统 计算机网络是通过通信设施将物理上分散的具有自治功能的多计算机系统互连起来,实现具有网络通信、资源管理、网络服务、网络管理和相互操作能力功能的系统。计算机网络按拓扑结构可以分为星形网络、树形网络、总线型网络、环形网络以及网状型网络。计算机网络按照地域范围又可分为广域网和局域网。配置在网络上
14、的操作系统就是网络操作系统。网络操作系统的研制开发是在原来各自计算机操作系统的基础上进行的。按照网络体系结构的各个协议标准进行开发,包括网络管理、通信、资源共享、系统安全和多种网络应用服务等。,1.3 操作系统的分类和发展,7分布式操作系统 所谓分布式处理系统,是指由多个分散的处理单元,经互连网络的连接而形成的系统。其中,每个处理单元既具有高度的自治性,又相互协同,能在系统范围内实现资源管理、动态地分配任务,并能并行地运行分布式程序。分布式系统中的各项系统工作对用户来说完全透明。分布式操作系统具有网络操作系统的功能,是网络操作系统的更高级形式,比网络操作系统更有特色、更有优点。其优点在于它的分
15、布式,这种分布式可以以较低成本获得较高的运算性能。而分布式的可靠性又是其他系统所望尘莫及的,在一个CPU出现故障时,整个系统仍能正常工作,并不影响整个任务的运行,只是速度略慢一些。这种高可靠性环境,特别适用于高新技术领域。现代操作系统将分布式系统、网络操作系统统称为分布式操作系统。,1.3 操作系统的分类和发展,1.3.2 操作系统的发展 进入20世纪80年代,大规模集成电路工艺技术的飞跃发展,微处理机的出现和发展,掀起了计算机大发展、大普及的浪潮。一方面迎来了个人操作系统的时代,另一方面又向计算机网络、分布式处理、巨型计算机和智能化方向发展,操作系统有了进一步发展。1大型机操作系统 2服务器
16、操作系统 3多处理机操作系统 4个人计算机操作系统 5实时操作系统 6嵌入式操作系统 7智能卡操作系统,1.3 操作系统的分类和发展,1.3.3 操作系统的实例 随着大规模和超大规模集成电路技术的发展,面向个人使用的微型计算机得到了极大的发展和普及,微机操作系统也得以发展。早期微机操作系统基本上是单用户系统。所有资源采用独占方式。微机操作系统通常提供较强的文件管理功能,通过命令解释器支持用户以交互方式使用计算机,微机操作系统随着微机复杂系统向多用户多任务系统及多媒体方向发展,为计算机走向千家万户,遍及各行各业、深入各个领域打下了坚实的基础。较典型的微机操作系统MS-DOS、Windows、UN
17、IX、Linux的运行环境可以通过实际的操作进行了解和掌握。,1.4 操作系统的实现,1.4.1 操作系统开发与升级1交叉开发(1)建立交叉开发环境,主要包括五方面:目标机:操作系统将运行的机器;工作机:开发操作系统的机器;交叉编译:在工作机上将源代码编译成目标机可运行代码;模拟调试工具:在工作机上模拟执行目标机代码;内核生成环境:工作机上编译链接工具。(2)在交叉环境开发后到目标机运行。2增量开发在已有操作系统上作内核,驱动程序更新和升级。增量开发体现在“更新”上,主要包括四方面:编译系统更新和升级;内核调试器更新和升级;内核生成环境更新和升级;打包工具(生成driver,boot盘,系统安
18、装盘)更新和升级。,1.4 操作系统的实现,1.4.2 操作系统的安装1.4.3 系统启动与关机,范立南 刘飒 编著北京大学出版社,操作系统实用教程第2章 linux操作系统简介,第2章 linux操作系统简介,2.1 Linux操作系统的概述2.2 Linux操作系统的使用,2.1 Linux操作系统的概述,2.1.1 Linux操作系统的历史 Linux可以看做是Unix系统的一种。它具有最新Unix的全部功能包括真正的多任务、虚拟存储、共享库函数、即时负载、优越的存储管理和TCPIP、UUCP网络工具。Linux系统及其发展均符合POSIX标准。其内核支持Ethernet、PPP、SLI
19、P、NFS、AX25、IPXSPX(Novell)、NCP(Novell)等网络类型。系统应用包括telnet、ftp、mail、gopher、talk、term、news等全套Unix工具包。此外还具有x图形库,以及xterm、fvwm、xxgdb、mosaic、xv、xman等全部X-Window应用程序。,2.1 Linux操作系统的概述,目前比较流行的几个Linux版本有:Slackware Linux:这是最早出现的Linux发行版本。它比较适合有经验的Linux老手,对于那些想学习系统是怎么工作的并想安装和编译他们自己的软件的人来说这是最好的。不过,现在使用这一版本的人越来越少了。
20、不建议大家使用。Red Hat Linux:这是最风行的一种发行版本。其因为采用一个头带红帽子的人作为吉祥物而得名的。它一度成为Linux的代名词。它支持的硬件平台多,具有优秀的安装界面、独特的RPM升级方式、丰富的软件包、并且安全性能好、系统管理界面便捷。Debian Linux:这是由自由软件基金会发行的,是完全由网络上的Linux爱好者负责维护的发行版本。软件极丰富,升级容易,软件间联系强,安全性较佳。不过该发行版本更新太频繁,不易把握。,2.1 Linux操作系统的概述,2.1.2 Linux操作系统的特点 1自由开放的源代码 2真正的多用户多任务系统 3良好的用户界面 4强大的网络功
21、能 5可靠的系统安全 6良好的可移植性 7完整的开发平台 8与UNIX兼容,2.1 Linux操作系统的概述,2.1.3 Linux操作系统的设计原理 Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途,同时它们都尽可能被编写得更好。其中第一条详细的讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。,2.1 Linux操作系统的概述,2.1.4 Linux操作系统的内核模块 Linux内核能够根据需要装载或卸载任意内核代码段。这些可装载的内核模块运行于特权内核模式,所以这些内核模块能
22、够完全访问其所运行的计算机的硬件。Linux环境下模块支持体现在以下三个方面:模块管理(module management)允许该模块被导入内存并能与内核的其他模块进行通信。驱动程序注册(driver registration)允许该模块告诉其他模块一个新的驱动程序已经可以使用。冲突解决机制(conflict-resolution mechanism)允许不同的设备驱动器保留硬件资源,并且保护那些被其他驱动器突发使用的资源。,2.2 Linux操作系统的使用,221 Linux系统引导 系统的引导过程是指计算机启动时,由系统BIOS以及操作系统引导程序将操作系统内核可执行代码逐级装入内存并开始
23、执行,直到系统控制台显示“login:”登录提示符为止的系统引导阶段。在这个执行过程中需要进行许多初始化操作以便为用户提供各种服务,如编辑文件、打印以及网名服务等。1Linux引导程序的基本概念 在Red Hat Linux装载系统前,它必须由一个引导装载程序(Boot Loader,启动管理程序)中的特定指令告诉它去引导系统。这个程序一般位于系统的主硬盘驱动器或其他知道如何引导Linux内核的媒介驱动器上。Linux默认选择GRUB(GRand Unified Bootloader)作为引导装载程序。GRUB是一个多重启动管理器,它可以在多个操作系统共存时选择引导哪个系统。,2.2 Linu
24、x操作系统的使用,2引导程序菜单界面 3设置引导程序的密码 本节主要讲述如何使用以下两种方法设置GRUB开启系统的密码:一是直接在GRUB配置文件中加密,但此时设置的密码能在GRUB配置文件etcgrubconf中直接看到,因而安全性不够;另一种方法就是通过md5进行加密和校验,这种办法值得推荐,在安全方面能够得到保证。(1)直接在GRUB配置文件中设置密码(2)用md5加密校验GRUB密码,2.2 Linux操作系统的使用,4系统引导的过程 下面以Red Hat 9.0和i386平台为例,当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装
25、的引导程序lilo或grub开始引导Linux,Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc当完成系统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系统,用户登录成功后进入了Shell,这样就完成了从开机到登录的整个启动过程。,2.2 Linux操作系统的使用,2.2.2 文件存取权限和所有权限每一个目录和文件都有一个所有者、一个分组和一系列存取权限。存取权限本身又分为对应的所有者、分组和全体用户的几个组成部分。文件的存取权限是使用长格式化文件列表命令(ls-
26、l)列文件清单时出现在最左边的第一数据段。这个数据段又可以被分解为10个标志位。1类型标志位存取权限数据段的第一位,或者第一个字母表示的是这个项目的类型,许多不同的项目会用到这个标志位:-表示该项目是一个普通文件;d表示该项目是一个目录;l表示该项目是一个符号链接;s表示该项目是一个可执行文件,不论谁都可以像它的所有者那样调用它运行;c表示该项目是一个字符设备驱动程序;b表示该项目是一个块设备驱动程序。,2.2 Linux操作系统的使用,2存取权限三位组存取权限的其余部分每三位一组,分为三组。类型位后面的第1个三位组定义了其所有者的存取权限。第2个三位组定义了其所在分组的存取权限;第3个三位组
27、则说明了系统上任何人的存取权限。从上面的介绍可以看出,认真设置这些标志位是非常重要的。3解读三位组解读各个三位组的方法是完全一样的。每一个三位组是由3个不同的数据位组成的:读标志位(r)写标志位(w)执行标志位(x)这些标志位永远都按照同一个顺序显示为rwx的形式。区别某个标志位是处于允许(on)还是禁止(off)的状态就要看该标志位是显示为一个字母还是一个连字符(-)。举例来说,在rw-存取权限数据段表示读标志位在允许状态、写标志位在允许状态,但是执行标志位就是禁止状态。所以这个三位组就表示具有读和写的权限,但是没有可执行权限。,2.2 Linux操作系统的使用,2.2.3 常用命令 查询命
28、令说明的man命令、列出文件列表的ls命令、切换目录的cd命令、建立目录的mkdir命令、删除目录的rmdir命令、拷贝文件的cp命令、删除文件或目录的rm命令,2.2 Linux操作系统的使用,2.2.4 vi的用法 任何计算机用户最常做的事之一就是创建和编辑文件,包括文档、报告和文字等。在Linux/Unix操作系统中vi是一个有效的、相对简单的全屏幕编辑。使用vi,只要知道少量基本命令,然后,就能逐步扩大应用能力,去使用大量更复杂的命令。2.2.5 实例Linux运行一个用户程序,范立南 刘飒 编著北京大学出版社,操作系统实用教程第3章进程管理,第3章进程管理,3.1 并发控制3.2 进
29、程的定义和特征3.3 内核中进程的实现3.4 线程模型3.5 Linux的进程管理,3.1 并发控制,3.1.1 多道程序设计1程序的顺序执行(1)顺序性 处理机的操作严格按照程序所规定的顺序执行。程序中一条指令的执行结束是下一条指令开始执行的充分必要条件。(2)封闭性 程序是在封闭的环境下执行的。即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,其执行结果不受外界因素的影响。(3)可再现性 只要程序执行时的环境和初始条件相同的情况下,程序执行的最终结果与执行过程中向前推进的速度无关。多次重复执行该程序都将获得相同的结果。程序顺序执行的以上三个特点,为程序员在单道环境下
30、检测和校正程序的错误带来了极大的方便。,3.1 并发控制,图3-1 程序的顺序执行,2前趋图 前趋图(Precedence Graph)是一个有向无循环图,通常被记为DAG(Directed Acyclic Graph)。它用于描述进程之间执行的前后关系,图中的每一个结点可用于表示一个程序段或进程,乃至是一条语句;图中的每一条有向边表示相邻结点之间的前趋关系(Precedence Relation),也称偏序(Partial Order)关系,记为SiSj,即Sj仅在Si执行完成后才能开始执行,称Sj是Si直接后继,而称Si是Sj的直接前趋。此外,图中的每个结点还具有一个重量(Weight),
31、用来表示该结点所含有的程序量或结点执行所需的时间。示例程序顺序执行过程的图3-1就是一个简单的前趋图。注意,前趋图中必须不存在循环。,3.1 并发控制,图3-2示出了输入、计算和打印这三个程序对一批作业进行处理的情况。,图3-2 并发执行时的前趋图,3.1 并发控制,3.1.2 程序的并发执行对于具有下述四条语句的程序段:S l:a:=x+2S2:b:=y+4S3:C:=a+bS4:d:=c+b可画出图3-3所示的前趋关系可以看出:S3必须在a和b被赋值后方能执行;S4必须在S3之后执行;但S1和S2则可以并发执行,因为它们彼此互不依赖。,图3-3 四条语句的前趋关系,3.1 并发控制,根据前
32、趋图可以较为直观的描述多道环境中的各个程序的相互次序,了解到哪些程序是可以并发执行的。但是,由于多道环境下的并发程序共享了计算机系统内的各种软、硬件资源,所以使得并发程序的执行产生了与程序的顺序执行不同的新特性。程序并发执行的特点如下:1失去程序的封闭性和可再现性2并发程序之间具有相互制约关系3程序与程序的执行不再意一一对应4独立性,3.2 进程的定义和特征,3.2.1 进程的定义 进程是可并发执行的程序在一个数据集合上的运行过程,它是系统资源分配与调度的一个独立单位。,3.2 进程的定义和特征,3.2.2 进程的特征进程具有以下五大特征。1动态性2并发性3独立性4异步性5结构性,3.2 进程
33、的定义和特征,3.2.3 进程与程序的区别和联系 进程和程序是两个既有联系又有区别的概念。进程与程序的区别和联系可以简述如下:(1)进程是程序的执行过程,是一个动态的概念;而程序是完成某特定功能的指令的有序集合,是一个静态的概念。(2)进程具有并发性、独立性和异步性,而程序不具备这些特征。(3)进程是具有结构的。为了描述进程的运行变化过程,操作系统为每个进程提供了一个特定数据结构的表格:PCB表。进程包括程序、数据和记录进程状态信息的进程控制块PCB组成。(4)进程和程序并非是一一对应的。即一个程序可以对应多个进程,一个进程也可以包含多个程序。多个进程可以对应同一个程序,但它们又是彼此分离的多
34、个执行序列。,3.2 进程的定义和特征,3.2.4 进程与作业的区别 一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。作业是用户需要计算机完成某项任务,而要求计算机所做工作的集合。一个作业的完成要经过作业提交、作业收容(后备)、作业执行和作业完成4个阶段。而进程是已提交完毕的程序所执行过程的描述,是资源分配的基本单位。其主要区别如下:(1)作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业之后,系统将它放入外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。(2)一个作业
35、可由多个进程组成。且必须至少由一个进程组成,但反过来不成立。(3)作业的概念主要用在批处理系统中。分时系统中没有作业的概念。进程的概念几乎用在所有的多道程序系统中。,3.2 进程的定义和特征,3.2.5 操作系统与进程的控制执行1内核和微核 操作系统的内核(kernel)是基于硬件的第1层软件,它包含管理并发活动的基本程序,而这些基本程序本身最好不是并发执行的。目前商用操作系统内核包括进程控制、进程调度、进程间通信、进程同步、中断处理、设备驱动模块、时钟管理等。,3.2 进程的定义和特征,对传统的内核模块进行分析后发现能剥离与硬件无关的代码,使操作系统最基本的功能放在一个小核心中,其他功能尽量
36、放到核外,通过调用小核心来实现,这就是当今流行的微核技术。这样的小核心称为微核(micro kernel)或微内核,它仅提供四类小型服务:进程间通信(IPC,InterProcess Communication);底层输入输出;有限调度和有限进程控制;最低级的存储管理。,3.2 进程的定义和特征,微核的代码量大体控制在10KB100KB之间。微核是对传统内核涵义的回归与进一步提炼,它有四种优点:(1)简化了代码的维护工作(2)系统崩溃的风险很小(3)方便于移植(4)灵活性,3.2 进程的定义和特征,2进程控制原语 内核或微核提供核外调用的过程或函数称为原语(primitive)。原语是一段用机
37、器指令编写的完成特定功能的程序,在执行过程中不允许中断,所以原语是常驻内存的。原语和系统调用(system call)在调用的语法形式上相同,但系统调用在执行期间允许中断而原语不行。系统调用的实现过程可能使用了原语,但原语的实现绝不会使用系统调用。在进程管理的过程中使用了各种功能的原语:建立一个进程的原语撤消一个进程的原语挂起一个进程的原语解除挂起进程的原语改变优先数的原语阻塞一个进程的原语唤醒一个进程的原语调度进程运行的原语,3.2 进程的定义和特征,3操作系统得到控制与进程间的开关 4操作系统的执行方式(1)非进程的内核方式(2)在用户进程内部执行(3)操作系统进程方式,3.3 内核中进程
38、的实现,3.3.1 进程控制块PCB1进程控制块的定义 进程控制块PCB是系统为了描述和控制进程的运行而为进程定义的一种数据结构。它包含了有关进程的描述信息、控制信息和资源信息,是进程动态特征的集中反映。一个进程的进程控制块结构是全部或部分常驻内存的。为了便于管理,系统将所有的进程控制块形成一个结构数组(称为PCB表),放在操作系统常驻区内。2进程控制块的作用(1)PCB使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。这也是进程的并发性和独立性的含义。(2)标识进程的存在。操作系统是通过进程的进程控制块感知相应进程的存在的,也可以说,进程
39、控制块是进程存在的惟一标识。当系统创建进程时,PCB被创建;当系统撤消进程时,PCB被收回。(3)PCB提供了系统在控制和管理进程时所需的一切信息。,3.3 内核中进程的实现,3进程控制块中的内容 在进程控制块PCB中,主要包含有以下用以描述和管理控制进程的信息以及相关的资源信息等。(1)进程标识符信息 内部标识符。外部标识符。(2)进程调度信息 进程状态。进程优先级。进程调度相关信息。(3)处理机状态信息(4)进程控制信息 程序和数据地址。进程同步和通信机制。进程资源清单。进程链接字。,3.3 内核中进程的实现,3.3.2 进程上下文 进程的静态描述由进程控制块PCB、有关程序段和数据集组成
40、。进程上下文实际上是进程执行活动全过程的静态描述。具体地说,进程上下文包括计算机系统中与执行该进程有关的各种寄存器(例如通用寄存器、程序计数器PC、程序状态字寄存器PSW等)的值、程序段在经过编译之后形成的机器指令代码集(或称正文段)、数据集及各种堆栈值和PCB结构(如图3-6所示)。,图3-6 进程上下文结构,3.3 内核中进程的实现,进程上下文可按一定的执行层次组合,例如用户级上下文、系统级上下文等。显然,一个进程的执行是在该进程的上下文中执行,而当系统调度新进程占有处理机时,新老进程的上下文发生转换。在UNIX系统V中,进程的上下文由3部分组成:用户级上下文,系统级上下文,寄存器上下文。
41、,3.3 内核中进程的实现,3.3.3 进程三态转换分析1就绪状态(Ready)当进程已分配到了除CPU以外的所有必需资源,只要再获得CPU便可立即执行,此时的进程状态称为就绪状态。在一个多道程序系统中,可以有多个进程处于就绪状态。为了便于管理,一般把它们组织成一个队列,称为就绪队列。2执行状态(Running)正在CPU上运行的进程状态称为执行状态。显然,在一个单处理机系统中,只能有一个进程处于执行状态;而在多处理机系统中,则可以有多个进程处于执行状态。3阻塞状态(Blocked)阻塞状态又称为等待状态,当一个正在CPU上执行的进程,因等待某事件发生而暂时无法执行时,便放弃CPU而处于阻塞状
42、态。处于阻塞状态的进程在逻辑上是不可运行的,即使CPU空闲也不能占有CPU。如果进程处于以上三种基本状态之一,则进程存在于内存。,3.3 内核中进程的实现,4新状态(New)该状态是一个进程刚刚被建立,但还未将其送入就绪队列时的状态。5终止状态(Terminated)当一个进程以正常或异常方式结束运行,操作系统就将它从就绪队列中移出,但尚未撤消它的状态。6挂起状态(Suspend)为了有效地利用内存,满足系统和用户的需要,常常将进程静止下来。也就是说,若进程处于执行状态,则暂停执行;若进程处于就绪状态,则使其暂不接受调度。此时的静止状态被称之为挂起状态。,3.3 内核中进程的实现,图3-7 进
43、程基本状态转换图 图3-8 具有挂起状态的进程状态图,3.3 内核中进程的实现,下面选择一些典型的引起状态转换的事件。(1)就绪状态-执行状态 处于就绪状态的进程一旦被进程调度程序选中后,便可获得CPU并开始执行。这个事件通常与CPU的调度策略有关。(2)执行状态-就绪状态 处于执行状态的进程中,当分给它的CPU时间片已用完时,该进程就不得不放弃转去等待下一次时间片的到来。这个事件也通常与CPU的调度策略有关。(3)执行状态-阻塞状态 处于执行状态的进程中,因等待某个事件的发生或申请某个资源而未能得到满足时,不得不放弃CPU而处于阻塞状态。这个事件是由执行状态的进程自己主动改变的。(4)阻塞状
44、态-就绪状态 在其等待的事件已经发生或申请的资源可以分配时,又具备执行条件,此时进程转为就绪状态。这个事件是由外部事件引起的。事实上,进程状态的转换是一个极其复杂的过程。一个进程在某一时刻只能处于某一状态,进程间状态转换并非均是可逆的,主动的。,3.3 内核中进程的实现,3.3.4 进程的组织 进程队列,指的是把具有相同状态的PCB,按照某种原则链接在一起组成的队列。目前常用的组织方式通常有链接方式和索引方式两种。3.3.5 内核创建进程1进程创建原语(Create Primitive)PCB是感知进程存在的惟一标识,创建一个进程的主要任务就是为其建立一个PCB。一个进程在执行过程中,使用创建
45、原语(Create-Process)或系统调用来创建多个新进程。创建进程称为父进程,而新进程称为子进程。在一个父进程创建子进程时,子进程可以从操作系统那里直接获得必需的资源,也可以只从父进程资源子集那里获得资源。当父进程在其子进程之间分配资源或共享资源时,需要对它们加以限制以保证系统的正常运行。进程在创建时除了获取必需的各种硬件和软件资源以外,还能够从父进程那里获得所需的初始化数据(即输入数据)。此外,新进程的地址空间通常有两种可能:子进程的地址空间是父进程的地址空间的复制;或者子进程的地址空间为另一个新的程序的地址空间。,3.3 内核中进程的实现,在操作系统中,引起创建进程的事件有以下两种:
46、(1)当操作系统为了满足某用户的服务要求,或进程调度程序调度到某个作业并将其装入内存运行时,由系统专门创建一个进程。(2)基于应用进程(或父进程)的需要,由它自己创建一个新的进程。无论是由操作系统创建一个进程,还是由其他进程来创建一个新的进程,其基本操作是一样的。进程创建原语的主要操作过程为:(1)向系统申请一个空闲的PCB,为新进程获得其内部标识符i。(2)为新进程分配所需的内存空间等资源。(3)根据调用者提供的参数,初始化PCB的内容(如进程内部标识符、进程的初始状态、优先级、内存存放的起始地址和所需资源清单等)。(4)若就绪队列能够容纳新进程,使将新进程插入到就绪队列。,3.3 内核中进
47、程的实现,2进程撤消原语(Terminate Primitive)所谓撤消,是指撤消进程存在的标志PCB。此时,进程返回数据(输出)给其父进程,所占有的全部资源,包括物理内存和虚拟内存、访问的文件和I0缓冲区等等的各类资源,都会被操作系统所释放。引起进程被撤消的事件主要有以下几种:(1)该进程已执行完所有任务而正常终止;(2)由于出现某种错误和故障而导致异常终止,比如程序越界、算术运算、运行超时或I0故障等;(3)进程应外界的请求(如父进程请求或终止)而被迫终止。一个进程可以通过适当的系统调用(如abort)来终止另一个进程。但通常情况下,只有被终止进程的父进程才有权利执行这一系统调用。否则,
48、用户都可能会任意地终止自己或他人的作业。因此,父进程需要知道其所有子进程的标识符,每有一个新的进程被创建,它的标识符就要传递给父进程。父进程撤销其子进程的原因有很多,如子进程使用了超过它所分配到的一些资源;分配给子进程的任务已不再需要;父进程撤销等等。,3.3 内核中进程的实现,进程撤消原语的主要操作过程如下:(1)根据被撤消进程的标识符去检索PCB集合,获得该进程的状态。(2)若被撤消进程为正处于执行状态,则应立即中止该进程的执行,并置调度标志为真,用于表明该进程被终止后应重新进行调度,选择新的进程并分配处理机给它。(3)释放该进程所拥有的全部资源,归还给其父进程或系统。(4)把该进程的PC
49、B从所在队列或链表中移出,然后转进程调度程序。,3.3 内核中进程的实现,3进程阻塞原语(Block Primitive)处于运行状态的进程,在其运行过程中期待某个事件发生:如等待键盘输入,等待磁盘的数据传输完成,或等待其他进程发送一个信息等。当被等待的事件还没有发生时,进程执行阻塞原语,由运行态变为阻塞态。4进程唤醒原语(Wakcup Primitive)当某进程期待的事件到来时,根据等待事件的不同,可分以下两种情况进行讨论。当进程期待的事件是等待输入输出完成时,在输入输出完成后,由硬件设备提出中断请求,CPU响应中断,暂停当前进程的执行,转去进行中断处理。在中断处理中,检查有无等待该输入输
50、出完成的进程。若有,则将该进程从等待队列抽出,将其由阻塞态置为就绪态,插入就绪队列。然后结束中断处理,或者返回被中断进程继续执行,或者转进程调度,重选一个进程投入运行。若期待的事件是等待某进程发送一个信息,当信息发送给该等待进程时,由发送进程把该等待进程唤醒,且将其由阻塞态置为就绪态,插入就绪队列即可。,3.3 内核中进程的实现,5进程挂起原语(Suspend Primitive)在实时系统中,根据实时现场的需要,通常引入挂起原语和解挂(激活)原语,以便将正执行的或没有执行的进程挂起一段时间。此时被挂起的进程由活动状态变为静止状态。当执行的条件成熟时再将它解挂而变为活动状态。只有处于活动状态的