操作系统系列学习——内核级线程

文章目录


前言

一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油!
本文总结自B站【哈工大】操作系统 李治军(全32讲)
老师课程讲的非常好,感谢
【哈工大】操作系统 李治军(全32讲)

内核级线程

没有用户级进程这一说法,因为进程在内核中。实际上切换进程真正的是切换内核级线程。

因为进程要分配资源访问内存,这些都是计算机硬件资源,用户态不行

在这里插入图片描述
用户级线程、核心级线程、进程

多核要想发挥作用,就必须支持核心级线程。

多处理器特点是:每个CPU都有自己的一套缓存和内存映射

只有函数到内核以后,才能分配到CPU(核)上

并发是同时触发,交替执行,用的是同一套资源。
并行是同时触发,多处理器同时执行多个线程

在这里插入图片描述
用户级线程是两个栈,核心级线程是两套栈(用户层、内核层)
在这里插入图片描述
在这里插入图片描述
出现中断,从用户栈进入到内核栈

进入内核态前,把线程的用户栈信息(ss,sp,pc,cs元数据)压入到内核栈,即把同一个线程的用户栈与内核栈关联起来
就是内核栈进入内核执行代码时要保存用户栈用来切换到用户态

在这里插入图片描述
在这里插入图片描述
tcb只是内核中的tcb,只记录内核态切换的栈地址,而内核栈通过自己记录的栈pc地址和用户栈绑定在一起,从而实现了tcb切换,内核栈与用户栈都切换!

真正的代码在用户态,切完后在内核态溜达一下切回用户态程序(进来时候就储存了)

在这里插入图片描述
线程用户栈,中断进入内核栈,内核栈用到tcb。根据这个tcb切换到下一个tcb,这个tcb里有该线程的内核栈,这个内核栈又关联该线程的用户栈
在这里插入图片描述
在这里插入图片描述
五段论:1,由中断将内核栈与用户栈关联起来并进入内核 2,进行中断处理,中断处理过程中产生阻塞或者时钟中断,引发切换 3,找到目标的tcb,然后执行切换 4,根据tcb切换内核栈5,中断返回,弹出内核栈中的内容,切换到用户态,此时就完成了内核线程切换
在这里插入图片描述
用户灵活性, 用户线程大于核心线程;

原因:

  • 用户线程的调度,开发人员可以自己编写调度策略进行控制,如调用 yield让出cpu;
  • 而内核级线程无法修改调度,即内核线程调度策略是操作系统写死的,无法修改;
  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力找工作的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值