1、计算机操作系统,第一章,操作系统概述,用户观点下的操作系统,第1章 操作系统概述 1.1 操作系统的概念 1.1.1 什么是操作系统 1用户观点 从用户的观点看,操作系统应该提供一个人与计算机打交道的接口,也就是人机接口。用户可以通过操作系统提供的这个接口使用和控制计算机,从而达到计算机为用户服务的目的。 接口的方式有:图形界面的接口(Graphical User Interface,GUI);命令行(Command Line,CL)接口;软件编程的接口,系统观点下的操作系统,2系统观点 操作系统就是资源的分配者。 操作系统要对I/O设备和用户程序加以控制,保证设备的正常运行,防止非法操作,及
2、时诊断设备的故障等。从这个意义上讲,操作系统又是工作流程的调度者。,操作系统,计算机硬件组成,1.1.2 计算机系统概述,CPU实现,CPU两种模式,除了用在嵌入式系统中的非常简单的CPU之外,多数CPU都有两种模式,即核心态(管态)和用户态(目态),在PSW中有一个二进制控制位控制这两种模式。当CPU执行操作系统的代码时,CPU处于核心态,CPU可以执行指令集中的每一条指令,并且使用硬件的每一种功能,访问整个硬件。 相反,当CPU执行用户程序的代码时,CPU处于用户态,仅允许执行整个指令集的一个子集和访问所有功能的一个子集。一般而言,在用户态中有关I/0和内存保护的所有指令是禁止的。当然,将
3、PSW中的模式位设置成核心态也是禁止的。,存贮器层次结构,磁盘驱动器,基址和界限寄存器,存贮器相关概念,由程序所生成的地址被称为虚拟地址(Virtual Address),而由存储器使用的地址称为物理地址(Physical Address)。完成检查和映射工作的装置被称为内存管理单元(Memory Management Unit,MMU)。它位于CPU芯片上或者CPU附近,在逻辑上MMU位于CPU和存储器之间。,中断,总线,操作系统的主要功能,1.1.3 操作系统主要功能,进程管理,1. 进程管理 一个任务从输入、处理、再到输出的完整过程称为作业(Job);进程是分配资源和在处理机上运行的基本
4、单位。因而,进程管理的功能包括:作业和进程调度、进程控制、进程通信、进程同步。 (1)作业和进程调度 一个作业通常经过两级调度才得以在CPU上执行。首先是作业调度,它把选中的一批作业放入内存,并分配其他必要的资源,为这些作业建立相应的进程。然后进程调度按一定的算法从就绪进程中选出一个合适的进程,使之在CPU上运行。,进程管理,(2)进程控制 进程是系统中活动的实体。进程控制包括进程的创建、进程的撤销、进程的阻塞、进程的唤醒等。 (3)进程通信 相互合作的进程之间往往需要交换信息,为此,操作系统要提供通信的机制。 (4)进程同步,内存管理,2. 内存管理 (1)内存分配 内存分配的主要任务是为每
5、道程序分配一定的内存空间。为此,操作系统必须记录整个内存的使用情况,处理用户提出的申请,按照某种策略实施分配,接收系统或用户释放的内存空间。 (2)地址映射 在多道程序环境下,用户程序中所涉及的相对地址与装入内存后实际占用的物理地址就不一样。CPU执行用户程序的时候,要从内存中取出指令或数据,为此就必须把所有的相对地址(或称为逻辑地址)转换成内存的实际物理地址。这就是操作系统的地址映射功能(需要有硬件的支持)。,内存管理,(3)内存保护 不同用户的程序都放在同一内存中,就必须保证它们在各自的内存空间中活动,不能相互干扰,更不能侵占操作系统的空间。另外,还要允许不同用户程序共享一些系统的或用户的
6、程序。 (4)内存扩充 把一个程序当前正在使用的部分(不是全体)放在内存,而其余部分放在磁盘上。在这种“程序部分装入内存”的情况下,就启动并执行它。以后根据程序执行时的要求和内存当时的使用情况,随机地将所需部分调入内存;必要时还要把已经分配出去的内存回收给系统,供其他程序使用(即内存置换)。,设备管理,3. 设备管理 设备管理的主要功能包括:缓冲区管理、设备分配、设备驱动和设备无关性。 (1)缓冲区管理 缓冲区管理的目的是解决CPU和外设速度不匹配的矛盾,使它们充分并行工作,提高各自的利用率。 (2)设备分配 根据用户的I/0请求和相应的分配策略,为该用户分配外部设备、通道和控制器等。,设备管
7、理,(3)设备驱动 实现CPU与通道及外设之间的通信。由CPU向通道发出I/0指令,后者驱动相应设备进行I/0操作。当I/0任务完成后,通道向CPU发出中断信号,由相应的中断处理程序进行处理。 (4)设备无关性 设备无关性又称为设备独立性,即用户编写的程序与实际使用的物理设备无关,由操作系统把用户程序中使用的逻辑设备映射到物理设备上。,文件管理,4. 文件管理 文件管理功能包括:文件存储空间的管理、文件操作的一般管理、目录管理、文件的读写管理和存取控制。 (1)文件存储空间的管理 系统文件和用户文件都要存放在磁盘上。为此,需要由文件系统对所有文件以及文件的存储空间进行统一管理:为新文件分配必要
8、的外存空间,回收释放的文件空间,提高外存的利用率。,文件管理,(2)文件操作的一般管理 包括文件的创建、删除、打开、关闭等。 (3)目录管理 目录管理包括目录文件的组织、实现用户对文件的“按名存取”,以及目录的快速查询和文件的共享等。 (4)文件的读写管理和存取控制 根据用户的请求,从外存中读取数据或将数据写入外存中。为了保证文件信息的安全性,防止未授权用户的存取或破坏,对各种文件(包括目录文件)进行存取控制。,用户接口,5. 用户接口 (1)命令行接口 在提示符之后用户从键盘上输入命令,命令解释程序接收并解释这些命令,然后把它们传递给操作系统内部的程序,执行相应的功能。这是操作系统与用户的交
9、互界面。 (2)程序接口 也称为系统调用接口。系统调用是操作系统内核与用户程序、应用程序连接的接口。在Unix系统上,系统调用以C函数的形式出现,在Windows系统中,系统调用以API函数的形式出现。所以内核之外的程序都必须经由系统调用才能获得操作系统的服务。,用户接口,内核之外的程序都必须经由系统调用才能获得操作系统的服务。系统调用只能在程序中使用,不能直接作为命令在终端上输入和执行。由于系统调用能够改变CPU的执行状态,从用户态变为核心态,直接进入内核执行,所以其执行效率高,并且功能强大。用户在自己的程序中使用系统调用,从而获取系统提供的众多基层服务。 (3)图形接口 也称为GUI接口。
10、用户利用鼠标、窗口、菜单、图标等图形用户界面工具,可以直观、方便、有效地使用系统服务和各种应用程序及实用工具。,操作系统的地位,1.1.4 操作系统的地位,操作系统的地位,由此可见,操作系统是裸机之上的第一层软件,它只在核心态模式下运行,受硬件保护,与硬件关系密切。它不仅对硬件资源直接实施控制、管理,而且它的很多功能的完成是与硬件动作配合起来实现的,如中断系统。操作系统的运行要有良好的硬件环境,这种硬件配置环境往往称做计算机的硬件平台。,操作系统的地位,操作系统是整个计算机系统的控制管理中心,其他所有软件都建立在操作系统之上,操作系统对它们既有支配权力,又为其运行建造必备的环境。因此,在裸机之
11、上每加一层软件后,用户看到的就是一台功能更强的机器,通常把经过软件扩充功能后的机器称为“虚拟机”。在裸机安装操作系统之后,就为其他软件和用户提供了工作环境,往往把这种工作环境称为软件平台。,并发性,1.1.5 操作系统的主要特性 1并发性(Concurrence) 并发性是指两个或两个以上的事件或活动在同一时间间隔内发生。操作系统是一个并发系统,并发性是它的重要特征,操作系统的并发性指它应该具有处理和调度多个程序同时执行的能力。多个I/O 设备同时在输入输出;设备I/O 和CPU计算同时进行;内存中同时有多个系统和用户程序被启动并交替、穿插地执行,这些都是并发性的例子。,多任务系统与并行性,采
12、用了并发技术的系统又称为多任务系统(Multitasking System)。在计算机系统中,并发实际上是一个物理CPU 在若干道程序之间多路复用,这样就可以实现运行程序之间的并发,以及CPU 与I/O 设备、I/O 设备与I/O 设备之间的并行,并发性的实质就是对有限物理资源进行强制性多用户共享,以提高效率。在多处理器系统中,程序的并发性不仅体现在宏观上,而且体现在微观上(即在多个CPU 上)也是并发的,又称并行的。并行性(Parallelism)是指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU 上同时执行。,共享性,2共享性(Sharin
13、g) 共享性是操作系统的另一个重要特性。共享指操作系统中的资源(包括硬件资源和软件资源)可被多个并发执行的进程共同使用,而不是被一个进程所独占。 资源共享的方式可以分成两种: 第一种是互斥访问。系统中的某些资源如打印机、磁带机、卡片机,虽然它们可提供给多个进程使用,但在同一时间内却只允许一个进程访问这些资源,即要求互相排斥地使用这些资源。当一个进程正在使用该资源时,其他欲访问该资源的进程必须等待,仅当该进程访问完毕并释放资源后,才允许另一进程对该资源访问。这种同一时间内只允许一个进程访问的资源称临界资源,许多物理设备,以及某些数据和表格都是临界资源,它们只能互斥地被共享。,共享性,第二种是同时
14、访问。系统中还有许多资源,允许同一时间内多个进程对它们进行访问,这里“同时”是宏观上的说法。典型的可供多进程同时访问的资源是磁盘,可重入程序也可被同时访问。 与共享性有关的问题是资源分配、信息保护、存取控制等,必须要妥善解决好这些问题。 共享性和并发性是操作系统两个最基本的特性,它们互为依存。一方面,资源的共享是因为程序的并发执行而引起的,若系统不允许程序并发执行,自然也就不存在资源共享问题。另一方面,若系统不能对资源共享实施有效管理,必然会影响到程序的并发执行,甚至程序无法并发执行,操作系统也就失去了并发性,导致整个系统效率低下。,异步性,3异步性(Asynchronism) 操作系统的第三
15、个特性是异步性,或称随机性。在多道程序环境中,允许多个进程并发执行,由于资源有限而进程众多,多数情况,进程的执行不是一贯到底,而是“走走停停”。例如,一个进程在CPU 上运行一段时间后,由于等待资源满足或事件发生,它被暂停执行,CPU 转让给另一个进程执行。系统中的进程何时执行?何时暂停?以什么样的速度向前推进?进程总共要花多少时间执行才能完成?这些都是不可预知的,或者说该进程是以异步方式运行的,其导致的直接后果是程序执行结果可能不唯一。,虚拟性,4虚拟性(Virtual) 虚拟性是指操作系统中的一种管理技术,它是把物理上的一个实体变成逻辑上的多个对应物,或把物理上的多个实体变成逻辑上的一个对
16、应物的技术。显然,前者是实际存在的而后者是虚构假想的,采用虚拟技术的目的是为用户提供易于使用、方便高效的操作环境。例如,在多道程序系统中,物理CPU 可以只有一个,每次也仅能执行一道程序,但通过多道程序和分时使用CPU 技术,宏观上有多个程序在执行,就好像有多个CPU 在为各道程序工作一样,物理上的一个CPU 变成了逻辑上的多个CPU。,无OS,1.2 操作系统的发展历史 1.2.1手工操作阶段(无OS),无OS,早期的计算机存在几个问题: (1)编程人员必须熟悉计算机的结构及所有外设。 (2)计算机的利用率低。 (3)程序员必须提前预约使用计算机。 (4)程序员独占使用计算机的全部资源。计算
17、机的CPU和其他设备都在等待用户,而用户的处理时间大部分花费在程序的输入上,所以计算机的利用率非常低。 (5)程序员必须牢记计算机使用的机器码。因为当时没有编程语言,程序员就必须牢记CPU所能认识的所有机器指令代码(这些机器码可都是二进制的啊)。,穿孔卡片,作业,作业:用户在一次算题过程中要求计算机所做工作的集合。即从用户输入一直到计算机输出的一次完整的工作过程。 作业步:编辑、编译、连接装配、运行。 作业的组成:程序、数据、作业说明书。,单道批处理,1.2.2 单道批处理系统(Simple Batch System) 单道批处理系统是在20世纪50年代后期60年代中期,伴随着第二代计算机(晶
18、体管计算机)的出现而产生的。它是对上一节技术及工作流程的改进,具体改进如下: (1)设置专门的计算机操作及维护人员。 (2)采用脱机方式进行输入/输出。 (3)将磁带技术应用到计算机中。 (4)设置作业说明书,在作业说明书上记录该程序是属于哪个程序员的、需要的编译环境是什么、需要的外设是什么。 (5)编制一个监控程序,并让之常驻内存。 (6)计算机内存中只能保留运行用户的一个程序。,脱机批处理,作业,多道批处理,1.2.3 多道批处理系统(Multiprogrammed Batch System) 多道程序设计(MultiProgramming)是指允许多个程序同时进入一个计算机系统的内存并交
19、替运行的方法。也就是说,计算机内存中同时存放了多道(二个以上相互独立的)程序,它们均处于开始和结束点之间。从宏观上看是并行的,多道程序都处于运行过程中,但都未运行结束;从微观上看是串行的,各道程序轮流占用CPU,交替地执行。引入多道程序设计技术的根本目的是提高CPU 的利用率,充分发挥计算机系统部件的并行性,现代计算机系统都采用了多道程序设计技术。,单道批处理运行效率,二道批处理运行效率,多道批处理,下面小结一下操作系统中引入多道程序设计的好处: 一是提高了CPU 的利用率; 二是提高了内存和I/O 设备的利用率; 三是改进了系统的吞吐率; 四是充分发挥了系统的并行性。 要想实现多道程序设计,
20、就必须妥善地解决以下三个问题: 存储保护与程序浮动; CPU的管理和分配; 系统资源的管理和调度。,分时系统,1.2.4 分时系统(Time-Sharing System) 批处理系统使用多道程序技术后,极大地提高了计算机的利用率。但仍然存在以下两个问题: (1)用户不能直接控制作业的运行。 (2)作业的周转时间太长。在批处理系统中,用户提交作业后通常需要经过几个小时甚至几天才能得到所需要的结果,这样的系统对于仅仅需要几分钟的短作业就十分不利。,分时系统,分时的思想于1959 年由MIT 正式提出,并在1962 年开发出了第一个分时系统CTSS(Compatible Time Sharing
21、System),成功地运行在IBM 7094 机上,能支持32个交互式用户同时工作。其实现思想如下:每个用户在各自的终端上以问答方式控制程序运行,系统把中央处理器的时间划分成时间片,轮流分配给各个联机终端用户,每个用户只能在极短时间内执行,若时间片用完,而程序还未做完,则挂起并等待下次分得时间片。由于调试程序的用户常常只发出简短的命令,这样以来,每个用户的每次要求都能得到快速响应,每个用户获得这样的印象,好像他独占了这台计算机一样。实质上,分时系统是多道程序的一个变种,CPU 被若干个交互式用户多路分用,不同之处在于每个用户都有一台联机终端。,分时系统的特征,分时操作系统具有以下特性: 同时性
22、:若干个终端用户同时联机使用计算机,分时就是指多个用户分享使用同一台计算机的CPU 时间。 独立性:终端用户彼此独立,互不干扰,每个终端用户感觉上好像他独占了这台计算机。 及时性:终端用户的立即型请求(即不要求大量CPU 时间处理的请求)能在足够快的时间之内得到响应(通常应该为2-3 秒钟)。这一特性与计算机CPU的处理速度、分时系统中联机终端用户数目和时间片的长短密切相关。 交互性:人机交互,联机工作,用户直接控制其程序的运行,便于程序的调试和排错。,分时与批处理的不同,分时操作系统和批处理操作系统不同点: 追求的目标不同:批处理系统以提高系统资源利用率和作业吞吐率为目标;分时系统则要满足多
23、个联机用户立即型命令的快速响应。 适应的作业不同:批处理适应已经调试好的大型作业;而分时系统适应正在调试的小作业。 资源的利用率不同:批处理操作系统可合理安排不同负载的作业,使各种资源利用率较佳;分时操作系统中,多个终端作业使用相同类型编译系统、运行系统和公共子程序时,系统调用它们的开销较小。 作业控制的方式不同:批处理由用户通过JCL(Job Control Language) 的语句书写作业控制流,预先提交,脱机工作;交互型作业,由用户从键盘输入操作命令控制,交互方式、联机工作。,实时系统,1.2.5 实时系统(Real-Time System) 实时操作系统(Real Time Oper
24、ating System)是指当外界事件或数据产生时,能够接收并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点,过程控制系统,由实时操作系统控制的过程控制系统,较为复杂,通常由四部分组成: (1)数据采集。它用来收集、接收和录入系统工作必须的信息或进行信号检测。 (2)加工处理。它对进入系统的信息进行加工处理,获得控制系统工作必须的参数或作出决定,然后进行输出,记录或显示。 (3)操作控制。它根据加工处理的结果采取适当措施或动作,达到控制或适应环境的目的。 (4)
25、反馈处理。它监督执行机构的执行结果,并将该结果反馈至信号检测或数据接收部件,以便系统根据反馈信息采取进一步措施,达到控制的预期目的。,分时系统与实时系统的区别,分时操作系统和实时操作系统的主要区别是: 设计目标不同。前者为了给多用户提供一个通用的交互型开发运行环境,后者通常为特殊用途提供专用系统; 交互性强弱不同。前者交互性强,后者交互性弱; 响应时间要求不同。前者以用户能接受的响应时间为标准,后者则与受控对象及应用场合有关,变化范围很大。,PC操作系统,1.3操作系统的进一步发展 1.3.1 个人PC操作系统 大家对个人计算机(PC)系统并不陌生,基本上都使用过DOS、Windows系统。早
26、期个人计算机多以Intel 8080、8088/8086以及Z80等为CPU,之后发展到80286、80386、80486以及Pentium II、III、IV等处理器。还有一类功能更强大的个人机,通常称为工作站,如SUN的SPARC工作站、IBM的RS/6000小型机等。 现在流行的个人计算机运行着两类个人机操作系统-单用户操作系统和多用户操作系统。,单用户操作系统,1. 单用户操作系统 四个特征: 个人使用。由于这种机器体积小、功能强、价格便宜,可在办公室、家庭、商店、学校等几乎任何地方安装使用。整个系统由一个人操纵,使用方便。 界面友好。除DOS外,都采用人机交互的工作方式,除命令行方式
27、外,还支持图形界面,如窗口、菜单、滚屏等。无需专门研究,一般用户也能很快熟练操纵机器。 管理方便。用户可根据自己使用的需求,方便地对系统进行管理,如更改配置、安装新的设备或新软件、版本升级或卸载软件等。 适于普及。它能满足广泛的一般性需求,是一般性事物处理、人机交互、学习、网上通信等方面的良好工具,同时低廉的价格促使其应用得到推广。,多用户操作系统,2. 多用户操作系统 多用户操作系统最主要的是Unix系统以及各种类Unix系统,Windows NT/XP/2000系列也属于多用户操作系统。在工作站上运行的各种Unix系统是基于高性能的RISC芯片,如Solaris SVR4,AIX,IRIX
28、等,基于Intel芯片的Unix系统主要有SCO OpenServer,SCO UnixWare 7,Xenix以及近来得到迅速推广的Linux。 多用户系统除了具有界面友好、管理方便和适于普及(尤其对SCO Unix和Linux)等特征外,还具有多用户使用、可移植性好、功能强大、通信能力强等优点。现在的个人计算机正通过网络连接在一起,实现信息传递、资源共享等功能。,网络操作系统,1.3.2 网络操作系统 计算机网络有如下特点: (1)分布性。网络上的节点计算机可以位于不同的地点,各自执行自己的任务。根据要求,一项大任务可划分为若干子任务,分别由不同的计算机执行。 (2)自治性。网上的每台计算
29、机都有自己的内存、I/0设备和操作系统,能够独立完成自己承担的任务。网络系统中的各个资源之间多是松散耦合的,并且不具备整个系统统一任务的调度的功能。 (3)互连性。利用互连网络把不同地点的资源(包括硬件资源和软件资源)在物理上和逻辑上连接在一起,在统一的网络操作系统的控制下,实现网络通信和资源共享。,网络操作系统,(4)可见性。计算机网络中的资源对用户是可见的。用户任务通常在本地机器上运行,利用网络操作系统提供的服务可共享其它主机上的资源。所以,用户心目中的计算机网络是一个多机系统。 网络操作系统有三种基本的模式: 客户机/服务器(Client/Server)模式; 浏览器/服务器(Web/S
30、erver)模式; 点对点模式(Peer-to-Peer)模式。,分布式操作系统,1.3.3 分布式操作系统 多计算机系统除网络系统外,还有分布式系统。它把大量的计算机组织在一起,彼此通过高速网络进行连接。分布式系统有效地解决了地域分布很广的若干计算机系统间的资源共享、并行工作、信息传输、数据保护等问题,从而把计算机技术和应用推向一个新阶段。 分布式系统有如下特点: (1)分布式处理。 (2)模块化结构。 (3)利用信息通信。 (4)实施整体控制。,分布式操作系统,分布式操作系统具备以下特征: (1)透明性。要让每个用户感觉到这种分布式系统就是老式的单CPU分时系统,最容易的办法是对用户隐藏系
31、统内部的实现细节,如资源的物理位置,活动的迁移,并发控制,系统容错处理等 (2)灵活性。可以根据用户的需求和使用情况,方便地对系统进行修改或者扩充。,分布式操作系统,(3)可靠性。如果系统中某台机器不能工作了,就有另外的机器做它的工作。可靠性包括可用性(系统可供使用的时间)、安全性(文件和其他资源受保护,防止未授权使用)和容错性(在一定限制内对故障的容忍程度)。 (4)高性能。分布式系统有很高的性能,它不仅速度快、响应及时、资源利用率高,而且网络通信能力强。 (5)可扩充性。分布式系统能根据使用环境和应用需要,方便地扩充或缩小其规模。,其他操作系统,1.3.4 嵌入式操作系统 1.3.5 大型
32、机操作系统 大型机与个人计算机的主要差别是I/0的处理能力。 1.3.6 服务器操作系统 服务器操作系统安装在服务器上,服务器可以是个人计算机、工作站或者大型机。它们通过网络同时为多个用户服务,并且允许用户共享硬件和软件资源。 1.3.7 多处理器操作系统,多处理器,最常用的多处理器系统是对称多处理器(SMP)系统。系统中的每个处理器运行同一个操作系统的副本,彼此通过共享内存实现通信。所有的处理器是对等的,没有主、从之分。与此对应,有些系统采用非对称多处理器(ASMP)系统,其中每个处理器都指派专门的任务:有一个主处理器控制整个系统,而其余处理器执行主处理器下达的指令或者执行预先规定好的任务。
33、这是一种主/从关系。 多处理器系统的优点主要有如下三点: (1)增加吞吐量。 (2)提高性价比。 (3)提高可靠性。,智能卡操作系统,1.3.8 智能卡操作系统 最小的操作系统运行在智能卡上,智能卡是一种包含有一块CPU芯片的信用卡设备。它有非常严格的运行能耗和存储空间的限制。其中,有些智能卡只具有单项功能,如电子支付,但是,其他的智能卡则可在同一块卡中拥有多项功能。它们是专用的操作系统。 有些智能卡是面向Java的。,操作系统大观,1.4 操作系统大观 1.4.1 Windows操作系统 1.4.2 Unix操作系统,UNIX的演进,LINUX操作系统,1.4.3 Linux操作系统 Lin
34、ux之所以受到广大计算机爱好者的喜爱,主要原因有两个,一是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。另一个原因是,它具有Unix的全部功能,任何使用Unix操作系统或想要学习Unix操作系统的人都可以从Linux中获益。,其他操作系统,1.4.4 FreeBSD操作系统 1.4.5 Netware操作系统 1.4.6 AIX操作系统 1.4.7 Solaris操作系统 1.4.8 Mac 0S操作系统 1.4.9 其它操作系统 1. OpenVMS操作系统 2. HP-UX操作系统 3. IRIX操作
35、系统 4. DOS操作系统,操作系统的结构,1.5 操作系统的结构 操作系统是一种复杂的软件,为了研制操作系统,首先必须研究它的结构,力求设计出结构良好的程序。操作系统的结构设计有两层含义,一是研究操作系统的整体结构,由程序的构成成分组成操作系统程序的构造过程和方法;二是研究操作系统程序的局部结构,包括数据结构和控制结构。采用不同的构件和构造方法可组成不同结构的操作系统。,内核,1内核 由于操作系统设计的目标和环境不同,内核的大小和功能有很大差别。有些设计希望把内核做得尽量小仅具有极少的必须功能,称为微内核(Micro Kernel),其他功能都在核外实现,通过微内核提供的消息传递机制完成其余
36、功能模块间的联系;有些则希望内核具有较多的功能,虽然其内部也可划分成层次或模块,但运行时是一个大的二进制映象,模块间的联系可通过函数或过程调用实现,称为单内核(Monolithic Kernel)。,内核功能,一般而言,内核必须提供以下三方面功能: (1)中断处理。中断处理是内核中最基本的功能,也是多道程序的基础,为了缩短屏蔽中断的时间,增加系统内的并发性,通常它仅仅进行有限的、简短的处理,其余任务交给在内核之外的特殊用户态进程完成。 (2)进程调度。主要职能是分配CPU。当系统中发生了一个事件之后,可能一个进程要让出CPU,而另一个进程又要获得CPU。进程调度按照一定策略管理CPU的转让,以
37、及完成保护和恢复现场的工作。由于它是协调进程竞争CPU的程序,所以它不是进程而是内核中的一个程序。 (3)原语管理。原语是内核中实现某一功能的不可中断过程,用来协调系统内各进程之间的通信、并发执行和共享资源。,内核的执行属性,内核的执行有以下属性: (1)内核是由中断驱动的。只有当发生中断事件后由硬件交换PSW才引出操作系统的内核进行中断处理,且在处理完中断事件后内核自行退出。 (2)内核在屏蔽中断状态下连续执行。在处理某个中断时,为避免中断的嵌套可能引起的错误,必须屏蔽该级中断。有时为了处理简单,把其他一些中断也暂时屏蔽了。这样在内核运行期间不能插入内核以外的程序执行,因而,能保证内核连续执
38、行,完成任务。,进程,2进程 采用进程概念使得操作系统结构变得清晰,主要表现在: 进程的切换由内核的进程调度程序统一管理。 进程间的通信由信号量、管程、消息等机制完成,从而,一个进程无法有意或无意破坏其他进程的数据,提高了系统的安全性和可靠性。 进程结构较好刻画了系统的并发性,动态地描述出系统的执行过程,因而,具有进程结构的操作系统,结构清晰、整齐划一,可维护性好。,线程,3线程 在早期操作系统中,进程是资源分配以及调度的基本单位。由于进程通信和切换的开销相当大,限制了系统中并发执行的进程数目,加之网络应用的快速发展,单靠进程是无能为力的,于是,近年来开始流行多线程结构的进程(MultiThr
39、eaded Process),亦叫多线程。 在一个多线程系统中,进程是系统进行资源分配的单位,而线程才是系统进行调度的独立单位。所以,可以把线程也看作是一种构件,它是组成进程构件的更小的构件单位。,管程,4管程 管程是管理共享资源的程序,对管程的调用表示对共享资源的请求与释放。管程可以被多个进程或管程嵌套调用,但它们只能互斥地访问管程。管程应包含条件变量,当条件不满足时,可以通过对条件变量做延迟操作使调用进程等待,直到另一个进程调用管程过程并执行一个释放操作为止。,类程,5类程 类程用于管理私有资源,对类程的调用表示对私有资源的操作。它仅能被进程及起源于同一进程的其他类程或管程嵌套调用链所调用
40、。其本身也可以调用其他类程或管程。类程可以看作子程序概念的扩充,但一个类程可以包含多个过程,不像子程序仅仅一个。 上面简单讨论了操作系统的构件,采用不同构件和构造方法可组成不同结构的操作系统。从操作系统的体系结构来看,可以把操作系统分成:整体式结构、层次式结构、虚拟机结构和客户服务器及微内核结构。,整体结构,1.5.2 整体结构 操作系统的整体式结构是基于结构化程序设计的一种软件结构设计方法。主要设计思想和步骤如下:把模块作为操作系统的基本单位,按照功能需要而不是根据程序和数据的特性把整个系统分解为若干模块,每个模块具有一定独立功能,若干个关联模块协作完成某个功能;明确各个模块之间的接口关系,
41、各个模块间可以不加控制自由调用,数据多数作为全程变量使用;模块之间需要传递参数或返回结果时,其个数和方式也可以根据需要随意约定;然后,分别设计、编码、调试各个模块;最后,把所有模块连结成一个完整的系统。,层次结构,1.5.3 层次结构 为了能让操作系统的结构更加清晰,易于扩充和移植,在模块接口结构的基础上产生了层次式结构的操作系统。所谓层次结构,即是把操作系统划分为内核和若干模块,这些模块按功能的调用次序排列成若干层次,各层之间只能是单向依赖或单向调用关系,即低层为高层服务,高层可以调用低层的功能,反之则不能,这样不但系统结构清晰,而且不构成循环调用。,虚拟机,1.5.4 虚拟机 物理计算机资
42、源通过多重化和共享技术可改变成多个虚拟机。这种技术的基本做法是:通过用一类物理设备来模拟另一类物理设备,或通过分时地使用一类物理设备,把一个物理实体改变成若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上的对应物是虚幻的、感觉上的。多重化和共享硬部件的做法如下:CPU 调度程序使各个进程共享物理CPU,或者说多重化出许多虚CPU,每个进程可分得一个;虚存管理使每台虚CPU 都有自己的虚存空间;Spooling 技术和文件系统提供了虚拟读卡机、穿卡机和行式打印机;各个用户的终端通过分时使用处理器时间,提供了虚拟机操作员控制台;每台虚拟机的磁盘是通过划分物理磁盘若干磁道而形成的,称作“小盘”。,
43、CS系统,1.5.5 客户机/服务器(C/S)系统 随着网络技术和分布式数据库技术的发展,产生了客户/服务器(Client/Server)结构和微内核结构的操作系统。 客户/服务器结构的思想如下:将操作系统分成两大部分,一是运行在用户态并以C/S 方式活动的进程;二是运行在核心态的内核。除内核部分外,操作系统的其他部分被分成若干相对独立的进程,每一个进程实现一类服务,称服务器进程,例如,提供文件管理服务、进程管理服务、存储管理服务、网络通信服务等等。(用户进程也在该层并以C/S 方式活动,是一种客户进程)。服务器进程的任务是检查是否有客户提出服务请求,如果有请求则在满足客户的要求后返回结果,于
44、是,用户进程与服务器进程形成了客户/服务器关系。,系统调用,1.6 系统调用 1.6.1 什么是系统调用 系统调用(System Call),顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。,系统调用,系统调用是操作系统为程序设计人员提供的接口服务,是进入系统内核空间的一种方法。使用系统调用可以充分利用计算机资源,使编写的程序更加灵活,功能更加强大。 不同的操作系统有各自的系统调用方法。如Win
45、dows API(Application Programming Interface),便是Windows的系统调用。Linux的系统调用由于其内核代码完全公开,所以可以细致地分析其系统调用的机制。 从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。,系统调用的种类,操作系统提供的系统调用很多,从功能上大致可分成六类: (1)进程管理:终止或异常终止进程、装入和执行进程、创建和撤销进程、获取和设置进程属性。 (2)文件操作:建立文件、删除文件、打开文件、关闭文件、读写文件、获得和设置文
46、件属性。 (3)设备管理:申请设备、释放设备、设备I/O 和重定向、获得和设置设备属性、逻辑上连接和释放设备。 (4)内存管理:申请内存和释放内存。 (5) 系统管理:用户、权限管理、时间设置、系统参数。 (6)通信管理:主机名、域名、IP地址的设置与获取,建立和断开通信连接、发送和接收消息、传送状态信息、联接和断开远程设备。,系统调用,系统调用的实现,1.6.2 系统调用的实现 每个操作系统都提供几十到几百条系统调用。在操作系统中,实现系统调用功能的机制称陷入,由于系统调用而引起处理器中断的机器指令称陷入指令(Trap)。在操作系统中,每个系统调用都事先规定了编号,称功能号,在陷入指令中必须
47、指明对应系统调用的功能号,在大多数情况下,还附带有传递给内部处理程序的参数。 如果一个进程正在用户态中运行一个用户程序,并且需要一个系统服务,比如从一个文件中读入数据,那么它就必须执行一个陷入操作将控制转移到操作系统。操作系统通过检查参数,找出所需要的调用进程。然后,执行系统调用,并把控制权返回给系统调用后面的指令。,Read系统调用,中断下陷入,1.6.3 Trap与Interrupt 在早期的计算机系统中,只有中断的概念,没有陷入的概念。现代操作系统将中断进行了细的划分,分为陷入(Trap)和中断(Interrupt)。 中断(interrupt)又称为外中断或硬中断,中断源是来自CPU之
48、外的设备,如键盘中断、鼠标中断等; 陷入(trap)又称为内中断或软中断,中断源是来自于CPU的内部,如CPU在执行除法指令时,遇到的除零溢出操作等。 系统调用是由陷入(trap)引发的,而不是由中断(interrupt)引发的。,系统调用与过程函数,1.6.4 系统调用与过程(函数) 程序中执行系统调用或过程(函数)调用,虽然都是对某种功能或服务的需求,但两者从调用形式到具体实现都有很大区别。 (1)调用形式不同。 (2)被调用代码的位置不同。 (3)提供方式不同。 (4)调用的实现不同。 (5)调用返回不同。,小结,1.7 小 结 1. 从用户的观点看,操作系统应该是什么样的? 从用户的观
49、点看,操作系统应该提供三种人机接口:图形化接口、命令行接口、编程接口,并且操作系统是一个虚拟机,它增强了计算机裸机的功能,方便用户的使用。 2. 从系统的观点看,操作系统应该是什么样的? 从系统的观点看,操作系统是计算机软、硬件资源的管理者及工作流程的调度者。 3. CPU的两种工作模式是什么? 用户态和核心态。当CPU处于核心态模式时,可以执行所有的指令,并且能够访问计算机的整个硬件;当CPU处于用户态模式时,只能执行部分指令,关于I/O和内存保护的指令不能执行,所以不能改写计算机的硬件。,小结,4. 存储体系的层次结构? 从上至下依次为:寄存器、高速缓存、内存、硬盘、磁带。由上至下,速度越
50、来越慢、容量越来越大,价格越来越便宜。 5. CPU与外设交换信息的三种方式? 程序查询方式、中断方式、DMA方式。 6. 操作系统的主要功能是什么? 根据计算机的硬件组成和用户需求,操作系统的主要功能有五个方面:进程管理、内存管理、设备管理、文件管理及提供一个人机交互接口。 7. 多道批处理操作系统产生的技术基础是什么? 多道程序设计的技术基础是中断技术和通道技术。 8. 操作系统的三种基本类型? 多道批处理系统、分时系统、实时系统。,小结,9. 多道程序设计的概念及目的 多道程序设计是指允许多个程序同时进入一个计算机系统的内存并交替运行的方法。也就是说,计算机内存中同时存放了多道(二个以上相互独立的)程序,它们均处于开始和结束点之间。从宏观上看是并行的,多道程序都处于运行过程中,但都未运行结束;从微观上看是串行的,各道程序轮流占用CPU,交替地执行。引入多道程序设计技术的根本目的是提高CPU 的利用率,充分发挥计算机系统部件的并行性。 10. 操作系统的结构有哪些? 从操作系统的体系结构来看,可以把操作系统分成:整体式结构、层次式结构、虚拟机结构和客户服务器及微内核结构。,