事前提一嘴
室友考完研了,下一年就是我了,真不想和他们一起考,压力太大了,这里分享一点笔记吧
采用王道考研的书以及视频,去掉了一些书上的废话,加上了视频中的重点,最后总结出来的
如有侵权,即可删除
计算机系统概述
考纲内容
- 操作系统的基本概念
- 操作系统的发展历程
- 程序运行环境
CPU运行模式;内核模式与用户模式
中断和异常处理;系统调用
程序的链接与装入;车光绪运行时内存映像与地址空间 - 操作系统结构
分层、模块化、宏内核、微内核、外核 - 操作系统引导
- 虚拟机
复习提示
本章通常以选择题的形式考查,重点考察操作系统的功能、运行环境和提供的服务
复习操作系统时,首先要形成大体框架,并通过反复复习和做题巩固知识体系,然后把操作系统的所有内容串成一个整体
操作系统的基本概念
操作系统的概念
计算机系统自下而上可大致分为4部分:硬件
、操作系统
、应用程序
和用户
操作系统管理各种计算机硬件,为应用程序提供基础,并充当计算机硬件与用户之间的中介
- 硬件:如中央处理器、内存、输入/输出设备等,提供基本的计算资源
- 应用程序:如字处理程序、电子制表软件、编译器、网络浏览器等,规定按何种方式使用这些资源来解决用户的计算问题
- 操作系统:控制和协调各用户的应用程序对硬件的分配与使用
综上所述,操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合
操作系统是计算机系统中最基本的系统软件
操作系统的特征
操作系统是一种**系统软件
,但与其他系统软件和应用软件有很大的不同,它有自己的特殊性即基本特征
操作系统的基本特征包括并发、共享、虚拟和异步
**
1、并发
并发是指**两个或多个事件在同一时间间隔内发生
**
操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它**具有处理和调度多个程序同时执行的能力
**
在操作系统中,引入进程的目的是**使程序能并发执行
**
注意同一时间间隔(并发)和同一时刻(并行)的区别:
在多道程序环境下,一段时间内,宏观上有多道程序在同时执行
而在每个时刻,单处理机环境下实际仅能有一道程序执行,因此微观上这些程序仍是分时交替执行的
操作系统的**并发性是通过分时得以实现的
**
注意,并行性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作
并行性需要有相关硬件的支持,如多流水线或多处理机硬件环境
2、共享
共享资源共享即共享,是指**系统中的资源可供内存中多个并发执行的进程共同使用
**
共享可分为以下两种资源共享方式:
- 互斥共享方式
系统中的某些资源,虽然可供多个进程使用,但为使得所打印或记录的结果不致造成混淆,应规定在一段时间内只允许一个进程访问该资源
当进程A访问某个资源时,必须先提出请求,若此时该资源空闲,则系统便将之分配给进程A使用,此后有其他进程也要访问该资源时(只要A未用完)就必须等待。仅当进程A访问完并释放该资源后,才允许另一个进程对该资源进行访问
这种资源共享方式称为互斥式共享,而把在一段时间内只允许一个进程访问的资源称为临界资源
计算机系统中的大多数物理设备及某些软件中所用的栈、变量和表格,都属于临界资源,它们都要求被互斥地共享
- 同时访问方式
宏观上:系统中的这类资源允许在一段时间内由多个进程同时
访问
微观上:系统中的这些进程可能是交替地对该资源进行访问,即分时共享
的
可供多个进程“同时”访问的典型资源是磁盘设备
一些用重入码编写的文件也可被“同时”共享,即允许若干个用户同时访问该文件
注:
互斥共享要求一种资源在一段时间内(哪怕是一段很小的时间)只能满足一个请求,否则就会出现严重的问题
同时访问共享通常要求一个请求分几个时间片段间隔地完成,其效果与连续完成的效果相同
并发和共享是操作系统两个量基本的特征
,两者之间互为存在的条件:
- 资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题
- 若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行
3、虚拟
虚拟是指**把一个物理上的实体变为若干逻辑上的对应物
**
物理实体是实的,即实际存在的,而逻辑上的对应物是虚的,是用户感觉上的事物
用于实现虚拟的技术,称为虚拟技术。操作系统中利用了多种虚拟技术来实现虚拟处理器、虚拟内存和虚拟外部设备等
虚拟处理器技术是**通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器的
**
此时,虽然只有一个处理器,但它能同时为多个用户服务,使每个终端用户都感觉有一个中央处理器(CPU)在专⻔为它服务。利用多道程序设计技术把一个物理上的CPU虚拟为多个逻辑上的CPU
,称为虚拟处理器
类似地,可以采用虚拟存储器技术将一台机器的物理存储器变为虚拟存储器,以便从逻辑上扩充存储器的容量。当然,这时用户所感觉到的内存容量是虚的。我们把用户感觉到(但实际不存在)的存储器称为虚拟存储器
还可采用虚拟设备技术将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户占用一台逻辑上的I/O设备,使原来仅允许在一段时间内由一个用户访问的设备(即临界资源)变为在一段时间内允许多个用户同时访问的共享设备
因此,操作系统的虚拟技术可归纳为:
1、时分复用技术,如处理器的分时共享
2、空分复用技术,如虚拟存储器
4、异步
多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性
异步性**使得操作系统运行在一种随机的环境下
,可能导致进程产生与时间有关的错误
然而,只要运行环境相同,操作系统就须保证多次运行进程后都能获得相同的结果
**
操作系统的目标和功能
为了给多道程序提供良好的运行环境,操作系统应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理
为了方便用户使用操作系统,还**必须向用户提供接口
**
同时,操作系统**可用来扩充机器,以提供更方便的服务、更高的资源利用率
**
1、操作系统作为计算机系统资源的管理者
- 处理机管理
在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位
,因而对处理机的管理可归结为对进程的管理
并发是指在计算机内同时运行多个进程,因此**进程何时创建、何时撤销、如何管理、如何避免冲突、合理共享就是进程管理的最主要的任务
**
进程管理的主要功能包括**进程控制、进程同步、进程通信、死锁处理、处理机调度等
** - 存储器管理
存储器管理是为了**给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率
**
主要包括**内存分配与回收、地址映射、内存保护与共享和内存扩充等
**功能 - 文件管理
计算机中的信息都是以文件的形式存在的
,操作系统中负责文件管理的部分称为文件系统
文件管理包括**文件存储空间的管理、目录管理及文件读写管理和保护等
** - 设备管理
设备管理的**主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率
**
主要包括**缓冲管理、设备分配、设备处理和虚拟设备等
**功能
2、操作系统作为用户与计算机硬件系统之间的接口
为了让用户方便、快捷、可靠地操纵计算机硬件并运行自己的程序,操作系统还提供了用户接口
操作系统提供的接口主要分为两类:
一类是**命令接口
,用户利用这些操作命令来组织和控制作业的执行
另一类是程序接口
**,编程人员可以使用它们来请求操作系统服务
- 命令接口
使用命令接口进行作业控制的主要方式有两种,即**联机控制方式和脱机控制方式
**
按作业控制方式的不同,可将命令接口分为**联机命令接口和脱机命令接口
**
联机命令接口又称交互式命令接口,适用于分时或实时系统的接口
它由一组**键盘操作命令
组成。用户通过控制台或终端输入操作命令,向系统提出各种服务要求。用户每输入一条命令,控制权就转给操作系统的命令解释程序,然后由命令解释程序解释并执行输入的命令,完成指定的功能。之后,控制权转回控制台或终端,此时用户又可输入下一条命令
联机命令接口可以这样理解:“雇主”说一句话,“工人”做一件事,并做出反馈,这就强调了交互性
**
脱机命令接口又称批处理命令接口,适用于批处理系统
它由一组**作业控制命令
组成。脱机用户不能直接干预作业的运行,而应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。系统调度到该作业时,由系统中的命令解释程序逐条解释执行作业说明书上的命令,从而间接地控制作业的运行
脱机命令接口可以这样理解:“雇主”把要“工人”做的事写在清单上,“工人”按照清单命令逐条完成这些事,这就是批处理
**
- 程序接口
程序接口**由一组系统调用(也称广义指令)组成
**
用户通过在程序中使用这些系统调用来请求操作系统为其提供服务
如使用各种外部设备、申请分配和回收内存及其他各种要求
严格来说,图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令是操作系统的一部分
3、操作系统实現了对计算机资源的扩充
没有任何软件支持的计算机称为**裸机
,它仅构成计算机系统的物质基础
**,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。裸机在最里层,其外面是操作系统
操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器;因此,我们通常**把覆盖了软件的机器称为扩充机器或虚拟机
**
提醒:
高级程序设计语言的编译器属于应用程序,不在操作系统关心的范围内,编译器实际上是一段程序指令,只是存储在计算机中
引入多道程序设计后,程序就失去了顺序性和封闭性
多道程序设计的基本特征:制约性、间断性、共享性
顺序性是单道程序设计的基本特征
系统开机后,操作系统的程序会被自动加载到内存的系统区,RAM
操作系统发展历程
手工操作阶段
此阶段无操作系统,用户在计算机上算题的所有工作都要人工干预
缺点:
- 用户独占全机,资源利用率低
- CPU等待手工操作,CPU的利用不充分
批处理阶段
操作系统开始出现,此阶段是为了**解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾
**
又分为**单道批处理系统和多道批处理系统
**
- 单道批处理系统
系统对作业的处理是成批进行的,但**内存中始终保持一道作业
**
单道批处理系统是在解决人机矛盾及CPU和1/O设备速率不匹配的矛盾中形成的
主要特性:
- 自动性。在顺利的情况下,磁带上的一批作业能自动地逐个运行,而无须人工干预
- 顺序性。磁带上的各道作业顺序地进入内存,
各道作业的完成顺序与它们进入内存的顺序在正常情况下应完全相同
,亦即先调入内存的作业先完成 - 单道性。
内存中仅有一道程序运行
,即监督程序每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换入其后继程序进入内存运行
问题:
每次主机内存中仅存放一道作业,每当它在运行期间发出输入/输出请求后,高速的CPU便处于等待低速的I/O完成的状态
为了进一步提高资源的利用率和系统的吞吐量,引入了多道程序技术
- 多道批处理系统
多道程序设计技术**允许多个程序同时进入内存并允许它们在CPU中交替地运行
,这些程序共享系统中的各种硬/软件资源
**
当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。它不采用某些机制来提高某一技术方面的瓶颈问题,而让系统的各个组成部分都尽量去“忙”,因此**切换任务所花费的时间很少
,可实现系统各部件之间的并行工作
**,使其整体在单位时间内的效率翻倍
当然,多道批处理系统的设计和实现要比单道系统复杂很多,因为要充分利用各种资源,就要涉及各种资源的调度问题
主要特征:
- 多道。计算机内存中同时存放多道相互独立的程序
- 宏观上并行。同时进入系统的多道程序都处于运行过程中,即它们先后开始各自的运行,但都未运行完毕
- 微观上串行。内存中的多道程序轮流占有CPU,交替执行
问题:
1、如何分配处理器
2、多道程序的内存分配问题
3、I/O设备如何分配
4、如何组织和存放大量的程序和数据,以方便用户使用并保证其安全性与一致性
优点:资源利用率高
,多道程序共享计算机资源,从而使各种资源得到充分利用;系统吞吐量大
,CPU和其他资源保持“忙碌”状态
缺点:用户响应的时间较⻓
;不提供人机交互能力
,用户既不能了解自己的程序的运行情况,又不能控制计算机
分时操作系统
分时技术:把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用
若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行
由于计算机速度很快,作业运行轮转得也很快,因此给每个用户的感觉就像是自己独占一台计算机
分时操作系统:多个用户通过终端同时共享一主机,这些终端连接在主机上,用户可以同时与主机进行交互操作而互不干扰
实现分时系统最关键的问题是**如何使用户能与自己的作业进行交互
**,即当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回用户
主要特征:
- 同时性。同时性也称多路性,指**
允许多个终端用户同时使用一台计算机
**,即一台计算机与若干台终端相连接,终端上的这些用户可以同时或基本同时使用计算机 - 交互性。
用户能够方便地与系统进行人机对话
,即用户通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互 - 独立性。系统中**
多个用户可以彼此独立地进行操作,互不干扰
**,单个用户感觉不到别人也在使用这台计算机,好像只有自己单独使用这台计算机一样 - 及时性。
用户请求能在很短时间内获得响应
。分时系统采用时间片轮转方式使一台计算机同时为多个终端服务,使用户能够对系统的及时响应感到满意
问题:
然分时操作系统较好地解决了人机交互问题,但在一些应用场合,需要系统能对外部的信息在规定的时间(比时间片的时间还短)内做出处理(比如⻜机订票系统或导弹制导系统),因此,实时操作系统应运而生
注意:
分时系统也是支持多道程序设计的系统,但它不同于多道批处理系统。多道批处理是实现作业自动控制而无须人工干预的系统,而分时系统是实现人机交互的系统,这使得分时系统具有与批处理系统不同的特征,即同时性、交互性、独立性、及时性
实时操作系统
为了能在某个时间限制内完成某些紧急任务而不需要时间片排队
,诞生了实时操作系统
这里的时间限制可以分为两种情况:
- 硬实时系统。某个动作**
必须绝对地在规定的时刻(或规定的时间范围)发生
**
如⻜行器的⻜行自动控制系统,这类系统必须提供绝对保证,让某个特定的动作在规定的时间内完成 - 软实时系统。
能够接受偶尔违反时间规定且不会引起任何永久性的损害
如⻜机订票系统、银行管理系统。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并在严格的时限内处理完接收的事件
实时操作系统的主要特点是**及时性和可靠性
**
网络操作系统和分布式计算机系统
网络操作系统
网络操作系统把计算机网络中的各台计算机有机地结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各台计算机之间数据的互相传送
网络操作系统最主要的特点是**网络中各种资源的共享及各台计算机之间的通信
**
分布式计算机系统
分布式计算机系统是由多台计算机组成并满足下列条件的系统:
- 系统中**
任意两台计算机通过通信方式交换信息
** - 系统中的**
每台计算机都具有同等的地位
**,即没有主机也没有从机:每台计算机上的资源为所有用户共享 - 系统中的**
任意台计算机都可以构成一个子系统,并且还能重构
** 任何工作都可以分布在几台计算机上,由它们并行工作、协同完成
用于管理分布式计算机系统的操作系统称为分布式计算机系统
该系统的主要特点是**分布性和并行性
**
注意:
分布式操作系统与网络操作系统的本质不同是,分布式操作系统中的若干计算机能够相互协同完成同一任务
个人计算机操作系统
个人计算机操作系统是目前使用最广泛的操作系统,它广泛应用于文字处理、电子表格、游戏中,常⻅的有Windows、Linux和MacOS等
整体发展历程如下:
[外链图片转存中…(img-T51oYFD3-1716801108252)]
此外,还有嵌入式操作系统、服务器操作系统、智能手机操作系统等
提醒:
实时操作系统为了保证高优先级的快速处理,允许舍弃一些资源,因此资源利用率并不是实时操作系统的目标
采用优先级+非抢占式调度算法,既可让重要的作业/进程通过高优先级尽快获得系统响应,又可保证次要的作业/进程在非抢占式调度下不会迟迟得不到系统响应,这样有利于改善系统的响应时间
加大时间片会延迟系统响应时间
操作系统运行环境
处理器运行模式
在计算机系统中,通常CPU执行两种不同性质的程序
一种是操作系统**内核程序
**
另一种是用户**自编程序
**,即应用程序
对操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此“管理程序”(即内核程序)要执行一些特权指令,而“被管理程序”(即用户自编程序)出于安全考虑不能执行这些指令
- 特权指令。是指**
不允许用户直接使用的指令
**,如I/O指令、置中断指令,存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令 - 非特权指令,是指**
允许用户直接使用的指令
,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间
**,这也是为了防止用户程序对系统造成破坏
在具体实现上,将CPU的运行模式划分为用户态(目态)和核心态(又称管态、内核态)
应用程序运行在用户态,操作系统内核程序运行在核心态
应用程序向操作系统请求服务时通过使用访管指令,从而产生一个中断事件将操作系统转换为核心态
一些**与硬件关联较紧密的模块
,如时钟管理、中断处理、设备驱动等处于最低层。其次是运行频率较高的程序
,如进程管理、存储器管理和设备管理等
这两部分内容构成了操作系统的内核
。这部分内容的指令操作工作在核心态
**
内核是计算机上配置的底层软件,它**管理着系统的各种资源
**,可以看作是连接应用程序和硬件的一座桥梁,大多数操作系统的内核包括4方面的内容:
- 时钟管理
在计算机的各种部件中,时钟是最关键的设备
时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间
另外,通过时钟中断的管理,可以实现进程的切换。例如,在分时操作系统中采用时间片轮转调度,在实时系统中按截止时间控制运行,在批处理系统中通过时钟管理来衡量一个作业的运行程度等
因此,系统管理的方方面面无不依赖于时钟
- 中断机制
引入中断技术的**初衷是提高多道程序运行环境中CPU的利用率
**,而且主要是针对外部设备的
后来逐步得到发展,形成了多种类型,成为操作系统各项操作的基础
例如,键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。可以说,现代操作系统是靠中断驱动的软件
中断机制中,只有一小部分功能属于内核,它们**负责保护和恢复中断现场的信息,转移控制权到相关的处理程序
。这样可以减少中断的处理时间,提高系统的并行处理能力
**
- 原语
按层次结构设计的操作系统,底层必然是一些可被调用的公用小程序,这些公用小程序就是原语,它们各自完成一个规定的操作,且有以下特点:
处于操作系统的虽底层,是最接近硬件的部分
- 这些程序的运行**
具有原子性
,其操作只能一气呵成
**(出于系统安全性和便于管理考虑) - 这些程序的**
运行时间都较短
,而且调用频繁
**
定义原语的直接方法是关闭中断
,让其所有动作不可分割地完成后再打开中断
系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可定义为原语,使它们成为内核的组成部分
- 系統控制的数据结构及处理
系统中用来登记状态信息的数据结构很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等
为了实现有效的管理,系统需要一些基本的操作,常⻅的操作有以下3种:
- 进程管理。进程状态管理、进程调度和分派、创建与撤销进程控制块等
- 存储器管理。存储器的空间分配和回收、内存信息保护程序、代码对换程序等
- 设备管理。缓冲区管理、设备分配和回收等
从上述内容可以了解,核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令
中断和异常的概念
操作系统内核工作在核心态,而用户程序工作在用户态。系统不允许用户程序实现核心态的功能,而有时候用户程序又需要使用到核心态的某些功能。在实际操作系统中,CPU运行上层程序时唯一能进入核心态的途径就是通过**中断或异常
**
发生中断或异常时,运行用户态的CPU会立即进入核心态,这是通过硬件实现的
操作系统的发展过程大体上就是一个想方设法不断提高资源利用率的过程,而提高资源利用率就需要在程序并未使用某种资源时,把它对那种资源的占有权释放,而这一行为就需要通过中断实现
- 中断和异常的定义
中断也称外中断,是指**来自CPU执行指令外部的事件
**,通常用于信息输入/输出
如设备发出的I/O结束中断,表示设备输入/输出处理已经完成;”时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等
异常也称内中断,是指**来自CPU执行指令内部的事件
**
如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件
异常不能被屏蔽,一旦出现,就应立即处理
内中断与外中断的联系:
中断
内部异常
故障 软件中断
自陷 软件中断
终止 硬件中断
外部中断(硬件)
可屏蔽中断 INTR
不可屏蔽中断 NMI
- 中断和异常的分类
外部中断(硬件)外中断可分为**可屏蔽中断和不可屏蔽中断
**
- 可屏蔽中断。指通过INTR线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活
- 不可屏蔹中断。指通过NMI线发出的中断请求,通常是紧急的硬件故障,如电源掉电等。此外,异常也是不能被屏蔽的
异常可分为**故障、自陷和终止
**
- 故障通常是**
由指令执行引起的异常
**,如非法操作码、缺⻚故障、除数为0、运算溢出等 - 自陷是一种**
事先安排的“异常”事件
**,用于在用户态下调用操作系统内核程序,如条件陷阱指令 - 终止是指**
出现了使得CPU无法继续执行的硬件故障
**,如控制器出错、存储器校验错等
故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断
- 中断和身常的处理过程
中断和异常处理过程的大致描述如下:
当CPU在执行用户程序的第 i 条指令时检测到一个异常事件,或在执行第 i 条指令后发现一个中断请求信号,则CPU打断当前的用户程序,然后转到相应的中断或异常处理程序去执行
若中断或异常处理程序能够解决相应的问题,则在中断或异常处理程序的最后,CPU通过执行中断或异常返回指令,回到被打断的用户程序的第 i 条指令或第 i+1 条指令继续执行
若中断或异常处理程序发现是不可恢复的致命错误,则终止用户程序
通常情况下,对中断和异常的具体处理过程由操作系统(和驱动程序)完成
系统调用
系统调用是指**用户在程序中调用操作系统所提供的一些子功能
**,系统调用可视为特殊的公共子程序
系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作
(如存储分配、进行I/O传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成
系统调用按功能大致可分为如下几类:
- 设备管理。完成设备的请求或释放,以及设备启动等功能
- 文件管理。完成文件的读、写、创建及删除等功能
- 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能
- 进程通信。完成进程之间的消息传递或信号传递等功能
- 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及始址等功能
系统调用相关功能涉及系统资源管理、进程管理之类的操作,对整个系统的影响非常大,因此必定需要使用某些特权指令才能完成,所以**系统调用的处理需要由操作系统内核程序负贵完成,要运行在核心态
**
用户程序可以**执行陷入指令
(又称访管指令或trap指令)来发起系统调用,请求操作系统提供服务
,相当于把CPU的使用权主动交给操作系统内核程序(CPU状态会从用户态进入核心态),之后操作系统内核程序再对系统调用请求做出相应处理
。处理完成后,操作系统内核程序叉会把CPU的使用权还给用户程序
**(即CPU状态会从核心态回到用户态)
目的:用户程序不能直接执行对系统影响非常大的操作,必须通过系统调用的方式请求操作系统代为执行,以便保证系统的稳定性和安全性,防止用户程序随意更改或访问重要的系统资源,影响其他进程的运行
操作系统的运行环境可以理解为:用户通过操作系统运行上层程序(如系统提供的命令解释程序或用户自编程序),而这个上层程序的运行依赖于操作系统的底层管理程序提供服务支持,当需要管理程序服务时,系统则通过硬件中断机制进入核心态,运行管理程序;也可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就通过异常处理来进入核心态。管理程序运行结束时,用户程序需要继续运行,此时通过相应的保存的程序现场退出中断处理程序或异常处理程序,返回断点处继续执行
[外链图片转存中…(img-nBOg2dji-1716801108253)]
在操作系统中,主要关心的是**系统核心态和用户态的软件实现与切换
**
一些由用户态转向核心态的例子:
- 用户程序要求操作系统的服务,即系统调用
- 发生一次中断
- 用户程序中产生了一个错误状态
- 用户程序中企图执行一条特权指令
- 从核心态转向用户态由一条指令实现,这条指令也是特权命令,一般是中断返回指令
注意:
由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的
若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令
提醒:
核心态到用户态的转换是由操作系统程序程序执行后完成的
用户态到核心态的转换是由硬件的中断程序来完成的
只能在核心态下运行的指令:时钟管理(与事件相关的所有都调用到了时钟管理程序)、中断机制、原语、系统控制(广义指令)
保存断点和程序状态字、将CPU模式改为内核态都是由硬件完成的
保存通用寄存器的内容、执行系统调用服务例程都是由操作系统完成的
操作系统结构
随着操作系统功能的不断增多和代码规模的不断扩大,提供合理的结构,对于降低操作系统复杂度、提升操作系统安全与可靠性来说变得尤为重要
分层法
分层法是将操作系统分为若干层,最底层(层0)为硬件
,最高层(层N)为用户接口
,每层**只能调用紧邻它的低层的功能和服务(单向依赖)
**
[外链图片转存中…(img-9YLz1AE9-1716801108253)]
优点:
便于系统的调试和验证,简化了系统的设计和实现
。如果在调试某层时发现错误,那么错误应在这一层上,这是因为它的低层都调试好了易扩充和易维护
。在系统中增加、修改或替换一层中的模块或整层时,只要不改变相应层间的接口,就不会影响其他层
问题:
1、合理定义各层比较困难。因为依赖关系固定后,往往就显得不够灵活
2、效率较差。操作系统每执行一个功能,通常要自上而下地穿越多层,各层之间都有相应的层间通信机制,这无疑增加了额外的开销,导致系统效率降低
模块化
模块化是**将操作系统按功能划分若干具有一定独立性的模块
**
每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信
还可以进一步将各模块细分为若干具有一定功能的子模块,同样也规定好各子模块之间的接口
[外链图片转存中…(img-aoFPm0Jl-1716801108254)]
在划分模块时,如果将模块划分得**太小
,虽然能降低模块本身的复杂性
,但会使得模块之间的联系过多
,造成系统比较混乱;如果模块划分得过大
,又会增加模块内部的复杂性
,显然应在两者间进行权衡
在划分模块时,要充分考虑模块的独立性问题,因为模块独立性越高,各模块间的交互就越少,系统的结构也就越清晰
**
衡量模块的独立性的两个标准:
- 内聚性,模块内部
各部分间联系的紧密程度
。内聚性越高,模块独立性越好 - 耦合度,模块间
相互联系和相互影响的程度
。耦合度越低,模块独立性越好
优点:
提高
了操作系统设计的正确性、可理解性和可维护性
增强
了操作系统的可适应性
加速
了操作系统的开发过程
问题:
1、模块间的接口规定很难满足对接口的实际需求
2、各模块设计者⻬头并进,每个决定无法建立在上一个已验证的正确决定的基础上,因此无法找到一个可靠的决定顺序
宏内核
从操作系统的**内核架构
来划分,可分为宏内核和微内核
**
宏内核,也称单内核或大内核,是指**将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务
**
因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的**性能优势
**
目前主流的操作系统,如Windows、Android、iOS、macOS、Linux等,都是基于宏内核的构架
微内核
微内核构架,是指将**内核中最基本的功能保留在内核
,而将那些不需要在核心态执行的功能移到用户态执行
,从而降低内核的设计复杂性
**
那些移出内核的操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通信
微内核结构将操作系统划分为两大部分:微内核和多个服务器
其中微内核是指精心设计的、能实现操作系统最基本核心功能的小型内核,通常包含:
- 与硬件处理紧密相关的部分
- 一些较基本的功能
- 客户和服务器之间的通信
这些部分只是为构建通用操作系统提供一个重要基础,这样就可以确保将内核做得很小
微内核构架操作系统中的**绝大部分功能都放在微内核外的一组服务器(进程)中实现
**
如用于提供对进程(线程)进行管理的进程(线程)服务器、提供虚拟存储器管理功能的虚拟存储器服务器等
它们都是作为进程来实现的,运行在用户态
,客户与服务器之间是借助微内核提供的消息传递机制来实现交互的
[外链图片转存中…(img-JS4L0slV-1716801108254)]
在微内核结构中,为了实现高可靠性,只有微内核运行在内核态
,其余模块都运行在用户态,一个模块中的错误只会使这个模块崩溃,而不会使整个系统崩溃
微内核的基本功能
微内核结构通常利用**机制与策略分离的原理
来构造OS结构,将机制部分以及与硬件紧密相关的部分放入微内核
**
- 进程(线程)管理。进程(线程)之间的通信功能是微内核OS最基本的功能,此外还有进程的切换、进程的调度,以及多处理机之间的同步等功能,都应放入微内核中
举个例子,为实现进程调度功能,需要在进程管理中设置一个或多个进程优先级队列,这部分属于调度功能的机制部分,应将它放入微内核中。而对用户进程如何分类,以及优先级的确认方式,则属于策略问题,可将它们放入微内核外的进程管理服务器中 - 低级存储器管理。在微内核中,
只配置最基本的低级存储器管理机制
,如用于实现将逻辑地址变换为物理地址等的⻚表机制和地址变换机制,这一部分是依赖于硬件的,因此放入微内核
而实现虚拟存储器管理的策略,则包含应采取何种⻚面置换算法,采用何种内存分配与回收的策略,应将这部分放在微内核外的存储器管理服务器中 - 中断和陷入处理。微内核OS**
将与硬件紧密相关的一小部分放入微内核
,此时微内核的主要功能是捕获所发生的中断和陷入事件,并进行中断响应处理
**
在识别中断或陷入的事件后,再发送给相关的服务器来处理,故中断和陷入处理也应放入微内核
特点:
- 扩展性和灵活性。许多功能从内核中分离出来,
当要修改某些功能或增加新功能时
,只需在相应的服务器中修改或新增功能,或再增加一个专用的服务器,而**无须改动内核代码
** - 可靠性和安全性
- 可移植性。
与CPU和I/O硬件有关的代码均放在内核中
,而其他各种服务器均与硬件平台无关,因而将操作系统移植到另一个平台上所需做的修改是比较小的 - 分布式计算。客户和服务器之间、服务器和服务器之间的**
通信采用消息传递机制
**,这就使得微内核系统能很好地支持分布式系统和网络系统
问题:
微内核结构的主要问题是性能问题,因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大
为了改善运行效率,可以将那些频繁使用的系统服务移回内核,从而保证系统性能,但这又会使微内核的容量明显地增大
外核
在底层中,一种称为外核的程序在内核态中运行
它的任务是**为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源
**
每个用户层的虚拟机可以运行自己的操作系统,但限制只能使用已经申请并且获得分配的那部分资源
优点:
- 减少了映射层。在其他的设计中,每个虚拟机都认为它有自己的磁盘,其盘块号从0到最大编号,这样虚拟机监控程序就必须维护一张表格以重映像磁盘地址(或其他资源),有了外核,这个重映射处理就不需要了。外核只需要记录已经分配给各个虚拟机的有关资源即可
- 将多道程序(在外核内)与用户操作系统代码(在用户空间内)加以分离,而且相应的负载并不重,因为外核所做的只是保持多个虚拟机彼此不发生冲突
操作系统引导
操作系统(如Windows、Linux等)是一种程序,程序以数据的形式存放在硬盘中,而硬盘通常分为多个区,一台计算机中又有多个或多种外部存储设备
操作系统引导是指**计算机利用CPU运行特定程序,通过程序识别硬盘,识别硬盘分区,识别硬盘分区上的操作系统,最后通过程序启动操作系统
**,一环扣一环地完成上述过程
常⻅操作系统的引导过程如下:
- 激活CPU。激活的CPU**
读取ROM中的boot程序
,将指令寄存器置为BIOS(基本输入/输出系统)的第一条指令
**,即开始执行BIOS的指令 - 硬件自检。
启动BIOS程序后,先进行硬件自检,检查硬件是否出现故障
。如有故障,主板会发出不同含义的蜂鸣,启动中止;如无故障,屏幕会显示CPU、内存、硬盘等信息 - 加载带有操作系统的硬盘。硬件自检后,
BIOS开始读取BootSequence
(通过CMOS里保存的启动顺序,或者通过与用户交互的方式),把控制权交给启动顺序排在第一位的存储设备,然后CPU将该存储设备引导扇区的内容加载到内存中
- 加载主引导记录MBR。
硬盘以特定的标识符区分引导硬盘和非引导硬盘
。如果发现一个存储设备不是可引导盘,就检查下一个存储设备。如无其他启动设备,就会死机。主引导记录MBR的作用是告诉CPU去硬盘的哪个主分区去找操作系统
- 扫描硬盘分区表,并加载硬盘活动分区。MBR包含硬盘分区表,硬盘分区表以特定的标识符区分活动分区和非活动分区。主引导记录扫描硬盘分区表,进而识别含有操作系统的硬盘分区(活动分区)。
找到硬盘活动分区后,开始加载硬盘活动分区,将控制权交给活动分区
- 加载分区引导记录PBR。读取活动分区的第一个扇区,这个扇区称为分区引导记录(PBR),其作用是**
寻找并激活分区根目录下用于引导操作系统的程序(启动管理器)
** - 加载启动管理器。分区引导记录搜索活动分区中的启动管理器,加载启动管理器
- 加载操作系统
虚拟机
虚拟机是一台逻辑计算机,是指利用特殊的虚拟化技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境
第一类虛拟机管理程序
第一类虚拟机管理程序就像一个操作系统,因为它是唯一一个**运行在最高特权级的程序
**,它在裸机上运行并且具备多道程序功能,虚拟机管理程序向上层提供若干台虚拟机,这些虚拟机是裸机硬件的精确复制品
由于每台虚拟机都与裸机相同,所以**在不同的虚拟机上可以运行任何不同的操作系统
**
[外链图片转存中…(img-Hd8enWju-1716801108255)]
虚拟机作为用户态的一个进程运行,不允许执行敏感指令
虚拟机上的操作系统认为自己运行在内核态
(实际上不是),称为**虚拟内核态
**
虚拟机中的用户进程认为自己运行在用户态(实际上确实是)
当**虚拟机操作系统执行了一条CPU处于内核态才允许执行的指令
时,会陷入虚拟机管理程序
在支持虚拟化的CPU上,虚拟机管理程序检查这条指令是由虚拟机中的操作系统执行的还是由用户程序执行的
**
如果是前者,虚拟机管理程序**将安排这条指令功能的正确执行
**
否则,虚拟机管理程序**将模拟真实硬件面对用户态执行敏感指令时的行为
**
在过去不支持虚拟化的CPU上,真实硬件不会直接执行虚拟机中的敏感指令,这些敏感指令被转为对虚拟机管理程序的调用,由虚拟机管理程序模拟这些指令的功能
第二类虚拟机管理程序
[外链图片转存中…(img-GGF9dGTA-1716801108256)]
第二类虚拟机管理程序是一个依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程。第二类虚拟机管理程序仍然伪装成具有CPU和各种设备的完整计算机
运行在两类虚拟机管理程序上的操作系统都称为**客户操作系统
。对于第二类虚拟机管理程序,运行在底层硬件上的操作系统称为宿主操作系统
**。
首次启动时,第二类虚拟机管理程序像一台刚启动的计算机那样运转,期望找到的驱动器可以是虚拟设备。然后**将操作系统安装到虚拟磁盘上
**(其实只是宿主操作系统中的一个文件)。客户操作系统安装完成后,就能启动并运行
没有虚拟化,服务商只能提供共享托管(不能控制服务器的软件)和独占托管(成本较高)
当服务商提供租用虚拟机时,一台物理服务器就可以运行多个虚拟机,每个虚拟机看起来都是一台完整的服务器,客户可以在虚拟机上安装自己想用的操作系统和软件,但是只需支付较低的费用。这就是市面上常⻅的“云”主机
第一类虚拟化技术称为裸金属架构,将第二类虚拟化技术称为寄居架构
提醒
分层式结构操作系统通常需要穿越多层,会增加额外的开销,因此系统效率较低
分层式结构操作系统的依赖关系非常不灵活
目前广泛使用的Windows XP系统采用的式宏内核OS
微内核架构的主要问题式性能问题
计算机操作系统的引导程序位于硬盘
计算机启动的过程:1、CPU加电,CS:IP指针指向FFFF0H;2、执行JMP指令跳转到BIOS;3、登记BIOS中断程序入口地址;4、硬件自检;5、进行操作系统引导
MBR的任务:检查分区表是否正确,确定哪个分区为活动分区,并在程序结束时将该分区的启动程序调入内存加以执行
中断向量表需要在操作系统进行初始化过程中创建
疑难点
1、并行性与并发性的区别和联系
并行性是指两个或多个事件在同一时刻发生
并发性是指两个或多个事件在同一时间间隔内发生
在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序同时运行,但在单处理器系统中每个时刻却仅能有一道程序执行,因此微观上这些程序只能分时地交替执行
若在计算机系统中有多个处理器,则这些可以并发执行的程序便被分配到多个处理器上,实现并行执行,即利用每个处理器来处理一个可并发执行的程序
2、特权指令与非特权指令
特权指令是指有特殊权限的指令,由于这类指令的权限最大,使用不当将导致整个系统崩溃
如清内存、置时钟、分配系统资源、修改虚存的段表或⻚表、修改用户的访问权限等
为保证系统安全,这类指令只能用于操作系统或其他系统软件,不直接提供给用户使用,CPU在核心态下可以执行指令系统的全集
为了防止用户程序中使用特权指令,用户态下只能使用非特权指令,核心态下可以使用全部指令
在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。所以把用户程序放在用户态下运行,而操作系统中必须使用特权指令的那部分程序在核心态下运行,保证了计算机系统的安全可靠
从用户态转换为核心态的唯一途径是中断或异常
3、访管指令与访管中断
访管指令是一条可以在用户态下执行的指令
在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断
访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务
在程序中引入访管指令是由于用户程序只能在用户态下运行,要完成在核心态下完成的工作必须使用到访管指令
访管指令本身不是特权指令,其基本功能是让程序拥有“自愿进管”的手段,从而引起访管中断
处于用户态的用户程序使用访管指令时,系统根据访管指令的操作数执行访管中断处理程序,访管中断处理程序将按系统调用的操作数和参数转到相应的例行子程序。完成服务功能后,退出中断,返回到用户程序断点继续执行
4、定义微内核结构OS的四个方面
1、足够小的内核
2、基于客户/服务器模式
3、应用“机制与策略分离”原理
机制是指实现某一功能的具体执行机构
策略则是在机制的基础上借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标、
在传统的OS中,将机制放在OS内核的较低层中,把策略放在内核的较高层中
在微内核0S中,通常将机制放在OS的微内核中
4、采用面向对象技术
基于面向对象技术中的“抽象”和“隐蔽”原则能控制系统的复杂性,进一步利用“对象”“封装”和“继承”等概念还能确保操作系统的正确性、可靠性、易扩展性等