32位和64位的区别(james-lx)
来源:互联网 发布:java anti csrf token 编辑:程序博客网 时间:2024/05/17 00:52
冯诺依曼的计算机系统关键部分有,处理器、内存、磁盘。
计算机的程序首先是放在磁盘中的,程序分为数据段和代码段两大部分。
当用户执行程序时,操作系统把磁盘上的程序,拷贝(映射)了一份到内存中,
所以这个时候,你试图删除磁盘上的程序,操作系统会阻止你。
内存中的程序也是分为数据段和代码段两大部分,
代码段的代码指令会依次被CPU执行,
而CPU在执行中读取或存放的数据是来源于数据段。
32位和64位是指的CPU对内存的寻址能力,
打个比方:你可以把内存想象成一列长长的火车,每一个车厢,可以放一份数据,
这些车厢我们用32位的数来表示,000000000000000000000000000001 (这就表示第一列车厢,可以放一份数据)。
一共可以放多少份数据呢? 32个位用0和1来表示,一共可以放2 的32次方= 4294967296(bit)= 4(GB)份数据。
CPU寻址,就是去找车厢号,然后存放或拿走里面的数据。
64位的CPU,就是讲CPU硬件可以对64个位来的这么多车厢寻址,这个2进制数的排列组合就比32位大了很多很多。
程序代码被操作系统拷贝放在内存中时,每一个地址(车厢号)都有对应的数据,CPU就是根据车厢号去寻址工作的。
32位的WIN操作系统,运行程序时,会给每一个程序构建一个32位的虚拟地址空间,每一个程序都有自己的一列32位数的火车放数据,
而物理内存却本来只有一列32位数的火车,怎么为每一个程序(进程 instance)安排一列32位数的火车呢?
CPU做了手脚,为每一个程序虚拟了独立的4GB空间,然后操作系统占一点,留给每个程序的虚拟地址空间是2.5GB。
正是因为操作系统为每一个程序独立分配了地址空间,从WIN XP之后,WINDOWS 平台变得坚如磐石,
而XP或之前的系统中每一个程序都公用内存地址空间,经常会发生蓝屏和崩溃。
参考《WINDOWS核心编程》《加密与解密》
阅读全文
0 0
- 32位和64位的区别(james-lx)
- 64位和32位的区别
- (转)32位和64位的区别
- 32位和64位的区别以及如何查看是32位还是64位
- JVM虚拟机32位和64位的探索(转发 jvm32位、64位区别 )
- eclipse32位和64位的区别
- 用代码看32位和64位的区别
- 电脑32位和64位操作系统的区别
- 操作系统32位和64位的区别
- windows7 32位和64位的区别
- 32位和64位CPU操作系统的区别
- 32位和64位操作系统的区别
- 32位和64位操作系统及软件的区别
- 32位和64位编程的数据类型长度区别
- sizeof--32位和64位操作系统的区别
- 电脑操作系统32位和64位的区别
- 64位系统和32位系统的区别
- 32位和64位Windows的区别与选择
- 在红帽linux9虚拟机上安装JDK
- 机器人操作系统(ROS)在线实训平台学习实验指南
- POJ 2001 Shortest Prefixes (Trie)
- c语言基础知识整理(二)
- Reverse Integer
- 32位和64位的区别(james-lx)
- Tomcat简介
- jQuery选择器用法总结
- 20170706
- Zookeeper简单介绍
- Flask在不同页面间传递参数
- 内容提供者ContentProvider
- hdu 2063 过山车(最大匹配 匈牙利算法)
- 数据库复习