知识点整理:
1. 背景了解:
gnu项目开发了包含unix操作系统的所有主要部件的环境,而内核是由linux项目单独开发的,gnu环境包含EMACS编辑器,GCC编译器,GDB调试器,汇编器,链接器,处理二进制文件的工具以及其他的部件等,支持不同语言。
2. 编译器编译的四个阶段:

1)预处理阶段:
预处理器(cpp)需要根据以字符#开头的命令修改原始的c程序,将头文件的内容插入程序文本中
2)编译阶段:
编译器(ccl)将文本文件hello.i翻译成hello.s,变成一个汇编语言程序
3)汇编阶段:
汇编器(AS)将程序翻译成机器语言指令格式,打包成可重定位目标程序(relocatable object program)格式,并保存在二进制文件上。
4)链接阶段:
链接器(Id)将已预编译了的目标文件合并在此文件中,得到可执行目标文件,可以加载到内存中,由系统执行。
3.系统的硬件组成:
总线,i/o设备,主存,处理器。
主存是用来存放程序和程序处理的数据,从物理上来看,主存是由动态随机存取存储器DRAM芯片组成。
处理器:CPU,是解释存储在主存中指令的引擎。核心是一个字长的存储设备,称为程序计数器PC,在任何时刻,PC都指向主存中的某条机器语言指令,即含有该条指令的地址。

4.程序运行中机器做了什么?
当我们在键盘中输入“./hello"时候,shell就会将字符读入到寄存器文件中,当我们输入回车键之后,shell知道输入结束,就会开始执行指令来加载hello程序文件,将hello目标文件中的代码和数据从磁盘复制到主存上,然后处理就会开始执行程序中的机器语言指令,输出结果先是在主存中,然后被复制到寄存器文件最终被显示在屏幕上。

5. 缓存的重要性
适配器 是在扩展槽上,控制器在主板上。
高速缓存存储器是为了解决处理器与主存之间的差距而设计的更小更快的存储设备。
高速缓存的层次结构图:

6. 相关概念:
进程:操作系统对一个正在运行的程序的抽象,可以由多个线程组成,线程运行在进程的上下文中,并共享同样的代码和全局数据。
虚拟存储器:每个进程都可以看到同样的存储器,成为虚拟地址空间,由大量准确定义的区组成,每个区都有专门的功能。最上面是操作系统的代码和数据保留的区域,底部区域是存放用户进程定义的代码和数据,地址是从下到上增大的。
用户栈:编译器用它实现函数调用,可动态扩展和收缩,调用时候栈增大,返回时候,栈收缩。
内核虚拟存储器:不允许应用程序读写这个区域的内容或者直接调用内核代码定义的函数。
并发:线程式并发,指令级并发,单指令多数据并发。
待解决问题:线程和进程的区分。

网友评论