408操作系统学习笔记——计算机系统概述(下)

简介: 408操作系统学习笔记——计算机系统概述

4.操作系统体系结构

image.png1.操作系统分为内核(接近硬件,下层)和非内核(接近软件,上层)

①非内核:GUI等

②内核:操作系统最核心的部分,由内核程序实现内核功能

2.大内核(宏内核):既含有时钟管理、中断处理和原语等与硬件关联紧密的模块;也含有对数据结构进行操作的功能(进程管理、存储器管理和设备管理等)

性能高:模块间可以直接相互调用(无需使用消息传递的方式)

结构混乱、难以维护:内核内的功能多

内核中某个功能出错,就可能导致整个系统崩溃:内核功能联系紧密,相互依赖

3.微内核:仅含有时钟管理、中断处理和原语等与硬件关联紧密的模块

效率低:各模块相互调用需要通过消息传递的方式;可能需要进行多次CPU状态的转换

功能少,易于维护:仅含有和硬件联系紧密的模块

内核中某个功能出错,不会导致整个系统崩溃50c6ddba56444dc2887515512680aa6e.png

4.分层结构:每层仅能调用比自己更低一层的功能(3调用2,2调用1),且不能跨层调用6dea29ac4396439ca9a19d939e9db747.png

缺点:

①难以合理定义各层边界:低层在实际情况下可能会用到高层的功能

效率低:只能逐层进行调用(5→4→3→2→1→0)

优点:

便于调试和验证:由于每层仅能调用比自己更低一层的功能,因此,基于下一层已经过调试的条件下,仅需对本层进行调试

②易扩充和易维护:层与层之间的接口已经确定,仅需对应上下层的接口进行设定即可完成扩展

5.模块化:内核被划分为多个模块,即内核 = 主模块(内存、进程等等) + 可加载内核模块(驱动等)

优点:

①逻辑清晰、易于维护:每个模块的功能不同(内存、进程等)

②可多模块同时进行开发:确定某个模块对外的接口后,其他模块可以使用该接口

支持动态加载新的内核模块:添加新模块功能无需对整个内核进行重新编译

无需消息传递就可以直接调用其他模块的功能,效率高(微内核需要使用消息传递的方式)

缺点:

①模块间的接口定义未必合理:由于模块间可以相互调用,因此,在实际情况下,模块已定义的接口未必能满足其他接口调用的需要

②难以调试和验证:调试过程中难以判断是自身出问题还是调用其他模块导致问题

6.外核:内核负责进程调度和通信;外核负责给内核分配未经抽象(使得内核能够明确知道自己申请的空间在硬盘/内存中的实际位置)的资源(例硬盘和内存的存储空间)

①用户进程可以灵活使用硬件资源

②不需要对硬件资源进行映射

5.操作系统的引导

1.硬件自检:检查是否插内存条/磁盘等

2.扫描分区表:找到活动分区

3.分区表:一种数据结构,记录每个分区的大小和地址范围

4.安装操作系统的分区为活动分区,并使用其启动操作系统,即图中C盘

5.计算机主存有RAM和ROM组成,BIOS(基本输入/输出系统)存放在ROM中,其中最重要的是ROM引导程序(自举程序)

6.RAM一经关机/断电,其中数据就丢失,而ROM不会,根据这一特性,可以令计算机在开机时固定的去ROM的某一区域中启动自举程序:ROM引导程序(自举程序)的作用是指示CPU将磁盘的主引导记录读入内存(即将磁盘引导程序和分区表读入内存)

7.CPU执行主存中的磁盘引导程序MBR → 磁盘引导程序根据分区表判断C盘存储的位置 → 读入C盘的第一部分数据,即引导记录PBR → CPU执行引导记录程序PBR → 找到启动管理器(通常存放在根目录下的某个位置)→ 启动启动管理程序(操作系统初始化程序) → CPU执行启动管理程序 → 启动管理程序完成初始化等一系列工作

8.硬件自检:即硬件是否有问题,例如有无插磁盘/内存条65de25fdf2c34470975bdeb95d8dbdf9.png

6.虚拟机f53e916ebd664963b7b01dd752f1aa8a.pngb7e88d9d5ca54fbf850c3e44f36e52b2.png

相关文章
|
3月前
|
算法 Shell Linux
操作系统概述
操作系统概述
37 0
|
2月前
|
Python
Python的`os`模块核心功能概述:通过`os.getcwd()`获取
【6月更文挑战第23天】Python的`os`模块核心功能概述:通过`os.getcwd()`获取、`os.chdir()`改变工作目录;使用`os.mkdir()`, `os.makedirs()`创建目录,`os.rmdir()`, `os.removedirs()`删除;`os.rename()`, `os.renames()`重命名文件或目录;`os.remove()`删除文件;`os.listdir()`列出目录内容;`os.path.exists()`, `os.path.isfile()`, `os.path.isdir()`检查路径;`os.stat()`获取文件属性。
35 4
|
1月前
|
Linux 调度
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
|
3月前
|
监控 Linux 调度
操作系统学习笔记(一)
在Linux中,使用`ps -aux | grep PID`来查看特定进程的状态,或者用`top`指令监控进程和内存。通过`cat 文件名 | grep 关键词`或`grep -i 关键词 文件名`搜索日志文件。`grep`是一个强大的文本搜索工具,支持多种参数,如`-i`忽略大小写,`-c`计数,`-f`从文件读取关键词。要临时更改主机名用`hostname 新主机名`,永久更改则用`hostnamectl set-hostname 新主机名`
29 0
|
3月前
|
消息中间件
操作系统学习笔记(二)
进程切换比线程切换更消耗资源,因为进程切换需保存更多上下文,包括地址空间、寄存器、栈和文件描述符等,还要刷新TLB。线程切换仅需切换硬件上下文和内核栈,上下文更小,所以开销低。进程间通信有多种方式,如匿名管道(父子进程间)、命名管道(无亲缘关系进程)、信号、消息队列、共享内存和信号量等。这些通信方法各有特点,适用于不同场景。例如,匿名管道是半双工的,有名管道允许任何进程通过路径通信,信号用于进程间的简单通知,消息队列支持随机查询和按类型读取,共享内存允许多进程共享数据,而信号量则用于同步和控制对共享资源的访问。
33 0
|
3月前
|
存储 API 芯片
1.操作系统概述
1.操作系统概述
|
3月前
|
存储 安全 数据处理
【计算机系统组成原理】操作系统处理器深入介绍
【计算机系统组成原理】操作系统处理器深入介绍
|
3月前
|
存储 缓存 安全
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解
|
3月前
|
程序员 Linux 调度
《操作系统》——计算机系统概述
《操作系统》——计算机系统概述
155 2
|
3月前
|
安全 Unix Linux
第一章 操作系统概述
第一章 操作系统概述
90 0