Linux中的段 冬基于下面两个原因,linux中只使用了几个段 >段和页的同时存在在一定程度上有点多余。 因为两者都可以划分进程的物理空间 >所有的进程希望使用同样的0-4G的逻辑空间。 这样程序员不必考虑进程地址的问题,也让内核 的内存管理变得简单一些 嵌入式系统实验室 2023/7/14 Linux OS Analysis 18/54 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 18/54 Linux中的段 ❖基于下面两个原因,linux中只使用了几个段 ➢段和页的同时存在在一定程度上有点多余。 因为两者都可以划分进程的物理空间 ➢所有的进程希望使用同样的0-4G的逻辑空间。 这样程序员不必考虑进程地址的问题,也让内核 的内存管理变得简单一些
Linux下的全局描述符表(部分) Linux中的GDT 在include/asm-x86/segment.h中 00006:#define GDT_ENTRY_BOOTCS 2 00007: #defineBOOT_CS (GDT_ENTRY_BOOT_CS 8) 00008: not used 00009: #define GDT_ENTRY_BOOT_DS (GDT_ENTRY_BOOT CS +1) 00010: #define BOOT_DS (GDT_ENTRY_BOOT_DS 8) kernel code 00011: 00012:#define GDT ENTRY BOOTTSS (GDT_ENTRY BOOT CS +2) 00013:#defineBOOT_TSS (GDT_ENTRY_BOOT TSS 8) 内核数据段 958 用户数据段 用户代码段 在arch/x86/kernel/,head_32.S中 705 ENTRY(boot_gdt) 706 fill GDT ENTRY BOOT CS,8,0 707 quad 0x00cf9a000000ffff /kernel 4GB code at 0x00000000 * 708 quad 0x00cf92000000ffff /米 kernel 4GB data at 0x00000000 * 嵌入式系统实验室 2023/7/14 Linux OS Analysis 19/54 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 19/54 Linux下的全局描述符表(部分) 在arch/x86/kernel/head_32.S中 内核数据段 用户代码段 用户数据段 Linux中的GDT 在include/asm-x86/segment.h中
在arch/x86/boot/pm.c中 static const u64 boot_gdt[] _attribute_((aligned(16)))={ /CS:code,read/execute,4 GB,base 0 * [GDT_ENTRY_BOOT_CS]GDT_ENTRY(0xc09b,0,0xfffff), /DS:data,read/write,4 GB,base 0 * [GDT ENTRY BOOT DS]GDT_ENTRY(0xc093,0,0xfffff), /TSS:32-bit tss,104 bytes,base 4096 * /We only have a TSS here to keep Intel VT happy; 》 we don't actually use it for anything.* [GDT ENTRY BOOT TSS]GDT ENTRY(0x0089,4096,103), /米 在arch/x86/boot/pm.c中 00098: 00099: 米 Set up the GDT 00100: */ 00101: #define GDT_ENTRY(flags,base,limit) 00102: (u64)(base&0xff000000)<<32)| 00103: (u64)fags<<40)1 00104: (u64)(limit&0x00ff0000)<<32)| 00105: ((u64)(base 0x0offffff)<<16) 00106: 2023/7/14 (u64)(imit&0x0000ffff))】 :入式系统实验室 EMBEDDED SYSTEM LABORATORY SUZHOU INSTITUTE FON ADVANCED STUDY OF USTC
2023/7/14 Linux OS Analysis 20/54 在arch/x86/boot/pm.c中 在arch/x86/boot/pm.c中