操作系统的基本概念
操作系统自下而上可大致分为四个部分:硬件、操作系统、应用程序和用户。
操作系统的特征:
1.并发。指两个或多个事件在同一时间间隔内发生。注意 同一时间间隔(并发)和同一时刻(并行)的区别。
2.共享。资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。共享可分为以下两种资源共享方式
(1)互斥资源共享规定在一段时间内只允许 一个进程访问该资源。
(2)同时访问方式。允许在一段时间内由多个进程“同时”访问。宏观上同时,微观上分时共享。
3.虚拟。是指吧一个物理上的实体变为若干逻辑上的对应物。
4.异步。多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。
并发和共享是操作系统两个最基本的特征,两者之间互为存在条件。
操作系统作为计算机系统资源的管理者包括(1)处理机管理 (2)存储器管理 (3)文件管理 (4)设备管理 。
操作系统提供的接口主要分为两类:一类是命令接口,用户利用这些操作命令来组织和控制作业执行;另一类是程序接口,编程人员可以使用它们来请求操作系统服务。
(1)命令接口
使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。按作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口。
联机(交互式)命令接口可以这样理解:“雇主”说一句话,“工人”做一件事,并作出反馈,这就强调了交互性。
脱机(批处理)命令接口可以这样理解:“雇主”把要“工人”做的事紫萼在清单上,“工人”按照清单命令逐条完成这些事。这就是批处理。
(2)程序接口
程序接口由一组系统调用命令(简称系统调用,也称广义指令)组成。用户通过在程序中使用这些系统调用命令来请操作系统为其提供服务。
GUI图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令是操作系统的一部分。
shell是命令解析器,属于命令接口。
计算机开机后,操作系统最终被加载到RAM。
操作系统的分类
单道批处理系统的主要特征:(1)自动性 (2)顺序性 (3)单道性 。
多道批处理系统的主要特征:(1)多道 (2)宏观上并行 (3)微观上串行 。缺点:用户相应时间较长;不提供人机交互能力,用户既不能了解自己的程序运行情况,又不能控制计算机。
引入多道程序设计后,程序的执行就失去了封闭性和顺序性。
在操作系统中采用分时技术就形成了分时系统。所谓分时技术,是指把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。分时系统的主要特征如下:(1)同时性 (2)交互性 (3)独立性 (4)及时性 。
为了能在某个时间限制内完成某些紧急任务而不需要时间片排队,诞生了实时操作系统。这里的时间限制可以分为两种情况:若某个动作必须绝对地在规定的时刻(或规定的时间范围)发生,则称为硬实时系统。若能接受偶尔违反时间规定且不会引起任何永久性的损害,则成为软实时系统。实时操作系统的主要特点是及时性和可靠性。
提高单机资源利用率的关键技术是多道程序设计技术。
中断技术使得多道批处理系统和 I/O 设备可与 CPU 并行工作。
操作系统的运行机制
特权指令是指计算机中不允许用户直接使用的指令,如 I/O 指令、置中断指令等。在具体实现上,将 CPU 的状态划分为用户态(目态)和核心态(管态、内核态)。CPU 处于核心态,此时 CPU 可以执行特权指令;CPU 处于用户态,此时只能执行非特权指令。
一些与硬件关联较紧密的模块,如时钟管理、中断处理、设备驱动等处于最底层。
大多数操作系统内核包括四方面的内容:
1.时钟管理
在计算机的各种部件中,时钟是最关键的设备。时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。通过时钟中断的管理,可以实现进程的切换。系统管理的方方面面无不依赖于时钟。
2.中断机制
引入中断机制的初衷是提高多道程序运行环境中 CPU 的利用率,而且主要是针对外部设备的。后来逐步发展,形成了多种类型,成为操作系统各项操作的基础。例如,键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。可以说现代操作系统是靠中断驱动的软件。
3.原语
特点如下:
(1)处于操作系统的最低层,是最接近硬件的部分。
(2)这些程序的运行具有原子性,其操作只能一气呵成。
(3)这些程序的运行时间都较短,而且调用频繁。
通常把具有这些特点的程序称为原语。定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后再打开中断。
系统中的设备驱动、CPU 切换、进程通信等功能中的部分操作都可定义为原语,使它们成为内核的组成部分。
4.系统控制的数据结构及处理
常见的操作有以下三种:
(1)进程管理。进程状态管理、进程调度和分派、创建与撤销进程控制块等。
(2)存储器管理。存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
(3)设备管理。缓冲区管理、设备分配和回收等。
中断也称外中断,指来自 CPU 执行指令以外的事件发生,如设备发出的 I/O 结束中断,时钟中断。异常也称内中断、例外或陷入,指源自 CPU 执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页及专门的陷入指令等引起的事件。
系统调用按功能大致可分为如下几类:
- 设备管理。完成设备的请求或释放,以及设备的启动等功能。
- 文件管理。完成文件的读、写、创建及删除等功能。
- 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
- 进程通信。完成进程之间的消息传递或信号传递等功能。
- 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及始址等功能。
用户程序可以执行陷入指令(又称访管指令或 trap 指令)来发起系统调用,请求操作系统提供服务。用户执行“陷入指令”,相当于把 CPU 的使用权主动交给操作系统内核程序(CPU 状态会从用户态进入核心态)。访管指令是在用户态使用的,所以它不可能是特权指令。
由用户态转向核心态的例子:
- 用户程序要求操作系统的服务,即系统调用。
- 发生一次中断。
- 用户程序中产生一个错误状态。
- 用户程序中企图执行一条特权指令。
- 从核心态向用户态由一条指令实现,这条指令也是特权指令,一般是中断返回指令。
由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的。
执行系统调用过程的顺序是:传递系统调用参数 → 执行陷入命令 → 执行相应的服务程序 → 返回用户态
子程序调用只需要保存程序断点,即该指令的下一条指令的地址;中断调用子程序不仅要保存断点(PC 的内容),还要保存程序状态字寄存器(PSW)的内容。
外部中断处理过程,PC 值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。
操作系统的体系结构
大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可以独立地优化和演进,从而保证了操作系统的可靠性。
以上内容均来自王道书籍及相关课程等