操作系统的目标和功能
1)操作系统管理计算机系统资源
2)OS作为上层软件/用户与计算机硬件之间的接口(操作系统提供了用户接口)
命令接口:方便人机交互设计的,用户输入一个命令可能会使用到系统调用,可能不会
系统调用(程序接口):程序使用的,是方便程序设计使用的
3)OS实行了对计算机资源的扩充
操作系统运行环境
用户态,核心态/特权指令、非特权指令
CPU的运行模式 | 运行程序 | 指令类型 |
用户态、目态 | 用户程序/应用程序 | 只用非特权指令 |
内核态,核心态,管态 | 操作系统内核程序 (服务器运行在用户态) | 全部指令 |
特权指令 | 非特权指令 |
时钟管理:写时钟指令 中断管理:开中断指令、关中断指令 设备管理:I/O指令 进程管理:写PSW寄存器指令 存储器管理:清内存,建存储保护 | 存取数指令, 读时钟指令 加减乘除等算数运算指令 跳转指令 压栈/弹栈指令 寄存器清零指令 trap指令 |
中断和异常
用户态内核态方式:内部中断(软中断)或外部异常(硬中断)
(唯一途径,中断是OS必须实现的机制)
故障:非法操作码、缺页中断、除数为0、运算溢出(可能被修复)
终止:控制器出错、存储器校验错(致命错误)
陷入:trap指令是非特权指令
中断处理过程:CPU检测到异常事件,或者执行完当前指令发现一个中断请求信号,CPU打断当前程序的执行,转去执行中断处理程序,最后返回被打断的用户程序
1)内部异常不可屏蔽,一旦出现立即处理,外部中断分为可屏蔽中断和不可屏蔽中断、
2)对中断或异常的具体处理过程由操作系统(和驱动程序)完成
中断机制的基本的原理:但CPU检测到中断信号时,会根据中断的类型去查询中断向量表,从而找到中断处理程序在内存中的位置
中断处理时保存的数据:
硬件:保存不得不保存的内容,如程序计数器PC,程序状态字PSW
操作系统(软件)保存可能需要保存的内容,如通用寄存器(通用数据寄存器+通用地址寄存器)
内核态用户态:执行一条特权指令,修改程序状态字寄存器(PSW)的标志位,这个动作以为着操作系统主动让出控制权
系统调用
高级语言的函数可能涉及系统调用,可能不涉及系统调用
系统调用的具体过程:用户程序设计时,使用系统调用命令,该命令经编译后,形成若干条参数指令和陷入指令
注意:系统调用的发起在用户态下进行,对系统调用的相应处理(系统调用的服务程序)在内核态下进行
操作系统内核结构(简单的选择题)
注意:模块化和分层结构是按照功能划分的,宏内核和微内核是按照内核架构划分
不管是采用宏内核还是微内核地OS,内核功能都可以按照模块化设计,
被移出内核地操作系统其他功能,可以按照分层的原则划分为若干服务器,(服务器运行在用户态),客户与服务器采用 消息传递机制实现交互
虚拟机
使用虚拟技术,将一台物理机器虚拟为多台虚拟机器,每个虚拟机都可独立运行一个操作系统(防止多个进程运行在同一个操作系统相互影响)
同义词:虚拟机管理程序、虚拟机监控程序
第一类虚拟机
第一类虚拟机管理程序直接运行在硬件之上,运行在核心态
但宿主操作系统执行特权指令时,由第一类虚拟机管理程序检查当前虚拟机运行的是内核程序,还是用户程序,若是内核程序,则虚拟机管理程序将安排这条指令顺利执行
例如云服务器
第二类虚拟机
运行在宿主操作系统上,运行虚拟机进程的同时,可以运行宿主操作系统进程,例如在使用安装了wondows操作系统的机器上,可以安装虚拟机,运行Linux
两类虚拟机管理程序类比
第一类虚拟机管理程序 | 第二类虚拟机管理程序 | |
---|---|---|
对物理资源的控制权 | 直接运行在硬件之上,直接控制和分配物理资源 | 运行在宿主操作系统上,以来于宿主操作系统为其分配资源 |
资源分配方式 | 在安装GuestOS时,VMM直接为其分配未经抽象的硬件资源 | GuestOS拥有一个虚拟磁盘,磁盘实际上是HostOS文件系统的一个大文件;GuestOS分配到的是虚拟内存 |
性能 | 性能更好,不需要那么多层映射 | 性能更差,需要多层映射 |
可支持的虚拟机数量 | 更多 | 更少,硬件资源和宿主操作系统共享 |
虚拟机的可迁移性 | 更差 | 更好,直接导出GuestOS(虚拟机镜像文件)到另一台HostOS |
运行模式 | 可以执行最高特权的指令,上层操作系统运行在次高态 | 第二类虚拟机管理程序运行在用户态,部分运行在内核态,GuestOS发出的系统调用会被虚拟机管理程序截获,并转化为对HostOS的调用 |