大内核与微内核的区别?
如果应用程序想要请求操作系统的服务,这个服务同时涉及到进程管理、存储管理、设备管理。
如果采用的是大内核的方式,则只需要进行两次变态;
如果采用的是微内核的方式,则需要进行六次变态。
需要注意的是,变态的过程是有成本的,要消耗不少的时间,频繁地变态会降低系统性能。
变态是为了方便描述,实际表述的时候:CPU状态的转换
分层结构
内核分为多层,每层可单向调用更低一层提供的接口。注意,只能调用相邻的,不可以跨层。
这种分级的思想,便于调试和验证,每层都相对独立,可以逐层调试,更加方便。另外,层与层之间的调用接口固定不变,我们可以在层与层之间新加一层,只需要保证原来定义的接口不变。
但是,难以定义边界。比如,进程有时候需要使用到内存管理相关的功能,而内存管理有时候也需要使用进程相关的资源。这种分层的模式,导致有一些不灵活。
模块化
模块化是将操作系统按功能划分为若干个具有一定独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能通过接口进行通信。还可以进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口。把这种设计方法称为模块-接口法。
模块化即将内核划分为多个模块,各个模块之间相互协作。
内核 = 主模块 + 可加载内核模块
主模块:只负责核心功能,如进程调度、内存管理等。
可加载内核模块:可以动态的加载新模块到内核,而无需重新编译整个内核。
优点: 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发。支持动态加载新的内核模块,比如安装驱动程序等,增加了OS的适应性。任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。
缺点: 模块间的接口定义未必合理实用;模块间相互依赖,更难调试和验证。
外核
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
外核可以直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源,减少了硬件资源的“映射层”,提升了效率。
计算机操作系统–体系结构小结
8 操作系统的引导
什么是操作系统的引导?
简单来说,开机的时候,怎么让操作系统运行起来,就是操作系统的引导。
解答这个问题前,我们需要知道,磁盘中存储了什么内容。
在一块磁盘安装完操作系统后,其分布如下图所示:
除了我们能看到的磁盘分区以外,还包含了个主引导记录(MBR),包含了磁盘引导程序和分区表。
C盘: 是这个磁盘的活动分区,安装了操作系统。
操作系统要启动的话,操作系统的数据需要被放到主存中。这里需要补充一个知识点:计算机的主存由RAM和ROM两部分组成。而RAM芯片里的数据,只要关机,就会被清空。而ROM里的数据不会因为断点而消失。
而CPU开机通电后,则会找到引导程序,执行该程序里的指令。指示CPU去把磁盘的主引导记录读入到内存。
重点来啦!主引导记录中有磁盘引导程序和分区表。磁盘引导程序会根据分区表去判断C盘所处的位置,读入C盘的PBR引导程序。PBR引导记录里的程序 ,会找到启动管理程序,通常存储在根目录的某个位置。
操作系统引导的过程:
CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机);
将磁盘的第一块–主引导记录 读入内存,执行硬盘引导程序,扫描分区表;
从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序;
从根目录下找到完整的操作系统初始化程序(即 启动管理器)并执行,完成“开机”的一系列动作。
9 虚拟机
传统计算机
一台物理机器上只能运行一个操作系统,带来了很多应用上的限制。
虚拟机
使用虚拟化技术,将一台物理机器虚拟化多台机器(Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系统。
同义术语: 虚拟机管理程序/虚拟机监控程序/Virtual Machine Monitor/Hypervisor
第一类VMM:直接运行在硬件上;
第二类VMM:运行在宿主操作系统上。
两类虚拟机管理程序(VMM)的对比