source: mainline/doc/mm@ 6a78e84

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 6a78e84 was bb68433, checked in by Ondrej Palkovsky <ondrap@…>, 19 years ago

Changed malloc to include second parameter and documented
recommended usage.
Added zone merging, made ia32 & amd64 to merge found zones.

  • Property mode set to 100644
File size: 3.3 KB
Line 
1Memory management
2=================
3
41. Virtual Address Translation
5
61.1 Hierarchical 4-level per address space page tables
7
8SPARTAN kernel deploys generic interface for 4-level page tables
9for these architectures: amd64, ia32, mips32 and ppc32. In this
10setting, page tables are hierarchical and are not shared by
11address spaces (i.e. one set of page tables per address space).
12
13
14 VADDR
15 +-----------------------------------------------------------------------------+
16 | PTL0_INDEX | PTL1_INDEX | PTL2_INDEX | PTL3_INDEX | OFFSET |
17 +-----------------------------------------------------------------------------+
18
19
20 PTL0 PTL1 PTL2 PTL3
21 +--------+ +--------+ +--------+ +--------+
22 | | | | | PTL3 | -----\ | |
23 | | | | +--------+ | | |
24 | | +--------+ | | | | |
25 | | | PTL2 | -----\ | | | | |
26 | | +--------+ | | | | | |
27 | | | | | | | | +--------+
28 +--------+ | | | | | | | FRAME |
29 | PTL1 | -----\ | | | | | | +--------+
30 +--------+ | | | | | | | | |
31 | | | | | | | | | | |
32 | | | | | | | | | | |
33 +--------+ \----> +--------+ \----> +--------+ \----> +--------+
34 ^
35 |
36 |
37 +--------+
38 | PTL0 |
39 +--------+
40
41
42PTL0 Page Table Level 0 (Page Directory)
43PTL1 Page Table Level 1
44PTL2 Page Table Level 2
45PTL3 Page Table Level 3
46
47PTL0_INDEX Index into PTL0
48PTL1_INDEX Index into PTL1
49PTL2_INDEX Index into PTL2
50PTL3_INDEX Index into PTL3
51
52VADDR Virtual address for which mapping is looked up
53FRAME Physical address of memory frame to which VADDR is mapped
54
55
56On architectures whose hardware has fewer levels, PTL2 and, if need be, PTL1 are
57left out. TLB-only architectures are to define custom format for software page
58tables.
59
60
61
621.2 Single global page hash table
63
64Generic page hash table interface is deployed on 64-bit architectures without
65implied hardware support for hierarchical page tables, i.e. ia64 and sparc64.
66There is only one global page hash table in the system shared by all address
67spaces.
68
692.1 General allocator
70
71'malloc' function accepts flags as a second argument. The flags are directly
72passed to the underlying frame_alloc function.
73
741) If the flags parameter contains FRAME_ATOMIC, the allocator will not sleep.
75 The allocator CAN return NULL, when memory is not directly available.
76 The caller MUST check if NULL was not returned
77
782) If the flags parameter does not contain FRAME_ATOMIC, the allocator
79 will never return NULL, but it CAN sleep indefinitely. The caller
80 does not have to check the return value.
81
823) The maximum size that can be allocated using malloc is 128K
83
84Rules 1) and 2) apply to slab_alloc as well. Using SLAB allocator
85to allocate too large values is not recommended.
86
Note: See TracBrowser for help on using the repository browser.