Loading

操作系统 哈工大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

posted @ 2021-05-22 22:28  就叫小月亮  阅读(113)  评论(0)    收藏  举报