高并发设计

使用 64 位体系结构

对于应用程序开发者,Solaris 64 位和 32 位环境的主要区别在于所使用的 C 语言数据类型的模型。64 位数据类型使用 LP64 模型,其中 long 和指针的宽度为 64 位,其他所有基础数据类型仍然与 32 位实现的数据类型相同。32 位数据类型使用 ILP32 模型,其中的 int、long 和指针宽度为 32 位。

以下简要概述了 64 位环境的主要特征以及使用该环境时的注意事项:

  • 大虚拟地址空间

    在 64 位环境中,进程的虚拟地址空间最高可达 64 位(即 18 EB)。目前,32 位进程的最大地址空间为 4 GB,较大的虚拟地址空间大约是其 40 亿倍。但是由于硬件限制,某些平台可能并不支持完整的 64 位地址空间。

    大地址空间增加了可创建的具有缺省栈大小的线程数。在 32 位和 64 位系统中,栈的大小分别为 1 MB 和 2 MB。 在 32 位和 64 位系统中,具有缺省栈大小的线程数分别是大约 2000 个和 80000 亿个。

  • 内核内存读取器

    内核是在内部使用 64 位数据结构的 LP64 对象。这意味着,使用 libkvm、/dev/mem 或 /dev/kmem 的现有 32 位应用程序不能正常工作,必须转换为 64 位程序。

  • /proc 限制

    使用 /proc 的 32 位程序可以查看 32 位进程,但是无法识别 64 位进程。用来描述进程的现有接口和数据结构不够大,因此无法包含 64 位值。对于此类程序,必须将其重新编译为 64 位程序,使其可同时适用于 32 位进程和 64 位进程。

  • 64 位库

    32 位库必须与 32 位应用程序进行链接,而 64 位库必须与 64 位应用程序进行链接。除已过时的库以外,所有的系统库都同时提供 32 位版本和 64 位版本。

  • 64 位运算

    64 位运算早已在以前的 32 位 Solaris 发行版中提供。现在,64 位实现提供了完整的 64 位计算机寄存器,用于进行整数运算和参数传递。

  • 大文件

    如果应用程序仅要求大文件支持,则可以保留 32 位并使用大文件接口。要充分利用 64 位功能,必须将应用程序转换为 64 位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值