🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
本部分主要记录了计算机开机过程中操作系统的工作流程,并以此理解操作系统的代码结构。
参考资料:
- 课程:哈工大操作系统(本笔记对应前三讲)
- 实验:操作系统原理与实践_Linux - 蓝桥云课 (lanqiao.cn)
- 笔记:操作系统学习导引 · 语雀 (yuque.com)
1. 什么是操作系统
操作系统是计算机硬件和应用软件之间的一层软件,方便我们使用硬件(比如显存)、高效地使用硬件(如打开多个终端和窗口):
管理的硬件:
- CPU管理、内存管理
- 终端管理、磁盘管理
- 文件管理、网络管理
- 电源管理、多核管理
而组成一个操作系统最基本的是前五个。
学习操作系统可以有很多层次:
大部分人停留在第一层,即使用操作系统的接口。而计算机专业学生应当能够掌控计算机系统,真正理解操作系统的工作原理。
2. 计算机工作原理
探讨一个问题。打开计算机电源后,计算机的开机过程中发生了什么?
这也是实验一的内容。
要了解这个问题,首先要了解计算机的工作原理。
计算机是如何工作的?
首先是 图灵机。之前做过记录:计算机系统3-> 现代计算机基石 | 图灵机理论 - climerecho - 博客园 (cnblogs.com)
但是这样的图灵机还是太菜啦,一个图灵机只能做特定的一件事(因为控制逻辑是写死了的)
而 通用图灵机 可以看碟下菜,成为大厨。纸带上对控制器的控制逻辑进行编码,而控制器识别这样的编码,就能够完成我们需要执行的操作。
通用图灵机的功能就已经很像一个应用程序(程序)了。
接下来的冯诺依曼 存储程序 思想,将程序存入内存,按照需求将程序载入CPU(上图中的控制器)进行解释执行。
经典的 “取值执行”。
这样一个计算机就算搭建完成了,就像是大厨能够按照客人需求选择菜谱进行烹饪。
3. 开机过程理解
再回到开机过程的理解,计算机的工作归结于 “取指执行”,而所有的程序(包括操作系统),在开机前都放在磁盘上,如何取指执行呢?
- 打开电源,计算机执行的第一句指令是什么?即第一条指令对应的PC寄存器里的地址是多少?
以×86 PC 为例,
- 刚开机,会执行 BIOS 中的代码
BIOS,ROM BIOS映射区,是Basic Input Output System 的缩写。意思是计算机的内存里总要有一个基本的输入输出程序,否则内存空白一片,就无法开启冯诺依曼的"取值执行"。
- 而这段代码固化在 0xFFFF0 处
- 开机时,CS = 0xFFFF, IP= 0x0000
和保护模式对应,实模式的寻址CS:IP(CS左移4位+IP),这样 CS << 4 + IP 就正好是 0xFFFF0,正是内存刚上电时唯一有代码的地方,接着进行取值执行。
- 这段代码主要用于 检查 RAM,键盘,显示器,软硬磁盘
如果这段代码过不去,表示硬件出问题了。
- 将磁盘0磁道0扇区读入内存0x7c00处
1扇区 512字节
0磁道0扇区就正是操作系统的引导扇区,这个扇区中存放操作系统的第一段代码
开机时按住相关热键(不同设备不同)即可进入启动设备设置界面(俗称BIOS界面),可以设置为光盘启动,也可以从U盘等设备进入某个操作系统。
启动时设备信息被设置在 CMOS 中,CMOS是互补金属氧化物半导体64~128B,用来存储实时钟和硬件配置信息。
- 设置 CS=0x07c0, ip=0x0000,进行实模式寻址后跳到引导扇区的代