哪些操作系统/发行版具有64位内核和32位用户空间?

哪个操作系统(或发行版)带有64位内核(x86_64,SPARC64,PPC64,..smth else?..)和32位用户空间?

我希望所有的小用户空间程序(如ls,cat等)都是32位的,因为他们真的不需要是64位的。 但是对于使用> = 3 Gb的RAM,OS内核必须是64位。 另外数据库程序(当使用大量内存时)可以是64位。

64位模式会伤害一些程序,使它们变大,在指针(特别是在像列表,树等大抽象数据types)上吃(浪费)内存。

64位程序在每个指针上浪费两次内存。 我不想要。

问题不在于“64位外设是否可用时是否需要32位程序”。 问题是“在32/64位模式下32位用户空间和内核带有什么操作系统”。 此类操作系统的示例包括:Solaris / SPARC64,MACOSX / X86_64(10.5)/ ….

目前的共识似乎是你不必要地担心。 64位是好的,不占用比32位更多的空间是有意义的。 在我的几个系统上:

What 64-bit Size 32-bit Size /bin/ls 101K 91K /lib/libc.so 1.4M 1.3M /usr/bin/php5 5.5M 5.1M 

看 – 没那么重要。 而且,64位指针比你想象的更有用 。

我几乎可以买到你会从64位内核和32位用户空间中获益的情况,而不会浪费时间讨论这个问题。 当然,有些时候可能是真的(我为redis服务器这样做)。

但是如果你想开始混合64位和32位的二进制文件,就像你在评论中提到的那样,那么你确实在寻找麻烦。 这意味着很多库会在内存中映射两次,效率会非常低。 没有分发提供(即使Debian multiarch项目不包括二进制文件)。

你可以把“cat”,“dd”,“bash”,甚至是“gcc”这样的二进制文件称为不需要64位的代码,但是那些使用32位指针而不是64位代码的程序不会保存“任何事情”。 在您的邮件中inputcat时间已经比在运行32位版本而不是64位时节省更多的时间。

更不用说x86_64不仅具有更大的指针,而且具有两倍的通用寄存器,并且编译器可以对可用扩展做出尽可能多的假设,如i686 (这比i586更多,反过来i486更多超过i386 )。 性能最终可能会更好。

如果你想同时使用64位和32位的二进制文件,我个人的build议是运行需要less于4GB内存的 指针密集型应用程序( 对于这些应用程序,你真正关心的是32位内存的 性能)chroot (或任何容器)。 除非它们运行在Java堆栈上,否则在64位用户空间中使用混合JVM(使用压缩指针)可能会更好。

如果你真的想要一个64位的内核和一个32位的用户空间,而不仅仅是因为你读了一个更好的性能的地方,你总是可以从你的发行版的64位软件包中取出内核并挤压它在32位安装。

我正在运行一个64位的KVM服务器,它承载了几个虚拟服务器(debian / woody – debian / sqeeze和Windows XP)。 虚拟linux服务器有32位Userland和一个64位内核(aptitude install linux-image-2.6-amd64)。

所以我认为你可以安装每一个当前的Linux发行版,并运行一个64位内核 – 我没有这个设置的问题。

在作品中有一个新的X32 ABI ,它正好针对你要找的内容:在AMD64硬件上有32位用户空间和一个64位内核。 X32比传统的i386 ABI的优点是程序可以利用AMD64架构的其他特性,比如新的指令和附加的CPU寄存器。

但是,X32还没有准备好,所以现在最好的办法就是安装一个具有64位内核的32位发行版。 例如,在Debian中,你需要安装linux-image-2.6-amd64 (如果你正在运行wheezy,还没有发布,但是使用3.x内核,你可以安装linux-image-2.6-amd64 )。