程序猿理论系列整理:程序的执行过程

程序的生成

源文件预处理编译汇编链接
hello.chello.ihello.shello.ohello.out

 

程序的存储

二进制的形式,存储在机械硬盘上,即一连串01010101,硬盘用凹凸的方式表示01,这样就通过物理的方式表示出程序。

原理看这里:程序猿理论系列整理:计算机基础硬件

程序的载入

运行命令 ./hello.out

操作系统(OS)初始化资源(堆、栈、全局变量等)

操作系统(OS)生成进程(管理单元)和主线程(运行单元)

找到程序的起始地址(入口)

调用程序的main函数并返回

表现为

程序从硬盘被CPU载入到内存,

操作控制器产生取指令操作,

程序计数器找到程序入口的指令A,

指令A被存储到指令寄存器中然后才能被执行,

指令A由操作码和地址码组成,指令编码器负责译码分析,然后把具体的操作发送给操作控制器,

操作控制器产生操作控制信号,完成执行指令。

即:取指令-》分析指令-》执行指令,这构成了CPU的一个基本周期。

取地址

CPU接触的地址都是虚拟逻辑地址,需要转换为物理地址,这就需要有个转换器:MMU(内存管理单元)。

当需要将虚拟地址转换为物理地址时,首先搜索TLB。如果找到匹配(TLB命中),则返回物理地址并继续存储器访问。然而,如果没有匹配(称为TLB未命中),则存储器管理单元或操作系统TLB未命中处理器通常会查找页表中的地址映射以查看是否存在映射(页面遍历)。过程如下图:

image.png

TLB是page table的缓存,加速查找的过程,TLB是在寄存器中,page table是在内存中。

常规的流程是:

虚拟地址-》内存中的page table-》物理地址-》内存中的物理地址,要访问内存2次。

加速的流程是:

虚拟地址-》TLB-》物理地址-》内存中的物理地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值