文章目录
- 前言
- 计算机系统概述
- OS的基本概念
- OS的发展历程
- OS的运行机制
- OS体系结构
- OS引导
- 虚拟机
前言
学校OS课程的知识和408有一定的重叠,但是还不太够,因此我又一次打开了王道的OS课程。
这个笔记同理,只记最关键的内容和思考,直接针对408,基础性的概念性的知识以视频为主。
计算机系统概述
OS的基本概念
OS提供的服务:
- 用户级别:
- GUI,就是windows
- 命令接口
- 联机:有交互性,即cmd命令行
- 脱机:批处理,即.bat文件
- 程序员级别:
- 系统调用:OS的api
- 系统调用可以通过c语言的操作系统库函数调用,但是c语言本质上比系统调用还高一级
异步的前提是并发,程序之间交叉前进,即走走停停,无法预知。
OS的发展历程
- 手工阶段,缺点:
- 独占
- 人太慢,机器速度逐渐加快,人拖累机器
- 单通道批处理
- 优:提升预处理速度,不拖累机器
- 缺:独占
- 多通道批处理
- 优:解决独占,实现并发,提升效率
- 缺:无交互能力
- 分时系统
- 优:解决交互能力,用户“看起来”独占
- 缺:没有优先级
- 实时系统
- 优:解决了优先级响应问题,及时可靠
OS的运行机制
OS内核相当于OS的管理员,因此特权指令只能是内核执行。
平时用户的特权调用,操作都是向管理员申请,而不是亲力亲为。
两个状态的切换:
- 升级:特权指令触发中断(硬件),OS响应中断的时候进入核心态
- 降级:OS主动修改PSW让出控制权(软件)
- 修改PSW的指令,本身就是特权指令
中断和计组第5章衔接
涉及到进程之间的协调
,就一定要OS接入,进而需要系统调用。
需要注意,陷入指令是用户态指令(请求),接下来才会因为内中断进入核心态(执行)
OS体系结构
我们OS学的功能,可以放在内核,也可以放在用户,这就形成了大内核和微内核的区别。
微内核暴露的接口多,易于维护和扩展,但是沟通成本大,要反复调用。
- 分层结构
- 类似于计网的层次结构,结构清晰,通病是效率偏低
- 模块化
- 主模块分离,模块之间分离,平等
- 优点:可以同时开发,且效率不错
- 缺点:模块间的图关系很难把握
- 动态可加载模块。
- 可加载说白了就是插件,有没有都不影响运行,因此可以动态加载,比如驱动
- 主模块分离,模块之间分离,平等
- 宏内核和微内核
- 微内核相当于一个服务器,中转不同模块之间的`消息传递
- 外核
- 外核可以提供一些高级的资源(未经抽象的资源)分配方式
- 内核分配的资源都是抽象的,虚拟化的,比如虚拟地址,外核可以直接分配物理地址,在一些需要频繁跳跃的场景,外核直接分配一片连续空间效果会很好。当然,外核也负责保证安全。
- 跳过虚拟步骤,就相当于跳过了映射层,可以提高效率,缺点是复杂。
OS引导
简单来说,就是开机扫ROM就可以把操作系统拉起来,但是具体还是要分几步走:
- 扫ROM,启动BIOS,自检
- 读磁盘的MBR,获取分区
- 从活动分区(C盘)中读PBR,获取C盘根目录
- 通过目录找到操作系统的程序,拉到内存中,完成OS启动
这四步环环相扣,前一个获取了信息,后一步才能根据此信息行动。
而第4步用的程序,位置一般在C:/Windows/Boot/下面。
虚拟机
- 第一类VMM,相当于传统OS的加强版,直接运行在硬件上
- 虚拟OS看起来像一个OS,也有内核,但是实际上还是用户态,因此一个特权指令实际上要经过一次虚拟的系统调用+一次真正的系统调用。
- 迁移性差,因为直接和硬件耦合
- 第二类VMM,是寄居在宿主OS之上的,分为两部分
- 用户态的VMM和宿主的应用程序是共存的
- 核心态的VMM是以驱动的形式存在的,持续运行在内核态