复习笔记,内容来自王道408考研复习辅导书和课程ppt,对两部分资料进行了一些综合。
✨ 1 操作系统的概念
操作系统是指控制和管理整个计算机硬件与软件资源①,进而为其它用户和软件提供方便接口与环境的程序集合②。是计算机系统中最基本的系统软件③。
①作为计算机硬件和软件资源管理者,需要提供以下功能:
- 处理机管理(第二章)
- 存储器管理(第三章)
- 文件管理(第四章)
- 设备管理(第五章)
- 这里在后续章节会详细讲解,即计算机系统中最重要的部分
②操作系统向上(应用程序)提供的服务:
GUI(图形化用户接口)
命令接口
==========================================================
命令接口分为两类:
a)联机命令接口,如windows中的Windows+R,用户一次提出一个请求
b)脱机命令接口/批处理命令接口,如*.bat文件内部存入许多请求,执行时计算机一条条进行相应
==========================================================
程序接口:可以在程序进行系统调用使用程序接口。普通用户不能直接使用程序接口,只能通过代码间接使用。如C语言打印"Hello Word!",print函数底层就调用了操作系统提供的显示有关的系统调用。
程序接口和命令接口统称为用户接口
③对硬件机器的拓展
没有任何软件支持的计算机成为裸机。在裸机上安装的操作系统,把覆盖了软件的机器成为扩充机器,又称之为虚拟机。
✨ 2 操作系统的特征
操作系统基本特征有四个:并发、共享、虚拟和异步。
其中并发和共享是最基本特征,二者互为存在条件。
🍕 2.1 并发和并行
计算机系统的基本特征是并发,但是并发和并行比较像,要注意区分。
并发:指两个或多个事件在同一时间间隔内发生。
并行:指两个或多个事件在同一时刻同时发生。
比如,7点起床,8点工作,9点出门。那么在7点到9点这个时间段,三个动作是并发执行的。而并行,必须要求某一时刻,起床、工作、出门三个动作同一时刻发生(举个例子)
因此说,并发在宏观上是同时执行,而在微观上是交替进行的。
并发和并行一个重要的知识点:
单核CPU同一时刻只能执行一个程序,因此各个程序只能并发执行。
多核CPU同一时刻可以执行多个程序,各个程序可以并行执行。
🐬 2.2 共享
共享分为两种方式:互斥共享方式和同时访问方式。
互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
同时访问方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。(在宏观上是同时执行,而在微观上是交替进行)
🎏 2.3 并发和共享的关系
并发性指计算机系统中同时存在着多个运行着的程序。共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义。
- 如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。
因此,总结起来就是并发和共享是操作系统两个最基本的特征,两者之间互为存在条件。(黄色部分均可能在选择中出现)
👻 2.4 虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存的,而逻辑上对应物(后者)是用户感受到的。
虚拟技术采用多道程序设计技术,采用让多道程序并发执行的办法,来分时使用一个处理器。
比如,同时我们只有4GB的内存,QQ要2GB,微信要2GB,此时内存已经分配完,不能再打开另外一个软件。而实际情况是系统自动将QQ和微信置于后台,空出内存打开第三个程序。
注意,一个程序需要放入内存并给它分配CPU才能执行。
操作系统的虚拟技术分为:
- 时分复用技术,如处理器的分时共享
- 空分复用技术,如虚拟存储器
这两个后面章节会详细介绍
🥓 2.5 异步
在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
比如有程序1(任务1,任务2),程序2(任务3,任务4),其中任务1和任务3需要相同的资源。可能出现任务1=》任务3=》任务4=》任务2的执行顺序,那么任务1执行完之前,由于任务3没有资源,因此无法执行,两个任务即称为异步执行。
🎈 2.6 重要考点
理解并发和并行的区别
理解并发和共享互为存在条件
没有并发和共享,就谈不上虚拟和异步。
✨ 3 发展历程
计算机系统发展经历了手工操作阶段、批处理阶段、分时操作系统、实时操作系统、网络操作系统和分布式计算机系统、个人计算机操作系统。(重点是前4个,后面的了解即可)
🎄 3.1 手工操作阶段
该阶段没有操作系统,所有工作都需要人工参与。
缺点:
- 用户独占全机
- 人机速度矛盾导致资源利用率极低
🍕 3.2 批处理阶段
该阶段操作系统开始出现,且分为两阶段:单道批处理系统、多道批处理系统
单道批处理系统:
引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。
优点:
- 缓解了一定程度的人机速度矛盾
- 资源利用率有所提升
缺点:
3. 内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。
4. CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
多道批处理系统:(该阶段操作系统正式诞生)
时间分配图如上所示,与单道批处理系统对比可看出,CPU计算的同时进行I/O设备的输入和输出。因此避免了CPU时间的大量闲置。
优点:
- 多道程序并发执行,共享计算机资源。
- 资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
缺点:
用户响应时间长,没有人机交互功能(用户无法了解自程序的运行情况且不能控制计算机)
🐬 3.3 分时操作系统
分时操作系统指把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。(如果某个作业没有在分配给他的时间片内完成计算,则该作业暂时停止运行,把处理器交给其它作业,等待下一轮继续运行)
优点:
- 用户请求可以被即时响应,解决了人机交互问题。
- 允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
缺点:
- 操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
🎏 3.4 实时操作系统
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。主要特点是及时性和可靠性。
优点:
能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
其它操作系统了解即可
✨ 4 操作系统的运行机制
程序是如何运行的呢?
程序由代码组成,而高级语言代码执行时,先通过编译器翻译为多条机器指令(二进制),再由硬件执行。
注意这里的指令指的是二进制编码组成的代码,而不是类似widnows+R中执行的命令(联机命令接口)
🎏 4.1 程序
通常CPU执行两种不同性质的程序:
- 用户自编程序/应用程序,由普通程序员写的,如QQ,WeChat等。
- 内核程序,内核程序是操作系统个中核心的部分,也是最接近硬件的部分。甚至可以说,一个操作系统只要有内核即可。(操作系统的功能未必都在内核中,如GUI)
🎈 4.2 指令
处于安全考虑,指令也分为两种:
- 特权指令,指的是不允许用户直接使用的指令。如内存清零指令
- 非特权指令,允许用户直接使用的指令,不能直接访问系统中的软硬件资源 ,仅限于访问用户的地址空间(防止用户程序对系统造成破坏)。如加法指令、减法指令等
4.3 运行状态
具体实现上,将CPU运行状态分为两种:
用户态/目态,此时正在运行的是内核程序,此时可以执行特权指令。
核心态/管态/内核态, 此时正在运行的是应用程序,此时只能执行非特权指令。
CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。
那么两种运行状态如何切换呢?
内核态到用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统
将主动让出CPU使用权。
用户态到内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺
回CPU的使用权。(这里中断的具体含义后面总结)
✨ 5 中断和异常
CPU 上会运行两种程序,一种是操作系统内核程序,一种是应用程序。而“中断”是让操作系统内核夺回CPU使用权的唯一途径。(这里的“中断”是广泛意义上的中断,包含外中断和内中断)
中断和并法:
如果没有中断,一旦CPU运行某个程序,则无法终止,则不存在并法。
🥓 5.1 内中断/异常
与当前执行的指令有关,中断信号来自CPU内部。
其中,内中断/异常也分为三类:
故障,由陷入指令引发,是应用程序故意引发的。
自陷,由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
终止,由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令。
🎈 5.2 外中断
外中断与当前执行的指令无关,中断信号来源于CPU外部。比如时钟部件每隔一个时间片(如 50ms)会给CPU发送一个时钟中断信号。或打印机当输入输出任务完成时,向CPU发送中断信号。
🎏 5.3 中断机制的基本原理
首先检查中断信号:
- 内中断在CPU执行指令时检查是否存在异常
- 外中断在每个指令周期末尾检查是否有外中断信号要处理
其次,寻找中断处理程序位置:
具体做法是,当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
需要注意的是,中断处理程序一定是内核程序,需要运行在“内核态”。
最后,处理中断程序:
假设第i条指令后进行中断或异常处理程序。如果能够解决相应问题,则在中断或异常处理的最后,CPU通过中断或异常发返回指令i或继续执行第i+1条指令。如果中断或异常处理程序发现是不可恢复的致命错误则终止用户程序。
✨ 6 系统调用
需要解决上面几个问题
🎈 6.1 什么是系统调用?
系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数。
系统调用的作用:系统中各种共享资源都由操作系统统一掌管,凡是涉及资源有关的操作(存储分配、i/O传输以及文件管理),都必须由通过系统调用的方式向操作系统提出请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用与程序接口的关系:
如图,一组系统调用可以组成程序接口。
6.2 系统调用与库函数的区别
操作系统向上提供系统调用,使得上层程序能请求内核的服务,而高级编译语言的库函数由系统调用封装的来,以隐藏系统调用的一些细节,使程序员编程更加方便。
总结来说系统调用比库函数更加底层,涉及硬件。
🍕 6.3 什么系统调用是必须的?
问题描述:
两个进程并发运行,打印机设备交替地收到 WPS 和 Word 两个进程发来的打印请求,如果不对两个程序协调,结果就是两篇论文的内容混杂在一起。
解决办法:
处理办法是当用户进程想要使用打印机这种共享资源,必须通过系统调用向操作系统内核发出请求必。而内核可以对共享资源进行统一的管理,会对各个请求进行协调处理。
🎈 6.4 系统调用的过程
首先用户程序指令传入CPU执行。当该指令与资源操作有关,则操作系统通过硬件中断机制进入核心态,运行程序。之后,CPU通过中断或异常发返回断电继续执行用户程序。
🎏 6.5 重要考点
✨ 7 操作系统的系统结构
🥓 7.1 大内核/宏内核/单内核
大内核是指将系统主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户提供高性能的服务系统。具体包含哪些功能见上图。
👻 7.2 微内核
微内核指的是将内核中最基本的功能保留在内核,从而将那些不需要的在核心态执行的功能转移到用户态执行,从而降低内核的设计复杂度。包含的功能有:
🎈 7.3 分层结构
分层法是将操作系统分为若干层,最底层(第0层)是硬件,最高层(第N层)是用户接口。其中,每一层都只能调用紧邻它的低层的服务和功能。
🎏 7.4 模块化
模块化是将操作系统按照功能分为若干个模块(每个模块按规定设计接口,使不同模块可以进行通信),代表各功能的模块仍能按照一定的标准分为子模块…下面是一个例子:
如果模块划分太小,虽然能够降低模块本身的复杂度,但是会使模块之间联系过多,造成系统比较混乱。如果模块划分太大,会增加模块内部的复杂度。
同时,模块之间独立性越高,各模块之间交互越少,结构也更加清晰。可用内聚性和耦合性衡量独立性:
- 内聚性,模块各部分联系的紧密程度。内聚性越高,独立性越好。
- 耦合性,模块间相互联系和相互影响的程度。耦合性越低,独立性越好。
🎏 7.5 外核
即上图粉色部分,它的任务是为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源。
👻 7.6 各结构的优势和缺点
✨ 8 操作系统的引导
🥓 8.1 什么是操作系统引导
官方给的定义是计算机利用CPU运行特定程序,通过程序识别硬盘,识别硬盘分区,识别硬盘分区上的操作系统,最后通过启动操作系统,一环一环的电脑启动的程序。
对应我们看到的过程是计算机启动的过程是按下电脑开机键,系统在黑色的屏幕下打印出一些英文语句、然后进入进度条状态,最后到登陆界面,这样操作系统的引导过程就算完成了。
👻 8.2 磁盘里面有哪些相关数据
主存:
ROM(BIOS)引导程序,引动硬件中的磁盘引导程序。
ROM每次关机后内容都会消失。
安装完操作系统的硬盘:
这里注引到记录(MBR)包含磁盘引导程序和分区表,主要告诉CPU去哪个主分区去找操作系统。
C盘是磁盘的活动分区,安装了操作系统。
C盘:
第一部分PBR,用于寻找启动管理器。
第二部分根目录,即我们双击打开C盘包含的内容。
🍕 8.3 引导过程
✨ 9 虚拟机
虚拟机指的是利用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine, VM),每个虚拟机器都可以独立运行一个操作系统。
分为两种,第一类虚拟机管理程序和第二类虚拟机管理程序。
9.1 传统计算机
在物理机器上安装一个操作系统,分配给该操作系统所有的资源(CPU、磁盘、内存等)
🎏 9.2 第一类虚拟机管理程序
特点:
第一类虚拟机管理系统直接运行在硬件之上,直接控制和分配硬件资源给多个安装的操作系统。
指令:
近年来,我们对指令进行了更详细的划分,比如将特权指令划分为0环,虚拟内核空间指令划分为1环(包含一些不敏感的特权指令),虚拟用户空间指令划分为2环。
虚拟机上的操作系统认为自己处于内核空间,实际上运行在用户空间。当虚拟机操作系统执行特权指令(敏感指令)时,第一类虚拟机管理程序会截获该条指令,通过等价转化执行。
👻 9.3 第二类虚拟机管理程序
第二类虚拟机管理程序运行在一个宿主操作系统中,虚拟机上的操作系统都成为客户操作系统。
资源分配:
我们首先为第二类虚拟管理程序分配虚拟内存等资源,然后再由第二类虚拟管理程序分配给各个操作系统。
指令:
当虚拟机的操作系统发出所有特权指令,会被第二类虚拟机管理程序截获,并转化为对宿主操作系统的系统调用。
实现方式是利用虚拟机软件,比如VMware或VirtualBox:
需要注意的是,此时整个操作系统是一个IOS文件,比如我们要求10个G的磁盘空空间,此时会生成一个10G大的文件。
🥓 9.4 对比