发新话题
打印

今天遇到的问题

今天遇到的问题

  struct thread_struct {
      unsigned long       esp0;
      unsigned long       eip;
      unsigned long       esp;
      unsigned long       fs;
      unsigned long       gs;

      unsigned long       debugreg[8];  

      unsigned long       cr2, trap_no, error_code;

      union i387_union       i387;

      struct vm86_struct       * vm86_info;
      unsigned long              screen_bitmap;
      unsigned long              v86flags, v86mask, v86mode, saved_esp0;
               int              ioperm;
      unsigned long       io_bitmap[IO_BITMAP_SIZE+1];
};

     在task_struct结构中的struct thread_struct thread这个域是干什么用的呢?
   arm和x86里面这个结构是完全不同的。x86里面都用来干什么呢?目前我只知道esp用来存放系统空间堆栈,eip用来存放返回地址。谁能帮我拣重要的说一下!谢谢

TOP

只要进程被切换出去,内核就把其硬件上下文保存在这个结构中
透析真谛,似拨云穿雾;共享智慧,如春风沐浴
http://www.kerneltravel.net

TOP

哦,,硬件上下文一部分在堆栈中,一部分在这个结构中。是嘛?因为我进程切换的时候我看见有几个push操作,切换回来的时候又有几个pop操作。

TOP

在堆栈中,按此结构的要求保存进程上下文信息备用,还应考虑进程切换参数入栈顺序问题;
TSS(任务状态段)定义了任务执行环境的状态;
esp0是进程的内核堆栈指针,而esp是其用户态堆栈指针;
debugreg[8]--hardware debugging registers;
把CPU管理模块的基本功能按照工作逻辑研究一下,原理与代码结合,画一个流程图,要体现相应流转信息,就方便一些了。

TOP

发新话题