Go to main content

Multithreaded Programming Guide

Exit Print View

Updated: March 2019
 
 

Using the 64-bit Architecture

For application developers, the major difference between the Oracle Solaris 64-bit and 32-bit environments is the C-language data type model used. The 64-bit data type uses the LP64 model where longs and pointers are 64 bits wide. All other fundamental data types remain the same as the data types of the 32-bit implementation. The 32-bit data type uses the ILP32 model where ints, longs, and pointers are 32 bits.

    The following summary briefly describes the major features and considerations for using the 64-bit environment:

  • Large Virtual Address Space

    In the 64-bit environment, a process can have up to 64 bits of virtual address space, or 18 exabytes. The larger virtual address space is 4 billion times the current 4 Gbyte maximum of a 32-bit process. Because of hardware restrictions, however, some platforms might not support the full 64 bits of address space.

    A large address space increases the number of threads that can be created with the default stack size. The default stack size is 1 megabyte on 32 bits, 2 megabytes on 64 bits. The number of threads with the default stack size is approximately 2000 threads on a 32-bit system and 8000 billion on a 64-bit system.

  • Kernel Memory Readers

    The kernel is an LP64 object that uses 64-bit data structures internally. This means that existing 32-bit applications that use libkvm, /dev/mem, or /dev/kmem do not work properly and must be converted to 64-bit programs.

  • /proc Restrictions

    A 32-bit program that uses /proc is able to look at 32-bit processes but is unable to understand a 64-bit process. The existing interfaces and data structures that describe the process are not large enough to contain the 64-bit quantities. Such programs must be recompiled as 64-bit programs to work for both 32-bit processes and 64-bit processes.

  • 64-bit Libraries

    32-bit applications are required to link with 32-bit libraries and 64-bit applications are required to link with 64-bit libraries. With the exception of those libraries that have become obsolete, all of the system libraries are provided in both 32-bit versions and 64-bit versions.

  • 64-bit Arithmetic

    64-bit arithmetic has long been available in previous 32-bit Oracle Solaris releases. The 64-bit implementation now provides full 64-bit machine registers for integer operations and parameter passing.

  • Large Files

    If an application requires only large file support, the application can remain 32-bit and use the Large Files interface. To take full advantage of 64-bit capabilities, the application must be converted to 64-bit.