操作系统用户级线程

在这里插入图片描述

进程是OS分配资源的基本单位,线程是执行调度的基本单位。分配资源最重要的是:独立的内存空间,线程调度执行(线程共享进程的内存空间,没有自己独立的内存空间)。
线程:保留了并发的优点,也避免了进程的切换代价,避免每次查看映射表等操作。
进程=资源+指令执行序列 这样就分治了
在这里插入图片描述
在这里插入图片描述

指令切换就是线程所处理的事情 资源就是映射表的切换
线程需要切换时,调用yield函数,释放手中的资源,实现切换
create函数是制造第一次切换时候的样子,就是做出三样东西
1.申请一部分内存做TCB
2.申请一部分内存做栈,栈里面放出起始地址
3.栈和TCB关联
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

yield切换的时候,要先切换栈,每个线程有自己独有的栈,切换的时候,讲CPU的栈指针地址记录下来,放到TCB全局表中,让切换回来的时候,从TCB中取回栈指针地址,重新付给esp寄存器中。
在这里插入图片描述
在这里插入图片描述

内核对于用户级线程的切换是无感知的。

在这里插入图片描述
在这里插入图片描述