深入理解计算机系统第一章总结

 
#include<stdio.h>
int main(void){
print("hello world");
return 1;
}

hello程序的生命周期从一个高级C语言程序源文件开始的。经过预处理器(cpp)、编译器(cc1)、汇编器(as)、链接器(ld)生成一个可执行文件。

预处理阶段:预处理器处理按照源文件#开头命令处理。例如#include(stdio.h)将stdio.h头文件的信息插入到源文件文本中。生成以.i扩展名的文本文件。

编译阶段:编译器将预处理过后的文本文件翻译成汇编文本文件。生成以.s扩展名的汇编文本文件。

汇编阶段:汇编器将汇编文件翻译成可重定向二进制文件,一般以.o为扩展名。

链接阶段:hello程序调用了函数printf,它是每个C编译器都提供的库函数。链接器将hello.o和printf.o链接生成可执行的二进制文件。

无论是指令、文本、数字,计算机只将其存储为二进制数据。计算机本身无法识别存储的是何种数据,一样的数据可能表示为文本、数字或者指令,只能依靠上下文来区别。

运行hello程序

初始时,我们从shell输入./hello,shell读取来自键盘的字符流,例如当我们输入字符 字符从键盘通过IO总线到IO桥通过系统总线,到CPU,通过内存总线保存到内存。然后又到CPU,最终到达显示器(暂时不考虑缓存)。当我们按键回车时,shell判断我们输入结束

然后shell程序读取存入内存的字符流,利用直接存储器存取技术(DMA),可以不通过CPU,直接将hello程序从硬盘传送到内存中


CPU读取内存中的hello程序,将“hello world”从内存读取到CPU,在通过iO总线打印到显示器上。

运行hello程序的过程中,大家可以发现,计算机花费了大量时间将数据从一个地方移到另一个地方,这些时间就是系统开销。

现代CPU都有缓存系统

一般情况,速度越快,容量越小,单位价格也越贵。而速度越慢的一般容量更大,单位价格更加便宜。由于程序的局部性原理,我们可以通过缓存系统以廉价的方式存储程序,同时以告诉的存储器运行程序。

让我们回到hello程序,当我们输入./hello调用hello程序时,shell和hello都没有直接访问内存、硬盘、键盘、显示器,这些都是通过操作系统提供的提供调用来间接操作的。我们可以把操作系统看成应用程序和硬件之间的一层软件。他对应用程序提供了简单一致的接口,屏蔽了复杂又大不相同的硬件资源。同时可以防止应用程序失控的滥用硬件。应用程序通过一个简单的抽象提供这两种服务。

文件:文件是一个简单而又强大的概念。在Linux系统中,一切的IO设备都抽象为文件,文件就是字节流。写文件就是字节流从内存流入IO设备,读文件就是IO设备字节流流入内存。文件这个概念为不同的IO设备提供的统一的接口。

虚拟内存:一个程序运行中,好像自己全部的占有内存。这就是通过虚拟内存实现的。虚拟内存是对内存和块设备(一般指硬盘)的抽象,给每个程序提供了比实际内存大的多了内存空间,同时每个程序占用的内存看上去又不相互影响。

进程:进程是现代计算机科学中最重要的概念之一,进程为应用程序提供了一个假象,好像自己的独享CPU和一起设备资源。这是通过保存上下文来实现的,当一个进程切换到另一个进程时,操作系统保存当前进程的所有状态信息,指令计数器,寄存器以及内存中的内容,同时将下一个进程保存的状态信息回复成上次终止时的状态。好像所有进程一直再运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深入理解计算机系统》是由布莱恩特和欧哈拉合著的一本经典计算机教材。第九章“虚拟存储器”介绍了操作系统如何管理计算机的内存和磁盘空间,提高计算机系统的性能和可用性。 在这一章中,作者首先介绍了虚拟存储器的概念和设计原理。虚拟存储器是一种计算机存储技术,它允许计算机使用比实际物理内存更大的逻辑内存空间,将物理内存和磁盘空间组合起来形成一个统一的地址空间。这样,即使程序需要的内存超过了实际物理内存的大小,也能够正常执行。 接着,作者介绍了虚拟存储器的实现技术,如页面分配和置换算法。通过将程序的逻辑地址空间分割成固定大小的页面,操作系统可以将页面从磁盘加载到内存中,并根据需要进行页面置换。这些技术能够提高内存利用率和程序的执行性能。 作者还讨论了虚拟存储器的性能优化和问题处理。例如,通过合理设置页面大小、调整页面置换算法和增加内存容量,可以提高虚拟存储器的性能。此外,当程序访问的数据不在内存中时,操作系统需要进行页面调度和磁盘IO操作,对于这些问题,作者也给出了解决方案。 最后,作者介绍了一些现代计算机系统中的虚拟存储器实现技术,如地址转换缓冲区、TLB缓存和多级页表。这些技术进一步提高了虚拟存储器的性能和可靠性。 综上所述,第九章“虚拟存储器”介绍了虚拟存储器的概念、设计原理、实现技术和性能优化。通过深入理解这些知识,可以帮助我们更好地理解计算机系统的内存管理和磁盘空间利用,从而提高计算机系统的性能和可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值