11、内核级线程

本文探讨了用户级线程的局限性,特别是在多核处理器下无法充分发挥性能的问题。内核级线程解决了这个问题,为每个线程维护用户栈和内核栈,实现更高效的调度。文章介绍了内核级线程的切换过程,并提到了ThreadCreate函数在创建线程时如何设置TCB和栈。
摘要由CSDN通过智能技术生成

1、用户级线程的局限:用户级线程的切换不需要进入内核,内核不知道各个线程(TCB)的存在,所以如果某个线程进入内核并且发生阻塞后,内核可能会对进程进行调度,从而阻塞了所有的线程。例如chrome中的每个标签页都是线程,如果某个网页卡了,整个浏览器都动不了,其他网页也点不了,因为CPU已经把控制权交给别的进程了。因为内核不知道多线程的存在,自然不能给线程分配硬件,不能发挥多核处理器的优势。
在这里插入图片描述

多处理器与多核的区别:多核有多个CPU,但是只有一个内存和一个MMU,只有一套内存映射。多处理器有多个内存和MMU。

多进程无法发挥多核的价值:因为无论怎么切换进程,只有一个MMU,仍需要承受切换内存映射表的开销。
用户级线程无法发挥多核的价值:因为内核不知道该进程中多线程的存在,无法为线程分配CPU硬件,所以无法充分利用多核。

2、用户级线程和内核级线程
内核级线程对每个线程都有两个栈,一个用户栈,在调用用户级过程时用,一个内核栈,调用内核级过程时用。内核级线程中,一个TCB关联两个栈,TCB切换时要把用户栈和内核栈都切换掉,TCB在内核中
一旦调用int进行中断进入内核,硬件会自动初始化一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值