24.05.2014 Views

AIX Version 4.3 Differences Guide

AIX Version 4.3 Differences Guide

AIX Version 4.3 Differences Guide

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ecently used mappings of segment numbers to segment ID for the process’ user<br />

address space.<br />

The architecture also allows a Segment Lookaside Buffer (SLB) to hold a smaller<br />

number of recently used segment number to segment ID mappings for the<br />

process’ user address space. For 32-bit mode, part of the SLB can be used by<br />

the hardware to represent the sixteen segment registers.<br />

64-bit processes are limited to 60-bit effective addresses. This is a convenient<br />

number for the VMM since 2 60 represents effective segment IDs up to 32-bits,<br />

which fits into one register in the kernel. The 60-bit effective address space will<br />

be sparsely instantiated up to the rlimit values for the process or up to some<br />

limitation imposed by overall system resources. The choice of address space<br />

layout was made to reduce the number of constraints on the size of each area<br />

and to allow for future expansion and new uses for address spaces. At some<br />

future date, the address space may be expanded to more than 60 bits.<br />

The first sixteen segment numbers are freed as much as possible from default<br />

system use and left for application use. This has many advantages. It makes<br />

finding incorrect use of 32-bit addresses in 64-bit processes easier; it allows<br />

32-bit and 64-bit applications to share memory at the same addresses in each<br />

process, and it allows 64-bit applications to be specially designed to work with<br />

interfaces that do not understand 64-bit addresses. For example ioctl().<br />

Segment number 0 is used for the first kernel segment in user mode. It is<br />

read-protected in user mode, except for the system call (SVC) tables,<br />

svc_instruction code, and system configuration structure.<br />

Segment number 1 is used for the second kernel segment in user mode. It<br />

contains the 64-bit system call (SVC) tables.<br />

Segment number 2 is still used for the process private segment. No<br />

program-allocatable data is contained in this segment. The address of the user<br />

block is at the same location in 32-bit and 64-bit processes.<br />

The segment numbers from 3 to 12 and segment number 14 are reserved for<br />

application use by the shmat() and mmap() interfaces.<br />

Segment numbers 13 and 15 are reserved for the new user space loader (see<br />

3.2.5, “Loader” on page 51) used at exec() and load() time. These segments are<br />

global, read-only, and are always mapped in.<br />

The address space from segment numbers 0xA0000000 to 0xEFFFFFFF are<br />

reserved for future system use. These segments numbers are not given out in<br />

response to user requests.<br />

Table 12. Address Space Layout in User Mode<br />

Segment Number Use in 64-Bit Mode Use in 32-Bit Mode<br />

0 Kernel Kernel<br />

1 Kernel User<br />

2 Process Private Process Private<br />

3 shmat/mmap Available for User<br />

34 <strong>AIX</strong> <strong>Version</strong> <strong>4.3</strong> <strong>Differences</strong> <strong>Guide</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!