不同操作系统及CPU字长、寻址能力、指针宽度的理解

2023-05-16

不同操作系统及CPU字长、寻址能力、指针宽度的理解

  • 字长
  • CPU位宽
  • CPU的寻址能力
  • 操作系统32bit、64bit
  • 指针大小

字长

64位CPU和32位CPU中64和32的含义:
64和32指的是CPU中的寄存器(通用)的字长,字长就是一个字的位数。这里说的字的含义是:处理器进行数据处理时,一次存取,加工,和传送的数据长度。

现在CPU大多是64位的,但大多都以32位字长运行,都没能展示它的字长的优越性,因为它必须与64位软件(如64位的操作系统等)相辅相成,也就是说,字长受软件系统的制约,例如,在32位软件系统中64位字长的CPU只能当32位用。

在计算机词典中:
(1)位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本的单位。
(2)字节(Byte):一个字节由8个位组成。它表示作为一个完整处理单位的8个二进制数码。
(3)字(Word):16个位为一个字,它代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算单位。
(4)双字(Dword):通常称16位是一个字,32位是一个双字,64位是两个双字。
(5) 四字 Qword: 两个双字称为一个四字

系统中的一个字的大小与CPU寄存器的大小有关同时也受软件系统限制,通常来说16位,32位与64位CPU中的字不一样:
16位系统:一个字 = 2Byte
32位系统:一个字 = 4Byte
64位系统:一个字 = 8Byte

字长由微处理器(CPU)对外数据通路的数据总线条数决定。

CPU位宽

CPU位宽指的是CPU位宽指的是数据总线位宽,即一个时钟周期内CPU能处理的二进制位数,和寄存器位宽相对应。

数据总线传输的数据或指令的位数要与字长一致。否则,如果数据总线宽度大于字长则一条数据或指令要分多次传输,则分开传输的几组数据也就没有意义了;如果数据总线宽度小于字长,则CPU的利用率要降低,对资源是种浪费。

另外,如果字长为n位,一般称CPU是n位的。所以说数据总线的宽度与字长及CPU的位数是一致的。

CPU的寻址能力

CPU的寻址能力与它的地址总线位宽有关,64位CPU出现之后,其地址总线位宽一般采用的是36位或者40位,它们寻址的物理地址空间为64GB或者1T。16位CPU的地址总线位宽可以是20位,32位CPU的地址总线可以是36位,64位CPU的地址总线位宽可以是40位。这个可以从下面这篇文章的配图可以看出。
linux进程的内存布局
注意该篇中64位Linux进程布局图有误,具体可以参考以下
官方文档
在这里插入图片描述
在这里插入图片描述
这里CPU的寻址位数是由地址总线的位数决定,32位CPU的寻址位数不一定是32位,因为32位CPU中32的意义为字长。

有关寻址范围计算解释,对于32位寻址的CPU,其地址值为32位的二进制数,所以可以表示的最大地址为2的32次方(即4G,最大内存空间为4GB,这里G表示数量、GB表示容量)。同时我们不难看出,一个指针的值就是一个32位的二进制数,32位对应4字节(Byte)。所以,指针的大小实际上是由CPU的寻址位数决定,而不是字长。

再来分析一下如下的情况:

  • 32位处理器上32位操作系统的32位编译器,指针大小4字节。
  • 32位处理器上32位操作系统的16位编译器,指针大小2字节。
  • 32位处理器上16位操作系统的16位编译器,指针大小2字节。
  • 16位处理器上16位操作系统的16位编译器,指针大小2字节。

这从结果看起来指针的大小和编译器有关??实际不是这样的,有这样的结果是因为以上几种情况,处理器当前运行模式的寻址位数是不一样的,如下:

  • Intel 32位处理器32位运行模式,逻辑寻址位数32,指针也就是32位,即4个字节。
  • Intel 32位处理器16位虚拟机运行模式,逻辑寻址位数16,指针也就是16位,即2个字节

编译器的作用是根据目标硬件(即CPU)的特性将源程序编译为可在该硬件上运行的目标文件。如果一个编译器支持某32位的CPU,那么它就可以将源程序编译为可以在该CPU上运行的目标文件。该源程序中指针大小也会被编译器根据该CPU的寻址位数(如32位)编译选择为4字节。

综上可得:指针大小是由当前CPU运行模式的寻址位数决定!

指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。

操作系统32bit、64bit

操作系统有32/64位之分,但同时CPU也有32/64位之分;32位CPU只能安装32位系统,64位CPU可以安装32位操作系统,也可以安装64位操作系统;

指针大小

C++指针指向进程内的一个逻辑内存地址,然后由操作系统管理着从逻辑地址到物理地址的映射。我们在使用计算机时,指针操纵的其实是逻辑地址,32位操作系统的逻辑地址寻址范围只有2^32=4GB。

一般来说,在64位系统下,指针长度为8,32位系统下,指针长度位4;但是有的编译器为了不同的操作系统之间相互兼容,内部对指针进行了包装,使得不管在64位还是32位系统下,指针都是4个字节长度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同操作系统及CPU字长、寻址能力、指针宽度的理解 的相关文章

  • 畅购商城项目--(用户模块+用户注册【用户名占用】)

    搭建环境 4 1 1 后端web服务 xff1a changgou4 service web 修改pom xml文档 lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt pro
  • Mysql对于列中存储键值对数据的查询

    对于键值对数据的查询 为了方便查看 xff0c 将其称之为A表 A表 xff1a 可以看到A表中的列有 id inquiry id data key data value date key列中的各个字段对应的data value中的各个数据
  • PathVariable注解的用法以及报错

    今天碰见个很奇怪的问题 xff0c 因为之前在学校没怎么用过 64 PathVariable这个注解 xff0c 但是postman测试时并没有请求到 xff0c 具体如下 接口就是一个简单的查询详情 xff0c 而当我请求postman的
  • 关于@PreAuthorize注解的使用场景

    作用 64 PreAuthorize 能够在执行方法之前进行权限的认证 xff0c 支持Spring EL表达式 xff0c 基于方法注解和权限解决方案 xff0c 并且只有当 64 EnableGlobalMethodSecurity p
  • 获取 当前时间的前五天凌晨0点的时间

    公司今天提到的需求是 xff1a 每日凌晨两点 xff0c 调用方法 xff0c 方法的内容是 xff1a 拉取当前时间的前五天的0点的消息聊天记录 在网上查了好久才找到 xff0c 现在奉上代码 xff1a span class toke
  • 查询 按照 指定时间的前一天的数据

    需求 xff1a 查询按照指定时间的前一天的数据 xff0c 举个例子 xff1a 传入2023 2 27 xff0c 需要获取到2023 2 26 的数据 xff0c 如果这一天没有数据 xff0c 那就需要往前找 xff0c 直到找不到
  • 关于limit的使用场景

    什么情况下使用 limit 1呢 xff1f 当我们写sql语句的时候需要进行全表扫描 xff0c 前提我们已经确认返回的结果只有一条数据的时候 xff0c 使用limit 1 xff0c 因为使用limit 1 之后 xff0c 在查询过
  • 【STM32多级界面】-LCD结构体多级图形界面框架

    STM32多级界面搭建 在实际的项目之中 xff0c 需要用单片机在LCD OLED中搭建一个3级的图形界面 本文的工程文件我将上次传到百度网盘 xff0c 链接在最后的部分 STM32多级界面搭建一 方案选择二 实现效果三 程序设计3 1
  • ubuntu20.04系统安装u盘制作方法

    1 下载UltraISO软碟通 xff0c 下载Ubuntu20 04 2 打卡UltraISO xff0c 如下 3 加载Ubuntu20 04系统iso文件 文件 gt 打开 xff0c 如下 4 点击 启动 gt 写入硬盘映像 结果如
  • vue和react相同点_我试图在React,Unity,Godot,Construct,Game Maker和Phaser中制作相同的2D游戏原型。 这是我发现的。...

    vue和react相同点 I 39 m a tabletop game developer In designing a new card game I decided to build a digital prototype to hel
  • java发送Http请求(获取响应cookie、重定向)

    1 正常的发送Http请求 xff0c 获取返回值 xff08 json格式 xff09 span class token comment 引入的相关包 import org apache http HttpEntity import or
  • MATLAB基础教程-台大郭彦甫-学习笔记

    MATLAB基础教程 台大郭彦甫 学习笔记 最近在跟着郭彦甫老师的教程学matlab xff0c 刚开始用OneNote整理了一些笔记 郭彦甫老师的课讲的超级棒 xff0c 个人认为目前各平台上最好的matlab入门视频 但是2015年的课
  • MATLAB入门:基本操作与矩阵运算

    matlab基本操作与矩阵运算 基本操作把matlab当作计算器使用变量变量类型避免使用与函数 脚本同名的变量 格式控制 矩阵运算矩阵的定义向量乘法 矩阵索引使用 96 96 创建向量使用 96 96 索引 矩阵串联矩阵运算一些特殊矩阵一些
  • MATLAB数学建模 统计

    统计 叙述统计学数值统计图形统计 推论统计学练习 叙述统计学 数值统计 主要介绍一些函数 M 61 mean A 返回 A 沿大小不等于 1 的第一个数组维度的元素的均值 如果 A 是向量 xff0c 则 mean A 返回元素均值 xff
  • MATLAB数学建模 回归与内插

    以下内容为个人笔记 xff0c 部分图片来源于郭老师课件或课程截图 笔记汇总 xff1a MATLAB基础教程 课程视频 xff1a MATLAB基础教程 台大郭彦甫 xff08 14课全 高清 含课件 xff09 回归与内插 多项式曲线拟
  • [Java] [eclipse] Syntax error on token “;“, , expected 错误

    错误提示 eclipse中遇到如下错误 xff1a 错误代码如下 xff1a 错误原因 类体的内容由两部分构成 xff1a 一部分是变量的声明 xff1b 另一部分是方法的定义 注意在方法外 xff0c 只能有变量的声明 xff0c 不能包
  • MacOS 下基于 Docker 安装 SQL Server

    文章目录 MacOS Docker 安装使用 Homebrew 安装手动下载安装修改镜像加速 安装 SQL Server1 拉取并运行容器镜像2 连接 SQL Server2 2 使用 Navicat 连接 SQL Server 解决 SQ
  • 监督学习-线性回归(数学建模)

    这是在学习吴恩达的机器学习课程时 xff0c 一些随笔 课程地址在 coursera ML 文章目录 监督学习 VS 无监督学习Cost function梯度下降学习率 alpha 多元梯度下降特征缩
  • 吴恩达机器学习 - Coursera Machine Learning(数学建模向)

    这里作为一个目录吧 xff0c 正在学习中 学习过程中做的笔记 xff0c 主要对在数模中比较实用的一些东西做了补充 xff0c 另外就是附上了编程练习的个人解答 希望自己能坚持下去 xff01 监督学习 线性回归 课程原地址在 xff1a
  • win11 安装 WSL2 在非 C 盘及配置(图形界面+代理)

    WSL 安装及配置 直接安装 WSL2 在非 C 盘启用 WSL 功能前提条件设置默认安装 WSL2安装在非 C 盘 图形界面先决条件更新 WSL 以支持 GUI 配置 WSL2 使用 Windows 网络代理 直接安装 WSL2 在非 C

随机推荐

  • ranger 命令_如何使用Ranger从命令行浏览文件

    ranger 命令 Ranger是一种非常方便的基于终端的文件导航器 xff0c 它使用Python编写 xff0c 可用于Linux和Mac Ranger允许您使用键盘上的箭头键浏览文件系统 xff1a 上 下可在当前目录 xff08 中
  • java程序将ftp内文件转为http预览及下载流

    首先引入ftp连接需要的jar包 lt dependency gt lt groupId gt commons net lt groupId gt lt artifactId gt commons net lt artifactId gt
  • 解决 grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘PASSWORD‘ with grant option; 错误

    从MySQL 8开始 xff0c 您不再可以 隐式地 使用GRANT命令创建用户 用CREATE USER代替 xff0c 后面跟着GRANT语句 CREATE USER 39 root 39 64 39 39 IDENTIFIED BY
  • 约瑟夫环问题(菜鸟自己的总结)

    约瑟夫问题 首先约瑟夫问题 据说著名犹太历史学家 Josephus有过以下的故事 xff1a 在罗马人占领乔塔帕特后 xff0c 39 个犹太人与Josephus及他的朋友躲到一个洞中 xff0c 39个犹太人决定宁愿死也不要被敌人抓到 x
  • 模拟电路 电学英语单词大赏

    AC Alternating current 交流电 DC direct current 直流电 op amp operation amplifier 运算放大器 paritical 粒子 electrical potential ener
  • Windows下Seata配置启动

    此为个人笔记 xff0c 看了网上其他人的配置 xff0c 仅仅用于记录 1 首先需要下载安装包与源码 xff0c 俩者版本需一致 https github com seata seata releases 2 创建一个seata 数据库
  • Html技术

    软件架构 xff1a 架构访问端服务端C SClientServerB SBrowserServer Html xff1a Hyper Text Markup Language xff08 超文本标记语言 xff09 简写 xff1a HT
  • Python库的安装问题

    Python库的安装问题 所遇问题与解决方式安装版本 1 Pycharm安装gdal库失败1 1 错误一 xff1a 缺少VC 43 43 14环境1 2 错误二 xff1a 安装VC 43 43 14 0后 xff0c 再在pycharm
  • 转JSON时去除指定属性、JSONArray和JSONObject的顺序变化问题

    一 转JSON时去除指定属性 span class token comment 方法一 xff1a 遍历循环 xff0c 使用remove去除JSON属性 span JSONArray jsonList span class token o
  • java书城登录注册查询 原生servlet实现

    java书城登录注册查询 原生servlet实现 前言一 项目功能二 项目实现方法1 项目结构 总结图片展示结语另外 文章目录 前言一 项目功能二 项目实现方法1 项目结构 总结图片展示结语另外 前言 本人是一位破烂专科的大二学生 xff0
  • shell 美化工具(oh my posh)

    Chat 最近放寒假了 xff0c 这几天在学习小程序与go xff0c 然后经常逛github xff0c 看一些go的项目 xff0c 然后发现一个由go写的项目 xff0c 非常的不错 xff0c 它叫oh my posh xff0c
  • linux twm_回到TWM Linux桌面基础知识

    linux twm TWM是最不起眼的窗口管理器 xff0c 类似于您购买相框时获得的那些样本照片 Xorg随X11 Windows系统一起提供的基本的 xff0c 几乎是最低限度的概念证明 xff0c 可以证明确实可以为图形用户界面 xf
  • sequelize 爬坑【2】 Op 相关操作合集【转】

    const Op span class token operator 61 span Sequelize span class token punctuation span Op span class token punctuation s
  • Spring框架入门

    文章目录 Spring第1章 简介 61 61 1 1 Spring概述 61 61 Spring的下载地址1 3 Spring模块 61 61 Spring框架分为五大模块 xff1a 61 61 1 4 HelloWorld 61 61
  • 小米笔试真题一

    小米笔试真题一 第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题第十二题第十三题总结 第一题 下述算法的时间复杂度为 xff08 xff09 A O log2n B O n C O nlog2n D O n 2 span
  • C语言数组专题训练

    C语言数组专题训练 第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题 第一题 若有语句char s1 10 s2 10 61 books xff1b 则能将字符串 books 存放到数组 s1 的正确语句是 A strc
  • 逻辑结构与物理结构

    逻辑结构与物理结构 逻辑结构集合结构线性结构树形结构图形结构 物理结构 逻辑结构 简单的来说 xff0c 逻辑结构就是数据之间的关系 逻辑结构常见有四种类型 xff1a 集合结构 xff0c 线性结构 xff0c 树形结构 xff0c 图形
  • 乐鑫面试流程

    乐鑫面试流程 面试岗位笔试技术面试HR面电话聊天发offer 面试岗位 嵌入式软件实习生 笔试 题目分为选择题和编程题 xff0c 选择题二十题 xff0c 编程题两题 xff1b 选择题基本是一些计算机相关基础知识 xff0c 比较简单
  • 全局变量和静态变量的初始化

    全局变量和静态变量的初始化 全局变量 static变量初始化时间静态局部变量全局变量 不要写出和编译顺序相关的程序总结 全局变量 static变量初始化时间 静态局部变量 首先 xff0c 静态局部变量和全局变量一样 xff0c 数据都存放
  • 不同操作系统及CPU字长、寻址能力、指针宽度的理解

    不同操作系统及CPU字长 寻址能力 指针宽度的理解 字长CPU位宽CPU的寻址能力操作系统32bit 64bit指针大小 字长 64位CPU和32位CPU中64和32的含义 xff1a 64和32指的是CPU中的寄存器 通用 的字长 xff