【考纲内容】

  • 操作系统的基本概念
  • 操作系统的发展历程
  • 程序运行环境
    • CPU运行模式:内核模式与用户模式
    • 中断和异常的处理;系统调用
    • 程序的链接与装入;程序运行时内存映像与地址空间
  • 操作系统结构
    • 分层、模块化、宏内核、微内核、外核
  • 操作系统引导
  • 虚拟

    1.1 操作系统的基本概念

    1.1.1 操作系统的概念

    在信息化的时代,软件是计算机系统的灵魂,而作为软件核心的操作系统。已与现代计算机系统密不可分、融为一体。计算机操作系统自下而上可大致分为四部分:硬件、操作系统、应用程序和用户(这里的划分与计算机组成原理中的分层不同)。操作系统管理各种计算机硬件,为应用程序提供基础,并充当计算机硬件与用户之间的中介。
    硬件如中央处理器、内存、输入/输出设备等,提供基本的计算资 源。应用程序如字处理程序、电子制表软件、编译器、网络浏览器等,规定按何种方式使用这些资源来解决用户的计算问题。操作系统控制和协调各用户的应用程序对硬件的分配与使用。
    在计算机系统的运行过程中,操作系统提供了正确使用这些资源的方法。
    综上所述,操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,合理地组织、调度计算机的工作与资源的分配;进而为用户和其他软件提供方便的接口与环境的程序集合②。操作系统是计算机系统中最基本的系统软件③
    ①操作系统是系统资源的管理者。
    ②向上层提供方便易用的服务。
    ③是最接近硬件的一层软件。
    注:操作系统管理计算机的硬件和软件资源,这些资源统称为计算机资源。操作系统不仅管理处理机、存储器等硬件资源,而且也管理文件,文件不属于硬
    件资源,但属于计算机资源。操作系统管理文件,是指操作系统关心计算机中文件的逻辑结构、物理结构、文件内部结构、多文件之间如何组织的问题,而
    不是关心文件的具体内容。
    二、操作系统的目标和功能
    1. 操作系统作为计算机系统资源的管理者
    为了给多道程序提供良好的运行环境,操作系统应具有一下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。为了方便用户使用操作系
    统,还必须向用户提供接口。同时,操作系统可用来扩充机器,以提供更方便的服务、更高的资源利用率。
    2. 操作系统作为用户与计算机硬件系统之间的接口
    为了让用户方便、快捷、可靠地操纵计算机硬件并运行自己的程序,操作系统还提供了用户的接口,分为两类:
    (D命令接口(用户利用这些操作命令来组织和控制作业的执行)
    使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。按作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令
    接口。
    •联机命令接口
    又称交互式命令接口,适用于分时或实时系统的接口,由一组键盘操作命令组成。
    特点:用户说一句,系统跟着做一句。
    •脱机命令接口
    又称批处理命令接口,适用于批处理系统,由一组作业控制命令组成。
    特点:用户说一堆,系统跟着做一堆。
    (2)程序接口(编程人员可以使用它们来请求操作系统服务)
    程序接口由一组系统调用(也称广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统为其提供服务(如使用各种外部设备、申请分配
    和回收内存等)。
    U操作系统不允许用户直接操作各种硬件资源,普通用户不能直接使用程序接口,可以在程序中进行系统调用来使用程序接口,请求内核为其服务,
    间接地使用各种资源。操作系统还提供图形接口,当然,图形接口其实是调用了系统调用而实现的功能。
    封装思想:操作系统把一些复杂的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出
    命令即可。
    3. 操作系统用作扩充机器
    没有任何软件支持的计算机成为裸机,它仅构成计算机系统的物质基础。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,
    将裸机改造成功能更强、使用更方便的机器。通常把覆盖了软件的机器称为扩充机器或虚拟机。
    三、操作系统的特征
    ★并发(Concurrence)
    •并发:指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时
    执行的能力。在操作系统中,引入进程的目的是使程序能并发。
    •并行:指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作。并行性需要有相关硬件的支持,如多流水线或多处理机硬件
    环境。
    同一时间间隔 併发)和同一时刻(并行)的区别。在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而在每个时刻,单处理机环境下
    实际仅能有一道程序执行,因此微观上这些程序仍是分时交替执行的。操作系统的并发性是通过分时得以实现的。
    重要考点:
    •单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。
    •多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。
    共享(Sharing)
    共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。共享可分为两种资源共享方式:
    •互斥共享方式
    系统中的某些资源(如打印机),虽然可供多个进程使用,但在一段时间内只允许一个进程访问该资源。把在一段时间内只允许一个进程访问的资源称
    为临界资源或独占资源。计算机系统中的大多数物理设备及某些软件中所用的栈、变量和表格,都属于临界资源,它们都要求被互斥地共享。
    •同时访问方式
    系统中的某些资源,允许一个时间段内由多个进程“同时”访问。这里所说的“同时”通常是宏观上的,而在微观上,这些进程可能是交替地对该资源
    进行访问的即”分时共享“的。可供多个进程”同时“访问的典型资源是磁盘设备,即允许若干个用户同时访问该文件。
    并发和共享
    并发和共享是操作系统两个最基本的特征,两者之间互为存在的条件:
    .资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享的问题。
    •若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行。
    虚拟(Virtual)
    虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。用于实现虚拟
    的技术,称为虚拟技术。
    虚拟处理器技术:通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器。此时,虽然只有一个处理器,但它能同时为多个
    用户服务,使每个终端用户都感觉有一个中央处理器(CPU)在专门为它服务。利用多道程序设计技术把一个物理上的CPU虚拟为多个逻辑上的CPU,称为
    虚拟处理器。
    虚拟存储器技术:可以将一台机器的物理存储器变为虚拟存储器,以便从逻辑上扩充存储器的容量。此时用户所感觉到的内存容量是虚的。我们把用户
    感觉到(但实际上不存在)的存储器称为虚拟存储器。
    虚拟设备技术:将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备,使原来仅允许在一段时间内由一个用户
    访问的设备(即临界资源)变为在一段时间内允许多个用户同时访问的共享设备。
    操作系统的虚拟技术可归纳为:时分复用技术,如虚拟处理器;空分复用技术,如虚拟存储器。
    go显然,如果失去了并发性,则一个时间段内系统中只需运行一道程序,那么就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性。
    异步(Asynchronism)
    在多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停的,以不可预知的速度向前推进,这就是进程的
    异步性。
    异步性使得操作系统运行在一种随机的环境下,可能导致进程产生与时间有关的错误(就像对全局变量的访问顺序不当会导致程序出错一样)。然而,
    只要运行环境相同,操作系统就须保证多次运行进程后都能获得相同的结果。
    如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。
    1.2操作系统的发展与分类
    ★手工操作阶段(此阶段无操作系统)
    用户在计算机上算题的所有工作都要人工干预,如程序的装入、运行、结果的输出等。随着计算机硬件的发展,人机矛盾(速度和资源利用)越来越
    大。
    缺点:
    1. 用户独占全机,虽然不会出现因资源已被其他用户占用而等待的现象,但资源利用率极低。
    2. CPU等待手工操作,CPU的利用不充分。
    批处理阶段(操作系统开始出现)
    为了解决人机矛盾及CPU和1/◦设备之间速度不匹配的矛盾,出现了批处理系统。按照发展历程又分为单道批处理系统、多道批处理系统。
    1.单道批处理系统
    引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。系统对作业的处理是成批进行的,但内存中始终保持一
    道作业。
    特征:
    •自动性。磁带上的一批作业能自动地逐个运行,而无须人工干预。
    •顺序性。磁带上的各道作业顺序地进入内存,各道作业的完成顺序与它们进入内存的顺序在正常情况下应完全相同,亦即先调入内存的作业先完成。
    •单道性。内存中仅有一道程序运行,即监督程序每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换入其后继程序进入
    内存运行。
    优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
    缺点:内存中仅能有一道程序运行。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
    2.多道批处理系统
    多道程序设计技术允许多个程序同时进入内存并允许它们在CPU中交替地运行,这些程序共享系统中的各种硬/软件资源。
    特征:
    •多道。计算机内存中同时存放多道相互独立的程序。
    .宏观上并行。同时进入系统的多道程序都处于运行过程中,即它们先后开始各自的运行,但都未运行完毕。
    •微观上串行。内存中的多道程序轮流占有CPU,交替执行。
    优点:资源利用率高,多道程序并发执行共享计算机资源;系统吞吐量大,CPU和其他资源保持“忙碌”状态。
    缺点:用户响应时间较长;不提供人机交互能力,用户既不能了解自己的程序的运行情况,又不能控制计算机(如无法调试程序,无法在程序运行过程中输
    ★分时操作系统
    分时技术:指把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。
    分时操作系统:指多个用户通过终端同时共享一台主机,这些终端连接在主机上,用户可以同时与主机进行交互操作而互不干扰。
    分时系统也是支持多道程序设计的系统,但不同于多道批处理系统。多道批处理是实现作业自动控制而无须人工干预的系统,而分时系统是实现人机交
    互的系统,这使得分时系统具有与批处理系统有不同的特征:
    •同时性。也称多路性,指允许多个终端用户同时使用一台计算机,即一台计算机与若干台终端相连接,终端上的这些用户可以同时或基本同时使用计算
    机。
    .交互性。用户能够方便地与系统进行人机对话,即用户通过终端采用人机对话的方式直接控制程序的运行,与同程序进行交互。
    •独立性。系统中多个用户可以彼此独立地进行操作,互不干扰,单个用户感觉不到别人也在使用这台计算机,好像只有自己单独使用这台计算机一样。
    •及时性。用户请求能在很短时间内获得响应。分时系统采用时间片轮转方式使一台计算机同时为多个终端服务,使用户能够对系统的及时响应感到满
    意。
    优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
    缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
    注:在一些应用场合,需要系统能对外部的信息在规定的时间(比时间片的时间还短)内做出处理(如飞机订票系统或导弹制导系统)。因此,实时操作系
    统应运而生。
    ★实时操作系统
    为了能在某个时间限制内完成某些紧急任务而不需要时间片排队,诞生了实时操作系统。这里的时间限制分为两种情况:
    1. 若某个动作必须绝对地在规定的时刻(或规定的时间范围)发生,则称为硬实时系统,如飞行器的飞行自动控制系统。
    2. 若能够接受偶尔违反时间规定且不会引起任何永久性的损害,则称为软实时系统,如飞机订票系统、银行管理系统。
    优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
    在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并在严格的时限内处理完接收的事件。实时操作系统的主要特点是及时性和可
    靠性。
    网络操作系统
    伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能。最主要特点是网络中各种资源的共享(如文件共
    享)和各台计算机之间的通信。(Windows NT就是一种典型的网络操作系统,网站服务器就可以使用)
    分布式计算机系统
    主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。用于管理分布式
    计算机系统的操作系统称为分布式计算机系统。分布式操作系统与网络操作系统的本质不同是,分布式操作系统中的若干计算机相互协同完成同一任务。
    个人计算机操作系统
    是目前使用最广泛的操作系统,应用于文字处理、电子表格、游戏中。常见的由Windows. Linux、MacOS等。
    13操作系统的运行坏境
    一、操作系统的运行机制
    两种程序:计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序(即系统外层的应用程序,或简称“应用
    程序”)。内核程序是应用程序的管理者,因此内核程序要执行一些特权指令,而应用程序出于安全考虑不能执行这些指令,应用程序只能使用非特权指令
    (如加法指令、减法指令等)。
    两种指令:特权指令,指计算机中不允许用户直接使用的指令,如I/O指令、置中断指令,存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器
    等的指令。
    两种处理器状态:在具体实现上,将CPU的状态划分为用户态(目态)和核心态(又称管态、内核态)。CPU处于内核态时,说明此时正在运行的是内核程
    序,此时CPU可以执行特权指令;CPU处于用户态时,说明此时正在运行的是应用程序,此时CPU只能执行非特权指令。
    操作系统的各项功能分别被设置在不同的层次上。一些与硬件关联较紧密的模块,如时钟管理、中断处理、设备驱动等处于最低层。其次是运行频率较
    高的程序,如进程管理、存储器管理和设备管理等。这两部分内容构成了操作系统的内核,这部分内容的指令操作工作在内核态。内核是操作系统最重要最
    核心的部分,内核是计算机上配置的底层软件,是计算机功能的延伸(操作系统的功能未必都在内核中,如图形化用户界面GUI)。
    操作系统内核(大多数操作系统的内核包括4方面的内容):
    时钟管理
    时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,通过时钟中断的管理,可以实现进程的切换。例如,在分时
    操作系统中采用时间片轮转调度,在实时系统中按截止时间控制运行,在批处理系统中通过时钟管理来衡量一个作业的运行程度等。因此,系统管理的方方
    面面无不依赖时钟。
    中断机制
    弓I入中断技术的初衷是提高多道程序运行环境中CPU的利用率,而且主要是针对外部设备的。中断机制中,只有一小部分功能属于内核,它们负责保护
    和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。
    原语
    1. 处于操作系统的最低层,是最接近硬件的部分。
    2. 这些程序的运行具有原子性,其操作只能一气呵成(主要从系统安全性和便于管理考虑)。
    3. 这些程序的运行时间都较短,且调用频繁。
    通常把具有这些特点的程序称为原语。定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后再打开中断。
    .正常情况下,CPU每执行完一条指令都会例行检查是否有中断信号需要处理,如果有,则暂停运行当前这段程序,转而执行相应的中断处理程序。
    • CPU执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查。这样,关中断、开中断之间的这些指令序列就是不
    可被中断的,这就实现了 “原子性。
    系统控制的数据结构及处理
    为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下3种:
    1. 进程管理。进程状态管理、进度调度和分派、创建与撤销进程控制块等。
    2. 存储器管理。存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
    3. 设备管理。缓冲区管理、设备分配和回收等。
    从上述内容可以了解,内核态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。
    二、中断和异常
    在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。
    系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。因此,需要实现从用户态进入内核态。在实际操作系统中,发生中断或异常,运行用
    户态的CPU会立即进入核心态,这是通过硬件实现的(例如,CPU中有一个寄存器程序状态字寄存器PSW,其中有个二进制位,0表示“内核态”,1表示
    “用户态”)。
    操作系统的发展过程大体上就是一个想方设法不断提高资源利用率的过程,而提高资源利用率就需要在程序并未使用某种资源时,把它对那种资源的占
    有权释放,而这一行为就需要通过中断实现。
    ★状态的改变:
    1. 内核态一>用户态:执行一条特权指令一參改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
    2. 用户态一>内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。(除了非法使用特权指令之
    夕卜,还有很多事件会触发中断信号。一个共性是,但凡需要操作系统介入的地方,都会触发中断信号)。
    冲断的作用:| “中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。
    ■ “中断”是让操作系统内核夺回CPU使用权的唯一途径。
    中断的类型:
    .中断也称外中断,与当前执行的指令无关,中断信号来源于CPU外部。
    。时钟中断:表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务。
    。I/O中断请求:表示设备输入/$愈出处理已经完成,希望处理机能够向设备发下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。
    •异常也称内中断、例外或陷入(trap),与当前执行的指令有关,中断信号来源于CPU内部。
    。陷入:由陷入指令引发,是应用程序故意引发的,意味着应用程序主动地将CPU控制权还给操作系统内核。“系统调用”就是通过陷入指令完成
    的。
    。故障:由错误条件弓I起的,可能被内核程序修复。内核程序修复故障后会把CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
    。终止:由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除
    0、非法使用特权指令。
    中断的处理:
    不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中
    断处理程序在内存中的存放位置。
    三、系统调用
    系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来
    请求获得操作系统内核的服务。
    系统凋用和库函数的区别和联系:
    操作系统接口主要有命令接口和程序接口(系统调用)。库函数是高级语言中提供的与系统调用对应的函数(也有些库函数与系统调用无关),目的是
    隐藏“访管”指令的细节,使系统调用更为方便、抽象。但是,库函数属于用户程序而非系统调用,是系统调用的上层。未使用系统调用的库函数,其执行
    效率通常要比系统调用的高,因为使用系统调用时,需要上下文的切换及状态的转换(由用户态转向内核态)。
    •不涉及系统调用的库函数:如“取绝对值”的函数。
    •涉及系统调用的库函数:如“创建一个新文件”的函数。
    什么功能要用到系统调用?
    应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、
    I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。
    这么设计的目的是:用户程序不能直接执行对系统影响非常大的操作,必须通过系统调用的方式请求操作系统代为执行,以便保证系统的稳定性和安全
    性,防止用户程序随意更改或访问重要的系统资源,影响其他进程的运行。
    操作系统的运行环境可以理解为:
    用户通过操作系统运行上层程序(如系统提供的命令解释程序或用户自编程序),而这个上层程序的运行依赖于操作系统的底层管理程序提供服务支
    持,当需要管理程序服务时,系统则通过硬件中断机制进入核心态,运行管理程序;也可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就
    通过异常处理来进入核心态。管理程序运行结束时,用户程序需要继续运行,此时通过相应的保存的程序现场退出中断处理程序或异常处理程序,返回断点
    处继续执行。
    、系统调用执行过程:
    •若程序的运行由用户态转到内核态,则会用到陷入指令(trap指令、访管指令),这是在用户态执行的,所以不它不可能是特权指令。执行陷入指令之
    后立即引发一个内中断,使CPU进入内核态。
    •发出系统调用请求是在用户态,而对系统调用的相应处理在内核态下进行。
    .由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的。
    访管指令与访管中断:
    访管指令是一条可以在用户态下执行的指令。在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中
    断),将操作系统转换为核心态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。
    引入访管指令是因为用户程序只能在用户态下运行。若用户程序想要完成在用户态下无法完成的工作。解决这个问题要靠访管指令。访管指令本身不是
    特权指令,其基本功能是让程序拥有“自愿进管”的手段,从而引起访管中断。
    处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按系统调用的操作数和参数转到相应
    的例行子程序。完成服务功能后,退出中断,返回到用户程序断点继续执行。
    大内核:
    大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体,运行在内核态。
    优点:各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。
    缺点:内核代码庞大、结构混乱复杂,难以维护。
    微内核:
    将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在内核态执行的功能移到用户态执行。
    优点:内核功能少,结构清晰,降低了内核的设计复杂性,方便维护。
    缺点:需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大,性能低。