1、操作系统特征(并发、共享、虚拟、异步)
- 并发
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
常考易混概念——并行:指两个或多个事件在同一时刻同时发生。
注意(重要考点):
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行;
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行;
比如Intel 的第八代 i3 处理器就是 4 核CPU,意味着可以并行地执行4个程序。
- 共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
两种资源共享方式:
互斥共享:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
同时共享:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。
这里的“同时”,往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)。
并发性和共享性互为存在条件解读:
如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义。
如果失去共享性,则两个不同程序就不能同时访问硬盘资源,就无法实现同时工作,也就无法并发
- 虚拟
是把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
虚拟技术:
空分复用技术(如虚拟存储器技术)
时分复用技术(如虚拟处理器)
显然,如果失去了并发性,则一个时间段 内系统中只需运行一道程序,那么就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性。
- 异步
异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的, 而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。
2、操作系统运行机制
程序是如何运行的?
程序运行的过程其实就是CPU执行一条一条的机器指令的过程,而将我们编写的C语言程序通过编译器“翻译”就得到了机器指令(当然不止这一种方式)。
- 两类程序
内核程序
应用程序:我们普通程序员写的程序就是“应用程序 ”。
- 两类指令
特权指令:操作系统内核作为 “管理者”,有时会让CPU执行一些“特权指令”,如:内存清零指令。这些指令影响重大,只允许“管理者”——即操作系统内核来使用。
非特权指令:应用程序只能使用“非特权指令”,如加法指令、减法指令等。
程序运行的过程其实就是CPU执行一条一条的机器指令的过程,在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。
- 两种处理器状态
内核态/核心态/管态
用户态/目态
Q1:那CPU能判断指令类型,那它又是如何区分当前运行的是应用程序还是内核程序?
A1: CPU 中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。
CPU 有两种状态,“内核态”和“用户态 ”处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令;
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。
- “变态”过程(切换处理器状态)
内核态——>用户态:通过一条特权指令修改PSW
用户态——>内核态:由中断引起,硬件自动完成
3、中断和异常
3.1 中断
中断的作用
“中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权(强行夺回)。
“中断”是让操作系统内核夺回CPU使用权的唯一途径(如果没有“中断”,那么一眼一旦应用程序上CPU运行,CPU就会一直运行这个应用程序,甚至可以说,没有“中断”,就没有操作系统)
中断的类型
- 内中断(异常):陷阱(trap)、故障(fault)、终止(abort)
与当前执行的指令有关, 中断信号来源于CPU内部
- 外中断(狭义“中断”):时钟中断、I/O中断请求
与当前执行的指令无关, 中断信号来源于CPU外部
中断机制的基本原理
不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。