操作系统技术day1

321 阅读4分钟

(来自哈工大李治军老师)

Chapter 1. 为什么要学操作系统

操作系统是计算机最重要的一个部分,是计算机的核心技术,应该和世界上的计算机人才进行竞争。我们应该跟上潮流,和世界接轨,比如我们还在使用1800年提出的高斯消元法来解方程,但是世界上已经对1960年提出的SVD挖掘的很深刻,应用到很多领域了。

斯坦福教授操作系统要求做到四个实验,需要对操作系统内部非常了解,这四个实验分别是:1、扩展线程;2、实现系统调用;3、实现虚存管理;4、扩展文件系统。CMU的授课方式是直接给一块板子,在板子上实现:线程调度;将整个接口剥离和添加;扩展实现内存管理;扩展实现一个文件管理。

老师引用了斯坦福课件的一句话,learn OS concepts by coding them,绝知此事要躬行。

Chapter 2.Open the OS

操作系统位于计算机的中层。底层是硬件、上层是应用,上层应用在使用硬件的时候需要通过操作系统提供的接口。我们的学习目标是穿过操作系统来看操作系统内部,而不是只会利用接口。我们的目标就是进入操作系统来学习操作系统的运作。

计算机是计算模型的实现,最著名的模型就是阿兰图灵提出的图灵机。首先了解图灵机,就是简单的纸条记录法,纸条一个位置写3一个位置写2一个位置写+,查表得到结果是5,写到纸条上。

从图灵机到通用图灵机

例如厨师看懂菜谱,通用图灵机是一个通用结构,读进什么结构就具有什么功能。把程序载进来就可以实现程序。如果能把程序存到内存里,然后把程序载入CPU(在那个时候叫控制器)里进行解释执行,这就是冯诺依曼存储程序思想。

从通用图灵机到计算机

计算机有五大部件组成:运算器、存储器、控制器、输入设备、输出设备。冯诺依曼存储程序思想的主要内容是:将程序和数据存放到计算机内部的存储器中,计算机在程序的控制下一步一步进行处理。首先把一个程序存到存储器里,然后用一个指针指向他,然后取址执行(自动的取址)。所以计算机的工作方式就是四个字:“取址执行”

打开电源之后计算机执行的第一句指令是什么?

答案很简单,那就是PC(一个指针)=什么。对于操作系统来说有一部分是固化的,那就是BIOS(Basic Input and Outpot System),这一段程序固化在0xFFFF0(刚开机时寻址的位置)里。开机时,CS(段寄存器)=0xFFFF;IP(段偏移)=0x0000。这是汇编课程里的内容,操作系统课程对汇编的要求非常高,可以重新学一学汇编。刚开机时,CPU出于实模式(和保护模式对应),实模式的寻址CS:IP(CS左移4位+IP,0xFFFF变成0xFFFF0)和保护模式不一样。开机时的地址需要检查RAM、键盘、显示器、软硬磁盘。然后开始将磁盘中的0磁道 0扇区读出来放到内存0x7c00处。0磁道0扇区就是操作系统的引导扇区,从此时开始DOS跳到引导扇区开始执行。

1.x86 PC开机时,CPU处于实模式

2.开机时CS=oxFFFF;IP=0x0000

3.寻址0xFFFF0(实模式CS:IP的方式)到ROM BIOS映射区

4.检查RAM,键盘,显示器,软硬磁盘

5.将磁盘0磁道 0扇区读入0x7c00处

6.设置CS=0x07c0;IP=0x0000

引导扇区代码:bootsect.s

引导扇区的代码是一段汇编代码,s是汇编代码的后缀。至于为什么不用c而是用汇编,这是因为c程序需要经过编译,会出现一些无法控制的东西,比如ini i到底出现在内存中哪个位置是我们无法人为控制的,但是使用汇编语言可以对程序进行完全的控制,也因此操作系统对汇编的要求很高。

mov ds, ax 的意思是把ax赋给ds,把后面的赋给前面

(过两天把手头的事情做完之后,有空看网课再继续)