这些内容都是摘自《深入理解操作系统》这本书,很多年前学习操作系统都是马马虎虎,突然感觉现在很需要再次深入了解操作系统,读了这本书感觉对自己有用的就记下来了,方面以后查阅。
计算机系统漫游这一章主要讲了计算机系统的主要概念和主题,主要通过研究“hello,world"这个简单程序的生命周期。
1 编译系统
预处理阶段:预处理器(cpp)根据以字符#开头的命令,修改原始的C程序。 比如hello.c中第一行的#include <stdio.h>指令告诉预处理器读取系统头文件stdio.h的内容,并把它直接插入到程序文本中去。结果就得到了另一个C程序,通常是以.1作为文件扩展名。
编译阶段:编译器(cc 1)将文本文件hello.i翻译成文本文件hellos,它包含一个汇编语言程程序,汇编语言程序中的每条语句都以一种标准的文本格式确切地描述了一条低级机器语言指令。汇编语言是非常有用的,因为它为不同高级语言的不同编译器提供了通用的输出语言。
2 典型系统的硬件组织
3 高速缓存
4 执行Hello程序
首先,shell程序执行它的指令,等待我们输入命令,当我们在键盘上输入字符串”./hello"后,shell程序就逐一读取字符到寄存器,再把它存放到存储器中,如下图:
当我们在键盘上敲回车键时,shell就知道我们已经结束了命令的输入,然后shell执行一系列指令,这些指令将hello目标文件中的代码和数据从键盘拷贝到主存,从而加载hello文件,数据包括最终会被输出的字符串"hello world".
一旦hello目标文件中的代码和数据被加载到了存储器,处理器就开始执行hello程序的主程序中的机器语言指令。这些指令将“hello,world"串的字节从存储器重拷贝到寄存器文件,再从寄存器中文件拷贝到显示设备,最终显示在屏幕上,步骤如下: