目录
一、运行机制
1.内核程序和用户程序
2.特权指令和非特权指令
3.内核态和用户态
(1)概念
(2)两态之间的切换
4.中断
(1)作用
(2)触发
5.系统调用
(1)概念
(2)系统调用和库函数
(3)过程
二、体系结构
1.大内核和微内核
(1)操作系统主要功能
(2)概念
(3)对比
三、操作系统引导
1.过程
四、虚拟机
1.概念
2.实现
(1)第一类虚拟机管理程序
(2)第二类虚拟机管理程序
一、运行机制
1.内核程序和用户程序
普通程序员写的程序是“应用程序”。而用于实现操作系统的程序则是内核程序。很多内核程序组合就成了操作系统的内核,它是操作系统最核心的部分,也是最接近硬件的部分。
2.特权指令和非特权指令
对于一些影响重大的指令,如清除指令就属于特权指令,只能由操作系统内核来实现。而应用程序使用的指令是非特权指令,比如加法减法指令等。
CPU在设计和生产的时候就划分了这两种指令,所以在执行前就能区分出其类型。
3.内核态和用户态
(1)概念
CPU可以区分出指令的类型,又该如何判断该不该执行呢?
CPU有两种状态:内核态和用户态,内核态就是在运行内核程序,此时可以执行特权指令;用户态就是在运行用户程序,此时只能执行非特权指令。CPU中有一个程序状态寄存器(PSW),其中一个二进制位0代表用户态,1代表内核态。
(2)两态之间的切换
内核态到用户态:执行一条修改PSW标志位的特权指令,这时候内核就会主动让出使用权。
用户态到内核态:通过“中断”触发,硬件自动完成状态过程,此时内核会强行夺回使用权,且这是唯一途径。
4.中断
(1)作用
有了中断机制,才会有并发的实现。如果没有中断,当应用程序在CPU上运行的时候,就会一直运行,也就无法触发并发。
(2)触发
中断有两种:内中断和外中断。
内中断,也被称为异常。即与当前执行的指令有关,中断信号来源于CPU内部。主要可以分为三种情况:
(1)终止。比如在用户状态的时候执行特权指令,又或者一些非法指令:比如进行除法的时候,除数为0。
(2)故障。由错误条件引起,可能会被内核修复。修复后将CPU使用权归还给应用程序。
(3)陷入/陷阱。用户状态下应用程序需要内核的服务。于是会主动请求,此时会执行陷入指令。
外中断,也称为中断,属于狭义的中断。即与当前指令无关,中断信号来源于CPU外部,每执行一条指令,CPU都会例行检查是否有外中断信号。
(1)时钟中断,每隔一个时间片给CPU发送中断信号。
(2)输入输出设备发出中断信号。
5.系统调用
(1)概念
操作系统作为用户和硬件之间的接口,供用户使用的是命令接口,而供应用程序或者程序员使用的是程序接口。程序接口就是一系列的系统调用组成的。
(2)系统调用和库函数
系统调用比库函数更接近底层。有些库函数会涉及到系统调用。编程语言也会将一些系统调用封装成库函数,使程序员编程更加方便。
(3)过程
但凡是与共享资源有关的操作,都需要通过系统调用去向内核发出服务请求,内核对各个请求进行协调处理。
应用程序先传递系统调用参数告诉系统调用的类型,随后通过陷入(trap)指令主动将CPU使用权然给内核,随后内核由用户态转换到内核态,内核根据请求执行处理对应的系统调用内核程序,最后返回原先的应用程序,让其接着往下执行。
二、体系结构
1.大内核和微内核
(1)操作系统主要功能
操作系统中非主要的功能都在用户态,如图形化GUI。主要的功能可以细分为两部分:
一部分是与硬件紧密联系,属于操作系统中最基本的功能。主要有:时钟管理(实现计时功能)、中断处理(负责实现中断机制)以及原语(最底层的一种特殊程序,运行不能中断)。
另一部分的操作更多与数据结构有关,而不直接涉及到硬件。主要是系统管理资源的功能,如:进程管理、存储器管理、设备管理。
(2)概念
大内核就是将主要功能模块都作为操作系统内核,使其都运行在内核态。而微内核仅仅只是将主要功能中与硬件联系最紧密的那部分作为操作系统内核,剩余的功能运行在用户态。
(3)对比
显然大内核包含的模块更多,不需要频繁地在内核态和用户态之间切换,所以性能高。相反微内核则需要频繁切换,性能低。
但也正因为大内核包含的模块多,所以内部代码庞大,结构混乱,不利于维护。而相对地,微内核结构清晰,便于维护。
三、操作系统引导
在开机之后实现让操作系统运行的过程就是操作系统引导。
1.过程
(1)CPU会通过一个特定主存地址,找到主存中的ROM引导程序。
(2)根据该引导程序的指示,将硬盘中的主引导记录(MBR)读入内存中,主引导记录中包括磁盘引导程序和分区表。
(3)CPU根据磁盘引导程序在分区表中查询到C盘的位置,再将C盘中的引导记录PBR读入内存。
(4)CPU通过PBR找到根目录下的启动管理程序,执行该程序后便会进行操作系统一系列的初始化工作。
四、虚拟机
1.概念
现实中一台物理机器上只能运行一个操作系统。而通过虚拟化技术可以实现将一台物理机器虚拟化为多台虚拟机器,每个虚拟机器都可以独立运行一个操作系统。
2.实现
有两种实现方式:
(1)第一类虚拟机管理程序
第一类是直接运行在硬件上,可以直接控制和分配硬件资源。它的硬件资源率利用更高,但同时部署复杂度也高。
(2)第二类虚拟机管理程序
第二类运行在宿主操作系统(HOST OS)之上。依赖于宿主操作系统分配资源。相比于第一类,硬件资源利用率低,原因是HOST OS也会占用一部分硬件资源。但第二类更轻量化、易用性更强。