操作系统--用户级线程和内核级线程
在多线程操作系统中,各个系统的实现方式并不相同。在有的系统中实现了用户级线程,有的系统中实现了内核级线程
1.内核级线程:
(1)线程的创建、撤销和切换等,都需要内核直接实现,即内核了解每一个作为可调度实体的线程。
(2)这些线程可以在全系统内进行资源的竞争。
(3)内核空间内为每一个内核支持线程设置了一个线程控制块(TCB),内核根据该控制块,感知线程的存在,并进行控制。
在一定程度上类似于进程,只是创建、调度的开销要比进程小。有的统计是1:10
2.用户级线程:
(1)用户级线程仅存在于用户空间。——>对比内核(3)
(2)内核并不能看到用户线程。——>重要的区别
(3)内核资源的分配仍然是按照进程进行分配的;各个用户线程只能在进程内进行资源竞争。
用户线程运行在一个中间系统上面。目前中间系统实现的方式有两种,即运行时系统(RuntimeSystem)和内核控制线程。
“运行时系统”实质上时用于管理和控制线程的函数集合。包括创建、撤销、线程的同步和通信的函数以及调度的函数。这些函数都驻留在用户空间作为用户线程和内核之间的接口。用户线程不能使用系统调用,而是当线程需要系统资源时,将请求传送给运行时,由后者通过相应的系统调用来获取系统资源。
内核控制线程:
系统在分给进程几个轻型进程(LWP),LWP可以通过系统调用来获得内核提供的服务,而进程中的用户线程可通过复用来关联到LWP,从而得到内核的服务。
内核线程的优点:
(1)
(2)当有多个处理机时,一个进程的多个线程可以同时执行
缺点:
(1)由内核进行调度
用户进程的优点:
(1)线程的调度不需要内核直接参与,控制简单
缺点:
(1)资源调度按照进程进行,多个处理机下,同一个进程中的线程只能在同一个处理机下分时复用。
===========================================
线程的实现可以分为两类:用户级线程(User-Level Thread)和内核线线程(Kernel-Level Thread).后者又称为内核支持的线程或轻量级进程.
用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。
内核线程: 由操作系统内核创建和撤销。内核维护进程及线程的上下文信息以及线程切换。一个内核线程由于I/O操作而阻塞,不会影响其它线程的运行。Windows NT和2000/XP支持内核线程
用户线程:由应用进程利用线程库创建和管理,不以来于操作系统核心。不需要用户态/核心态切换,速度快。操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所有线程)阻塞。由于这里的处理器时间片分配是以进程为基本单位,所以每个线程执行的时间相对减少。
Windows NT和OS/2支持内核线程。Linux 支持内核级的多线程
=========================================================
了解了一下,用户级线程和内核级线程。
用户级线程:
从这张图上面可以看出来,用户级线程的管理是由应用程序的进程来完成的,而不关内核的事。在内核看来还是只有进程的概念,所以线程的调度也就可以通过应用程序自己设定,不用核心态的特权。
但是也就是因为这样,在内核中没有线程的概念,如果一个线程进入内核,然后再系统调用的时候阻塞了,那么,核心只会把它作为整个进程阻塞了,也就是说这个进程中的所有线程都被阻塞了。
线程状态和进程状态是独立的(从何说起?不理解)
优点:
线程切换不调用核心
调度是应用程序特定的:可以选择最好的算法
ULT可运行在任何操作系统上(只需要线程库)
缺点:
大多数系统调用是阻塞的,因此核心阻塞进程,故进程中所有线程将被阻塞
核心只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上
内核级线程:
所有线程管理由核心完成
没有线程库,但对核心线程工具提供API
核心维护进程和线程的上下文
线程之间的切换需要核心支持
以线程为基础进行调度
例子:Windows
优点:
对多处理器,核心可以同时调度同一进程的多个线程
阻塞是在线程一级完成
核心例程是多线程的
缺点:
在同一进程内的线程切换调用内核,导致速度下降
转载于:https://www.cnblogs.com/cane/p/3965482.html
操作系统--用户级线程和内核级线程相关推荐
- 应用退出前不让线程切换_用户级线程和内核级线程,你分清楚了吗?
前天晚上有个伙伴私信我说在学进程和线程,问我有没有好的方法和学习教程,刚好我最近也在备相关的课. 班上不少学生学的还是很不错的.拿班上小白和小明的例子吧(艺名哈).小明接受能力很强,小白则稍差些. 关 ...
- 用户级线程与内核级线程
http://blog.csdn.net/yangzl2008/article/details/7014106 在多线程操作系统中,各个系统的实现方式并不相同.在有的系统中实现了用户级线程,有的系统中 ...
- 用户态和内核态:用户态线程和内核态线程有什么区别?
转载 文章来源于 拉钩教育 重学操作系统 林䭽 用户态和内核态:用户态线程和内核态线程有什么区别? 什么是用户态和内核态 Kernel 运行在超级权限模式(Supervisor Mode)下,所以拥有 ...
- 操作系统--用户级线程与内核级线程
一.多进程是操作系统基本图像 进程都是在内核进行 二.用户级线程 2.1线程引入 可以切指令不切表,也就是资源不动,指令执行分开,更加轻量化,从而提高效率,保留并发优点,避免进程切换代价,也就引入了线 ...
- 操作系统——用户级线程和内核级线程(L10,L11,L12)
用户级线程: 不同的进程的映射表不同,当一个进程中断了,我们需要切换到另外一个线程,就需要我们切换指令执行序列,切换与设备等各种资源,这样的效率是很低的 线程保留了并发的特点,又避免了进程切换的代价. ...
- OS / 线程的 3 种实现方式(内核级,用户级 和 混合型)
1 .线程的 3 种实现方式 在传统的操作系统中,拥有资源和独立调度的基本单位都是进程.在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位.在同一进程中,线程的切换不会引起进程 ...
- Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程
一.定义 再看正文之前我要先强调一下几点: 1. Linux中没有真正的线程,但windows中确实有线程 2. Linux中没有的线程是由进程来模拟实现的(又称作:轻量级进程) 3. 所以在Linu ...
- 内核级线程(KLT)和用户级线程(ULT)
文章目录 进程和线程 内核级线程(Kemel-Level Threads, KLT 也有叫做内核支持的线程) 纯内核级线程特点 用户级线程(User-Level Threads ULT) 纯用户级线程 ...
- 8.内核级线程(核心级线程)
[README] 1.本文内容总结自 B站 <操作系统-哈工大李治军老师>,内容非常棒,墙裂推荐: 2.为什么要讲线程呢.实际要讲进程的切换:进程的切换包括切换指令,切换资源:切换指令就是 ...
最新文章
- Zebra斑马打印机指令编程进阶(语言通用)--利用指令绘制出图像打印
- 微服务架构及分布式事务解决方案
- treeview右键添加新节点
- psd文件超大?教你如何压! - 技巧篇
- 計算機二級-java04
- Java nextInt()函数
- 综合能源管理服务认证是什么 , 综合能源服务认证有什么要求?
- springboot启动自动停止
- Mimics和Amira在医学影像处理中的应用介绍
- 阿里云国际版服务器电子商务直播解决方案
- C/C++牛客网刷题练习之翻转链表篇
- Unity3D导入图片资源
- 如何用OKR搞垮一个团队
- element步骤条实战
- 有人串口服务器通过java采集modbus会出现异常No recipient was found waiting for response for key 记录
- 学习笔记:快速入门ZooKeeper技术
- 三千万单车产能大跃进:供应链提价,矛盾一触即发
- 第四届-模拟智能灌溉系统
- Linux设置网络缓冲区大小(TCP/UDP)
- 洛谷小书童——凯撒密码——c语言
热门文章
- MySQL存储过程中的循环怎么写
- css怎样使鼠标移到div上显示手型
- Android开发笔记(一百四十九)约束布局ConstraintLayout
- Android开发笔记(七十八)异常容错处理
- 修复linux bash破壳漏洞,Linux系统下如何检测并修复bash中的破壳漏洞​​
- sublime php错误提示,sublime中检查php语法错误
- 配置 AEM CQ6 (author + publish + apache dispatcher + ubuntu )
- paper 6:支持向量机系列三:Kernel —— 介绍核方法,并由此将支持向量机推广到非线性的情况。...
- -------------初识----------动态规划。--------------------------------------------
- warning:1071 (42000) Specified key was too long;max key length is 1000 bytes