1、切换到root用户,su - root,如下图。
2、getconf LONG_BIT
通过命令getconf LONG_BIT获取系统位数,返回32就表示是32位,返回64就表示是64位,如下图。
3、uname -a
通过命令uname -a获取系统位数,返回ixxx的全是32位的,有X86_64的全是64位,如下图。
4、file /sbin/init或file /bin/ls
通过命令file /sbin/init或file /bin/ls获取系统位数,有32-bit的是32为的,有64-bit的是64位的,如下图。
Linux *** 作系统中x64和x86的区别如下:一、寄存器分配的不同
64位有16个寄存器,32位只有8个,32位前8个都有不同的命名,分别是e_,而64位前8个使用r代替e,即r_
32位使用栈帧来作为传递的参数的保存位置,而64位使用寄存器,分别用rdi、rsi、rdx、rcx、r8、r9作为第1-6个参数,rax作为返回值
64位没有栈帧的指针,32位用ebp作为栈帧指针,64位取消了这个设定,rbp作为通用寄存器使用
二、函数调用的不同
x_64的参数通过寄存器传递,callq在栈里存放一个8位的返回地址
许多函数不再有栈帧,只有无法将所有本地变量放在寄存器里的才会在栈上分配空间
一些寄存器被设计成为被调用者-存储的寄存器,这些必须在需要改变他们值的时候存储他们并且之后恢复他们。
三、参数传递的不同
6个寄存器用来传递参数
剩下的寄存器按照之前的方式传递(不过是与rsp相关了,ebp不再作为栈帧指针,并且从rsp开始第7个参数,rsp+8开始第8个,以此类推)
调用时,rsp向下移动8位(存入返回地址),寄存器参数无影响,第7个及之后的参数现在则是从rsp+8开始第7个,rsp+16开始第8个,以此类推
四、栈帧的不同
很多情况下不再需要栈帧,比如在没有调用别的函数,且寄存器足以存储参数,那么就只需要存储返回地址即可,需要栈帧的情况:
a. 本地变量太多,寄存器不够
b. 一些本地变量是数组或结构体
c. 函数使用了取地址 *** 作符来计算一个本地变量的地址
d. 函数必须用栈传送一些参数给另外一个函数
e. 函数需要保存一些由被调用者存储的寄存器的状态(以便于恢复)
五、运算速度的不同
64位cpu的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据,比32位提高了一倍,理论上性能会相应提升1倍。
发行版中的i386/i686/x86-64的区别:
i386用来处理32位系统,i686是i386的下集;x86-64用来处理64位系统。
linux发行版中的i386/i686/x86-64各自含义:
1、i386通常被用来作为对Intel(英特尔)32位微处理器的统称;
2、i386的子集包含i686,i686适用于Pentium Pro,也适用于K7架构的Athlon;
3、x86-64,又称“AMD64”或“x64”,是一种64位元的电脑处理器架构。它是建基于现有32位元的x86架构,由AMD公司所开发。
扩展资料:
Linux *** 作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX *** 作系统、MINIX *** 作系统、GNU计划、POSIX 标准和Internet 网络。
Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、 *** 作系统、进程等等对于 *** 作系统内核而言,都被视为拥有各自特性或类型的文件。
至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
Linux是一款免费的 *** 作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的 *** 作系统所做不到的。
正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
参考资料:百度百科-linux
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)