【Linux程序排程】程序與執行緒的本質區別?
簡而言之,執行緒是程序的一部分,程序是程式的一部分。
異同:
1、程序是資源分配的基本單位,而執行緒是排程的基本單位;
2、程序與程序之間是獨立的,一個程序的異常終止不會影響其它程序,而執行緒與執行緒之間大部分是共享的,一個執行緒的異常終止會影響其它執行緒,會使程序終止;
3、執行緒與執行緒大部分共享,但是也有一部分資料私有,執行緒ID、上下文(切換時候暫存器中的值)、自己獨享一個棧空間、錯誤碼、訊號遮蔽字、排程的優先順序;
4、排程和切換:執行緒上下文切換比程序上下文切換要快得多;
5、一個程序中有多個執行緒時候,執行緒共享以下,在程序與程序之間的切換所花費消耗的大於執行緒與執行緒之間切換的花銷。
6、執行緒比程序佔用的資源要小,一個執行緒的建立遠小於程序的建立;
7、程序與程序之間是獨立的,所以在併發過程中,用同步互斥少,相對安全,程式碼編寫容易。執行緒之間大多數資源共享,所以往往要加上同步互斥鎖;
8、執行緒創建出來的執行緒是平等的沒有上下級,而程序創建出程序就為該程序的子程序。
聯絡
1、程序與執行緒之間的關係:執行緒是存在程序的內部,一個程序中可以有多個執行緒,一個執行緒只能存在一個程序中;
2、一個執行緒的結束程序不一定會退出,但是程序的退出,執行緒將退出;
3、一個程序中的多個執行緒共享:
1)一個程序中執行緒與執行緒之間共虛擬地址空間;
2)共享檔案描述符
3)每種訊號的處理方式
4)當前的工作目錄
5)使用者ID和組ID;
4、程序資源,防止造成殭屍程序。而執行緒也要進行等待,釋放執行緒的資源(除過執行緒的分離)。
相關推薦
【Linux程序排程】程序與執行緒的本質區別?
簡而言之,執行緒是程序的一部分,程序是程式的一部分。 異同: 1、程序是資源分配的基本單位,而執行緒是排程的基本單位; 2、程序與程序之間是獨立的,一個程序的異常終止不會影響其它程序,而執行緒與執行
【Linux系統學習】程序與執行緒
程序執行新程式 程序等待 wait()函式 程序執行新程式 fork()/exec()組合是典型的Linux
Linux程序與執行緒的區別 詳細總結
首先,簡要了解一下程序和執行緒。對於作業系統而言,程序是核心之核心,整個現代作業系統的根本,就是以程序為單位在執行任務。系統的管理架構也是基於程序層面的。在按下電源鍵之後,計算機就開始了複雜的啟動過程,此處有一個經典問題:當按下電源鍵之後,計算機如何把自己由靜止啟動起來的?本
Linux程序與執行緒的區別
程序與執行緒的區別,早已經成為了經典問題。自執行緒概念誕生起,關於這個問題的討論就沒有停止過。無論是初級程式設計師,還是資深專家,都應該考慮過這個問題,只是層次角度不同罷了。一般程式設計師而言,搞清楚二者的概念,在工作實際中去運用成為了焦點。而資深工程師則在考慮系統層面如
Linux程序與執行緒的區別——不要太經典
Linux程序與執行緒的區別 程序與執行緒的區別,早已經成為了經典問題。自執行緒概念誕生起,關於這個問題的討論就沒
程序間,執行緒間的通訊方式及程序與執行緒的區別
近日想總結下程序間,執行緒間的通訊方式,在網上搜索了下,感覺寫的很好,照搬過來,當做加深記憶。 幾種程序間的通訊方式 (1) 管道(pipe):管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有血緣關係的程序間使用。程序的血緣關係通常指父子程序關係。 (2)有名管道(named p
作業系統——程序與執行緒的區別以及如何選擇
1.定義 在對執行緒和程序進行比較之前,我們先看一下它們的定義。 程序:是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位,是資源分配的最小單位。 執行緒:是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的
程序與執行緒的區別與聯絡、程序與執行緒的通訊方式.md
一、為什麼引入程序? 程序是為了提高CPU的執行效率,減少因為程式等待帶來的CPU空轉以及其他計算機軟硬體資源的浪費而提出來的。 二、為什麼引入執行緒? 為了減少程序切換和建立的開銷,提高執行效率和節省
【Linux學習筆記】21_RPM 與YUM
rpm包的管理 介紹 一種用於網際網路下載包的打包及安裝工具,它包含在某些Linux分發版中。它生成具有.RPM副檔名的檔案。RPM是RedHat Package Manager(RedHat軟體包管理工具)的縮寫,類似windows的setup.exe,這一檔案格式名稱
程序與執行緒的區別和聯絡以及優缺點
什麼是執行緒? -在一個程式裡的一個執行路線就叫做執行緒。更準確的定義是:執行緒是“一個程序內部的控制序列”。 -一切程序至少都有一個執行執行緒 -執行緒也被叫做輕量級程序 什麼是程序? -程序是程式的一個執行的例項。 -程序是正在執行的程式。 -程序是能分配處理器並由處
【胡思亂想】JNI與執行緒池的維護
JNI中,C/C++程式碼裡建立的資源不由Java GC處理,故這裡的資源必須由C/C++程式碼明確釋放。在JNI中,C/C++回撥Java的方法是呼叫一個CallXXMethod函式來實現的,如果回撥的方法結束,C/C++執行下一行程式碼。 故猜測,由C/C++建立的OS執行緒應該會在執行完run方法後釋放
001.多執行緒-程序與執行緒的區別
什麼是程序?顧名思義,就是進行中的程式,也就是執行中的程式。我們開啟電腦的工作管理員可以看到: 此時,執行中的360瀏覽器,Google瀏覽器等都是獨立的一個程序,他們擁有相應的系統資源,比如:CPU
【Qt:語法】Qt 的執行緒與事件迴圈
週末天冷,索性把電腦抱到床上上網,這幾天看了 dbzhang800 部落格關於 Qt 事件迴圈的幾篇 Blog,發現自己對 Qt 的事件迴圈有不少誤解。從來只看到現象,這次借 dbzhang800 的部落格,就程式碼論事,因此瞭解到一些 Qt 深層的實現,
多執行緒的那些事兒(2)-- 程序與執行緒的區別與聯絡
在進行多執行緒程式設計之前我們先解決一個基本問題:什麼是執行緒、什麼是程序,他們之間有什麼區別與聯絡。 (1)程序:執行環境 執行緒:執行單位 用書面一點的知說,程序是一個計算機中程式執行的一個實體,執行緒是作業系
程序與執行緒的區別
定義: 一、程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的一個獨立單位。 二、執行緒是程序的一個實體,是CPU排程和分派的基本單位,他是比程序更小的能獨立執行的基本單位,執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少
程序與執行緒的區別和聯絡
程序概念 程序是表示資源分配的基本單位,又是排程執行的基本單位。例如,使用者執行自己的程式,系統就建立一個程序,併為它分配資源,包括各種表格、記憶體空間、磁碟空間、I/O裝置等。然後,把該程序放人程序的就緒佇列。程序排程程式選中它,為它分配CPU以及其它有關資源,該程序才真正執行。所以,
程序與執行緒的區別與聯絡
這兩天學習作業系統,發現程序跟執行緒真的有很複雜的關係,下面我就程序與執行緒的聯絡及區別總結一下學習到的。 概念: 程序:程序是一個具有獨立功能的程式關於某個資料集合的一次執行活動。程序是擁有資源和獨立排程的基本單位,程序是一個可擁有資源的獨立單位,程序能夠獨立執行。引入程
【Java多執行緒】synchronized與執行緒安全
介紹 修飾方法:一個執行緒去呼叫一個加synchronized的方法的時候,會獲得該物件的 物件鎖。 修飾靜態方法:一個執行緒去呼叫一個既加static,又加synchronized的方法的時候,會獲得該物件的 類鎖。 修飾程式碼塊: ①加物件鎖:
Java中程序與執行緒的區別
1.定義 程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位. 執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存
【OS大作業】用多執行緒統計txt檔案中字元個數(Java實現)
問題描述 給定一個txt檔案,利用不同個數的執行緒查詢檔案中某字元的個數,探究執行緒個數與查詢時間的關係。 本作業程式碼使用JAVA實現,版本為10.0.2,使用的IDE為Eclipse4.9.0. 結果測試所用的txt檔案內容為英文,編碼格式為UTF-8。 原始碼 第一版程式碼:(