Professional Documents
Culture Documents
051287161316
Autumn 2009
Linux
Linux
Linux
11/17/09
Linux OS Analysis
2/54
X86
LinuxX86
11/17/09
Linux OS Analysis
4/54
intelx86
(segment)
(offset)
324G
CPU
11/17/09
Linux OS Analysis
5/54
11/17/09
Linux OS Analysis
6/54
1
(segment register)
I386
=
16
cs, ss, ds, es, fsgs
CPU3
cs
ss
ds
11/17/09
Linux OS Analysis
7/54
80386Intel
20
1616
440
=*16+
32
16
GDT
GDT
GDT
11/17/09
Linux OS Analysis
8/54
cs:
CPUCPL (current
privilege level)03
=+
GDT
11/17/09
Linux OS Analysis
9/54
GDTRAMGDTR
GDTRAM
11/17/09
Linux OS Analysis
10/54
Intelx86
LDT
11/17/09
Linux OS Analysis
11/54
base32
limit20
G1
0
14KB
S1
0
1
11/17/09
Linux OS Analysis
12/54
Type4
DPL2
00bCPL=00b
..
11b
1
0
1
11/17/09
Linux OS Analysis
13/54
Descriptor
Privilege Level
11/17/09
Linux OS Analysis
14/54
15
index
TI RPL
Segment
Selector
Segment selector
16GDTLDT
16
13GDT
1TI(Table Indicator)
(LDTLinux
2RPL(request privilege level)
csCPU
/
11/17/09
Linux OS Analysis
15/54
11/17/09
Linux OS Analysis
16/54
GDTLDT
GDTRLDTR
11/17/09
OS Analysis
Linux
17/54
Linux
linux
0-4G
linux-2.6.26/include/asm-x86/desc.h
11/17/09
Linux OS Analysis
18/54
Linux
LinuxGDT
11/17/09
arch/x86/kernel/head_32.S
Linux OS Analysis
19/54
arch/x86/boot/pm.c
11/17/09
Linux OS Analysis
20/54
arch/x86/kernel/cpu/common.c
11/17/09
__KERNEL_CS
0x10=0000 0000 0001 0000b
Index=2
RPL=0
GDT
4GB
11/17/09
Linux OS Analysis
22/54
__KERNEL_DS
0x18=0000 0000 0001 1000b
Index=3
RPL=0
GDT
4GB
11/17/09
Linux OS Analysis
23/54
__USER_CS=0x33
11/17/09
Linux OS Analysis
24/54
__USER_DS=0x2b
11/17/09
Linux OS Analysis
25/54
LinuxGDT
1i386/boot/herder.S-->i386/boot/main.c: main() ->arch/x86/boot/pm.c:go_to_protected_mode-->setup_gdt
GDT
GDT
2i386/boot/compressed/head_32.S
3i386/kernel/head_32.S
boot_gdtGDT
early_gdt_descrper_cpu__gdt_page
arch/x86/kernel/cpu/common.c
11/17/09
Linux OS Analysis
26/54
====
(page
table)
IntelCR0
11/17/09
Linux OS Analysis
27/54
(page frame)
RAM
11/17/09
Linux OS Analysis
28/54
i386intel4KB
323
(directory)
(Table)
(offset)
10
10
12
(page directory)
(page table)
CPUCR3
11/17/09
Linux OS Analysis
29/54
CR3
11/17/09
Intel
80x86
Linux
OS Analysis
30/54
4KB1212
PresentAccessedDirtyRead/Write
User/Supervisor
present0
CR214
11/17/09
Linux OS Analysis
31/54
pentium
4K4M
4M
CR3
11/17/09
Linux OS Analysis
32/54
User/Spuervisor
0CPL3(linux
)
1
Read/Write
0
1
11/17/09
Linux OS Analysis
33/54
p1
0x200000000x2003ffff256KB
0x400000x4064
0x200000000010 0000 0000 0000 0000 0000 0000 0000b
0x80=128
0x0=0
0x80=128
11/17/09
0x3f=63
Linux OS Analysis
34/54
p1
/
1023
1023
p1
p1
128
63
p1
11/17/09
0
p1
Linux OS Analysis
35/54
0x20021406
3
0x20021406=0010 0000 0000 0010 0001 0100 0000 0110b
0x80=128
CR3
0x21
p1
Present=0
0x406
Xxx
xxx
Xx
xxxx
xxx
Xx
xx
p1
0x200000000x2003ffff
11/17/09
Linux OS Analysis
36/54
Linux
Linux3
(Page Global Directory)
(Page Middle Directory)
(Page Table)
11/17/09
Linux OS Analysis
37/54
Linux
CR3
11/17/09
Linux OS Analysis
38/54
Linux
Linux
MMU
()()
11/17/09
Linux OS Analysis
39/54
linuxCR3
CR3
CPU
11/17/09
Linux OS Analysis
40/54
Linux
Linux
include/asm_x86/page.h
include/asm_x86/pgtable.h
include/asm_x86/pgtable_2level.h
......
11/17/09
Linux OS Analysis
41/54
PAGE_SHIFT
PMD_SHIFT
PGDIR_SHIFT
PTRS_PER_PTE
PTRS_PER_PMD
PTRS_PER_PGD
11/17/09
Linux OS Analysis
42/54
include/asm_1386/page_32.h
pte_t, pmd_t, pgd_t
include/asm_1386/page.h
pgprot_t
11/17/09
Linux OS Analysis
43/54
///
pte_none(), pmd_none(), pgd_none()
0
pmd_bad(), pgd_bad()
11/17/09
Linux OS Analysis
44/54
linux
0x00100000
1MB
Linux
2MBRAM
11/17/09
Linux OS Analysis
45/54
1MB
0~1MB
0x0~0x1000BIOS
0x000a0000~0x000fffffBIOSVRAM
Linux
1MB
11/17/09
Linux OS Analysis
46/54
Linux2.45122MB
<1MB
11/17/09
Linux OS Analysis
47/54
0~3G
3G~4G
7680xc0000000
11/17/09
Linux OS Analysis
48/54
Linux0xc0000000
11/17/09
Linux OS Analysis
49/54
CPU
i386/kernel/head_32.S
RAM
11/17/09
Linux OS Analysis
50/54
Linux
i386/kernel/head_32.S
arch/x86/kernel/head_32.S
vmlinux_32.lds.S
11/17/09
Linux OS Analysis
51/54
Linux
11/17/09
Linux OS Analysis
52/54
swapper_pg_dirpagetable_init
arch/x86/mm/init_32.c
kernel_physical_mapping_init
mem_initzap_low_mappings
11/17/09
Linux OS Analysis
53/54
cache
MM
TLB
CR3TLB
11/17/09
Linux OS Analysis
54/54
__USER_CS __USER_DS
GDTRPL
Linux
11/17/09
Linux OS Analysis
55/54