• 产生页面异常的原因:
    (1).目标页面不存在(页表项全0,即该线性地址尚未建立或者已经撤销);
    (2).相应的物理页面不在内存中(页表项非空,但P标志=0,比如在swap分区或磁盘文件上);
    (3).访问权限不符合(此时页表项P标志=1,比如企图写只读页面).

    当出现上面情况之一,那么就会产生页面page fault异常。产生异常的线性地址存储在CR2中,所以在do_page_fault()中首先将这个地址读进来,接着:...
  • Linux内核 2.4和2.6的进程内核堆栈和task描述符存储不太一样,这儿总结一下。

    在内核2.4中堆栈是这么定义的:
    union task_union {
            struct task_struct task;
            unsigned long stack[INIT_TASK...
  • 主要记录与kernel学习有关的任何东西,包括操作系统,网络,驱动程序,嵌入式系统等方面