操作系统 哈工大mooc 第一章
L1、什么是 OS
OS 是计算机硬件和应用之间的一层软件。
为什么要有 OS?
为了方便、高效管理和使用硬件。
管理哪些硬件?
CPU管理、内存管理、终端管理、磁盘管理、文件管理、网络管理、电源管理、多核管理。
【CPU管理跟多核管理???】
学习目标:改 CPU 管理、改屏幕输出、改系统接口、改内存管理。
L2、揭开钢琴的盖子
本节主要将从打开电源开始,计算机背后发生了什么,计算机是如何工作的。
从白纸到图灵机
计算机如何工作?其实就是一个计算模型。
人先在纸上写好程序,控制器读取纸带上的内容,然后运算输出。
从图灵机到通用图灵机
上面提到的图灵机只能做一种操作(课程的PPT中的加法操作),而通用图灵机则可以 设置控制器动作 。
比喻:上面的图灵机就是一个只会做一道菜的厨师,通用图灵机就是一个会看菜谱,做多种菜的厨师。
“读进来的逻辑是什么,我就是什么图灵机”
从通用图灵机到计算机
冯·诺依曼存储程序思想——把程序放到内存,用一个指针 PC 指向它,不断取指执行...
总结上面,回答最初的问题:计算机如何工作的?——取指执行!
既然如此,我们就要知道 计算机执行的第一句指令是什么?即 PC = ?
既然指令是在内存中的,那么刚开始的内存中有什么呢?
所以我们要关心 指针 IP 及其指向的内容。
计算机刚打开电源的时候,IP 的指向由硬件设计者决定。
1.x86 PC 开机是 实模式。
2.根据 CS << 4 + IP,寻址到 ROM BIOS映射区(刚一上电,内存中唯一有代码的地方,固化的)
3.检查各种硬件
4.将磁盘0磁道0扇区读入,该扇区叫做 引导扇区。
所以我们写的代码肯定是要从引导扇区开始。
引导扇区代码是用汇编代码写的,因为如果是用 C语言等写,经过编译之后有的东西无法控制,汇编代码会编程真正的机器语言,我们可以完整地控制它。
读入引导扇区之后执行,13号中断继续读后面的代码 setup模块。
总结:引导扇区的工作就是:读 setup,读 system……
引导扇区最后要把控制权较给 setup,即修改 CS 和 IP。
L3、OS 启动
setup.s
完成 OS启动前的设置,准备接管硬件。然后将整个 OS 的代码移到 0 位置,之后 OS 一直存在这里。
OS 进入 保护模式。
初始化 gdt 表。保护模式下寻址方式发生改变(为什么要改变寻址方式呢?因为 CS << 4 + IP的寻址范围太小了。我们要扩大寻址范围,从 16位机变成32位机)
新的寻址方式:CS变成了“选择子”,查 gdt表,然后和IP相加得到最后的地址值。
总结:setup 做了什么?
读了硬件参数,进行初始化,把 system 挪到了 0 地址处,启动了保护模式。
回答:打开电源计算机发生了什么?
1、读入 OS --> 取指执行
2、初始化 --> 对 OS 进行管理。
L4、OS接口
接口就是连接两个东西,隐藏了细节,使用接口的用户只能看到简单的使用方法,接口背后的实现原理由接口的构造者完成。
所以 OS 接口就是连接上层用户和 OS。
用户如何使用 OS ?
其实就是用户的所有操作都是一段 C程序,其中包含了重要的函数对计算机硬件的申请使用.这些重要函数就是 OS 提供的接口,也叫 系统调用。
不用全部记住这些系统调用,但是用到的时候要会查——POSIX。
回答:用户就是根据在 C语言中插入系统调用来使用OS。
L5、系统调用的实现
系统调用表面上就是一些函数,那么背后是什么呢?
有的内存不能随意进入。为什么呢?因为 OS 里面有重要的数据,不能随意修改。
如何实现“有的内存不能随意进入”呢?
答案:系统调用
区分内核态和用户态:一种处理器“硬件设计”
如何进去?
硬件提供了“主动进入内核的方法”——中断指令 int

浙公网安备 33010602011771号