本系列文章为408考研操作系统知识点整理仅涉及到一些重要的考研知识点并不是完全系统全面的知识,参考书目和视频资料:汤小丹 计算机操作系统(第四版),操作系统考研复习指导,B站王道考研操作系统视频课。
1.1 操作系统基本概念
操作系统(Operating System,OS):是控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合,是计算机系统中最基本的系统软件。
1.1.1 操作系统四大特征
并发:指两个或多个事件在同一时间间隔内发生,这些事件在宏观上是同时发生的,但是在微观上是交替发生的
操作系统的并发性:指的是计算机系统“同时”运行着多个程序,这些程序宏观上看是运行着的,而微观上看是交替运行的;操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的
注意:单核CPU同一时刻只能执行一个程序,各个程序只能并发执行;多核CPU同一时刻可以同时执行多个程序,多个程序可以并行执行
共享:是指系统中的资源可供内存中的多个并发执行的进程共同使用。分为如下两类
互斥共享:当进程访问某个资源时,必须先提出请求,若此时该资源空闲,则系统将其分配给进程使用,此后若有其他进程也要访问该资源时,只要没有用完就必须等待,这一段资源称之为临界资源,对于临界资源的访问各进程之间是互斥的
例如摄像头这种资源,使用QQ进行视频聊天时,微信暂时就不能使用摄像头
同时共享:这里的同时共享仍然是指宏观上的共享,其微观上可能也是交替访问资源的
并发和共享是操作系统的两个最基本特征,两者互为存在的前提
如果失去并发,则系统只有一个程序在运行,则共享就失去了存在的意义
如果失去共享,则两个程序无法同时问资源,有些并发操作也无从谈起
虚拟:是指把一个物理上的实体变为若干逻辑上的对应物。物理实体是实的,即实际存在的,而后者虚拟的,是用户感觉上的事物。虚拟技术在计算机中主要有如下几方面的应用:虚拟处理机,虚拟存储器,虚拟设备技术。
异步:是指在多道程序环境下,允许多个程序并发执行,但是由于资源有限,进程的执行不能做到一气呵成,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性
1.1.2 操作系统的目标和功能
(1)作为计算机系统资源的管理者:操作系统本质就是一组计算机程序,与其他程序类似,也给处理器提供指令,主要区别在于程序的意图。
为了给多道程序提供良好的运行环境,操作系统应该具有四大管理功能
- 处理机管理(进程管理):在多道程序环境下,处理机的分配和运行都以进程或线程为基本单位,因而对处理机的管理可以归结为对进程的管理。进程管理的任务主要是:进程控制、进程同步、进程通信、死锁处理、处理机调度等等
- 存储器管理(内存管理):主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等
- 设备管理:主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要有缓冲管理、设备分配、设备处理和虚拟设备等功能
- 文件管理:主要包括文件存储空间的管理、目录管理以及文件读写管理和保护等
(2)作为用户和计算机硬件系统的接口:
命令接口:用户利用这些操作命令来组织和控制作业的执行
程序接口:编程人员可以使用它们来请求操作系统服务
命令接口又分为
联机命令接口:又称为交互式命令接口,适用于分时或实时操作系统。它由一组键盘操作命令组成。用户通过控制台输入操作命令,向系统提出各种服务要求。用户每输入一条命令,控制权就转给操作系统的命令解释程序,然后由命令解释程序解释并执行输入的命令,完成指定的功能,之后控制权转回控制台或中断。
脱机命令接口:又称为批处理命令接口,适用于批处理系统,它由一组作业控制命令完成。脱机用户不能直接干预作业的运行,而应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。系统调度到该作业时,由系统中的命令解释程序逐条解释执行作业说明书上的命令。
程序接口:由一组系统调用组成。用户通过在程序中使用这些系统调用来请求操作系统为其提供服务,例如图形用户界面GUI。
(3)需要实现对硬件机器的扩展:没有任何软件支持的计算机称之为裸机。它仅构成了计算机系统的物质基础,而实际呈现在用户面前的计算机是经过若干层软件改造过的计算机。裸机在最里面,其外面是操作系统,操作系统所提供的资源管理功能和方便用户的各种服务功能,将逻辑改造成功能更强、使用更方便的机器。因此,我们通常把覆盖了软件的机器称为扩充机器或虚拟机
1.2 操作系统发展历程
1.2.1 手工操作阶段
手工操作阶段:如上图,用户在计算机上的所有工作都需要人工干预,比如程序的装入,运行,结果和输出等等。随着计算机硬件的发展,人机矛盾越来越大,手工操作两个显著的缺点
用户独占全机,资源利用率极低
CPU等待手工操作,CPU利用很不充分
1.2.2 批处理阶段
单道批处理系统:引入了脱机输入输出技术,采用外围机+磁带完成,并由监督程序负责控制作业的输入和输出,这里的监督程序就是操作系统的雏形。单道批处理系统有如下特征
自动性:在顺利的情况下,磁带上的一批作业可以自动地逐个运行,而无须人工干预
顺序性:磁带上的各道作业顺序地进入内存,各道作业的完成顺序与他们进入内存的顺序在正常情况下是完全一致的
单道性:内存中仅有一道程序运行,监督程序每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换上后继程序继续投入内存运行
多道批处理系统:多道程序技术允许多个程序同时进入内存并允许它们在CPU中交替地运行,这些程序共享系统中的各种硬件软件资源.当一道程序因为IO请求而暂停运行时,CPU便立刻转去运行另一道程序。它不采用某些机制来提高某一技术方面的瓶颈问题,而让系统的各个组成部分都尽量去“忙”,因此切换任务所花费的时间很少,可以实现系统各部件之间的并行工作,使其整体在单位时间内的效率翻倍
多道批处理系统优缺点如下
优点:资源利用率高,多道程序共享计算机资源,从而使各种资源得到充分利用;系统吞吐量大,CPU和其他资源保持忙碌状态
缺点:用户响应时间较长;未提供人机交互能力,用户无法了解自己的程序运行情况,又不能控制计算机
另外,多道批处理系统要比单道批处理系统复杂,待运行的多个作业需要保留在内存中,因此就需要内存管理,此外准备运行多个作业时,处理器必须决定先运行哪个作业,因此又需要调度算法
1.2.3 分时操作系统
分时操作系统::计算机以时间片为单位轮流为各个用户作业服务,各个用户可以通过终端与计算机进行交互。分时系统也是支持多道程序设计的系统,但它不同于多道批处理系统
多道批处理是实现作业自动控制而无须人工干预的系统
分时系统是实现人机交互系统,这使得分时系统具有与批处理系统不同的特征
分时系统优缺点如下
优点:用户请求可以立即被响应,解决了人机交互的问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
缺点:不能优先处理一些紧急任务。操作系统对各个用户都是完全公平的,循环地为每个用户服务一个时间片,不区分任务的紧急性
1.2.4 实时操作系统
实时操作系统:是为了能在某个时间限制内完成某些紧急任务而不需要时间片排队而诞生的
硬实时系统:某个动作绝对地在规定的时刻或规定的时间范围发生(比如飞行器的自动控制系统就必须提供绝对保证,让某个动作在规定时间内完成)
软实时系统:能够接受偶尔违法时间规定且不会引起任何永久性的损害(比如12305订票系统)
优点:能够响应一些紧急任务,某些紧急任务不需要时间片排队
特点:实时操作系统的控制下,计算机系统接受到外部信号后及时进行处理,并且要在严格时间限制内处理完成,具有很强的及时性和可靠性
1.2.5 网络操作系统和分布式操作系统
网络操作系统:把计算机网络中的各台计算机有机地结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各台计算机之间数据的互相传送。网络操作系统最主要的特点是网络中各种资源的共享及各台计算机之间的通信。
分布式计算机系统:是由多台计算机组成并满足下列条件的系统:系统中任意两台计算机通过通信方式交换信息;系统中的每台计算机都具有同等的地位,即没有主机也没有从机:每台计算机上的资源为所有用户共享;系统中的任意台计算机都可以构成一个子系统,并且还能重构:任何工作都可以分布在几台计算机上,由它们并行工作、协同完成。用于管理分布式计算机系统的操作系统称为分布式计算机系统。该系统的主要特点是:分布性和并行性。分布式操作系统与网络操作系统的本质不同是,分布式操作系统中的若干计算机相互协同完成同一任务。
1.2.6 个人计算机操作系统
个人计算机系统:个人计算机操作系统是目前使用最为广泛的操作系统,它广泛应用于文字处理、电子表格和游戏等等。常见的有Windows、Linux和Macintosh等
1.3 操作系统运行环境
1.3.1 基本概念
(1)特权指令和非特权指令
特权指令:指的是具有特珠权限的指令,这类指令权限很大,使用不当将导致系统崩溃。经典的有清理内存,修改页表,修改访问权限等等。如果所有程序都能使用这些指令,那么不要说别有用心的人会千方百计的利用这些漏洞,我们用户自己可能就先把系统搞坏了。因此为了保证系统安全,这类指令只能用于操作系统或其他软件,不直接提供给用户使用特权指令必须在核心态执行
非特权指令:为了防止用户程序中使用特权指令,用户态下只能使用非特权指令,核心态下可以使用全指令。在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令
(2)用户态和核心态
注意:程序状态字寄存器(PSW)中的某些标志位可以标识当前处理器处于怎样状态
用户态:CPU处于用户态只可以执行非特权指令
核心态:CPU处于核心态可以执行所有指令
(3)内核程序和应用程序
内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态
应用程序:为了保证系统能够安全运行,普通应用程序只能执行非特权指令,运行在用户态
内核:计算机配置的底层软件,是计算机功能的延伸,其功能主要有:
时钟管理:在计算机的各种部件中,时钟是最关键的设备。时钟的第一功能是计时,例如
操作系统需要通过时钟管理,向用户提供标准的系统时间
通过时钟中断的管理,可以实现进程的切换
中断机制:中断机制中,只有一小部分属于内核,他们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力
原语:按层次结构设计的操作系统,底层必然是一些可被调用的公用小程序,他们各自完成一个规定的操作,通常把具有如下特点的程序称为原语(Atomic Operation)。定义原语的直接方法是关闭中断,使所有动作不可分割地完成后再打开中断
处于操作系统的最底层,最接近硬件
这些程序的运行具有原子性,其操作只能“一气呵成”(为了系统安全性和便于管理考虑)
这些程序的运行时间都较短,且调用频繁
系统控制的数据结构及处理:系统中用来登记状态信息的数据结构有很多,例如作业控制,进程控制块(PCB),设备控制块,各类链表,消息队列,缓冲区,空闲区登记表,内存分配表等等。为了实现有效管理,系统需要一些基本操作。
1.3.2 系统调用
系统调用:操作系统需要向上提供一些接口,其中供应用程序使用的叫做程序接口,也叫系统调用。具体来讲,系统调用可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
下面列举了一些由用户态转向核心态的例子:
1)用户程序要求操作系统的服务,即系统调用。
2)发生一次中断。
3)用户程序中产生了一个错误状态。
4)用户程序中企图执行一条特权指令。
5)从核心态转向用户态由一条指令实现,这条指令也是特权命令,一般是中断返回指令。
若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令。
1.4 操作系统的结构
1.4.1 宏内核和微内核
宏内核:将操作系统的主要功能模块都作为系统内核,运行在核心态
微内核:只把中断、原语、进程通信等最核心的功能放入内核。进程管理、文件管理和设备管理等功能以用户进程的形式运行在核心态
宏内核
优点:性能高、内核内部各种功能都可以直接相互调用
缺点:内核庞大、功能复杂、难以维护;某个功能模块出错,可能导致整个系统崩溃
微内核
优点:内核划分小、功能少、易于维护、可靠性高;内核外的某个功能模块出错不会导致整个系统崩溃
缺点:性能低,需要频繁的在用户态和核心态之间来回切换;用户态下的各功能模块不可以直接相互调用,只能通过内核的消息传递来间接通信
1.4.2 分层和模块化
分层结构:将操作系统分为若干层,最底层为硬件,最高层为用户接口。每一层只能调用紧邻它的低层的功能和服务
优点如下:
便于系统的调试和验证:硬件层可以先调试,因为它不需要考虑系统的其他部分;硬件层调试完且验证无误后,就可以调试第2层。由于每一层在调试时一定可以保证此层之下的所有层都是正确的,所以如果出现问题那么一定可以判定是这一层的。
易于扩充和维护:如果需要在操作系统中增加、修改或替换一层中的模块或整层时,只要不改变相应层间的接口,就不会影响到其他层。
缺点如下:
仅仅可以调用相邻低层
难以合理定义各层的边界
效率低,不允许跨层调用,系统调用执行时间长
模块化:将操作系统按功能划分为若干具有一定独立性的模块。每个模块具有某一方面的管理功能,并规定好各模块间的接口,使模块间可以通过接口进行通信。其中衡量模块独立性主要是以下两个标准:
内聚性:模块内部各部分间联系的紧密程度。内聚性越高,模块独立性越好
耦合性:模块间相互联系和相互影响的程度。耦合度越低,模块独立性越好
优点如下:
模块间逻辑清晰且易于维护,确定模块间接口后,既可以实现多模块同时开发
支持动态加载新的模块,增强了操作系统的适应性
任何模块都可以直接调用其他模块,效率高
缺点如下:
模块间接口定义未必合理、实用
模块间相互依赖、难以调试和验证
1.4.3 外核
外核:内核负责进程调度、进程通信等功能:外核则负责为用户进程分为未经抽象的硬件资源,且保证资源使用安全(例如磁盘、内存)外核所做的就是保持多个虚拟机彼此不发生冲突
优点如下:
外核可以直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更加灵活地使用硬件资源
减少了虚拟硬件资源的“映射层”,提升了效率
缺点如下:
降低了系统的一致性
使系统变得更复杂
1.5 操作系统引导
一块安装了操作系统的磁盘由主引导记录(MBR)和实际存储内容的区域组成,其中后者常会将其划分为多个盘符,也我们经常所说的C盘、D盘等等。而主引导记录(MBR)包括以下两个部分
- 磁盘引导程序:根据分区表读入C盘,找到引导记录PBR
- 分区表:是一个数据结构,用于说明每一个分区(盘)占用的空间大小及地址范围
其中C盘是整个磁盘的活动分区,用于安装、启动操作系统。C盘由以下三部分构成:
- 引导记录PBR:负责找到启动管理器
- 根目录:双击“此电脑-C盘”后所看见的东西
- 其他
操作系统最终是会被加载进主存的,主存由RAM和ROM构成,其中RAM断电后数据将不复存在,而ROM则反之。所以会在ROM中设置一个特殊的程序一自举程序,以此完成操作系统的引导
操作系统引导(开机过程):操作系统本质就是一种程序,在关机状态下它存放在硬盘中。而操作系统引导就是指计算机利用CPU运行特定程序,通过程序识别硬盘、硬盘分区及操作系统,然后启动操作系统。引导过程如下:
- CPU通电:CPU通电后将会读取并执行ROM中的自举程序
- 硬件自检:目的是检查硬件是否出现故障。如果有故障就会中止启动;如果没有故障屏幕则会显示CPU、内存、硬盘等信息
- 加载带有操作系统的硬盘:自检完成后,开始读取Boot Sequence(启动设备的顶序,可以手动设定),CPU将会加载排在第一位的存储设备到内存中
- 加载主引导记录MBR:硬盘分为可引导和不可引导的,如果该存储设备属于不可引导的就会检查下一个设备,如果最后没有启动设备了,就会死机。MBR会告诉CPU去硬盘的哪个主分区找操作系统
- 扫描分区表,并加载硬盘活动分区:找到硬盘活动分区后会把控制权交给活动分区
- 加载分区引导记录PBR:读取活动分区的第一个扇区,这个扇区称为分区引导记录(PBR)。其作用是寻找并激活分区根目录下用于引导操作系统的程序(启动管理器)
- 加载启动管理器:分区引导记录搜索活动分区中的启动管理器,加载启动管理器。
- 加载操作系统
1.6 虚拟机
虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(M),每个虚拟机器都可以独立运行一个操作系统。主要有两类:
第一类虚拟管理程序:直接运行在硬件上,迁移性差,性能更好,可支持的虚拟机数量多
第二类虚拟管理程序:运行在宿主的操作系统上,迁移性好,性能差一些,可支持虚拟机数量少
第一类虚拟管理程序:第一类虚拟管理程序就像一个操作系统,它在裸机上运行并具备多道程序功能。会向上层提供提供若干台虚拟机,每台虚拟机都与裸机相同,所以在不同的虚拟机上可以运行不同的操作系统
- 虚拟机作为的是用户态的一个进程运行,不可以执行敏感指令
- 虚拟机上的每个操作系统都认为自己运行在内核态,但实际上并不是
- 当虚拟机操作系统执行了一条CPU处于内核态才允许执行的指令时,会陷入虚拟机管理程序:此时虚拟机管理程序将会检查这条指令是由虚拟机操作系统执行的还是由用户程序执行的,若为前者则虚拟机管理程序将会安排这条指令功能的正确执行;否则虚拟机管理程序将会模拟真实硬件的行为
第一类VMM运行在最高特权级(Ring 0)内核态,可以执行最高特权的指令。
第二类虚拟管理程序:它是一个依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程。第二类虚拟管理程序仍然伪装成具有CPU和各种设备的完整计算机。例如经典的VMware Workstation
第二类VMM部分运行在用户态、部分运行在内核态。GuestOS发出的系统调用会被VMM截获,并转化为VMM对HostOS的系统调用
Comments NOTHING