操作系统相关知识1

 


GCC编译器将一个.c的程序文件翻译成一个可执行的.o文件分为4部分组成:

(1) 预处理阶段 : 预处理器将根据字符#开头的命令,修改原始的C程序。比如#include 命令就是告诉预编译器读取#include 的内容,并将其插入到程序文本中。得到了另一个以.i为结尾的文件扩展名

(2) 编译阶段 : 编译器将.i文件翻译成.s文件。

(3) 汇编阶段 : 汇编器将.s文件翻译成可重定位目标程序。

(4) 链接阶段 : 链接器合并.o文件然后变成可执行的目标程序文件。

系统硬件组成:

1、总线 : 是一组电子管道,携带字节信息并负责在各个部件中传递。

2、I/O设备: 系统与外部世界的联系通道。主要有磁盘、键盘、鼠标、显示器等

3、主存 : 是一个临时存储设备,在处理器执行程序时,用于存放程序和程序处理的数据。物理上来说,主存是由一组动态随机存储器芯片组成。从逻辑上来说,存储器是一个线性的字节数组,每个字节都有唯一的地址索引,这些地址是从0开始。

4、处理器(CPU) : 处理器的核心是大小为一个字的存储设备,它被成为PC(程序计数器)。在任何时候,PC都指向一条机器指令。同时也包含总线接口,寄存器文件和ALU(算术/逻辑运算单元)

一个CPU指令执行的细节

加载:从主存中复制一个字节或者一个字到寄存器,以覆盖掉寄存器原先的内容

存储:从寄存器复制一个字或者一个字节到主存中的某个位置,覆盖掉原先的内容

操作:将两个寄存器中的内容复制到ALU,ALU对这两个字做算术逻辑运算,并将结果存到一个寄存器中,以覆盖掉寄存器原先的内容。

跳转: 从指令本身抽取一个字,并将这个字复制到程序计数器(PC)中,以覆盖掉原先PC的值

高速缓存存储器(cache)作为暂时存储的设备, 存储近期可能需要访问的信息。L1(大约4个时钟周期), L2(大约10个时钟周期), L3是静态随机存储器

CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到主存之前先转换为适当的物理地址。将一个虚拟地址转换成一个物理地址的任务被称为是地址翻译。

伙伴系统是分离适配的一种特例, 其中每个大小类都是2的幂。基本的思路是假设一个堆的大小为2的m次方个字,我们现在为每个块大小为2的k次方维护一个分离的空闲链表,其中k大于等于0小于等于m。请求块的大小向上舍入到最接近2的幂。为了分配一个大小为2的k方的块,我们找到第一个可用的大小为2的j次方的块。如果j=k,那么我们就完成了。否则,我们递归的二分割这个块,直到j=k。我们进行这样的分割时,每个剩下的半块被放置到相应的空闲链表中。如果要释放一个块,我们合并空闲块,直到遇到一个已分配的伙伴块时,我们就停止合并。

伙伴系统分配器的一个主要的应用是快速的搜索和快速的合并。主要的缺点是会导致内部碎片

你可能感兴趣的:(操作系统相关知识1)