CPU位数一般指CPU支持的指令集位数,32CPU对应32位的指令集,64位的CPU对应64位的指令集,不过为了向下兼容,64CPU也支持32位的指令集。

 

操作系统位数,一般指操作系统对应的指令集的位数,32位操作系统对应32位的指令集,64为操作系统对应64位的指令集,所以32位操作系统既可以装在32CPU的电脑上也可以装在64CPU的电脑上,而64位操作系统只能装在64CPU的电脑上。

 

另外,32位操作系统的地址总线(相对于操作系统的一个逻辑概念,CPU也有地址总线,此处可将操作系统的地址总线理解为操作系统支持的地址总线的位数)一般为32根,所以寻址空间最大只能到4G,也就是最大只能支持4G的内存,64位的操作系统的地址总线一般为36或者40根,所以可以支持更大的内存,36根的话就是64G

 

结合iOS理解

iOS中,系统也分为3264位,虽然通常的时候我们不提,比如iOS10以下的系统基本都分32位64位,当然iPhone也分为32位64位,当然这里指处理器的位数。比如iPhone 5就是32位,iPhone 6s就是64位的,所以假如iPhone5跟iPhone6s上都装了iOS10,iPhone5上的iOS10就是32位的,iPhone6s上的iOS10就是64位的。

 

单说一下iOS11,因为iOS11只支持64位,所以只有64位的iPhone才能装iOS11,因此iPhone5是升级不到iOS11上的,iPhone6s就可以,因为它是64位的。

 

关于app

app也分为32位和64位的,对应到xcode中就是Architecture的类别,arm64 armv7 armv7s之类,arm64就是64位的指令集,armv7和armv7s就是32位的指令集。

 

理论上32位和64位的app应该是两个app,比如Windows上的程序基本都分32位和64位,32位的应用也可以跑在64位的系统上(但是会单独在一个目录下,program files(x86)64位的程序就在program files目录下)。iOS这里,它在编译的时候会把32位的程序和64位的程序都编进一个.app文件里(编译的时候如果选择多个架构,比如32位64位都支持,也就是armv7arm64的指令集都支持,那么相应的.app文件也会变大),所以我们只下载一个ipa文件(同时支持32位和64位),它既可以装在32位的iOS系统上也可以装在64位的iOS系统上,32位的iOS系统上跑32位的程序,64位的iOS系统上跑64位的程序(这里我们假设32位的iOS只跑32位的程序,64位的iOS只跑64位的程序,因为理论上64位的iOS也可以跑32位的程序)。但是假设我们下载一个只支持32位的ipa文件(编译的时候只选了armv7或者armv7s,并没有选arm64),它也可以同时被装在32位的iOS上或者64位的iOS上,比如都是iOS10,这个ipa就既可以装在iPhone5的iOS1032位上,也可以装在iPhone6s的iOS1064位上,因为64位的系统也可以跑32位的程序(因为它也支持32位的指令集)。但是从iOS11(只有64位的系统开始,系统限制你只能装64位的app,虽然理论上你也可以装32位的app,但是苹果这么规定了,没办法。

 

posted on 2018-03-30 17:12  ximenchuixie  阅读(520)  评论(0编辑  收藏  举报