Linux内核进程管理子系统有什么第二回 —— 进程与线程

接前一篇文章:Linux内核进程管理子系统有什么第一回 —— 引言与基础知识

 

本文内容参考:

Linux内核进程管理专题报告_linux rseq-CSDN博客

《趣谈Linux操作系统 核心原理篇:第三部分 进程管理》—— 刘超

《图解Linux内核 基于6.x》 —— 姜亚华 机械工业出版社

特此致谢!

 

上一回讲了进程的概念、特征等基本知识,本回讲解线程的相关知识。

2. 线程

(1)什么是线程

执行线程(thread of execution),简称线程(thread),是在进程中活动的对象。每个线程都拥有一个独立的程序计数器、线程栈和一组进程寄存器。内核调度的对象是线程,而不是进程。在传统的Unix系统中,一个进程只包含一个线程。但现在的系统中,包含多个线程的多线程程序司空见惯。Linux系统对线程和进程并不作特别区分,对于Linux而言,线程只不过是一种特殊的进程罢了。

(2)为什么要有线程

实际上,对于任何一个进程来讲,即便没有主动创建线程,进程也是默认有一个主线程的。线程是负责执行二进制指令的,而进程要比线程管的宽多了,除了执行指令之外,内存、文件系统等等都要它来管理。

(3)进程与线程的区别

进程是操作系统资源分配的基本单位,拥有独立的内存空间;线程是CPU调度的基本单位,共享进程资源,两者在资源开销、通信方式和稳定性上有显著差异。

具体来说:

  • 进程是操作系统分配资源(如内存、文件描述符等)的基本单位,每个进程拥有独立的地址空间。‌;线程共享所属进程的资源(如堆、全局变量),仅需独立保存栈和寄存器状态,因此创建和切换开销更小。‌‌‌‌
  • 线程是CPU调度的基本单位,同一进程的多个线程可并发执行,而进程是程序运行的实例。‌‌

 

两者详细对比:

1) 资源与隔离性

  • 进程‌:独立内存空间确保高隔离性,一个进程崩溃不影响其它进程,但资源占用大。‌‌‌‌
  • 线程‌:共享内存导致低隔离性,线程错误可能引发整个进程崩溃,但通信效率高。‌‌

2)创建与切换开销

  • 进程‌:创建需分配独立资源,上下文切换涉及内存管理单元(如页表),开销较大。‌‌‌‌
  • 线程‌:仅需保存线程栈和寄存器状态,切换速度快,适合高并发场景。‌‌‌‌

3)通信机制

  • 进程间通信(IPC)‌:需通过管道、消息队列等机制,复杂度高。‌‌‌‌
  • 线程间通信‌:直接共享内存变量,但需同步机制(如互斥锁)避免竞态条件。‌‌

4)应用场景

  • 多进程‌:适用于需高稳定性或隔离的任务(如服务器进程隔离)。‌‌‌‌
  • 多线程‌:适用于需高效资源共享的任务(如GUI应用或高并发请求处理)。‌‌

举一个例子作为类比以便于理解:

  • 如果将一个进程比作一个公司,那么线程则好比一个公司内的不同部门(或项目组);
  • 如果将一个进程比作一个公司内的某个部门(或项目组),那么线程则是该部门(或项目组)内部的小组(或个人)。

 

关于线程的相关基础知识就暂时讲到这里,后文书还会对线程更深层次的知识进行讲解。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝天居士

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

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

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

打赏作者

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

抵扣说明:

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

余额充值