摘要: 学号:SA12**6112本文将主要研究在X86体系下Linux系统中用户态到内核态切换条件,及切换过程中内核栈和任务状态段TSS在中断机制/任务切换中的作用及相关寄存器的变化。一:用户态到内核态切换途径: 1:系统调用 2:中断 3:异常对应代码,在3.3内核中,可以在/arch/x86/kernel/entry_32.S文件中查看。二:内核栈内核栈:Linux中每个进程有两个栈,分别用于用户态和内核态的进程执行,其中的内核栈就是用于内核态的堆栈,它和进程的task_struct结构,更具体的是thread_info结构一起放在两个连续的页框大小的空间内。在内核源代码中使用C语言定义了... 阅读全文
posted @ 2013-06-27 12:12 人若无名 阅读(8762) 评论(2) 推荐(3) 编辑
摘要: 学号:SA12**6112前面一篇博文分析了进程从用户态切换到内核态时,内核所做的主要的事,本文将研究在进程切换时,内核所做的事。在内核态,进程切换主要分两步:1:切换页全局目录2:切换内核堆栈和硬件上下文用prev指向被替换进程的表述符,next指向被激活进程的描述符下面分析进程切换的第二步第二步主要由switch_to宏实现:3.3内核中X86体系下:/arch/x86/include/asm/system.h文件的第48行处: 48 #define switch_to(prev, next, last) \ 49 d... 阅读全文
posted @ 2013-06-27 12:11 人若无名 阅读(920) 评论(0) 推荐(1) 编辑