Linux 线程的概念与实现方式

这篇具有很好参考价值的文章主要介绍了Linux 线程的概念与实现方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、线程的概念

线程是进程内部的一条执行序列或执行路径,一个进程可以包含多条线程。

Linux 线程的概念与实现方式,Linux,linux,java,运维

一个进程中有两条或多条执行路径的时候,它们是可以同时执行的,也就是说,一个进程中的多个线程是可以同时执行的。当我们需要一个程序同时执行两个不同操作的时候就引入了多线程。如果是一个单线程,只有一条路径时,不可能同时执行两个不同操作,因为其中一个操作正在执行的时候,另一个操作是阻塞状态。

当一个进程有一个主线程和一个子线程的时候,主线程和子线程可以同时执行;也可以有多个相同的子线程,这样就是一个主线程和多个子线程同时执行,多个子线程做的事情是一样的;也可以有多个不同的子线程,这样就是一个主线程和多个不同的子线程同时执行,多个子线程做的事情不一样。

二、线程的实现方式

在操作系统中,线程的实现有以下三种方式:

1.用户级线程

在用户空间模拟出了多条执行路径,但在内核的眼里只有一条执行路径,这种线程的创建不需要操作系统参与并且可以创建很多,这种线程的缺点是无法进入多个处理器,因为内核无法感知到每一个线程的存在,所以无法把每一个不同的线程放到不同的处理器上让它执行。用户级线程的优点是在用户空间创建,开销比较小,可以创建很多,缺点是无法使用多个处理器。

2.内核级线程

利用内核提供的接口去创建线程,创建内核级线程是需要操作系统参与的,这种线程是由操作系统来直接管理,内核也可以感知到每一个线程的存在,所以内核级线程的创建离不开操作系统的支持,可以将其中一个线程分配到某一个处理器上将另一个线程分配到另一个处理器上,它就可以实现真正意义上的并行。内核级线程的优点是可以使用多个处理器,缺点是开销大。

3.组合级线程

会在内核中创建多条内核级线程,目的是为了能够使用多个处理器,也会在用户空间创建多个用户级线程。所以,组合级线程可以利用多处理器的资源,同时可以在用户空间创建多个用户级的线程,是我们后期创建线程的开销可以变小,因为当线程数目超出处理器数目的情况下,最后还是只能时间片轮转。

Linux 线程的概念与实现方式,Linux,linux,java,运维

Linux 中线程的实现:
Linux 实现线程的机制非常独特。从内核的角度来说,它并没有线程这个概念。Linux把所有的线程都当做进程来实现。内核并没有准备特别的调度算法或是定义特别的数据结构来表征线程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一隶属于自己的task_struct(PCB),所以在内核中,它看起来就像是一个普通的进程(只是线程和其他一些进程共享某些资源,如地址空间)。实际上,如果创建2个线程,它会消耗2个pid,对外呈现的是主进程的pid,就是主线程的pid作为整个进程的pid。

三、进程与线程的区别

1.进程:一个正在运行的程序

进程是资源分配的最小单位;
进程有自己的独立地址空间;
进程的创建消耗资源大;
进程的切换开销大。

2.线程:是进程内部的一条执行序列或执行路径

线程是CPU调度的最小单位;
线程共享进程中的地址空间;
线程的创建相对较小;
线程的切换开销相对较小。文章来源地址https://www.toymoban.com/news/detail-668973.html

到了这里,关于Linux 线程的概念与实现方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 多线程 ( 多线程概念 )

    在一个程序里的一个执行路线叫做线程 thread ),更准确的定义为:“线程是一个进程内部的控制序列\\\"。 一切进程至少有一个执行线程。 线程在进程内部运行,本质上是在进程地址空间中运行。 在linux系统中,CPU看到的PCB比传统的进程更加轻量化。 透过进程虚拟地址空间,可

    2024年02月09日
    浏览(53)
  • 【Linux】多线程 --- 线程概念 控制 封装

    从前种种,譬如昨日死。从后种种,往如今日生。 1.1 进程资源如何进行分配呢?(地址空间+页表) 1. 首先我们来看一个现象,当只有第一行代码时,编译是能通过的,但会报warning,当加了第二行代码时,编译无法通过,报error。 第一行代码能编过的原因是权限缩小,虽然

    2024年02月03日
    浏览(47)
  • 操作系统原理 —— 线程的概念、实现方式、多线程模型(十)

    有的进程可能需要 “同时” 做很多事情,而传统的进程只能串行的执行一系列的程序,为此,引入了 “线程” ,来增加并发度。 可以把线程理解为 轻量级进程 ,线程是可以基本的 CPU 执行单位,也是程序执行流的最小单位,引入线程之后,不仅是进程之间可以并发,进程

    2024年02月03日
    浏览(27)
  • 【Linux】多线程1——线程概念与线程控制

    📝 个人主页 :超人不会飞) 📑 本文收录专栏 :《Linux》 💭 如果本文对您有帮助,不妨 点赞、收藏、关注 支持博主,我们一起进步,共同成长! 💭理解线程需要和进程的概念紧密联系。 线程是一个执行分支,执行粒度比进程更细,调度成本更低; 进程是分配系统资源的

    2024年02月12日
    浏览(21)
  • 【Linux】线程概念

           🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️林 子       🛰️博客专栏:✈️ Linux       🛰️社区 :✈️ 进步学堂       🛰️欢迎关注:👍点赞🙌收藏✍️留言 我们都知道, 进程是操作系分配资源的基本实体。

    2024年02月08日
    浏览(50)
  • Linux线程概念

    目录 一、页表详解 1.地址的属性 2.页框 3.页表录和页表项 二、认识线程 1.线程的概念 2.轻量级进程 三、线程的简单控制 1.线程的创建 2.PID和LWP 3.线程异常 4.线程的资源 (1)共享的资源 (2)独有的资源 5.线程的特点 我们虽然已经知道了页表可以储存虚拟地址和物理地址的

    2024年02月11日
    浏览(30)
  • Linux之线程概念

    目录 一、细粒度划分 1、堆区细粒度划分 2、物理内存和可执行程序细粒度划分 3、虚拟地址到物理地址的转化 二、线程的概念 1、基本概念 2、线程的优点 3、线程的缺点 4、线程异常  5、线程用途 三、Linux下的进程和线程 在语言中,我们知道,用户自己申请的空间是存在于

    2024年03月10日
    浏览(31)
  • 【Hello Linux】线程概念

    作者:@小萌新 专栏:@Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:简单介绍linux中的多线程 一般在书上我们会这么介绍一个线程 线程是进程内部的一个执行流 他是进程的一部分 粒度要比进程更加细和轻量化 那么我们应该怎么理解呢? 下面是我的梳理

    2023年04月09日
    浏览(24)
  • 【Linux学习】多线程——页表详解 | 线程概念 | 线程理解

    🐱作者:一只大喵咪1201 🐱专栏:《Linux学习》 🔥格言: 你只管努力,剩下的交给时间! 我们在之前一直都提到页表,知道它的作用是将虚拟地址映射到物理地址,但是它具体怎么映射的,它的结构是什么样的,并没有提及过。 上诉代码,会在运行时报错,原因是str指向

    2024年02月05日
    浏览(32)
  • 【Linux】多线程概念初讲

    线程大章节第一篇文章 文章目录 前言 一、linux线程基本概念 二、线程与进程的对比       1.线程控制的接口 总结 什么是线程呢? 在一个程序里的一个执行路线就叫做线程( thread )。更准确的定义是:线程是 “ 一个进程内部的控制序列”。 一切进程至少都有一个执行线

    2024年02月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包