《操作系统实战45讲》阅读笔记一

1 一段程序是如何运行的

计算机硬件是无法直接运行高级语言编写的文本代码的。以C语言为例,需要C语言编译器把高级语言编写的代码编译成具体硬件平台的二进制代码。再由具体的操作系统建立进程,把这个二进制文件装进其进程的内存空间,才能运行。

        编译
代码文件------>二进制代码-->装载到其进程的内存-->运行

1.1 程序编译过程

gcc编译工具链编译命令生成文件做了什么
gcc预处理器gcc xxx.c -E -o xxx.ixxx.i预处理:假如头文件替换宏
gcc编译器gcc xxx.c -S -o xxx.sxxx.s编译:包含预处理,将C代码程序转换为汇编代码程序
gcc汇编器gcc xxx.c -c -o xxx.oxxx.o包含预处理和汇编,将汇编代码程序转换为可连接的二进制程序
gcc链接器gcc xxx.c -c -o xxxxxx包含以上所有操作,将可链接的二进制程序和其他别的库链接在一起,形成可执行的成语文件

1.2二进制程序的装载

1.2.1 二进制程序中有什么

二进制程序 = 汇编代码+二进制数据

命令功能
gcc -c -S xxx只获得汇编代码而不能得到二进制数据
objdump -d xxx反汇编,获得汇编代码和二进制数据

1.2.2反汇编文件内容的格式

地址十六进制数汇编代码代码注释
二进制程序每条指令装载的内存地址真正装入机器中的代码数据对应的汇编代码相关代码的注释

1.2.3 图灵机和冯诺伊曼体系结构

图灵机模型是理想情况下的,如何实现呢?冯诺伊曼体系结构搞定!

1.2.3.1 什么是图灵机

图灵机是一个抽象模型。假设有一个无限长的带有读头的纸带,纸带上带有无限个小格子,小格子中写有相关的信息,读头能根据纸带小格子里的信息做相关的操作并能左右移动。
例如,图灵机执行1+1=2”的计算,我们定义读头读到“+”之后,就依次移动读头两次并读取格子中的数据,最后读头计算把结果写入第二个数据的下一个格子里,整个过程如下图:
准备执行“1+1”的图灵机示意图,读头读到“+”之后,就依次移动读头两次
读头右移
读头再右移
计算结果2写在下一个位置

1.2.3.2 冯诺依曼体系结构——实现图灵机

思考图灵机应该具备的功能:

  1. 要能装载程序和数据
  2. 能记录程序、中间结果和最终结果
  3. 可以运算
  4. 可以控制读头
  5. 能按照要求现实结果

为了实现这些功能需要以下组成部件:

  1. 装载数据和程序的输入设备
  2. 记住程序和数据的存储器
  3. 完成数据加工处理的运算器
  4. 控制程序执行的控制器
  5. 显示处理结果的输出设备
功能组成部件
把程序和数据装入到计算机中装载数据和程序的输入设备
必须具有长期记住程序、数据的中间结果及最终运算结果记住程序和数据的存储器
完成各种算术、逻辑运算和数据传送等数据加工处理完成数据加工处理的运算器
根据需要控制程序走向,并能根据指令控制机器的各部件协调操作控制程序执行的控制器
能够按照要求将处理的数据结果显示给用户显示处理结果的输出设备
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值