zoukankan      html  css  js  c++  java
  • 多进程任务状态原理

    1>

    2>各层堆栈指针区域

        0级内核堆栈,总被压入者认为其是空栈!

    3>地址映射寄存器区域

      在分页机制下,由线性地址空间到物理地址空间的映射 由包含页目录起始地质的控制寄存器CR3确定。

        与 任务相关的虚拟地址空间 到物理地址空间的映射由LDTR和CR3确定!

    ----------------------------------------------------------------------------------------------------

    整体思路,及详细分析!

    完成跳转,实现ring0->ring1(kernel.asm之restart)

    1 restart:
    2 mov esp, [p_proc_ready] ;ESP 指向进程表A结构体的 首地址!
    3   lldt [esp + P_LDT_SEL] ;加载LDTR选择子 ;指向了进程testA表中的ldt_sel , ldt_sel指向;SELECTOR_LDT_FIRST==0x28
    4   lea eax, [esp + P_STACKTOP] ;指向了进程testA表中的Reg结构体的尾地址
    5   mov dword [tss + TSS3_S_SP0], eax ;TSS表中的esp0(0级堆栈) 当中断跳转的时候 把esp0 转到当前esp!
    6  
    7 pop gs ;把TestA()进程表中的gs 放戴 CPU的gs
    8   pop fs
    9 pop es
    10 pop ds
    11 popad
    12 add esp, 4 ;跳过retaddr
    13   iretd ;eip cs eflags

      相关原理: 1.在任务切换的过程中;处理器中的各寄存器的当前值,被自动保存到TR所指定的TSS中.

                    2.下一个任务的TSS的选择子被装入TR,最后从TR所以指定的TSS中取出来各寄存器的值

           送到CPU的各寄存器!

  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/shenlian/p/2060794.html
Copyright © 2011-2022 走看看