编译器管理的存储(在微机系统中,对输入输出设备进行管理的基本系统是存放在( )中)

本文目录
- 在微机系统中,对输入输出设备进行管理的基本系统是存放在( )中
- 指针是如何存储数据的呢编译器在编译时怎么处理的
- 存储器层次结构中的缓存
- 内存的数据存储机制
- C51编译器支持的存储器类型有哪些
- 数据类型:编程的基础
在微机系统中,对输入输出设备进行管理的基本系统是存放在( )中
B:ROM中
说明:内存在电脑中起着举足轻重的作用。内存一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。只不过因为RAM是其中最重要的存储器。
通常所说的内存即指电脑系统中的RAM。RAM要求每时每刻都不断地供电,否则数据会丢失。
如果在关闭电源以后RAM中的数据也不丢失就好了,这样就可以在每一次开机时都保证电脑处于上一次关机的状态,而不必每次都重新启动电脑,重新打开应用程序了。但是RAM要求不断的电源供应,那有没有办法解决这个问题呢?随着技术的进步,人们想到了一个办法,即给RAM供应少量的电源保持RAM的数据不丢失,这就是电脑的休眠功能,特别在Win2000里这个功能得到了很好的应用,休眠时电源处于连接状态,但是耗费少量的电能。
按内存条的接口形式,常见内存条有两种:单列直插内存条(SIMM),和双列直插内存条(DIMM)。SIMM内存条分为30线,72线两种。DIMM内存条与SIMM内存条相比引脚增加到168线。DIMM可单条使用,不同容量可混合使用,SIMM必须成对使用。
按内存的工作方式,内存又有FPA EDO DRAM和SDRAM(同步动态RAM)等形式。
FPA(FAST PAGE MODE)RAM 快速页面模式随机存取存储器:这是较早的电脑系统普通使用的内存,它每个三个时钟脉冲周期传送一次数据。
EDO(EXTENDED DATA OUT)RAM 扩展数据输出随机存取存储器:EDO内存取消了主板与内存两个存储周期之间的时间间隔,他每个两个时钟脉冲周期输出一次数据,大大地缩短了存取时间,是存储速度提高30%。EDO一般是72脚,EDO内存已经被SDRAM所取代。
S(SYSNECRONOUS)DRAM 同步动态随机存取存储器:SDRAM为168脚,这是目前PENTIUM及以上机型使用的内存。SDRAM将CPU与RAM通过一个相同的时钟锁在一起,使CPU和RAM能够共享一个时钟周期,以相同的速度同步工作,每一个时钟脉冲的上升沿便开始传递数据,速度比EDO内存提高50%。
DDR(DOUBLE DATA RAGE)RAM :SDRAM的更新换代产品,他允许在时钟脉冲的上升沿和下降沿传输数据,这样不需要提高时钟的频率就能加倍提高SDRAM的速度。
RDRAM(RAMBUS DRAM) 存储器总线式动态随机存取存储器;RDRAM是RAMBUS公司开发的具有系统带宽,芯片到芯片接口设计的新型DRAM,他能在很高的频率范围内通过一个简单的总线传输数据。他同时使用低电压信号,在高速同步时钟脉冲的两边沿传输数据。INTEL将在其820芯片组产品中加入对RDRAM的支持。
内存的参数主要有两个:存储容量和存取时间。存储容量越大,电脑能记忆的信息越多。存取时间则以纳秒(NS)为单位来计算。一纳秒等于10^9秒。数字越小,表明内存的存取速度越快。
硬盘与内存的区别是很大的,这里只谈最主要的三点:一、内存是计算机的工作场所,硬盘用来存放暂时不用的信息。二、内存是半导体材料制作,硬盘是磁性材料制作。三、内存中的信息会随掉电而丢失,硬盘中的信息可以长久保存。
内存与硬盘的联系也非常密切:这里只提一点:硬盘上的信息永远是暂时不用的,要用吗?请装入内存!CPU与硬盘不发生直接的数据交换,CPU只是通过控制信号指挥硬盘工作,硬盘上的信息只有在装入内存后才能被处理。
内存就是存储程序以及数据的地方,比如当我们在使用WPS处理文稿时,当你在键盘上敲入字符时,它就被存入内存中,当你选择存盘时,内存中的数据才会被存入硬(磁)盘。在进一步理解它之前,还应认识一下它的物理概念。
●只读存储器(ROM)
ROM表示只读存储器(Read Only Memory),在制造ROM的时候,信息(数据或程序)就被存入并永久保存。这些信息只能读出,一般不能写入,即使机器掉电,这些数据也不会丢失。ROM一般用于存放计算机的基本程序和数据,如BIOS ROM。其物理外形一般是双列直插式(DIP)的集成块。
●随机存储器(RAM)
随机存储器(Random Access Memory)表示既可以从中读取数据,也可以写入数据。当机器电源关闭时,存于其中的数据就会丢失。我们通常购买或升级的内存条就是用作电脑的内存,内存条(SIMM)就是将RAM集成块集中在一起的一小块电路板,它插在计算机中的内存插槽上,以减少RAM集成块占用的空间。目前市场上常见的内存条有4M/条、8M/条、16M/条等。
●高速缓冲存储器(Cache)
Cache也是我们经常遇到的概念,它位于CPU与内存之间,是一个读写速度比内存更快的存储器。当CPU向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中。当CPU再次需要这些数据时,CPU就从高速缓冲存储器读取数据,而不是访问较慢的内存,当然,如需要的数据在Cache中没有,CPU会再去读取内存中的数据。
内存储器的划分可归纳如下:
●基本内存 占据0~640KB地址空间。
●保留内存 占据640KB~1024KB地址空间。分配给显示缓冲存储器、各适配卡上的ROM和系统ROM BIOS,剩余空间可作上位内存UMB。UMB的物理存储器取自物理扩展存储器。此范围的物理RAM可作为Shadow RAM使用。
●上位内存(UMB) 利用保留内存中未分配使用的地址空间建立,其物理存储器由物理扩展存储器取得。UMB由EMS管理,其大小可由EMS驱动程序设定。
●高端内存(HMA) 扩展内存中的第一个64KB区域(1024KB~1088KB)。由HIMEM.SYS建立和管理。
●XMS内存 符合XMS规范管理的扩展内存区。其驱动程序为HIMEM.SYS。
●EMS内存 符合EMS规范管理的扩充内存区。其驱动程序为EMM386.EXE等。
内存在计算机中所扮演的角色
在计算机业界,内存这个名词被广泛用来称呼 RAM( 随机存取内存 ) 计算机使用随机存取内存来储存执行作业所须的暂时指令以及数据以使计算机的 CPU( 中央处理器 ) 能够更快速读取储存在内存的指令及数据。
举例来说,当处理器加载一个应用程序 - 例如文字处理或页面程序 - 到内存使应用程序能以最快速及最高效率的方式执行。以实用价值而言,将程序加载内存能够确保计算机能以更短的时间来执行作业而使工作能够更迅速地完成。
内存与储存的差别
大多数人常将内存 (Memory) 与储存空间 (Storage) 两个名字混为一谈 , 尤其是在谈到两者的容量的时候 内存是指 (Memory) 计算机中所安装的随机存取内存的容量而储存 (Storage) 是指计算机内硬盘的容量 为了避免混淆 , 我们将计算机比喻为一个有办公桌与档案柜的办公室。
想象一下这个办公桌与档案柜的比喻。想象每次想要阅读一份文件或数据夹都必须从档案柜中找寻的情形,这会大幅减低工作执行的速度 , 更别说会把人逼疯了。如果有足够的办公桌空间 ( 如内存 ), 便能够将所需要的档摊开 , 并能立即一眼就能找出所需的信息。
另一个内存与储存最重要的差别在于 : 储存于硬盘中的信息在关机后能够保持完整,但任何储存在内存中的数据在计算机关机后便会全部流失。就像在办公室的比喻中 , 任何在下班时间后被遗留在桌上的档或档案都会全部被丢弃一样。
内存与效能表现 (Memory and Performance)
增加计算机系统中的内存能够增加计算机的效能表现是众所皆知的。如果内存没有足够的空间 , 计算机就必须建立一个虚拟内存档案。在这个过程中 , 中央处理器在硬盘中保留一个空间来代替额外的随机存取内存 这个称为 " Swapping" 的程序减低系统的速度 一般的计算机从内存存取大约需要 200ns( 奈秒 ), 但从硬盘存取则需12,000,000ns 具体来说就等于花四个半月的时间来完成三分半中就能完成的工作 !
从计算机的体系结构来讲,硬盘应当是计算机的“外存”。内存应当是计算机内部(在主板上)的一些存储器,用来保存CPU运算的中间数据和计算结果。这些数据有时被保存在硬盘上。目前计算机所配的内存一般是16M、32M、64M、128M、256M 等。硬盘的大小有4.3G、6.4G、8G、10G、20G、30G 等。
硬盘是一种主要的电脑存储媒介,由一个或者多个铝制或者玻璃制的碟片组成。这些碟片外覆盖有铁磁性材料。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。不过,现在可移动硬盘越来越普及,种类也越来越多。
绝大多数台式电脑使用的硬盘要么采用 IDE 接口,要么采用 SCSI 接口。SCSI 接口硬盘的优势在于,最多可以有七种不同的设备可以联接在同一个控制器面板上。由于硬盘以每秒3000—10000转的恒定高速度旋转,因此,从硬盘上读取数据只需要很短的时间。在笔记本电脑中,硬盘可以在空闲的时候停止旋转,以便延长电池的使用时间。老式硬盘的存储容量最小只有 5MB,而且,使用的是直径达12英寸的碟片。现在的硬盘,存储容量高达数十 GB,台式电脑硬盘使用的碟片直径一般为3.5英寸,笔记本电脑硬盘使用的碟片直径一般为2.5英寸。新硬盘一般都在装配工厂中经过低级格式化,目的在于把一些原始的扇区鉴别信息存储在硬盘上。 硬盘英文全称是(Hard Disk),直译为“坚固的磁盘”,从外形看起来,硬盘很像一个四四方方的金属盒子,大小有5.25,3.5,2.5和1.8英寸(后两种常用于笔记本及部分袖珍精密仪器中)几种,现在台式机中常用的是3.5英寸的盘片。硬盘是一个计算机系统的数据存储中心,我们运行计算机时使用的程序和数据目前绝大部分都存储在硬盘上。硬盘在各种各样固定存储设备中的地位是最重要的(其他的存储装置包括软盘、CD-ROM、磁带、可移动驱动器等等),它是计算机中不可或缺的存储设备绝大多数台式电脑使用的硬盘要么采用 IDE 接口,要么采用 SCSI 接口。SCSI 接口硬盘的优势在于,最多可以有七种不同的设备可以联接在同一个控制器面板上。由于硬盘以每秒3000—10000转的恒定高速度旋转,因此,从硬盘上读取数据只需要很短的时间。在笔记本电脑中,硬盘可以在空闲的时候停止旋转,以便延长电池的使用时间。老式硬盘的存储容量最小只有 5MB,而且,使用的是直径达12英寸的碟片。现在的硬盘,存储容量高达数十 GB,台式电脑硬盘使用的碟片直径一般为3.5英寸,笔记本电脑硬盘使用的碟片直径一般为2.5英寸。新硬盘一般都在装配工厂中经过低级格式化,目的在于把一些原始的扇区鉴别信息存储在硬盘上。
RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的。它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。
不过,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存储器中(例如硬盘)。正因为如此,有时也将RAM称作“可变存储器”。RAM内存可以进一步分为静态RAM(SRAM)和动态内存(DRAM)两大类。DRAM由于具有较低的单位容量价格,所以被大量的采用作为系统的主记忆。
RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM就不会,Rom即光驱,硬盘是可读写的。
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是……
指针是如何存储数据的呢编译器在编译时怎么处理的
指针是一种变量类型,它存储了一个内存地址,这个地址指向另一个数据对象的位置。指针在计算机程序中被广泛使用,可以让程序直接访问和修改内存中的数据。
在编译时,编译器通常会为每个指针变量分配一个固定大小的内存空间,用于存储指向的内存地址。当程序运行时,指针变量中存储的地址将被解释为对应数据对象的位置。
编译器在处理指针时需要考虑很多因素,比如指针的类型、可访问的内存范围、是否为空等等。如果指针指向的内存地址超出了程序的内存空间或者未初始化,就可能导致程序出错或崩溃。因此,在编写使用指针的程序时,必须小心谨慎,避免出现指针错误。
存储器层次结构中的缓存
《深入理解计算机系统》p422
6.1 存储器层次结构中的缓存
一般而言,高速缓存( cache ,读作“ cash ”)是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存( caching ,读作“ cashing ”)。存储器层次结构的中心思想是,对于每个 k ,位于 k 层的更快更小的存储设备作为位于 k 十1层的更大更慢的存储设备的缓存。换句话说,层次结构中的每一层都缓存来自较低一层的数据对象。例如,本地磁盘作为通过网络从远程磁盘取出的文件(例如 Web 页面)的缓存,主存作为本地磁盘上数据的缓存,依此类推,直到最小的缓存—— CPU 寄存器组。图6-22展示了存储器层次结构中缓存的一般性概念。第 k 十1层的存储器被划分成连续的数据对象组块( chunk ),称为块( block )。每个块都有一个唯一的地址或名字,使之区别于其他的块。块可以是固定大小的(通常是这样的),也可以是可变大小的(例如存储在 Web 服务器上的远程 HTML 文件)。例如,图6-22中第 k 十1层存储器被划分成16个大小固定的块,编号为0~15。
类似地,第 k 层的存储器被划分成较少的块的集合,每个块的大小与 k 十1层的块的大小一样。在任何时刻,第 k 层的缓存包含第 k 十1层块的一个子集的副本。例如,在图6-22中,第 k 层的缓存有4个块的空间,当前包含块4、9、14和3的副本。
数据总是以块大小为传送单元( transfer unit )在第 k 层和第 k +1层之间来回复制的。虽然在层次结构中任何一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。例如,在图6-21中,L1和 LO 之间的传送通常使用的是1个字大小的块。L2和L1之间(以及I3和I2之间、L4和I3之间)的传送通常使用的是几十个字节的
块。而L5和L4之间的传送用的是大小为几百或几千字节的块。一般而言,层次结构中较低层(离 CPU 较远)的设备的访问时间较长,因此为了补偿这些较长的访问时间,倾向于使用较大的块。
1. 缓存命中
当程序需要第 k 十1层的某个数据对象 d 时,它首先在当前存储在第 k 层的一个块中查找 d 。如果 d 刚好缓存在第 k 层中,那么就是我们所说的缓存命中( cache hit )。该程序直接从第 k 层读取 d ,根据存储器层次结构的性质,这要比从第 k +1层读取 d 更快。例如,一个有良好时间局部性的程序可以从块14中读出一个数据对象,得到一个对第 k 层的缓存命中。
2. 缓存不命中
另一方面,如果第 k 层中没有缓存数据对象 d ,那么就是我们所说的缓存不命中( cache miss )。当发生缓存不命中时,第 k 层的缓存从第 k 十1层缓存中取出包含 d 的那个块,如果第 k 层的缓存已经满了,可能就会覆盖现存的一个块。
覆盖一个现存的块的过程称为替换( replacing )或驱逐( evicting )这个块。被驱逐的这个块有时也称为牺牲块( victim block )。决定该替换哪个块是由缓存的替换策略( replace — ment policy )来控制的。例如,一个具有随机替换策略的缓存会随机选择一个牺牲块。一个具有最近最少被使用 LRU )替换策略的缓存会选择那个最后被访问的时间距现在最远的块。
在第 k 层缓存从第 k 十1层取出那个块之后,程序就能像前面一样从第 k 层读出 d 了。例如,在图6-22中,在第 k 层中读块12中的一个数据对象,会导致一个缓存不命中,因为块12当前不在第 k 层缓存中。一旦把块12从第 k 十1层复制到第 k 层之后,它就会保持在那里,等待稍后的访问。
3. 缓存不命中的种类
区分不同种类的缓存不命中有时候是很有帮助的。如果第 k 层的缓存是空的,那么对
任何数据对象的访问都会不命中。一个空的缓存有时被称为冷缓存( cold cache ),此类不命中称为强制性不命中( compulsory miss )或冷不命中( cold miss )。冷不命中很重要,因为它们通常是短暂的事件,不会在反复访问存储器使得缓存暖身( warmed up )之后的稳定状态中出现。
只要发生了不命中,第 k 层的缓存就必须执行某个放置策略( placement policy ),确定把它从第 k 十1层中取出的块放在哪里。最灵活的替换策略是允许来自第 k +1层的任何块放在第 k 层的任何块中。对于存储器层次结构中高层的缓存(靠近 CPU ),它们是用硬件来实现的,而且速度是最优的,这个策略实现起来通常很昂贵,因为随机地放置块,定位起来代价很高。
因此,硬件缓存通常使用的是更严格的放置策略,这个策略将第 k 十1层的某个块限制放置在第 k 层块的一个小的子集中(有时只是一个块)。例如,在图6-22中,我们可以确定第 k 十1层的块 i 必须放置在第 k 层的块( i mod 4)中。例如,第 k 十1层的块0、4、8和12会映射到第 k 层的块0;块1、5、9和13会映射到块1;依此类推。注意,图6-22中的示例缓存使用的就是这个策略。
这种限制性的放置策略会引起一种不命中,称为冲突不命中( conflict miss ),在这种情况中,缓存足够大,能够保存被引用的数据对象,但是因为这些对象会映射到同一个缓存块,缓存会一直不命中。例如,在图6-22中,如果程序请求块0,然后块8,然后块0,然后块8,依此类推,在第 k 层的缓存中,对这两个块的每次引用都会不命中,即使这个缓存总共可以容纳4个块。
程序通常是按照一系列阶段(如循环)来运行的,每个阶段访问缓存块的某个相对稳定不变的集合。例如,一个嵌套循环可能会反复地访问同一个数组的元素。这个块的集合称为这个阶段的工作集( working set )。当工作集的大小超过缓存的大小时,缓存会经历容量不命中( capacity miss )。换句话说就是,缓存太小了,不能处理这个工作集。
4. 缓存管理
正如我们提到过的,存储器层次结构的本质是,每一层存储设备都是较低一层的缓存。在每一层上,某种形式的逻辑必须管理缓存。这里,我们的意思是指某个东西要将缓存划分成块,在不同的层之间传送块,判定是命中还是不命中,并处理它们。管理缓存的逻辑可以是硬件、软件,或是两者的结合。
例如,编译器管理寄存器文件,缓存层次结构的最高层。它决定当发生不命中时何时发射加载,以及确定哪个寄存器来存放数据。L1、L2和L3层的缓存完全是由内置在缓存中的硬件逻辑来管理的。在一个有虚拟内存的系统中, DRAM 主存作为存储在磁盘上的数据块的缓存,是由操作系统软件和 CPU 上的地址翻译硬件共同管理的。对于一个具有像 AFS 这样的分布式文件系统的机器来说,本地磁盘作为缓存,它是由运行在本地机器上的 AFS 客户端进程管理的。在大多数时候,缓存都是自动运行的,不需要程序采取特殊的或显式的行动。
6.3.2 存储器层次结构概念小结
概括来说,基于缓存的存储器层次结构行之有效,是因为较慢的存储设备比较快的存储设备更便宜,还因为程序倾向于展示局部性:
1)利用时间局部性: 由于时间局部性,同一数据对象可能会被多次使用。一旦一个数据对象在第一次不命中时被复制到缓存中,我们就会期望后面对该目标有一系列的访问命中。因为缓存比低一层的存储设备更快,对后面的命中的服务会比最开始的不命中快很多。
2)利用空间局部性: 块通常包含有多个数据对象。由于空间局部性,我们会期望后面对该块中其他对象的访问能够补偿不命中后复制该块的花费。现代系统中到处都使用了缓存。正如从图6-23中能够看到的那样, CPU 芯片、操作系统、分布式文件系统中和万维网上都使用了缓存。各种各样硬件和软件的组合构成和管理着缓存。注意,图6-23中有大量我们还未涉及的术语和缩写。在此我们包括这些术语和缩写是为了说明缓存是多么的普遍。
内存的数据存储机制
1.寄存器(register)。这是最快的存储区,寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配,你不能直接控制。
2.堆栈(Stack)。位于通用RAM(random-access memory,随机访问存储器)中,通过它的“堆栈指针”可以从处理器那里获得。堆栈指针若向
下移动,则分配新的内存空间,若向上移动,则释放内存。创建程序时,Java编译器必须知道存储在堆栈内所有数据的大小和生命周期,
因为它必须生成相应的代码,以便上下移动堆栈指针。由于约束性质,所以一般存储的是Java的对象引用和变量。
优点:快速分配的存储,仅次于寄存器。
缺点:限制了程序的灵活性。
3.堆(heap)。通用性内存池,用于存放所有的Java对象。堆的好处是:器不需要知道堆里要分配多少存储区域,也不必知道存储的数
据在堆里的存活多长时间。在Java中,创建一个对象,只需要用new,当执行这行代码,会自动在堆里进行存储分配。
优点:在堆里分配存储有很大的灵活性。
缺点是:用堆进行存储分配比用堆栈进行存储需要更多的时间。
4.静态存储(static storage)。是指在固定位置(也在RAM里)。静态存储里存放程序运行时一直存在的数据。通常是Java的静态变量,但
Java对象本身从来不会放在静态存储空间里。
5.常量存储(constant storage)。通常是存放在ROM(read-only memory,只读存储器)中,因为常量本身他们永远不会被改变。
C51编译器支持的存储器类型有哪些
你是指的数据存储类型吗?
code 程序存储区(MOVC 访问)
data 低128字节数据存储器(MOV 访问)
idata 高128字节数据存储器(MOV @RI访问)
xdata 外部数据存储器(MOVX访问)
pdata 外部分页存储(MOVX @RI 访问,P2口为高地址)
数据类型:编程的基础
数据类型在编程中扮演着至关重要的角色。它不仅告诉编译器标识符在内存中的存储方式,还决定了取用该变量时需要读取的字节长度。无论是基本数据类型如int、char还是更复杂的数据类型如String和class,都需要保存其数据长度信息。本文将深入探讨数据类型的重要性,帮助读者更好地理解编程的基础。
:input_numbers:基本数据类型
基本数据类型如int、char等在编程中占据着重要的地位。它们的数据长度信息决定了编译器在内存中分配的空间大小,从而保证了程序的运行效率和准确性。
:books:复杂数据类型
除了基本数据类型,编程中还有更复杂的数据类型如String和class。这些数据类型同样需要保存其数据长度信息,以便编译器在内存中分配合适的空间。
:brain:数据类型与内存管理
数据类型在编程中与内存管理密切相关。了解数据类型的存储方式和长度信息,可以帮助程序员更好地管理内存,避免出现内存泄漏等问题。
:rocket:数据类型与程序效率
数据类型的存储方式和长度信息直接影响程序的运行效率。编译器根据数据类型的信息分配内存空间,保证了程序的高效运行。

更多文章:
blast premier春季赛(csgo战队vitality有谁)
2026年9月7日 21:50
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00





