0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux下线程与进程的区别

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-08-24 15:37 次阅读

Linux下线程

1.线程简介

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。

线程是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针PC,寄存器集合和堆栈组成。线程是进程的实体,是被系统独立调度和分配的基本单位。一个线程可以创建和撤销另一个线程,同一进程的多个线程之间可以并发执行。线程由就绪、阻塞、运行三种基本状态。每一个程序至少有一个线程,若程序只有一个线程,那就是程序本身。

在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。

2.线程与进程区别

进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB中。以表示该进程拥有这些资源或正在使用它们。
另外,进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。

与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视为现代操作系统的一个重要指标。

线程与进程的区别可以归纳为以下4点:
1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信需要进程同步和互斥手段的辅助,以保证数据的一致性。
3)调度和切换:线程上下文切换比进程上下文切换要快得多。
4)在多线程OS中,进程不是一个可执行的实体。

进程和线程运行状态:

pYYBAGMF1TKAZKdlAAS3HuFfacM565.png#pic_center


审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11196

    浏览量

    208674
  • 操作系统
    +关注

    关注

    37

    文章

    6658

    浏览量

    123112
  • 线程
    +关注

    关注

    0

    文章

    503

    浏览量

    19630
  • 进程
    +关注

    关注

    0

    文章

    201

    浏览量

    13936
收藏 人收藏

    评论

    相关推荐

    Linux下线程编程

    Linux下线程编程
    的头像 发表于 08-24 15:42 1864次阅读

    Linux下线程编程(2)

    线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序
    的头像 发表于 08-24 15:48 1680次阅读

    Linux进程线程的深度对比

    关于进程线程,在 Linux 中是一对儿很核心的概念。但是进程线程到底有啥联系,又有啥区别
    发表于 10-14 16:47 1275次阅读
    <b class='flag-5'>Linux</b>中<b class='flag-5'>进程</b>和<b class='flag-5'>线程</b>的深度对比

    Linux线程编程基础知识解析

    线程是轻量级的进程(`LWP: Light Weight Process`),在`Linux`环境下线程的本质仍是`进程`,
    发表于 07-14 16:41 768次阅读
    <b class='flag-5'>Linux</b>多<b class='flag-5'>线程</b>编程基础知识解析

    进程线程区别

    线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程区别:(1)地址空间:进程内的一个
    发表于 12-12 09:28

    进程线程区别

    `1、进程线程区别和联系进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。计算机的核心是C
    发表于 11-30 14:06

    线程进程、程序的区别

    程序中同时运行多个线程完成不同的工作,称为多线程线程进程区别在于,子进程和父
    发表于 03-23 13:09

    Linux进程线程区别是什么?

    Linux进程线程区别是什么为什么要使用线程线程操作的函数
    发表于 03-11 06:13

    Linux和Windows系统线程间的区别

    熟悉WIN32编程的人一定知道,WIN32的进程管理方式与Linux上有着很大区别,在Unix里,只有进程的概念,但在WIN32里却还有一个线程
    发表于 11-03 12:37 0次下载

    线程进程有哪些区别

    线程进程区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个
    发表于 07-20 07:48 1957次阅读
    <b class='flag-5'>线程</b>与<b class='flag-5'>进程</b>有哪些<b class='flag-5'>区别</b>?

    线程进程区别和联系,线程进程通信方式

    摘要:进程线程都是计算里的两项执行活动,各有特色和优势。下面就来介绍线程进程之间的区别联系以及通信方式。
    发表于 12-08 14:12 1.2w次阅读

    进程线程分别是什么,它们的区别是什么

    程和线程区别是什么?有什么关系?相信大家对于进程都很熟悉了吧,而线程相对于进程而言,是一个更加接近于执行体的概念,为了让大家更好的了解
    发表于 03-24 17:26 9341次阅读
    <b class='flag-5'>进程</b>和<b class='flag-5'>线程</b>分别是什么,它们的<b class='flag-5'>区别</b>是什么

    进程切换与线程切换有啥区别

    注意这个题目问的是进程**切换**与线程**切换**的区别,不是进程线程区别。当然这里的**
    的头像 发表于 02-24 14:16 555次阅读

    程序中进程线程区别

    什么是进程 1、进程线程区别 进程是指正在运行的程序,它拥有独立的内存空间和系统资源,不同进程
    的头像 发表于 06-22 11:39 627次阅读
    程序中<b class='flag-5'>进程</b>和<b class='flag-5'>线程</b>的<b class='flag-5'>区别</b>

    mcu线程进程区别是什么

    MCU线程进程是嵌入式系统中常见的并行执行的概念,它们之间有许多区别,包括线程进程的定义、资源管理、通信机制、执行方式等等。下面将详细介
    的头像 发表于 01-04 10:45 658次阅读