06-分段分页机制、任务切换

0.概述:

 分段分页机制属于内存管理,是两种不同的地址变换技术。
 任务切换作为任务管理的核心,也是本文重点讲述的部分。
 这两部分内容尽量以“图表”展示

1.分段分页机制

分段、分页机制是两种不同的地址变换机制。
**分段机制**适应了程序中不同类型段和大小的逻辑分区,即段的大小是可变的。
**分页机制**按固定页大小(通常4K)管理内存以支持“虚拟存储技术”
(虚拟存储技术”:线性地址空间往往大于实际物理内存空间,故需要将
线性地址空间以“虚拟映射”到实际物理空间。而分页机制按页大小划分和映射线性地址空间)	

地址变换过程

具体的地址转换过程,如下图

虚拟、线性、物理地址变换

2.任务切换

说到任务切换,不得不提TSS任务状态段(1024B),如下图所示

TSS段描述符

TSS在任务切换过程中起着重要作用,通过它实现任务的挂起和恢复。
所谓”任务切换“是指,挂起当前正在执行的任务,恢复或启动另一任务的执行。在任务切换过程中,首先,处理器中各寄存器的当前值
被自动保存到 TR(任务寄存器)所指定的TSS中;然后,下一任务的TSS的选择子被装入TR;最后,从TR所指定的TSS中取出各寄存
器的值送到处理器的各寄存器中。由此可见,通过在TSS中保存任务现场各寄存器状态的完整映象,实现任务的切换。

任务切换有两种途径:
1.任务TSS段的选择符 
2.任务门选择符(内核中只在调度一个任务来处理一个中断或异常时,IDT中的中断或异常表项必须是一个任务门,并且其中含有中断或
异常处理任务的TSS选择符(通过任务门选择符锁定对应任务门描述符里存有TSS段选择符,进而在GDT中找到对应TSS描述符。故这是
间接切换的方式,**注意:若是中断或陷阱门,并不会造成任务切换(如:系统调用**))
详细的任务切换流程图如下:

任务切换流程图

保存上下文前后新老任务的标志变化表保存上下文前后新老任务的标志变化表

3 总结

以上属于理论部分(省略了部分细节),尽量以图表的形式展现了。这部分知识比较晦涩难懂,会在后面讲解源码时细谈实现。
此外,这部分内容可在后续文章阅读后回来查阅以加深理解。

参考资料:
《Linux内核完全剖析——基于0.2内核》第四章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值