操作系统的运行机制和体系结构
计算机指令系统是计算机硬件的语言系统,也叫机器语言,它是软件和硬件的主要界面,从系统结构的角度看,它是系统程序员看到的计算机的主要属性。
我们使用高级语言编写程序,最终都会被编译为机器语言,计算机才能识别。不清楚的可以看看计算机基本组成及其内部元件细节随笔这篇文章。
在计算机系统中有些指令“人畜无害”,可以随意使用,但有些指令不行,比如内存清零指令,这种指令执行后对计算机的影响是非常大的,所以不允许用户程序使用。
因此,按照指令的使用权限可以将指令分为两类:
CPU在执行指令之前会先判断指令的类型,那CPU是如何判断的呢?
我们规定了CPU的两种状态:
- 用户态(目态,CPU只能执行非特权指令)
- 核心态(管态,CPU既可以执行特权指令,又可以执行非特权指令)
计算机中状态的判断是由“程序状态字寄存器(PSW)”的某个标志位来判断的,比如0代表用户态,1代表核心态。
按照程序能否执行特权指令又可以将程序分为两类
- 内核程序:系统的管理者,可运行特权和非特权两种指令,运行在核心态
- 用户程序:为保证计算机系统内的安全性,只能运行非特权指令,运行在用户态
在操作系统(01)-定义及功能简述这篇文章中,我们简单介绍了操作系统的内部层次结构,这里再细化一下:
时钟管理:主要是实现计时的功能,计算机中所有的进程切换、调度、管理工作都是由计时来完成的。
原语:一种特殊的程序,最接近硬件,这种程序的运行具有原子性。
原子性:程序要么不执行,一旦执行就必须执行到程序结束,中间无法被中断。这里不着重讲述原子性,后面会放在中断那里一块讲。
上图中根据操作系统的不同,内核可以分为两类:
大内核就是上图中标注“内核”的那一部分,它将不那么重要的内核功能也划分在了内核中,但在有些操作系统中,他只将最接近硬件的部分划分为内核,这类称之为微内核。
大内核:高性能,但是内核代码庞大,结构混乱,难以维护
微内核:内核功能少,结构清晰,分工明确,易于维护。但有时由于某些工作需要特权指令,所以需要在用户态与核心态之间频繁切换,性能较低。