哈工大操作系统-L11内核级线程
哈工大操作系统-L11内核级线程
1.和用户级相比,核心级线程有什么不同?
2.内核级线程如何切换
2.1 内核线程A的用户程序-转向-内核线程A的内核程序:用户栈到内核栈的转换
2.2 内核线程A内核程序-转向-内核线程B的内核程序:切换内核栈
2.3 内核线程B内核程序-转向-内核线程B的用户程序
2.4 内核级线程切换的五段论
3.用户级线程和内核级线程的对比
没有用户级进程,进程都是需要访问内核的。
线程可以分用户级和内核级。理解用户级线程对理解内核级线程有很大帮助。
多内核级线程可以利用充分利用多核CPU的特性。(进程不行,用户级线程也不行)
1.和用户级相比,核心级线程有什么不同?
需要两套栈,内核栈和用户栈
因为内核级线程由系统调用创建,由内核负责切换,因此会有存在内核中的内核栈
而代码依然是用户态中执行的,因此也要有一个用户栈
内核级线程切换的时候,内核栈完成切换的同时用户栈也要进行切换
即从上图可以知道,在中断开始后,内核栈会保存指向用户栈的指针,以及其他必要信息。
2.内核级线程如何切换
真正要执行的大多都是用户的程序,但两个内核级线程切换需要在内核走一遭。
通过系统支持的内核线程切换,从用户到内核到内核再到用户。
找到内核级线程TCB需要进入内核