摘要: 内核态和用户态的切换:用户态到内核态的转换:1、进行系统调用,2、异步中断,3、外部硬件中断检查特权级别的变化:当异常发生在用户态,而异常处理函数则必须运行在内核态,则此时必须调用内核态的堆栈(系统调用必然是发生特权级的变化),步骤是,将进程的TSS段中的esp0和ss0赋值给esp,ss寄存器于是... 阅读全文
posted @ 2015-06-02 22:43 kkshaq 阅读(4510) 评论(0) 推荐(0) 编辑
摘要: 进程切换分两步:1.切换页目录以使用新的地址空间2.切换内核栈和硬件上下文对于linux来说,线程和进程的最大区别就在于地址空间,对于线程切换,第1步是不需要做的,第2是进程和线程切换都要做的。切换的性能消耗:1、线程上下文切换和进程上下问切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但... 阅读全文
posted @ 2015-06-02 21:29 kkshaq 阅读(7226) 评论(0) 推荐(1) 编辑
摘要: #define switch_to(prev,next,last) do { \ unsigned long esi,edi; \ asm volatile("pushfl\n\t" \ "pushl %%ebp\n\t" \ ... 阅读全文
posted @ 2015-06-02 16:26 kkshaq 阅读(715) 评论(0) 推荐(0) 编辑