计算机操作系统笔记总结:Part1 计算机系统概述(下)

简介: 文章目录写在前面1 操作系统的概念与功能2 操作系统的特征3 操作系统的发展与分类4 操作系统的运行机制4.1 特权指令与非特权指令4.2 内核态与用户态5 中断和异常6 系统调用6.1 什么是系统调用6.2 为什么系统调用是必须的?6.3 系统调用的过程7 操作系统的体系结构8 操作系统的引导9 虚拟机

大内核与微内核的区别?


如果应用程序想要请求操作系统的服务,这个服务同时涉及到进程管理、存储管理、设备管理。

如果采用的是大内核的方式,则只需要进行两次变态;

如果采用的是微内核的方式,则需要进行六次变态。


需要注意的是,变态的过程是有成本的,要消耗不少的时间,频繁地变态会降低系统性能。


变态是为了方便描述,实际表述的时候: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)的对比

相关文章
|
23天前
|
存储 安全 数据处理
【计算机系统组成原理】操作系统处理器深入介绍
【计算机系统组成原理】操作系统处理器深入介绍
|
29天前
|
安全 Linux Shell
操作系统究竟是什么?在计算机体系中扮演什么角色?
操作系统究竟是什么?在计算机体系中扮演什么角色?
38 0
|
1月前
|
程序员 Linux 调度
《操作系统》——计算机系统概述
《操作系统》——计算机系统概述
|
1月前
|
存储 安全 Unix
计算机的操作系统
计算机的操作系统
12 2
|
1月前
|
存储 Ubuntu Unix
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
41 0
|
2月前
|
存储 安全 自动驾驶
计算机软考之操作系统
计算机软考之操作系统
51 0
|
3月前
|
Linux 数据安全/隐私保护 虚拟化
操作系统:计算机的大脑
操作系统:计算机的大脑
64 0
|
3月前
|
存储 算法 调度
《计算机操作系统》重点知识笔记整理(二)
《计算机操作系统》重点知识笔记整理(二)
40 0
|
17天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
31 0
|
18天前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构