这一篇再继续就线程进行一些更深层次的研究

线程所需的资源

  • 进程中各个线程共享代码、数据和文件等资源,记录线程运行状态的空间(TCB)每个线程单独有一个
  • 每个进程都需要它自己私有的线程控制块(TCB)列表,用来跟踪记录它的各个线程的状态信息(PC、栈指针、寄存器)

线程的实现

  • 用户线程,在用户空间实现,OS看不到用户线程,TCB由用户线程库管理和维护,POSIX Pthreads、Mach C-threads、Solaris threads等OS线程是通过用户线程的方式实现的
  • 内核线程,在内核中实现,OS可以看到,TCB由OS管理、调度和维护,Windows、Solaris、Linux等OS线程是通过内核线程实现的
  • 轻量级进程,在内核中实现,支持用户线程,Solaris(Lightweight Process)

用户线程

  • 在用户空间实现的线程机制,它不依赖于OS的内核,由一组用户级的线程库函数来完成线程的管理,包括线程的创建、终止、同步和调度等
  • 由于用户线程的维护由相应进程来完成(通过线程库函数),不需要OS内核了解用户线程的存在,可用于不支持线程技术的多进程OS
  • 用户线程的切换也是由线程库函数来完成,无需用户态/核心态切换,所以速度特别快
  • 允许每个进程拥有自定义的线程调度算法

用户线程的缺点

  • 一个线程发起系统调用而阻塞,则整个进程在等待
  • 当一个线程开始运行后,除非它主动地交出CPU使用权,否则它所在的进程当中的其他线程将无法运行
  • 由于时间片分配给进程,故与其它进程比,在多线程执行时,每个线程得到的时间片较少,执行会比较慢

内核线程

  • 在OS的内核当中实现的一种线程机制,由OS的内核来完成线程的创建、终止和管理
  • 在支持内核线程的OS中,由内核来维护进程和线程的上下文信息(PCB和TCB)
  • 线程的创建、终止和切换都是通过系统调用/内核函数的方式来进行,由内核来完成,因此OS开销比较大
  • 在一个进程当中,如果某个内核线程发起系统调用而被阻塞,并不会影响其他内核线程的执行
  • 时间片分配给线程,多线程的进程获得更多CPU时间

轻量级进程

  • 它是内核支持的用户线程,一个进程可有一个或多个轻量级进程,每个轻量级进程由一个单独的内核线程来支持(Solaris和Linux)

如有侵权,请联系删除,如有错误,欢迎大家指正,谢谢

用户进程与内核进程是一一对应的吗_用户线程、内核线程和轻量级进程相关推荐

  1. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  2. 【Java 并发编程】线程池机制 ( 测试线程开销 | 启动线程分析 | 用户态 | 内核态 | 用户线程 | 内核线程 | 轻量级进程 )

    文章目录 一.测试线程开销 1.正常测试 2.不创建线程 3.只创建不启动线程 4.只启动不等待执行完成 二.分析测试结果 1.启动线程分析 2.用户线程与内核线程 3.轻量级进程 4.验证 Java ...

  3. linux 线程--内核线程、用户线程实现方法

    Linux上进程分3种,内核线程(或者叫核心进程).用户进程.用户线程 内核线程拥有 进程描述符.PID.进程正文段.核心堆栈 当和用户进程拥有相同的static_prio 时,内核线程有机会得到更多 ...

  4. linux线程为什么也称为轻量级进程

    在Linux系统中,进程作为系统资源分配的最小单位,而线程作为系统调度的最小单位.也就是说,线程更加接近执行体的概念.但是线程和进程各自有优缺点,进程方便系统资源的管理与维护,但是执行创建进程的系统开 ...

  5. Linux内核线程kernel thread详解--Linux进程的管理与调度(十)【转】

    转自:https://blog.csdn.net/gatieme/article/details/51589205 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:/ ...

  6. Linux内核线程kernel thread详解--Linux进程的管理与调度

    内核线程 为什么需要内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求). 内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的. 内核线程 ...

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

    区别和联系 我们经常提到线程.线程组.内核进程.用户进程.轻量级进程等词汇,那么他们之间有什么区别和联系呢? 首先,我们需要明确一点,Linux下并没有真正意义上的线程,甚至可以说没有进程这个概念,L ...

  8. linux线程能删除自身吗,Linux内核本身和进程的区别 内核线程、用户进程、用户...

    这个概念是很多人都混淆的了,我也是,刚开始无法理解OS时,把Linux内核也当做一个进程. 其实内核本身不是以进程形式存在的,最多在初始化的过程中表现得就像一个进程,但是内核绝对没有进程的数据结构ta ...

  9. linux内核设计与实现---进程管理

    进程管理 1 进程描述符及任务结构 分配进程描述符 进程描述符的存放 进程状态 设置当前进程状态 进程上下文 进程家族树 2 进程创建 写时拷贝 fork() vfork() 3 线程在Linux中的 ...

最新文章

  1. Hadoop HDFS分布式文件系统 常用命令汇总
  2. .NET Core Runtime vs .NET Framework Runtime
  3. 数据结构【插入操作具体代码的实现】
  4. 【ElasticSearch】 ElasticSearch 写入流程
  5. 全栈python_Pyodide:在浏览器端实现Python全栈科学计算
  6. kaggle房价预测(House Prices: Advanced Regression Techniques)详解
  7. 在Azure Data StudioSQL笔记本中使用Python脚本加密密码
  8. 从零开始刷Leetcode——数组(268.283.414)
  9. 不是外部命令也不是可运行程序_手机运行内存4G和6G有什么不同?差别不是一般大...
  10. [转]什么是UAT测试?
  11. 作品展作品延伸——代码
  12. 在win10pe中集成virtio驱动
  13. ryuyan 方差分析_R语言之方差分析篇
  14. Python基础应用-摄氏温度换算
  15. 一站式解决网站死链问题
  16. 空气温湿度、光照度、二氧化碳传感器
  17. nginx如何替换ssl证书
  18. 拒不协助执行会有什么后果?
  19. Python+WebKit+HTML开发桌面应用程序
  20. 中级JAVA程序员应该掌握的数据结构知识

热门文章

  1. HTML中的align和valign这两个属性
  2. 点星 (。*)表示任意数量的字符(不包括换行符)
  3. ArcGIS问题小记
  4. maven 与intellij IDEA 下maven 为groovy 项目生成jar 详解
  5. 为什么ConcurrentHashMap是弱一致的
  6. 内网渗透测试:内网信息收集与上传下载
  7. linux 软件安装 NOKEY问题
  8. linux 简介各发行版
  9. golang import 导入包语法介绍 点 别名 下划线
  10. Hbuilder 常用快捷键汇总