操作系统的地址、数据存储和大小端问题
创始人
2024-01-16 04:42:11
0

文章目录

  • 基本概念
      • 什么是位,什么是字节?
      • 地址总线
      • 内存地址
        • 物理地址
        • 虚拟地址
    • 寻址空间
    • 存储单元
    • CPU位数
    • CPU寻址
    • 大端存储和小端存储
      • 原理
      • 为什么会有大小端模式的区分

基本概念

什么是位,什么是字节?

  • 位表示的是二进制位,一般称为比特,即0或1,是计算机存储的最小单位;
  • 字节是计算机中数据处理的基本单位,计算机进行数据存储的基本单位是字节。

地址总线

是CPU或有DMA能力的单元,用来沟通这些单元想要访问(读取/写入)计算机内存组件/地方的物理地址;简单来说地址总线是专门用来传送地址的,决定了将信息送往何处。

在这里插入图片描述

地址总线AB是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为216=64KB,16位微型机的地址总线为20位,其可寻址空间为220=1MB。一般来说,若地址总线为n位,则可寻址空间为2^n位。

举例来说:一个 16位元 宽度的位址总线 (通常在 1970年 和 1980年早期的 8位元处理器中使用) 到达 2 的 16 次方 = 65536 = 64 KB 的内存位址,而一个 32位单元位址总线 (通常在像现今 2004年 的 PC 处理器中) 可以寻址到 4,294,967,296 = 4 GB 的位址

总结

​ (1)CPU是通过地址总线来指定存储单元的。

​ (2)地址总线决定了cpu所能访问的最大内存空间的大小。

​ (3)地址总线是地址线数量之和。

内存地址

物理地址

内存中的数据是按照字节连续排布的,每个存储的数据都有一个索引与之对应,这个索引就是内存的地址。

在这里插入图片描述

如果我们的CPU想要访问内存,最朴素的想法就是CPU直接指定一个内存的地址就可以了,这个地址就是物理地址,即Physical Address,简称PA。
在这里插入图片描述

虚拟地址

直接使用物理地址虽然方便,但是在操作系统上直接用物理地址访问内存产生了一些问题,比如:

  1. 地址之间不隔离:难以避免一个程序恶意写入另一个程序所使用的内存。
  2. 内存容易不够用:当同时运行的程序比较多时,内存很容易就不够用了。
  3. 内存使用效率低:即使当一个程序执行完毕后释放了自己的内存,它留下的“内存空洞”不太可能完全匹配另一个程序所需要的内存大小,可能会产生一些难以利用的“内存碎片”

后来,人们设计出了虚拟地址来解决这些问题。虚拟地址和物理地址之间经过了一层转换,软件或者说CPU通过虚拟地址来访问内存,并不能看到真实的地址,而在中间起到转换作用的是一个专用的模块——MMU(Memory Management Unit)。

当CPU发起对一个虚拟地址的访问时,MMU会去查询页表,将虚拟地址转换为物理地址,这个过程如下图所示:

在这里插入图片描述

一般情况下MMU都是被集成在CPU内部的,所以以后的图中我们会把MMU放到CPU中。

页表本身也储存在内存当中,每个进程都有一份,也就是每个进程都有一份虚拟-物理地址的映射关系。当不同的进程访问相同的地址时,最终对应的内存的物理地址是不同的。

寻址空间

寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据存放在哪里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。 CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位

对于32位操作系统而言,一共可以表示的地址范围为0~2^32次方,其中,每个地址对应内存中的一块数据。而内存中数据存储的最小单位为字节,也就是8bit为一个整体一起存储。所以在32位操作系统中,能寻址的内存大小为:

2^32 * 1B
=4 * 2^10 * 2^10 * 2^10 *1B由于1KB = 2^10B
1MB = 2^10KB
1GB = 2^10MB所以上式
=4GB

这也是为什么32位的CPU最大能搭配4G内存的原因 ,再多的话CPU就找不到了。

存储单元

1)8位二进制(1字节)作为一个存储单元,这是由历史原因决定的,早期的ASCII是7位,后来又有IBM的8位EBCDIC得到广泛使用

2)每一个存储单元有一个地址编号,地址总线可以确定每个地址单元的编号,所以CPU的最小可寻址单位就是1字节(Byte)

3)内存也是数据存储器的一种,所以内存也是以1字节为单位

CPU位数

32位CPU表示CPU一次最多能够处理数据的位数为32bit,即机器字长为32bit

CPU寻址

1)寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。

2)每个CPU的寻址能力是要看其地址线的数量,32位CPU一般有32根地址总线,那么就一共可以寻232个地址=也就是4x1024x1024x1024=4G个地址,1个地址对应1字节的存储单位,对应到内存上就是4GB(4GByte)

大端存储和小端存储

原理

  • 大端模式:就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

    (其实,大端模式才是我们直观上认为的模式,但实际并不是这样)

  • 小端模式:就是低字节排放在内存的低地址端,高位字节排放在内存的高地址端。
    在这里插入图片描述

下面我们看个例子

在这里插入图片描述

数据本来在内存中存储是由高地址到低地址的 ,但图中可以看到它是由高字节序到低字节序存储的,也就是小端存储。

为什么会有大小端模式的区分

在计算机系统中我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit,但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题,因此就导致了大端存储模式和小端存储模式。
例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,刚好相反。
我们常用的X86结构是小端模式,而KEIL C51则为大端模式,很多的ARM,DSP都为小端模式,有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,刚好相反。
我们常用的X86结构是小端模式,而KEIL C51则为大端模式,很多的ARM,DSP都为小端模式,有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

目前的Windows、linux系统下基本都是小端存储的模式

上一篇:著名轶事

下一篇:他只忠于建筑

相关内容

热门资讯

西安大雁塔的导游词作文 关于西安大雁塔的导游词作文  一篇完整的导游词,其结构一般包括习惯用语、概括介绍、重点讲解三个部分,...
庐山探美之旅导游词 庐山探美之旅导游词  各位游客,大家好!我是探美旅行社的'导游潘昶皓。欢迎你们来庐山旅游。  庐山位...
沙面小学介绍导游词 沙面小学介绍导游词  不到沙面非尖子,不游珠江真遗憾。  各位旅客们早上好,我叫刘玮,大家可以叫我刘...
介绍成都景点的导游词 介绍成都景点的导游词(精选6篇)  作为一名专门引导游客、助人为乐的导游,时常需要编写导游词,导游词...
陈列馆导游词 陈列馆导游词  作为一名导游,常常需要准备导游词,导游词不是以一代百、千篇一律的,它必须是从实际出发...
浙江大明山景点导游词 浙江大明山景点导游词  作为一名专门为游客提供优质服务的导游人员,编写导游词是必不可少的,导游词不是...
吉林导游词 吉林导游词 15篇  作为一位尽职的导游,就不得不需要编写导游词,导游词是导游员在游览时为口头表达而...
江西鄱阳湖导游词 江西鄱阳湖导游词  作为一名可信赖的导游人员,时常要开展导游词准备工作,导游词具有注重口语化、精简凝...
龙宫风景区导游词 龙宫风景区导游词  导游词是对一个地方的介绍和说明,通过导游词,能让游客更加清晰的了解和明白当地的文...
贝子庙导游词 贝子庙导游词  朋友们,在塞外名城锡林浩特市额尔敦敖包山下,有一座绿野古刹——贝子庙。贝子庙始建于清...
兰州五泉山导游词 兰州五泉山导游词  作为一名导游,通常会被要求编写导游词,导游词作为一种解说的文体,它的作用是帮助游...
湖北恩施大峡谷导游词 湖北恩施大峡谷导游词  大峡谷位于恩施沐抚境内,听人们说,那是很久以前,一次自然灾害形成的奇观。5月...
山西概况的导游词 山西概况的导游词  山西省,简称晋,位处华北,东靠太行山,因在太行山以西,故称山西。省会太原,古时又...
导游词 我做一次小导游 导游词500字 我做一次小导游  作为一名具备丰富知识的导游,就难以避免地要准备导游词,借助导游词可...
布达拉宫的导游词 布达拉宫的导游词  作为一名乐于为游客排忧解难的导游,时常需要用到导游词,导游词具有注重口语化、精简...
吉林关东三宝讲解导游词 吉林关东三宝讲解导游词范文  吉林人参关东三宝之一。  为多年生草本植物,素有“百草之王”美称。吉林...
介绍西湖的导游词 介绍西湖的导游词(精选18篇)  作为一名乐于为游客排忧解难的导游,时常要开展导游词准备工作,导游词...
泰山景点导游词 泰山景点导游词  作为一位不辞辛劳的导游,时常会需要准备好导游词,导游词由引言、主体和结语三部分构成...
陕西省简介导游词 陕西省简介导游词  陕西,简称“陕”或“秦”,中华人民共和国省级行政单位之一,省会古都西安。下面是小...
故宫导游词 故宫导游词300字2篇  导游词一  各位朋友,现在我们已经进入故宫,故宫导游词300字2篇。此处是...