《C语言开发从入门到精通》一1.4 揭开存储器的层次

简介:

本节书摘来自异步社区《C语言开发从入门到精通》一书中的第1章,第1.4节,作者王长青 , 韩海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 揭开存储器的层次

知识点讲解:光盘:视频PPT讲解(知识点)第1章揭开存储器的层次.mp4

当C语言被编译后,编译的中间语言会在CPU中进行处理。按照与CPU的接近程度,存储器分为内存储器与外存储器,简称内存与外存。内存储器又常称为主存储器(简称主存),属于主机的组成部分;外存储器又称为辅助存储器(简称辅存),属于外部设备。访问CPU不能像访问内存那样直接访问外存,外存要与CPU或I/O设备进行数据传输,必须通过内存进行。现在的PC中还配置了高速缓冲存储器(chache),这时内存包括主存与高速缓存两部分。

为了兼顾存储容量和存储速度,当前计算机几乎毫无例外地采用了图1-3所示的层次式存储结构。

80%


77ac94140684f49ccc812c7cbbbf0633b59d3c99

图1-3 存储器层次结构

在图1-3中,以处理器为中心,计算机系统的存储依次为寄存器、高速缓存、主存储器、磁盘缓存、磁盘和可移动存储介质等7个层次。距离处理器越近的存储工作速度越高,容量越小。其中,寄存器、高速缓存、主存储器为操作系统存储管理的管辖范围,磁盘和可移动存储介质属于操作系统设备管理的管辖范围。

凡是属于操作系统存储管理范围的存储装置,其共同特点是在系统掉电之后,它们所存储的信息会丢失殆尽,属于可挥发性存储装置。而属于操作系统管理范围的存储装置,则可以永久保存存储的信息,属于非挥发性存储装置。

磁盘缓存本身并不是一种实际存在的存储介质,它依托于固定磁盘,主要用来提供对主存储器的扩充。

寄存器在物理上与处理器的运算控制部分同在一个芯片上,它们与运算部分的距离最近,访问速度也最高,但其容量也因此不会太大。所以,它们主要被用来暂存一些中间数据或控制用的特殊数据,而不能存放像程序之类的大批数据。

主存储器用来存放程序和程序运行所需的数据。一个计算机系统必须有足够大的主存储器,其容量是衡量一个计算机系统性能的指标之一。由于主存储器的访问速度远低于寄存器,所以,为了加快访问速度,计算机系统常常在主存储器和寄存器之间配置高速缓存,以存放处理器当前常用的程序模块和数据。

之所以把存储器分为几个层次,主要是基于如下三点原因。

(1)合理解决速度与成本的矛盾,以得到较高的性能价格比。半导体存储器速度快,但价格高,容量不宜做得很大,因此,仅用作与CPU频繁交流信息的内存储器。磁盘存储器价格较便宜,可以把容量做得很大,但存取速度较慢,因此,用作存取次数较少,且需存放大量程序、原始数据(许多程序和数据是暂时不参加运算的)和运行结果的外存储器。计算机在执行某项任务时,仅将与此有关的程序和原始数据从磁盘上调入容量较小的内存,通过CPU与内存进行高速的数据处理,然后将最终结果通过内存再写入磁盘。这样的配置价格适中,综合存取速度较快。

(2)为解决高速的CPU与速度相对较慢的主存的矛盾,还可使用高速缓存。它采用速度快、价格更高的半导体静态存储器,甚至与微处理器做在一起,存放当前使用最频繁的指令和数据。当CPU从内存中读取指令与数据时,将同时访问高速缓存与主存。如果所需内容在高速缓存中,就能立即获取;如没有,再从主存中读取。高速缓存中的内容是根据实际情况及时更换的。这样,通过增加少量成本即可获得很高的速度。

(3)使用磁盘作为外存,不仅价格便宜,可以把存储容量做得很大,而且在断电时它所存放的信息也不丢失,可以长久保存,且复制、携带都很方便。

相关文章
|
6月前
|
自然语言处理 中间件 编译器
C语言的编译器和中间件开发
C语言的编译器和中间件开发
|
2天前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
2月前
|
存储 传感器 物联网
结合物联网开发探讨C语言的变量
在物联网(IoT)开发中,C语言的变量起着至关重要的作用。由于物联网设备资源有限,C语言的高效性和对硬件的直接控制使其成为开发嵌入式系统的首选。
|
3月前
|
Linux Shell C语言
C语言与驱动开发基础
C语言与驱动开发基础
36 0
|
5月前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
58 1
|
6月前
|
传感器 存储 物联网
【C 言专栏】基于 C 语言的物联网开发
【5月更文挑战第6天】C 语言在物联网发展中扮演关键角色,适用于开发嵌入式系统、通信协议及云平台后端服务。其高效、灵活、可移植的特性适应资源有限的环境,确保设备兼容性。尽管开发挑战较大,如代码可读性,但借助辅助工具可改善。随着物联网技术进步,C 语言将持续发挥重要作用,塑造智能未来。
136 0
【C 言专栏】基于 C 语言的物联网开发
|
6月前
|
存储 算法 C语言
【C 言专栏】用 C 语言开发游戏的实践
【5月更文挑战第5天】本文探讨了使用C语言开发游戏的实践,包括选择适合的游戏类型(如贪吃蛇、俄罗斯方块),设计游戏框架、图形界面和逻辑,以及音效添加。文章还强调了性能优化、测试调试、跨平台挑战及未来发展趋势。对于热衷于C语言的开发者,这是一次挑战与乐趣并存的探索之旅。
210 0
【C 言专栏】用 C 语言开发游戏的实践
|
6月前
|
传感器 算法 C语言
C语言在嵌入式系统开发中的优化策略与代码实现
C语言在嵌入式系统开发中的优化策略与代码实现
119 1
|
6月前
|
传感器 安全 物联网
C语言:物联网开发利器
C语言:物联网开发利器
|
6月前
|
JavaScript 前端开发 Java
开发语言漫谈-C语言
C语言是最伟大的开发语言