首页 > 代码库 > 深入理解计算机系统读书笔记一 ---> 计算机基础漫游

深入理解计算机系统读书笔记一 ---> 计算机基础漫游

一、程序编译的不同阶段。

  通常我们是以高级程序开发易于阅读的代码,我们通过语法规则推断代码的具体含义。但是计算机执行代码的时候就需要把代码解析成既定的可执行问题,计算机是如何处理的呢?这里以C语言hello.c文件为例来说明中间过程。

#include <stdio.h>

int main()
{
    printf("hello world!\n");
}

先上张图。

C语言源程序----预处理解析头文件和函数  --- 编译器解析成汇编语言 ---   翻译机器语言指令,打包目标程序 ---- 链接ld合并.o文件,得到可执行文件

注意:

1、源程序是ASCII编码的文本文件,文本文件的含义是通过上下文解析的。

2、相同的高级语言源程序会通过不同的编译器解析成不同的汇编语言,也就意味着相同的源文件可以有不同的执行结果。

3、链接阶段是把所有相关的.o合并成可执行文件(包括头文件包含)。

 

二、系统硬件组成

hello程序的运行过程:

控制台输入./hello , shell(命令行解释器)将程序读入寄存 ---- 寄存器把程序(代码和数据)存放在主存  --- CPU执行程序

  --- 寄存器执行主存程序读取数据 ---- 寄存器把结果复制到在显示设备

三、存储器组成

 

四、操作系统

操作系统提供应用程序和底层硬件的借口适配。

1、防止底层硬件被上层APP滥用。

2、为APP提供简单一致的机制来控制底层硬件。

操作系统提供的几个概念(进程,文件,虚拟存储器)

1)进程  ---- 操作系统对正在执行程序的抽象, 也可以说是正在执行的程序

  进程上下文  --- 保存进程执行的所有状态信息,寄存器值和内存内容。

  上下文切换  ---- 操作系统把控制权从当前进程转移到新进程。

  多进程 --- 操作系统正在执行多个进程,单操作系统当前只有一个进程在执行,多进程是在交替的执行不同的进程来实现。

  

  线程--- 进程的执行单元(运行在进程的上下文中,共享进程的全局数据和代码)

 2)虚拟存储器  --- 进程独立的存储空间

  

  3)文件 --字节序列,linux一切设备皆文件(键盘、显示器、磁盘、网络)

 

未完待续,留待学习补充:

。。。。。。。。