RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux下線程與進(jìn)程的區(qū)別

嵌入式技術(shù) ? 來(lái)源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-08-24 15:37 ? 次閱讀

Linux下線程

1.線程簡(jiǎn)介

線程(英語(yǔ):thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。在Unix System V及SunOS中也被稱(chēng)為輕量進(jìn)程(lightweight processes),但輕量進(jìn)程更多指內(nèi)核線程(kernel thread),而把用戶(hù)線程(user thread)稱(chēng)為線程。

線程是程序執(zhí)行流的最小單元。一個(gè)標(biāo)準(zhǔn)的線程由線程ID,當(dāng)前指令指針PC,寄存器集合和堆棧組成。線程是進(jìn)程的實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分配的基本單位。一個(gè)線程可以創(chuàng)建和撤銷(xiāo)另一個(gè)線程,同一進(jìn)程的多個(gè)線程之間可以并發(fā)執(zhí)行。線程由就緒、阻塞、運(yùn)行三種基本狀態(tài)。每一個(gè)程序至少有一個(gè)線程,若程序只有一個(gè)線程,那就是程序本身。

在同一進(jìn)程中的各個(gè)線程,都可以共享該進(jìn)程所擁有的資源,這首先表現(xiàn)在:所有線程都具有相同的地址空間(進(jìn)程的地址空間),這意味著,線程可以訪問(wèn)該地址空間的每一個(gè)虛地址;此外,還可以訪問(wèn)進(jìn)程所擁有的已打開(kāi)文件、定時(shí)器信號(hào)量機(jī)構(gòu)等。由于同一個(gè)進(jìn)程內(nèi)的線程共享內(nèi)存和文件,所以線程之間互相通信不必調(diào)用內(nèi)核。

2.線程與進(jìn)程區(qū)別

進(jìn)程是資源分配的基本單位。所有與該進(jìn)程有關(guān)的資源,都被記錄在進(jìn)程控制塊PCB中。以表示該進(jìn)程擁有這些資源或正在使用它們。
另外,進(jìn)程也是搶占處理機(jī)的調(diào)度單位,它擁有一個(gè)完整的虛擬地址空間。當(dāng)進(jìn)程發(fā)生調(diào)度時(shí),不同的進(jìn)程擁有不同的虛擬地址空間,而同一進(jìn)程內(nèi)的不同線程共享同一地址空間。

與進(jìn)程相對(duì)應(yīng),線程與資源分配無(wú)關(guān),它屬于某一個(gè)進(jìn)程,并與進(jìn)程內(nèi)的其他線程一起共享進(jìn)程的資源。

通常在一個(gè)進(jìn)程中可以包含若干個(gè)線程,它們可以利用進(jìn)程所擁有的資源。在引入線程的操作系統(tǒng)中,通常都是把進(jìn)程作為分配資源的基本單位,而把線程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位。由于線程比進(jìn)程更小,基本上不擁有系統(tǒng)資源,故對(duì)它的調(diào)度所付出的開(kāi)銷(xiāo)就會(huì)小得多,能更高效的提高系統(tǒng)內(nèi)多個(gè)程序間并發(fā)執(zhí)行的程度,從而顯著提高系統(tǒng)資源的利用率和吞吐量。因而近年來(lái)推出的通用操作系統(tǒng)都引入了線程,以便進(jìn)一步提高系統(tǒng)的并發(fā)性,并把它視為現(xiàn)代操作系統(tǒng)的一個(gè)重要指標(biāo)。

線程與進(jìn)程的區(qū)別可以歸納為以下4點(diǎn):
1)地址空間和其它資源(如打開(kāi)文件):進(jìn)程間相互獨(dú)立,同一進(jìn)程的各線程間共享。某進(jìn)程內(nèi)的線程在其它進(jìn)程不可見(jiàn)。
2)通信:進(jìn)程間通信IPC,線程間可以直接讀寫(xiě)進(jìn)程數(shù)據(jù)段(如全局變量)來(lái)進(jìn)行通信需要進(jìn)程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性。
3)調(diào)度和切換:線程上下文切換比進(jìn)程上下文切換要快得多。
4)在多線程O(píng)S中,進(jìn)程不是一個(gè)可執(zhí)行的實(shí)體。

進(jìn)程和線程運(yùn)行狀態(tài):

pYYBAGMF1TKAZKdlAAS3HuFfacM565.png#pic_center


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209318
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6801

    瀏覽量

    123280
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    504

    瀏覽量

    19675
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    203

    瀏覽量

    13960
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux下線程編程

    Linux下線程編程
    的頭像 發(fā)表于 08-24 15:42 ?1897次閱讀

    Linux下線程編程(2)

    線程(英語(yǔ):thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。一條線程指的是進(jìn)程中一個(gè)單一順序
    的頭像 發(fā)表于 08-24 15:48 ?1716次閱讀

    Linux進(jìn)程線程的深度對(duì)比

    關(guān)于進(jìn)程線程,在 Linux 中是一對(duì)兒很核心的概念。但是進(jìn)程線程到底有啥聯(lián)系,又有啥區(qū)別,
    發(fā)表于 10-14 16:47 ?1304次閱讀
    <b class='flag-5'>Linux</b>中<b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>的深度對(duì)比

    Linux線程編程基礎(chǔ)知識(shí)解析

    線程是輕量級(jí)的進(jìn)程(`LWP: Light Weight Process`),在`Linux`環(huán)境下線程的本質(zhì)仍是`進(jìn)程`,
    發(fā)表于 07-14 16:41 ?803次閱讀
    <b class='flag-5'>Linux</b>多<b class='flag-5'>線程</b>編程基礎(chǔ)知識(shí)解析

    進(jìn)程線程區(qū)別

    線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.與進(jìn)程區(qū)別:(1)地址空間:進(jìn)程內(nèi)的一個(gè)
    發(fā)表于 12-12 09:28

    進(jìn)程線程區(qū)別

    `1、進(jìn)程線程區(qū)別和聯(lián)系進(jìn)程(process)和線程(thread)是操作系統(tǒng)的基本概念,但是它們比較抽象,不容易掌握。計(jì)算機(jī)的核心是C
    發(fā)表于 11-30 14:06

    線程、進(jìn)程、程序的區(qū)別

    程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作,稱(chēng)為多線程。線程進(jìn)程區(qū)別在于,子進(jìn)程和父
    發(fā)表于 03-23 13:09

    Linux進(jìn)程線程區(qū)別是什么?

    Linux進(jìn)程線程區(qū)別是什么為什么要使用線程?線程操作的函數(shù)
    發(fā)表于 03-11 06:13

    Linux和Windows系統(tǒng)線程間的區(qū)別

    熟悉WIN32編程的人一定知道,WIN32的進(jìn)程管理方式與Linux上有著很大區(qū)別,在Unix里,只有進(jìn)程的概念,但在WIN32里卻還有一個(gè)線程
    發(fā)表于 11-03 12:37 ?0次下載

    線程進(jìn)程有哪些區(qū)別?

    線程進(jìn)程區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間,每個(gè)
    發(fā)表于 07-20 07:48 ?1969次閱讀
    <b class='flag-5'>線程</b>與<b class='flag-5'>進(jìn)程</b>有哪些<b class='flag-5'>區(qū)別</b>?

    線程進(jìn)程區(qū)別和聯(lián)系,線程進(jìn)程通信方式

    摘要:進(jìn)程線程都是計(jì)算里的兩項(xiàng)執(zhí)行活動(dòng),各有特色和優(yōu)勢(shì)。下面就來(lái)介紹線程進(jìn)程之間的區(qū)別聯(lián)系以及通信方式。
    發(fā)表于 12-08 14:12 ?1.3w次閱讀

    進(jìn)程線程分別是什么,它們的區(qū)別是什么

    程和線程區(qū)別是什么?有什么關(guān)系?相信大家對(duì)于進(jìn)程都很熟悉了吧,而線程相對(duì)于進(jìn)程而言,是一個(gè)更加接近于執(zhí)行體的概念,為了讓大家更好的了解
    發(fā)表于 03-24 17:26 ?9385次閱讀
    <b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>分別是什么,它們的<b class='flag-5'>區(qū)別</b>是什么

    進(jìn)程切換與線程切換有啥區(qū)別

    注意這個(gè)題目問(wèn)的是進(jìn)程**切換**與線程**切換**的區(qū)別,不是進(jìn)程線程區(qū)別。當(dāng)然這里的**
    的頭像 發(fā)表于 02-24 14:16 ?578次閱讀

    程序中進(jìn)程線程區(qū)別

    什么是進(jìn)程 1、進(jìn)程線程區(qū)別 進(jìn)程是指正在運(yùn)行的程序,它擁有獨(dú)立的內(nèi)存空間和系統(tǒng)資源,不同進(jìn)程
    的頭像 發(fā)表于 06-22 11:39 ?664次閱讀
    程序中<b class='flag-5'>進(jìn)程</b>和<b class='flag-5'>線程</b>的<b class='flag-5'>區(qū)別</b>

    mcu線程進(jìn)程區(qū)別是什么

    MCU線程進(jìn)程是嵌入式系統(tǒng)中常見(jiàn)的并行執(zhí)行的概念,它們之間有許多區(qū)別,包括線程進(jìn)程的定義、資源管理、通信機(jī)制、執(zhí)行方式等等。下面將詳細(xì)介
    的頭像 發(fā)表于 01-04 10:45 ?740次閱讀
    RM新时代网站-首页