csapp运行hello程序,当程序执行的时候到底发生了什么?

运行hello文件

在这里插入图片描述
此时可执行目标文件hello已经存放在系统的磁盘上,我们现在要做的是运行这个程序。
这里介绍一下shell ,在linux操作系统中同时按下
ctrl + alt +T就可以打开一个shell,也就是我们在windows里面说的命令行。
ctrl+shift+T就可以打开一个shell。
通过上面说的方法打开一个shell:
在这里插入图片描述
在shell文件中就可以运行hello了,先打开hello可执行文件所在的文件夹:
在这里插入图片描述
然后输入命令:在这里插入图片描述
回车之后:
在这里插入图片描述

计算机的硬件组成

一、中央处理单元(CPU),也称处理器,包括以下内容:

1.Program Count,简称PC,实质是一个大小为一个字的存储区域,32位机器–一个字是4个字节,64位机器–一个字是8个字节。PC就是一个4字节或8字节的存储空间。
里面存放的是某一条指令的地址,从系统上电的那一瞬间,直到系统断电,处理器就不断地执行PC指向的指令,然后更新PC,使其指向下一条要执行的指令(不一定相邻)。
2.寄存器文件,是CPU内部的一个存储设备,是由一些单字长的寄存器构成,每个寄存器都有自己唯一的名字,寄存器可以理解为一个临时存放数据的空间。
3.ALU对寄存器中的值进行运算,将得到的值再给寄存器。

二、主存,也称为内存
处理器在执行程序时,内存主要存放程序指令以及数据。从物理上来讲,内存是由随机动态存储器芯片组成。从逻辑上讲,内存可以看成一个从零开始的大数组,每个字节都有相应地址。

三、总线,内存和处理器之间通过总线来进行数据传递,实际上,总线贯穿了整个系统,它负责将信息从一个部件传递到另外一个部件,通常总线被设计成传送固定长度的字节块,也就是字,有多少个字节和系统有关。

四、各种输入输出设备,例如键盘,鼠标,显示器以及磁盘等等。每一个输入输出设备都通过一个控制器或者适配器与IO总线相连。控制器与适配器的主要区别是在于它们的封装方式,相同点是都是在IO设备与IO总线之间传递数据。

这四者的关系如下图所示在这里插入图片描述

运行hello程序时到底发生了什么?

1.通过键盘输入“./hello”的字符串,shell程序会将输入的字符逐一读入寄存器,处理器会把hello这个字符串放入内存中。
如下图:
在这里插入图片描述
2.当我们完成输入,按下回车键时,shell程序就知道我们已经完成了命令的输入,然后执行一系列的指令来加载可执行文件hello,这些指令将hello中的数据和代码从磁盘复制到内存,数据就是我们要显示输出的“hello,world\n”,这个复制过程将利用DMA(Direct Memory Access)技术,数据可以不经过处理器,从磁盘直接到达内存,当可执行文件hello中的代码和数据被加载到内存中,处理器就开始执行main函数中的代码,CPU会将“hello,world\n”这个字符串从内存复制到寄存器文件,然后再从寄存器文件复制到显示设备,最终,hello,world 显示在屏幕上。
在这里插入图片描述
从hello程序执行的过程来看,系统即使执行如此简单的程序,数据信息仍旧需要在磁盘、内存、处理器以及IO设备之间进行搬运,搬运需要花费时间,系统设计人员的一个主要任务就是缩短信息搬运所花费的时间。
通常情况下,大容量的存储设备的存取速度要比小容量的慢,运行速度快的更贵。
例如:
内存的容量:1~100GB
磁盘的容量:1~1000TB,大约是内存容量的1000倍,这里看的是量纲。
对于处理器而言,从磁盘上读取一个字所花费的时间开销比从内存中读取的开销大1000万倍。
寄存器文件的只能存储几百个字节的信息,而内存的可以存放几十亿的字节信息(GB级),处理器从寄存器文件读取数据比从内存读取差不多要快100倍。随着半导体技术的发展,处理器与内存之间的差距还在持续增大,针对处理器和内存之间的差异,系统设计人员在寄存器文件和内存之间引入了高速缓存,比较新的,处理能力比较强的处理器,一般有三级高速缓存,分别为L1 cache,L2 cache,以及L3 cache,L1 cache的访问速度与访问寄存器几乎一样快,L2 cache的访问速度是L1的5倍。在这里插入图片描述
整个计算机系统的信息存储可以用一个层次结构来表示,从这个层次结构来看,从上到下,设备的访问速度越来越慢,容量也越来越大,每字节的造价也越来越便宜。这个层次结构的主要思想就是上一层存储设备是下一层存储设备的高速缓存,可以利用存储器的层次结构来提升程序的性能。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榆钱不知秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值