diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..a5467eff --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "files.associations": { + "*.TXT": "txt", + "agp_backend.h": "c", + "vmalloc.h": "c", + "slab.h": "c" + } +} \ No newline at end of file diff --git a/arch/i386/kernel/head.S b/arch/i386/kernel/head.S index a2bd2af1..36725940 100644 --- a/arch/i386/kernel/head.S +++ b/arch/i386/kernel/head.S @@ -445,7 +445,7 @@ int_msg: .globl boot_gdt_descr .globl idt_descr -.globl cpu_gdt_descr +.globl cpu_gdt_descr /* 所有GDT的地址和他们的大小被存放在该数组中 */ ALIGN # early boot GDT descriptor (must use 1:1 address mapping) @@ -484,6 +484,9 @@ ENTRY(boot_gdt_table) /* * The Global Descriptor Table contains 28 quadwords, per-CPU. */ +/* 插入未使用的项的目的是为了使经常一起访问的描述符能够处于同一个32字节的硬件高速缓存行中 */ +/* GDT: 全局描述符表。GDT在主存中的地址和大小存放在gdtr控制寄存器中 +LDT:局部描述符表。当前正被使用的LDT地址和大小放在控制寄存器中 */ .align PAGE_SIZE_asm ENTRY(cpu_gdt_table) .quad 0x0000000000000000 /* NULL descriptor */ @@ -492,7 +495,7 @@ ENTRY(cpu_gdt_table) .quad 0x0000000000000000 /* 0x1b reserved */ .quad 0x0000000000000000 /* 0x20 unused */ .quad 0x0000000000000000 /* 0x28 unused */ - .quad 0x0000000000000000 /* 0x33 TLS entry 1 */ + .quad 0x0000000000000000 /* 0x33 TLS entry 1 */ /* 3个局部线程存储(TLS)段,这种机制允许多线程应用程序使用最多3个局部与线程的数据段 */ .quad 0x0000000000000000 /* 0x3b TLS entry 2 */ .quad 0x0000000000000000 /* 0x43 TLS entry 3 */ .quad 0x0000000000000000 /* 0x4b reserved */ @@ -504,10 +507,11 @@ ENTRY(cpu_gdt_table) .quad 0x00cffa000000ffff /* 0x73 user 4GB code at 0x00000000 */ .quad 0x00cff2000000ffff /* 0x7b user 4GB data at 0x00000000 */ - .quad 0x0000000000000000 /* 0x80 TSS descriptor */ + .quad 0x0000000000000000 /* 0x80 TSS descriptor *//* 任务状态段(TSS),每个处理器有一个 */ .quad 0x0000000000000000 /* 0x88 LDT descriptor */ /* Segments used for calling PnP BIOS */ + /* 支持即插即用(PnP)功能的BIOS服务程序相关的5个段 */ .quad 0x00c09a0000000000 /* 0x90 32-bit code */ .quad 0x00809a0000000000 /* 0x98 16-bit code */ .quad 0x0080920000000000 /* 0xa0 16-bit data */ @@ -517,6 +521,7 @@ ENTRY(cpu_gdt_table) * The APM segments have byte granularity and their bases * and limits are set at run time. */ + /* 高级电源管理(AMP)相关的3个段 */ .quad 0x00409a0000000000 /* 0xb8 APM CS code */ .quad 0x00009a0000000000 /* 0xc0 APM CS 16 code (16 bit) */ .quad 0x0040920000000000 /* 0xc8 APM DS data */ diff --git a/include/asm-arm/segment.h b/include/asm-arm/segment.h index 9e24c21f..5acde8cd 100644 --- a/include/asm-arm/segment.h +++ b/include/asm-arm/segment.h @@ -1,11 +1,11 @@ #ifndef __ASM_ARM_SEGMENT_H #define __ASM_ARM_SEGMENT_H -#define __KERNEL_CS 0x0 -#define __KERNEL_DS 0x0 +#define __KERNEL_CS 0x0 /* 鍐呮牳浠g爜娈 */ +#define __KERNEL_DS 0x0 /* 鍐呮牳鏁版嵁娈 */ -#define __USER_CS 0x1 -#define __USER_DS 0x1 +#define __USER_CS 0x1 /* 鐢ㄦ埛浠g爜娈 */ +#define __USER_DS 0x1 /* 鐢ㄦ埛鏁版嵁娈 */ #endif /* __ASM_ARM_SEGMENT_H */ diff --git a/include/asm-x86_64/page.h b/include/asm-x86_64/page.h index 8edb69a7..b5b5358b 100644 --- a/include/asm-x86_64/page.h +++ b/include/asm-x86_64/page.h @@ -4,7 +4,7 @@ #include /* PAGE_SHIFT determines the page size */ -#define PAGE_SHIFT 12 +#define PAGE_SHIFT 12 /* 椤靛ぇ灏忎负2^12 = 4096瀛楄妭 */ #ifdef __ASSEMBLY__ #define PAGE_SIZE (0x1 << PAGE_SHIFT) #else diff --git a/md_file/img/0.png b/md_file/img/0.png new file mode 100644 index 00000000..3cbc9f37 Binary files /dev/null and b/md_file/img/0.png differ diff --git a/md_file/img/1.png b/md_file/img/1.png new file mode 100644 index 00000000..f40fe572 Binary files /dev/null and b/md_file/img/1.png differ diff --git a/md_file/readme.md b/md_file/readme.md new file mode 100644 index 00000000..47b81d6b --- /dev/null +++ b/md_file/readme.md @@ -0,0 +1,21 @@ +### 娈甸夋嫨绗﹀拰娈靛瘎瀛樺櫒 + +閫昏緫鍦板潃 = 娈垫爣璇嗙 + 娈靛唴鐩稿鍦板潃鍋忕Щ閲 + +娈垫爣璇嗙锛16浣嶏紝绉颁负娈甸夋嫨绗 = [15:3]绱㈠紩鍙 + [2]TI琛ㄦ寚绀哄櫒 + [1:0]RPL璇锋眰鑰呯壒鏉冪骇 + +鍋忕Щ閲忥細32浣 + +娈靛瘎瀛樺櫒锛氬瓨鏀炬閫夋嫨绗(cs, ss, ds, es, fs, gs) + +![img](./img/1.png) + +### 娈垫弿杩扮瀛楁 + +娈垫弿杩扮鎻忚堪浜嗘鐨勭壒寰 + +GDT: 鍏ㄥ眬鎻忚堪绗﹁〃銆侴DT鍦ㄤ富瀛樹腑鐨勫湴鍧鍜屽ぇ灏忓瓨鏀惧湪gdtr鎺у埗瀵勫瓨鍣ㄤ腑 + +LDT锛氬眬閮ㄦ弿杩扮琛ㄣ傚綋鍓嶆琚娇鐢ㄧ殑LDT鍦板潃鍜屽ぇ灏忔斁鍦ㄦ帶鍒跺瘎瀛樺櫒涓 + +![娈垫弿杩扮瀛楁](./img/0.png) diff --git a/readme_cn.md b/readme_cn.md new file mode 100644 index 00000000..a41167a9 --- /dev/null +++ b/readme_cn.md @@ -0,0 +1 @@ +arch鍜宨nclude鐩綍涓嬪寘鍚簡linux鎵鏀寔鐨勪笉鍚岀殑纭欢骞冲彴 \ No newline at end of file