理解层次存储系统:从访存异常到虚拟地址转换
需积分: 0 124 浏览量
更新于2024-07-11
收藏 6.51MB PPT 举报
"该资源是关于计算机系统基础的第六章内容,主要讲解了层次结构存储系统,包括存储器概述、主存与CPU的连接、磁盘存储器、高速缓冲存储器(Cache)、虚拟存储器以及IA-32/Linux中的地址转换。其中,通过实例分析了访问违例的问题,提到了当参数len为0时导致的访存异常,并讨论了Linux下的“Segment fault”错误。此外,还介绍了CPU执行指令过程中访存的原因、局部性原理以及访存操作涉及的硬件和操作系统之间的协调关系。"
在计算机系统中,系统思维是分析问题的重要方法,特别是在处理存储和执行指令时。本章首先概述了存储器的角色,强调了主存与CPU之间的紧密联系,它们之间通过总线进行数据传输。当CPU执行指令时,需要从主存中读取指令,这就是所谓的“取指”过程。如果指令涉及数据操作,还会进行“取数”和“存数”操作。
提到的问题是关于函数`sum`,当输入数组长度`len`为0时,会导致访问违例。这是因为`for`循环试图访问数组的越界位置(即`a[len-1]`),当`len`为0时,这个位置是`a[-1]`,在内存中是非法地址。访问这种地址会触发硬件级别的保护机制,引发访存异常,如Windows下的0xC0000005错误或Linux下的“Segment fault”。
存储层次结构包括了高速缓冲存储器(Cache)和虚拟存储器,Cache用于缓存最近频繁使用的数据,提高程序执行速度,因为它比主存更快但容量更小。程序访问的局部性原则指出,程序倾向于在短时间内重复访问同一块内存区域,Cache正是利用这一特性来优化性能。虚拟存储器则是为了克服主存容量有限的问题,通过将硬盘上的部分数据作为扩展内存来使用,形成一个比实际物理内存更大的逻辑地址空间。
地址转换是虚拟存储器的关键部分,IA-32/Linux系统中,逻辑地址经过页表转换成线性地址,再由线性地址转换成物理地址,确保程序可以独立于物理内存布局运行。在处理访问违例时,操作系统会介入处理,如更新页表或产生错误信号。
这个章节深入探讨了计算机系统中存储层次结构的原理和实际应用,通过实例帮助理解访存异常的原因,并揭示了CPU、存储器和操作系统之间如何协同工作以保证程序的正常执行。
2012-11-17 上传
1529 浏览量
127 浏览量
2022-06-29 上传
2021-10-10 上传
2022-07-13 上传
2022-08-03 上传
106 浏览量
145 浏览量
getsentry
- 粉丝: 28
- 资源: 2万+
最新资源
- torch_cluster-1.5.6-cp36-cp36m-linux_x86_64whl.zip
- D-无人机:拉无人机。 使用计算机视觉在喷漆墙上画画以实现精确导航
- myloader
- Metro_Jiu-Jitsu-crx插件
- 导航条,鼠标悬停滑动下拉二级导航菜单
- 中国企业文化理念:提炼与实施的流程及方法(第一天课程大纲)
- 使用videojs/aliplayer 实现rtmp流的直播播放
- irt_parameter_estimation:基于项目响应理论(IRT)的物流项目特征曲线(ICC)的参数估计例程
- visualvm_21.rar
- torch_sparse-0.6.4-cp38-cp38-linux_x86_64whl.zip
- redratel:数字代理
- JumpStart!-开源
- api-2
- Adoptrs-crx插件
- redis windows x64安装包msi格式的
- XX轧钢企业文化诊断报告