在多线程操作系统中,各个系统的实现方式并不相同。在有的系统中实现了用户级线程,有的系统中实现了内核级线程

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

操作系统--用户级线程和内核级线程相关推荐

  1. 应用退出前不让线程切换_用户级线程和内核级线程,你分清楚了吗?

    前天晚上有个伙伴私信我说在学进程和线程,问我有没有好的方法和学习教程,刚好我最近也在备相关的课. 班上不少学生学的还是很不错的.拿班上小白和小明的例子吧(艺名哈).小明接受能力很强,小白则稍差些. 关 ...

  2. 用户级线程与内核级线程

    http://blog.csdn.net/yangzl2008/article/details/7014106 在多线程操作系统中,各个系统的实现方式并不相同.在有的系统中实现了用户级线程,有的系统中 ...

  3. 用户态和内核态:用户态线程和内核态线程有什么区别?

    转载 文章来源于 拉钩教育 重学操作系统 林䭽 用户态和内核态:用户态线程和内核态线程有什么区别? 什么是用户态和内核态 Kernel 运行在超级权限模式(Supervisor Mode)下,所以拥有 ...

  4. 操作系统--用户级线程与内核级线程

    一.多进程是操作系统基本图像 进程都是在内核进行 二.用户级线程 2.1线程引入 可以切指令不切表,也就是资源不动,指令执行分开,更加轻量化,从而提高效率,保留并发优点,避免进程切换代价,也就引入了线 ...

  5. 操作系统——用户级线程和内核级线程(L10,L11,L12)

    用户级线程: 不同的进程的映射表不同,当一个进程中断了,我们需要切换到另外一个线程,就需要我们切换指令执行序列,切换与设备等各种资源,这样的效率是很低的 线程保留了并发的特点,又避免了进程切换的代价. ...

  6. OS / 线程的 3 种实现方式(内核级,用户级 和 混合型)

    1 .线程的 3 种实现方式 在传统的操作系统中,拥有资源和独立调度的基本单位都是进程.在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位.在同一进程中,线程的切换不会引起进程 ...

  7. Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程

    一.定义 再看正文之前我要先强调一下几点: 1. Linux中没有真正的线程,但windows中确实有线程 2. Linux中没有的线程是由进程来模拟实现的(又称作:轻量级进程) 3. 所以在Linu ...

  8. 内核级线程(KLT)和用户级线程(ULT)

    文章目录 进程和线程 内核级线程(Kemel-Level Threads, KLT 也有叫做内核支持的线程) 纯内核级线程特点 用户级线程(User-Level Threads ULT) 纯用户级线程 ...

  9. 8.内核级线程(核心级线程)

    [README] 1.本文内容总结自 B站 <操作系统-哈工大李治军老师>,内容非常棒,墙裂推荐: 2.为什么要讲线程呢.实际要讲进程的切换:进程的切换包括切换指令,切换资源:切换指令就是 ...

最新文章

  1. Zebra斑马打印机指令编程进阶(语言通用)--利用指令绘制出图像打印
  2. 微服务架构及分布式事务解决方案
  3. treeview右键添加新节点
  4. psd文件超大?教你如何压! - 技巧篇
  5. 計算機二級-java04
  6. Java nextInt()函数
  7. 综合能源管理服务认证是什么 , 综合能源服务认证有什么要求?
  8. springboot启动自动停止
  9. Mimics和Amira在医学影像处理中的应用介绍
  10. 阿里云国际版服务器电子商务直播解决方案
  11. C/C++牛客网刷题练习之翻转链表篇
  12. Unity3D导入图片资源
  13. 如何用OKR搞垮一个团队
  14. element步骤条实战
  15. 有人串口服务器通过java采集modbus会出现异常No recipient was found waiting for response for key 记录
  16. 学习笔记:快速入门ZooKeeper技术
  17. 三千万单车产能大跃进:供应链提价,矛盾一触即发
  18. 第四届-模拟智能灌溉系统
  19. Linux设置网络缓冲区大小(TCP/UDP)
  20. 洛谷小书童——凯撒密码——c语言

热门文章

  1. MySQL存储过程中的循环怎么写
  2. css怎样使鼠标移到div上显示手型
  3. Android开发笔记(一百四十九)约束布局ConstraintLayout
  4. Android开发笔记(七十八)异常容错处理
  5. 修复linux bash破壳漏洞,Linux系统下如何检测并修复bash中的破壳漏洞​​
  6. sublime php错误提示,sublime中检查php语法错误
  7. 配置 AEM CQ6 (author + publish + apache dispatcher + ubuntu )
  8. paper 6:支持向量机系列三:Kernel —— 介绍核方法,并由此将支持向量机推广到非线性的情况。...
  9. -------------初识----------动态规划。--------------------------------------------
  10. warning:1071 (42000) Specified key was too long;max key length is 1000 bytes