请教:《实模式到保护模式(第2版)》19.5 用户任务的创建和切换
本帖最后由 jetcan 于 2024-9-2 23:09 编辑李老师,您好!
今天复习 19.5 分页机制下,用户任务的创建。注意到 0,1,2 特权级栈,在虚拟内存的低 2GB 分配:
从特权级栈选择子加入 LDT 的角度看,应该在虚拟内存低 2GB 分配;
但内核服务例程,如果有压栈或出栈操作,内核需要访问这些特权级栈,好像又应该分配在虚拟内存的高 2GB;
两种虚拟内存分配方法,都已在程序中调试过,都可以正常运行。
这里把自己搞晕了,特权级栈究竟应该:在虚拟内存低 2GB 还是高 2GB 分配呢?
烦请李老师解答,谢谢!
全局或者局部空间与特权级无关。
执行时涉及访问多个任务的,分配在全局空间。比如任务调度需要访问所有任务的任务控制块,那么任务控制块只能位于全局空间。如果位于某个任务的局部空间而那个任务没执行,就无法(通过CR3)访问。
反之,执行时只涉及当前任务的,分配在当前任务的局部空间。 本帖最后由 jetcan 于 2024-9-3 10:03 编辑
感谢李老师迅速而细致的解惑,多谢!
页:
[1]