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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!