jetcan 发表于 2024-9-2 23:02:58

请教:《实模式到保护模式(第2版)》19.5 用户任务的创建和切换

本帖最后由 jetcan 于 2024-9-2 23:09 编辑

李老师,您好!

      今天复习 19.5 分页机制下,用户任务的创建。注意到 0,1,2 特权级栈,在虚拟内存的低 2GB 分配:

   从特权级栈选择子加入 LDT 的角度看,应该在虚拟内存低 2GB 分配;
   但内核服务例程,如果有压栈或出栈操作,内核需要访问这些特权级栈,好像又应该分配在虚拟内存的高 2GB;
   两种虚拟内存分配方法,都已在程序中调试过,都可以正常运行。

    这里把自己搞晕了,特权级栈究竟应该:在虚拟内存低 2GB 还是高 2GB 分配呢?

   烦请李老师解答,谢谢!

站长 发表于 2024-9-3 08:37:22

全局或者局部空间与特权级无关。

执行时涉及访问多个任务的,分配在全局空间。比如任务调度需要访问所有任务的任务控制块,那么任务控制块只能位于全局空间。如果位于某个任务的局部空间而那个任务没执行,就无法(通过CR3)访问。
反之,执行时只涉及当前任务的,分配在当前任务的局部空间。

jetcan 发表于 2024-9-3 09:40:19

本帖最后由 jetcan 于 2024-9-3 10:03 编辑

感谢李老师迅速而细致的解惑,多谢!
页: [1]
查看完整版本: 请教:《实模式到保护模式(第2版)》19.5 用户任务的创建和切换