通过编程察看处理机的内存管理策略

第二章、指令:计算机的语言总结 1、数据对齐: 字的起始地址都是4的倍数 2、大端小端: 0xabcdef12大小端存放方式如下: 3、指令格式: 3种,R型,I型,J型 R: I: J: 4、分支指令细节: beq: PC: beq r1, r2, L1 PC+4:... 若r1=r2,则跳转到PC+4+L1×4的地方执行指令 J: PC:J Exit 所跳转的地方为:取... 阅读详情

通过编程察看处理机的内存管理策略

作者: 张桂权

内存是处理机可以直接访问(读写)的计算机存储设备,它由一系列的存储单元组成。而一个内存单元是一个基于晶体管的电子元件,它有两种可以映射为“1”和“0”的状态。处理机的内存管理策略有两种:升序 和降序。

在升序管理机制中,内存是由下往上升序排列的。也就是说,低地址的内存在底部,而高地址的排列在顶部;而在降序管理机制中与此相反。这是两种截然不同的策略,虽然都为了更好的存储数据,和有效的利用内存单元。

我们一般都不会关心这些机制的,应为这是由硬件提供商在处理机设计的时候决定的。我们只管用就行了。我们在写程序时一般只考虑其中的逻辑机构,而不是武力机构,除非你写的是嵌入式程序而且为了提高效率和内存的利用率不得不通过底层操作直接进行内存管理(这时候,内存显得很重要不得随便浪费)。

程序是由指令和数据组成的。对于只有一字节的数据我们可是用它的地址来指示该数据。但是对于多字节数据就不能这样冒昧的操作了。多字节数据在内存中的存放方式有升序和降序两种。如果多字节数据中高位被放在低地址内存单元,而低位被放在高地址内存单元,那么我们就说它采用的是降序记号,反之为升序记号。这也是有具体的处理机的内存管理机制决定的。我们没有能力也没有必要去改变这种机制,不过我们可以通过编程看看自己的处理机采用的是哪一种机制。

假设我们有一个多字节值“0xABCDEF12“,那么在升序排列机制下的次序为:  ABCDEF12 

否则,为12EFCDAB。

你可以通过下面的程序的输出结果看看你的处理的管理机制了:


#include <stdio.h>

void main(int argc, char *argv[]) {

  unsigned long test = 0xABCDEF12;

  unsigned char *pointer;

  pointer  = (unsigned char *)&test;

  printf("%X %X %X %X  /n", *pointer,*(pointer+1),*(pointer+2),*(pointer+3) );

  return;

}


如果采用的降序记号方式,那么结果是: 12 EF CD AB

操作系统 第2章 处理机管理 (学习笔记) 第2章 处理机管理 2.1概述 2.1.1多用户(1)多用户: 多用户同时通过终端连接到计算机主机(2)宏观:在同一个时间范围内独立地使用计算机系统(3)微观:各用户程序并没有同时使用计算机的资源,共享只能是时间上的分割 2.1.2程序(1)程序: 计算机处理的一系列的指令,按照一定的逻辑要求被划分成多个相关模块,这些模块必须顺序地执行(2)程序顺序执行的特征:顺序性,封闭性,可再现性(3)程序的... 阅读详情

相关推荐

别再怕DRIVER_VERIFIER_DMA_VIOLATION蓝屏:手把手教你用WinDbg分析IOMMU与驱动冲突

本文深入解析DRIVER_VERIFIER_DMA_VIOLATION蓝屏错误,从IOMMU原理到实战排错,手把手教你使用WinDbg分析驱动冲突。通过理解DMA与IOMMU的核心机制、搭建分析环境、解读DMAR表与设备拓扑,最终定位问题驱动并提供解决方案,帮助开发者和IT运维人员有效应对此类系统崩溃问题。

weixin_30298497的博客 803

第二章练习题

2.7 分别画出数据0xabcdef12 在大端编址和小端编址的机器上是如何分布在存储器中的。(假定数据从地址0开始存储) 大端 地址 大端 3 12 2 ef 1 cd 0 ab 小端 地址 小端 3 ab 2 cd 1 ef 0 12 ...

2711871311的博客 2071

数字孪生驱动的城市地下管网智能运维与应急处置决策支持系统

上海市城市数字化中心的数据实践显示,通过关联分析管网材质与故障率的关系,将铸铁管更换周期从15年优化至8年(李敏,2021)。环境效益方面,上海市通过优化管网运行参数,年减少碳排放1.8万吨,相当于种植36万棵乔木。数字孪生与物理设备的双向交互采用OPC UA协议实现,某次天津管网渗漏事件中,系统通过实时数据反馈,指导现场人员调整注浆方案,将修复时间从48小时压缩至16小时。虚拟指挥沙盘支持多视角协同,深圳水务系统的实践表明,通过AR可视化技术,跨部门会议效率提升60%,方案决策时间缩短40%。

2501_92431686的博客 1424

大端字节序和小端字节序及应用场景

存储和存储是两种不同的数据存储方式,其区别在于对于多字节数据(如整数、浮点数等)的存储顺序不同。小端字节序存储(Little Endian)是指低位字节存储在内存的低地址处,高位字节存储在内存的高地址处。例如,32位整数0x12345678在内存中的存储顺序为0x78 0x56 0x34 0x12。存储(Big Endian)是指高位字节存储在内存的低地址处,低位字节存储在内存的高地址处。例如,32位整数0x12345678在内存中的存储顺序为0x12 0x34 0x56 0x78。

m0_65690223的博客 2662

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

nnn2188185的博客 357

VTK API 详解(115):vtkScalarBarActor - 显示颜色条

显示用于颜色映射的标量值范围。自动从vtkMapper中提取。可设置颜色条的位置、大小、字体、标签格式等。支持横向或纵向显示颜色条。是进行科学数据伪彩色可视化时非常重要的辅助工具,它能让用户直观地理解不同颜色代表的数值大小。通过灵活设置颜色表、标题、标签数量等,可以适配多种可视化需求。

yumeiguo的博客 488

大端对齐与小端对齐

假如现有一32位int型数0x12345678,那么其MSB(Most Significant Byte,最高有效字节)为0x12,其LSB (Least Significant Byte,最低有效字节)为0x78,在CPU内存中有两种存放方式:(假设从地址0x4000开始存放)sizeof的大小是20,即a[20]的大小,同样20是b和c的倍数,规则3。低地址 ------------------> 高地址。低地址 -----------------> 高地址。

weixin_46214511的博客 3322

uniapp [全端兼容] - 实现内网使用天地图离线地图,详解项目加载天地图的离线地图服务器部署与使用教程示例源码,Uniapp如何实现天地图的离线加载部署在内网访问(兼容H5、微信小程序、App)

uniapp天地图如何离线访问,无需网络调用天地图API,天地图离线地图,天地图——内网使用离线地图,uniapp中加载天地图的离线地图,uniAPP实现天地图离线访问,在内网中无法直接使用外网天地图资源怎么办,在uni-app中加载地图 -使用天地图的瓦片数据。UNIAPP天地图离线怎么使用,内网部署天地图,天地图离线瓦片,部分瓦片数据,天地图如何离线,下载天地图离线服务,并用Uniapp+天地图离线部署,天地图私有化部署,实现离线加载天地图,Java+uniapp天地图离线开发,uniapp项目中无网络

🏆 前端领域优质创作者 4901

内存的一点读书笔记

 数据在内存中存放方式有big-endian和little-endian两种方式。 假设数据:0xABCDEF12以big-endian方式存放为:AB CD EF 12以little-endian方式存放为:12 EF CD AB 下面以一个测试程序为例:#include  void main(int argc, char **argv){    

每天进步一点点... 1233

基于学术研究于NASA官网GPM卫星数据下载详细教程

基于学术研究于NASA官网GPM卫星数据下载详细教程

珞瑜的博客 8655

3D Slicer学习记录(4)-PLUSapp连接双目相机Intel Realsense

plusapp是基于openIGTLink协议的免费的开源库和应用程序API接口,用于数据采集、预处理、校准和实时流成像、位置跟踪和其他传感器数据。这里以intel realsense双目相机为例详细的演示整个图像流导入到3D Slicer的流程。

weixin_39090239的博客 1346

BCD解密

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了! 现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。 输入格式: 输入在一行中给出一个...

weixin_45768308的博客 1208

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

十进制转换

进制转换(十进制转化成其他进制) 通俗所见十进制:1+9=10,2+18=10; ,当然都是大家会的,也是我们人在计算机最直接得可以计算的结果。但计算机其实是只有1和0 两个单数。就会涉及到其他的进制转换,常见二进制转换,八进制,十六进制等等。 注意事项: 二进制:0 1 无前缀 八进制:0~7 以0为前缀 十六进制:0~9 ABCDEF 以0x为前缀 八进制为0打头,十六进制为0x打头。 进制转...

计算机科学与技术专业学生的成长之路 2906

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

十六进制转八进制

题目描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入 输入的第一行为一个正整数n (1&lt;=n&lt;=10)。 接下来n行,每行一个由0-9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出 输出n行,每行为输入对应的八进制正整数。 例如 输入: 2 39 123ABC 输出: 71 4435274 思路 先将十六进制转换为十进...

yangke 532

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

一道试题引发的血案

<br />http://blog.youkuaiyun.com/seton040/archive/2009/11/03/4764935.aspx<br /> <br />某日,看到一道比较恶心的C语言的试题,考了很多比较绕的知识点,嘴脸如下:<br /><br />--------------------------------------------------------------------------------<br />int main(void)<br />{<br />    int a[4] =

vcvbve的专栏 696

大小端(数据在内存中的存储)

大小端模式介绍 大端(存储)模式:是指一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。 小端(存储)模式:是指一个数据的低位字节序内容存放在低地址处,高位字节序的内容存放在高地址处。(可以总结为“小小小”即低位、低地址、小端) 在计算机系统中,我们是以字节为单位存放数据的,每个地址单元都对应着一个字节,一个字节为8bit。但在C语言中存在不同的数据类型,占用的字...

sifanchao的博客 3万+

关于数据的大端对齐和小端对齐

关于数据的大端对齐和小端对齐        我们知道现行存储设备中都是以字节为存储单元来进行划分的,这和早期的实现的延续相关。不管是32位的存储器,还是64位的存储器,我们都习惯用字节进行度量,习惯性的说它们的存储单元是4字节的、8字节的。对于存储芯片一个存储单元对应着一个物理地址,但更准确的说应该是一个字节的存储区对应一个物理地址。对于存储在这些存储单元中的数据来说又是什么样的状态呢?     ...

smallerxuan的博客 6606

内存管理

内存管理内存提供了一种存储信息的方式。根据怎样使处理器能快速访问存储的数据,计算机存储设备可分为如下几类:1)处理器寄存器2)处理器缓存3)RAM4)本地磁盘存储5)经网络连接的数据存储有三种级别的内存管理:1)机器级内存由一系列的读写单元所组成。每个内存单元都是一个基于晶体管的电子组件,它存在两种可能状态。以0和1分别表示这两种可能状态。内存单元按字节进行分组。处理器使用总线来操纵内存。总线

chszs的专栏 2004

大端模式和小端模式详解

怎么去理解大端和小端? 大端模式和小端是实际的字节顺序和存储的地址顺序对应关系的两种模式,总结如下: 大端模式:低地址对应高字节 小端模式:低地址对应低字节 不管是大端还是小端模式,我们在读取和存储数据的时候一定都是从内存的低地址依次向高地址读取或写入。 打个比方,我们定义一个数组,char array[5] = {0,1,2,3,4}; 学习过C语言应该都知道,array是这个数组存

617381875 1万+

Endian 的由来

Endian 的由来 一、引子  在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:big-endian和little-end

黎明曙光 1407

C++从零开始(中)

上面的第一个e的有效范围是整个a.cpp文件内,而a的有效范围是main函数内,而main函数中的e的有效范围则是括着它的那对“{}”以内。即上面到最后执行完e++;后,long e = 2;定义的变量e已经不在了,也就是被释放了。而long e = 10;定义的e的值为12,a的值为11。    也就是说“{}”可以一层层嵌套包含,没一层“{}”就产生了一个作用域,在这对“{}”中定义的变量只在

兵无常势 水无常形 1755

【408 考研真题】大小端 & 边界对齐存储

文章目录一道 408 考研真题顺序存储的方式:大端法和小端法C 语言中的边界对齐存储参考资料 一道 408 考研真题 【答案】D 【解析】 从答案可以看出,先要将 273 转换成 16 进制。a = 273 = 0x00000111。其中,1 位十六进制数等于 4 位二进制数,而题目给出,按字节(1 字节 = 8 位)编址。又因为是采用小端存储,即先存放低位,内存图如下: 对a来说,0x 00...

My Blogs 7999

大小端和存储器对齐

大小端和存储器对齐[自己还没看,先贴出来有空看]xiaoB.M. @ 2007-09-12 21:24我们常常看到“alignment", "endian"之类的字眼, 但很少有C语言教材提到这些概念。 实际上它们是与处理器与内存接口, 编译器类型密切相关的。考虑这样一个例子: 两个异构的CPU进行通信, 定义了这样一个结果来传递消息:struct Message{      shor

技术收藏 2204
上一篇: 软件集成的代价
下一篇: Bill Gates 的大学毕业典礼演讲
natureboy520
博客等级 码龄23年 37粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值