课程回顾与后续规划
上节课我们探讨了操作系统的历史。了解历史能让我们明智,从操作系统的发展历程中,我们总结出两个核心的里程碑式图像:多进程(多任务切换)图像和文件操作图像 。Unix和Windows等系统的成功,很大程度上就是对这两个图像的完美实现。
我们这门课程的目标是深入剖析操作系统的构建原理,而这必然要围绕上述两个核心图像展开。为了让知识体系更加清晰,我们采用“温故而知新”的方法,梳理前面所学内容,规划后续讲解方向。
温故:操作系统基础及启动原理
-
操作系统定义与管理对象:操作系统是管理计算机硬件的软件。计算机硬件主要包括CPU、内存、显示器、键盘、打印机等I/O设备,以及磁盘和磁盘上的文件 。后续课程将围绕这几个部分,分别探讨CPU管理、内存管理(这两者合起来对应多进程图像管理)、I/O设备管理、磁盘与文件管理(对应文件图像管理)。
-
操作系统管理硬件的方式:我们通过研究上层应用进入操作系统的方式,来了解操作系统如何管理硬件。具体来说,就是探究上层应用使用操作系统时,在系统内部的具体运作,比如CPU和内存的实际使用方式。
-
操作系统的启动过程:操作系统的启动,本质上是将其从磁盘读取到内存,并在内存中“立起来” 。这里“立起来”具有代表性的操作是memmap 。操作系统管理硬件需要设置数据结构,启动的最终目的就是在内存中构建好操作系统,并针对相应设备初始化数据结构。通过调用如mem_init()、trap_init()等一系列init函数完成初始化后,启动shell,等待用户使用计算机硬件。
-
上层应用与操作系统的交互:操作系统启动并初始化完成后,上层应用通过系统调用(如open)进入操作系统。系统调用会触发相应处理函数(如对应的copen ),该函数会调用相关代码,利用已初始化的数据结构进行操作。
知新:后续课程具体内容规划
-
硬件资源管理的主要方面:操作系统管理硬件资源,主要涉及CPU管理、内存管理、终端设备管理和磁盘管理 。CPU管理和内存管理共同构成进程视图(多进程视图);终端设备管理和磁盘管理共同构成文件视图 。
-
具体知识点展开
-
CPU管理:认识CPU,形成CPU管理的直观想法,实现从CPU到进程的抽象,构建多进程基本结构,探讨多进程相关问题,研究fork如何工作 。
-
内存管理:认识内存,明确内存管理的直观想法,理解从物理地址到虚拟地址的转换,探究*p = 7背后的原理,以及进程虚拟内存的产生机制 。
-
文件管理:认识设备,掌握设备使用的基本结构,实现从设备到文件的抽象,研究open、read、write等操作背后的原理 。
-
从下次课开始,我们将先讲解多进程图像中的进程相关内容,包括进程是什么、如何实现等。之后讲解内存相关概念,如*p = 7访问内存的原理以及与进程的关系。最后讲解文件视图,包括设备驱动原理、普通文件与设备文件操作的含义,以及它们如何统一在文件视图框架下。