32位App和64位App

位数对应才能发挥最大的处理性能

64CPU+64操作系统+64应用

三者可以向低版本兼容,但是不能顾及高版本。

64位系统设计初衷是满足高性能的事件处理,而32位系统则是用于普通用户;

64操作系统必须用于64CPU的电脑,32应用+64系统就有点大材小用,得不到性能最大化;

最主要的是运算速度,64位CPU GPRs(General-Purpose Regisoters,通用寄存器)的数据宽度位64,64位指令集可以存心64位数据指令,也就是说处理器一次可以提取64位数据比32位提高了一倍。

寻址能力不同,64位处理器的优势在系统对内存的控制上,由于地址使用的是特殊的整数,因此一个ALU(算术逻辑运算器),和寄存器可以处理更大的整数,也就是更大的地址。

软件普及不同,64位可以处理的内存空间是4GB以上,高达128GB,但是这么大的内存空间也会加速物理地址的消耗,而32位最多可以处理4GB地址空间。

怎么辨别64位App和32位App?

方法1:

查看data/app/package/lib安装目录文件,arm对应32位,arm64对应64位;

方法2:

当你下载安装一个App之后,从Launcher启动该应用,系统会由Zygote分叉出一个子进程来提供App运行的虚拟机和Runtime环境。

与32位系统不同的是,在64系统中会同时存在两个Zygote进程——zygote和zygote64,分别对应32位和64位应用。

所以,要进行App的32/64位检测,只需要看它的父进程是哪个Zygote即可。

什么是地址空间?

地址空间是一个比较抽象的概念,类似于一个长的数组,每个数组占一个字节,那么这个数组长度就由地址空间长度来决定,32位系统的地址空间就是3^32个字节(4GB),而64位系统的地址空间就是2^64(16EB)个字节.

在早期的计算机中,程序是直接运行到物理内存中,也就是说程序运行的时候直接访问的是物理地址,如果一个计算机只运行一个程序,并且这个程序需要的内存不超过计算机所拥有的内存,这样才不会有问题,但是多程序情况怎么办呢?怎么把有限的物理内存分给多个程序呢?

方案一、

假如现在有个128M的计算机,同时运行A、B两个程序,A程序需要内存10M,B程序需要110M的内存,分配方法如下:先将内存中的前10M分配给程序A,再从剩下的118M的内存中划分出110M给程序B。

以上方案存在诸多问题:

问题一、

进程地址空间不隔离。程序直接访问物理内存,所以程序可能会修改其他程序的内存数据,计算机希望程序之间相互不影响。

问题二、

内存使用效率低。在A和B都运行的情况下,用户还要运行程序C,而C程序需要20M的内存才可以正常运行,而此时系统只剩下8M的空间可以使用,此时系统必须选择一个正在运行的程序将其数据暂时拷贝到硬盘上,释放出来部分空间来供C程序使用,这个过程中有着大量的数据的装入装出,效率很低下。

问题三、

程序的地址不确定。当剩余的空间可以满足程序C运行要求后,系统会在剩余空间中随机分配一段连续的20M大小的空间给C使用,因为是随机分配的地址,所以的地址是不能确定的,我们的某些硬件是需要固定的地址上去运行的。

综上三个问题,就有了虚拟地址的概念,相当于加了一个中间层,利用间接地址去访问物理内存,程序就直接访问虚拟地址,然后将虚拟地址映射到物理地址上,这就可以保证不同程序访问的物理地址位于不同区域,彼此没有重叠。

物理地址:

物理地址空间是存在计算机中的实体,每台计算机保持唯一独立性,32位机器物理空间理论上可以达到2^32=4GB,如果实际上安装了512MB的内存,那么可用的部分只是512MB的地址空间,其他部分无效。

虚拟地址:

虚拟地址并不真实存在于计算机中的,每个进程都分配了自己的虚拟空间,每个进程只能访问自己分配的空间;理论上虚拟空间受物理内存的限制;

虚拟地址和物理地址的映射是通过MMU(memory map unit)内存管理单元来完成。

第一层理解:

每个进程建立时都会建立自己的虚拟空间,这个进程的数据和代码从磁盘拷贝到自己的内存空间,哪些数据在什么位置,都由进程控制表中的链表记录着。

第二层理解:

进程需要知道数据在哪些地方,用页表来记录,页表每一个表项分为两个部分,第一个部分记录是否存在,第二个部分记录物理内存的地址;当进程访问虚拟地址,先去看页表,若数据不在物理内存上,就发生缺页异常;缺页异常处理:把需要的数据从磁盘里拷贝到物理内存中,如果内存满了,就找一个页覆盖,如果覆盖的页被修改过,需要将此页写回磁盘。

内存和磁盘的关系

内存指的运行内存,内存指的是存储器用来保存CPU运算时中间数据和结果,类似于一个中转站,从硬盘取到数据或者运行程序提供给中央处理器,任何一种输入和输出都需要内存才能正常运行,内存是程序与CPU之间的桥梁。

我的电脑中C盘和D盘指的是硬盘,也叫移动硬盘也叫做磁盘,U盘也是其中一种,也就是说内存条是外储设备,一般用来存储数据,如果没有硬盘,电脑可以开机但是只会进入BIOS界面,硬盘容量比较大机械硬盘在500G以上,固态硬盘在128G以上。

联系:外存上的数据只有调入内存上才能真正使用,内存不够时会调用硬盘空间来充当临时内存,临时内存速度比真正的内存要慢得多。

3264位APP地址空间相关推荐

  1. AU 32-64位转换插件 – SoundRadix 32 Lives v1.0.10 Mac

    SoundRadix 32 Lives v1.0.10 Mac | 12M 一个适配器,用于在64位程序中使用32位AU插件. 32 LIVES是透明的32位至64位音频单元和VST插件适配器,使您可 ...

  2. C# .net 3.5 32位app操作64位操作系统的注册表

    做项目的过程中需要读取和修改注册表,操作过程中发现读取的注册的注册表和实际的值不一致. 查阅网上信息了解到,64位操作系统为32位app独立设置了一个目录存放它的注册表项目 计算机\HKEY_LOCA ...

  3. 安卓CPU架构梳理 应用商店64位APP上架适配

    一.安卓CPU架构梳理 Android 目前共支持7种CPU架构: mips, mips64, X86, X86–64, arm64-v8a, armeabi, armeabi-v7a armeabi ...

  4. 某计算机主存空间为4MB,一个有32位程序地址空间,页面容量为1KB, 主存的容量为4MB的存储系统,问:(1) 虚页号字段 - 试题答案网问答...

    相关题目与解析 设某计算机的cache采用4路组相联cache.已知cache容量为16KB.主存容量为2MB,每个字块有8个字, 设某计算机采用直接映射缓存,已知主存容量为4MB,缓存容量为4096 ...

  5. Android手机64位APP兼容

    为什么 2022 armv9芯片新机出货,不兼容32位,出现卡顿闪退等问题 64位性能更好 手机硬件升级,存储更大,应用包体积不敏感 应用市场的政策 Google Play声明 自 2019 年 8 ...

  6. Linux 64位进程地址空间分布概况

    对于Linux 64位系统,理论上,64bit内存地址可用空间为0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF(16位十六进制数),这是个相当庞大的空间,Linux实际 ...

  7. oracle jinitiator 1.1.8.2,oracle jinitiator 1.1.8.2-Oracle Jinitiator1.1.8.27 3264位最新版下载_东坡手机下载...

    Oracle Jinitiator是一个数据库软件,它是由ERP提供的运行所需的JAVA类库软件.东坡带来的是Oracle Jinitiator官方最新版,它能大大减少每次运行程序加载时间,很方便实用 ...

  8. 微软常用运行库合集(3264位)

    因为win7操作系统的原因,在安装某些软件的时候会报未安装windows univer C Runtime组件,解决办法下载微软常用运行库合集(32&64位) 2020.9.11,下载地址 h ...

  9. 【Win7旗舰版系统下载 官方MSDN原版】无第三方软件 纯净3264位安装教程

    近一周以来很多网友不是发帖就是在回复中询问各种关于Win7安装或者安装之后的各种问题的,介于论坛发布的第三方修改版本众多不能一一帮大家解决遇到的问题,故特开此贴.分享微软官方MSDN版的Win7旗舰版 ...

最新文章

  1. 对话科大讯飞刘聪:深度学习在中国是否“过火”?
  2. kaptcha验证码实现,配合spring boot使用
  3. 阿里巴巴JAVA开发手册及开发插件
  4. 脉冲神经元的膜电位释放方式,分为hard和soft两种
  5. 精通 Oracle+Python,第 4 部分:事务和大型对象
  6. go语音protobuf_总结一下protobuf安装-Go语言中文社区
  7. 一文掌握 Docker 技术体系
  8. java中时钟回拨,【追光者系列】HikariCP源码分析之evict、时钟回拨、连接创建生命周期...
  9. 既往不恋,当下不杂,未来不迎
  10. 远离僵尸网络的14种方法
  11. 中兴承建WoStore:联通摒弃苹果“自封神话”?
  12. 翻斗式雨量传感器的材质分类和工作原理
  13. 为什么Pod突然就不见了?
  14. 通过调试微信小程序示例代码解析flex布局参数功能(一)
  15. 字符串操作函数strstr
  16. R语言之主成分回归与偏最小二乘xt8.3xt8.4
  17. 移动硬盘的“磁盘结构损坏且无法读取”问题的解决方法
  18. 宝石塔防的贴吧地址:
  19. webpack-webpack-dev-server
  20. java 区间 判断_java判断多个区间是否有重合

热门文章

  1. 天正安装autocad启动失败_天正打不开找不到可使用的AutoCAD版本如何解决?已经安装了CAD...
  2. 微信小程序入门指南pdf
  3. Python爬取网站用户手机号_用Python爬虫爬取学校网妹子QQ号,100行代码撩妹,用技术脱单...
  4. 乐高机器人资费_内蒙古自治区乐高机器人投资费用
  5. 写一篇组织生活会对照检查材料
  6. 百问网物联网实战-串口设计
  7. 浪潮服务器raid配置以及系统安装
  8. 智能窗帘多种应用情景模式
  9. 2022好玩的便签推荐 2022好玩的便签APP下载
  10. 安信可TB系列低功耗蓝牙模块选型表