趣谈linux系统百度云,趣谈Linux操作系统学习笔记:第二十一讲

一、分段机制

1、分段机制的原理图

8648645d47caaec413d18993d585e3aa.png

2、段选择子

23894d7ae561c80243c411b7feaa4424.png

3、段偏移量

ef94b1f46eca51cb6e07bc4baf640463.png

例如,我们将上面的虚拟空间分成以下 4 个段,用 0~3 来编号。每个段在段表中有一个项,在物理空间中,段的排列如下图的右边所示。

d1e5636cb30965f74a756a921502a69f.png

4、段表

#define GDT_ENTRY_INIT(flags, base, limit) { { { \

.a = ((limit) & 0xffff) | (((base) & 0xffff) << 16), \

.b = (((base) & 0xff0000) >> 16) | (((flags) & 0xf0ff) << 8) | \

((limit) & 0xf0000) | ((base) & 0xff000000), \

} } }

一个段表项由段基地址 base、段界限 limit,还有一些标识符组成

DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = {

#ifdef CONFIG_X86_64

[GDT_ENTRY_KERNEL32_CS]= GDT_ENTRY_INIT(0xc09b, 0, 0xfffff),

[GDT_ENTRY_KERNEL_CS]= GDT_ENTRY_INIT(0xa09b, 0, 0xfffff),

[GDT_ENTRY_KERNEL_DS]= GDT_ENTRY_INIT(0xc093, 0, 0xfffff),

[GDT_ENTRY_DEFAULT_USER32_CS]= GDT_ENTRY_INIT(0xc0fb, 0, 0xfffff),

[GDT_ENTRY_DEFAULT_USER_DS]= GDT_ENTRY_INIT(0xc0f3, 0, 0xfffff),

[GDT_ENTRY_DEFAULT_USER_CS]= GDT_ENTRY_INIT(0xa0fb, 0, 0xfffff),

#else

[GDT_ENTRY_KERNEL_CS]= GDT_ENTRY_INIT(0xc09a, 0, 0xfffff),

[GDT_ENTRY_KERNEL_DS]= GDT_ENTRY_INIT(0xc092, 0, 0xfffff),

[GDT_ENTRY_DEFAULT_USER_CS]= GDT_ENTRY_INIT(0xc0fa, 0, 0xfffff),

[GDT_ENTRY_DEFAULT_USER_DS]= GDT_ENTRY_INIT(0xc0f2, 0, 0xfffff),

......

#endif

} };

EXPORT_PER_CPU_SYMBOL_GPL(gdt_page);

7e4cafc6d755731c74fa2a57a09f27bd.png

5、分析

8043a81c214c00d8612d53f39fb77113.png

分页机制本质上来说就是类似于linux文件系统的目录管理一样,页目录项和页表项相当于根目录和上级目录,

页内便宜量就是相对路径,

绝对路径就是整个32位地址,分布式存储系统也是采用的类似的机制,先用元数据存储前面的路径,

再用块内偏移定位到具体文件,感觉道理都差不多

二、内存分页

1、物理内存

6a8285d439deb96f5076878e2210927e.png

df7e876bb7d1d5d4dc3e8e864e22edd8.png

下图,举了一个简单的页表的例子,虚拟内存中的页通过页表映射为了物理内存中的页

3dab285b1b113eedb16e573095732ac4.png

2、虚拟地址管理

8c814a912fa97a9de334be6149e331ea.png

56e011615d8b5f3c42fb92915737e230.png

dfa2be88cdda6a8a0466622cfc5072c5.png

f051525a7b15ac19e64f0751bc0504d8.png

分页机制本质上来说就是类似于linux文件系统的目录管理一样,页目录项和页表项相当于根目录和上级目录,

页内变量就是相对路径,

绝对路径就是整个32位地址,分布式存储系统也是采用的类似的机制,先用元数据存储前面的路径,

再用块内偏移定位到具体文件,感觉道理都差不多

dd31655ed87ede49d0b7dc97fa42aefe.png

三、总结时刻

这一节我们讲了分段机制、分页机制以及从虚拟地址到物理地址的映映射方式。总结一下这两节,我们可以把内存管理系统精细化为下面三件事情:

第一:虚拟内存空间的管理,将虚拟内存分成大小相等的页;

第二:物理内存的管理,将物理内存分成大小相等的页;

第三:内存映射,将虚拟内存也和物理内存也映射起来,并且在内存紧张的时候可以换出到硬盘中。

874df21157218b42d374b586144a4fc9.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值