这是摘要:
进程上下文、中断上下文、用户态/内核态、操作系统、任务的全局部分和局部部分
《X86汇编语言:从实模式到保护模式》墙裂推荐
本文重点在于搞清楚三个问题:
1:什么是任务的局部空间,什么是任务的全局空间,以及什么是用户态/内核态切换
2:什么是用户任务(进程),什么是内核任务(进程),以及什么是进程上下文切换
3:当执行中断处理代码时,系统是位于哪个状态?是位于用户任务还是内核任务,还是位于用户任务的局部空间还是位于用户任务的全局空间以及什么是中断上下文切换
补充:什么是线程上下文切换
补充:特权级切换与栈切换:
补充:TSS和TCB是什么以及他们的区别
备注1:文中“任务”就是”进程”,“进程”就是任务;任务包括用户任务与内核任务,他两的区别就是一个特权级低,一个特权级高。
备注2:文中的上下文切换带来的代价均是指硬件层面所必须花费的最小代价,不包括软件层面(内核)的代价(最后面会解释)
准备知识:
1:段式内存管理与GDT(Global Descriptor Table)、LDT(Local Descriptor Table)和GDT(Global Descriptor Table Register)、LDTR((Local Descriptor Table Register)
摘要:一个程序被组织为多个段,有代码段,数据段,栈段
2:页式内存管理
任务的虚拟地址空间与页目录表以及PDBR(Page Directory Base Register)
摘要1:每个任务都有一个属于自己的页目录表,不同的任务具有不同的页目录表,切换页目录表就是切换了任务。可以简单认为一个页目录表唯一标志了一个任务。
摘要2:任务想要访问内存(例如指令/数据/栈),必须通过页部件把线性地址转换为物理地址之后才能访问。
摘要3:页部件根据页目录表把段部件产生的线性地址映射到实际的物理地址,即使是两个不同的页目录表,但只要两个页目录表中该线性地址映射的物理地址相同,那么同一个线性地址在不同任务内就可以访问同一个物理地址也就是数据共享/代码共享(此即共享内存实现原理)
3:TSS(任务状态段Ta

本文深入探讨操作系统中的上下文切换,包括进程上下文、中断上下文、用户态/内核态切换。阐述任务局部空间、全局空间的概念,以及线程、进程上下文切换的代价。同时讲解了TSS、TR、TCB等关键概念在上下文切换中的作用。
最低0.47元/天 解锁文章
3561

被折叠的 条评论
为什么被折叠?



