这里是阅读文档的一些个人总结,因为是个人总结,所以肯定会有偏差
线程是什么呢?
理解为独立的,死循环的,函数个体
操作系统意味着线程切换,线程切换需要做些什么?
需要保存当前寄存器的值,堆栈地址
便于理解:当前寄存器代表内核的通用寄存器和特殊寄存器!!!
保存在哪?
保存在每个线程单独的内存空间(栈区)
可以通过堆栈地址访问到这块栈区
在裸机运行时寄存器的值放到了统一的栈空间,这个栈定义在了启动文件,而多线程每个线程都有独立的栈空间
如何跳转到别的线程?
不考虑具体流程,将要跳转的地址设置到PC寄存器中完成跳转,PC寄存器属于内核寄存器中的特殊寄存器
如何跳转回当前的线程?
不考虑具体流程,从栈区取得返回地址,且恢复寄存器的值完成返回
这里值得注意的是!!!
刚才主动保存的并没有返回地址
因为保存返回地址是由程序执行流程自动触发的,而不需要进行显式的操作
补充
上面聊的并不全面,细品还得看文档,比如文档会聊到线程控制块如何创建,初始化,链表的插入删除,线程调度等
在这个板块以后分享的也只是API的用法,比如线程创建,切换,队列,邮箱,锁的使用