淺談進程與線程

文章目錄

  • 一. 進程
    • 🍎什么是程序?什么是進程?
    • 🍋程序的并發性和并行性
    • 🍉進程誕生的原因
    • 🍑PCB
  • 二. 線程
    • 🍥什么是線程?
    • 🍦為什么引入線程?
  • 三. 進程與線程的區別與聯系

一. 進程

🍎什么是程序?什么是進程?

程序:程序是一系列有序指令的集合,用于告訴計算機要執行何種操作及操作的先后順序。這些指令包括進行各種計算、數據處理、輸入輸出等操作,用來完成特定的任務或解決特定的問題。
進程:進程從不同的角度可以有不同的定義。(1) 進程可以認為是程序的一次執行(2) 進程是具有獨立功能的程序在一個數據集合上運行的過程,它是系統進行資源分配的基本單位。

程序 VS 進程

  • 進程是一個正在執行的程序,它有一定的生命周期,包括進程的創建、調度、銷毀,具有動態性。
  • 程序相當于一個可執行程序,是一組有序指令的集合,它存放在某種介質上,一個沒有執行的程序本質上并不具有活動性,是靜態的。

🍋程序的并發性和并行性

程序的并行性是指兩個或多個程序在同一時刻處于運行狀態。如:在一條同向多車道的公路上,同一時刻可以有多輛車經過同一個地點。
程序的并發性是指兩個或多個程序在同一時間間隔內發生。如:在一條單車道的公路上,若有多輛車想經過一個地點,只能按照一定的順序依次通過。

🍉進程誕生的原因

早期的操作系統都屬于單核CPU,這意味著計算機在同一時刻只能同時運行一個程序,且只有一個程序運行結束后后面的程序才能依次執行。

為了解決多個程序需要并發執行的問題,操作系統引入了進程的概念,在操作系統中每個正在運行的程序都被抽象成“進程”的概念,每個創建的進程都有一個對應 進程控制塊(PCB process control block),PCB中含有一些特定的屬性,當一個進程在運行過程中出現了優先級更高的進程,則當前程序所有運行的狀態都通過PCB進行保存,等到進程下次執行就會恢復原先在狀態,以此實現對多個進程的調度。

由于操作系統對進程調度的速度很快,多個進程在一段小的時間間隔內被調度了非常多次,因此在宏觀上屬于“并行執行”;而在微觀的角度上,單核CPU的計算機在一個時刻只能運行一個進程 ,多個進程是依次進行執行的,因此在微觀上屬于“并發執行”。

🍑PCB

前面說到了每個進程都有一個PCB,用于描述一個進程,因此PCB本質上就代表了一個進程,它相當于C語言中的結構體或Java中的類,PCB中主要的屬性如下:

  • pid:進程的身份標識,每個進程在同一時刻都有一個唯一pid;一個應用程序的執行可能包含多個進程,即有多個pid
  • 一組內存指針:描述了一個進程所分配的內存空間在哪些位置,每一塊內存空間具體的作用:如存儲程序執行的二進制指令和執行指令所需的數據、程序執行產生的臨時數據等。
  • 文件描述符表:描述了一個進程所持有的硬盤資源,由于數據在硬盤上以文件的形式來表示和操作,因此文件描述符表描述了進程關聯了哪些文件,能夠操作你想想文件。
  • 進程狀態:描述了一個進程當前的狀態,如運行狀態、就緒狀態、阻塞等待狀態等。
  • 進程優先級:決定了進程執行的先后順序。
  • 上下文:保存進程當前運行的狀態,以便后續的恢復和執行。
  • 記賬信息:記錄了當前進程執行的時間、占用的CUP情況,作為操作系統調度的依據,避免因為一個進程優先級過低而出現線程“餓死”的情況。

二. 線程

🍥什么是線程?

線程是一個比進程更小的基本單位,一個進程可以有多個線程,而一個線程只能存在于一個進程當中。線程是系統調度的基本單位,也稱作“輕量級進程”

🍦為什么引入線程?

這里先說結論:

  • 創建進程的系統開銷比線程大。
  • 銷毀進程消耗的時間比線程多。
  • 調度進程的時間開銷比線程大。

進程相比于線程的劣勢:

  • 一個應用程序的執行可能需要創建多個進程,這多個進程間有時需要進行數據的交換和進程的切換以共同完成某個功能,由于每個進程都擁有各自的PCB,即擁有各自獨立的內存空間、硬件資源、文件描述符表等,因此如果頻繁地對進程調度會產生大量的時間開銷。
  • 如果在一段時間內,系統上有較多的應用程序需要同時運行,操作系統就需要在剩余資源中尋找合適大小的位置并分配;進程結束時再分別進行回收,因此效率較低。

引入線程的優勢:

  • 一個進程創建時可以預先申請一塊較大且合適的資源,進程創建時至少擁有一個線程,當需要完成某個功能時,可以在進程中分配已有資源,直接創建新的線程,其中每個線程擁有各自PCB,包括狀態、優先級、上下文等。當系統進行調度時,不需要切換進程,只需在當前進程保存線程的部分信息,因此大大提高了系統調度的效率。
  • 線程間共用進程的內存空間和硬件資源等,創建線程時不需要重新申請,因此創建/銷毀的效率更高。

三. 進程與線程的區別與聯系

概念上:進程是系統資源分配的基本單位,線程是系統調度的基本單位。

包含關系:一個進程可以包含多個線程,而一個線程只能從屬于一個進程。

擁有資源:每個進程擁有獨立的內存空間和其他資源,而多個線程共享進程內的資源。

獨立性:每個進程擁有獨立的資源,因此多個進程間的信息不能被直接訪問,進程間的運行一般不會相互影響;線程共享進程的資源,多個線程可能因為資源的爭搶產生死鎖等問題。

上下文切換:進程間擁有獨立的資源,因為進程間切換需要保存和加載上下文信息,因此系統開銷較大;線程共享進程的內存和資源,因此線程間切換開銷較小。


以上就是本篇文章的全部內容了,如果這篇文章對你有些許幫助,你的點贊、收藏和評論就是對我最大的支持。
另外,文章可能存在許多不足之處,也希望你可以給我一點小小的建議,我會努力檢查并改進。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166824.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166824.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HarmonyOS 設備管理開發:USB 服務開發指導

基本概念 USB 服務是應用訪問底層的一種設備抽象概念。開發者根據提供的 USB API,可以獲取設備列表、控制設備訪問權限、以及與連接的設備進行數據傳輸、控制命令傳輸等。 運作機制 USB 服務系統包含 USB API、USB Service、USB HAL。 圖 1 USB 服務運作機制 ●…

【SpringBoot3+Vue3】五【完】【實戰篇】-前端(配合后端)

目錄 一、環境準備 1、創建Vue工程 2、安裝依賴 2.1 安裝項目所需要的vue依賴 2.2 安裝element-plus依賴 2.2.1 安裝 2.2.2 項目導入element-plus 2.3 安裝axios依賴 2.4 安裝sass依賴 3、目錄調整 3.1 刪除部分默認目錄下文件 3.1.1 src/components下自動生成的…

JeecgBoot3.5漏洞升級—快速文檔

近幾年來,黑客攻擊行為呈現出日益復雜和隱蔽的趨勢,對個人和組織的安全造成了嚴重威脅。黑客們不斷尋找新的漏洞和安全漏洞,利用各種手段進行網絡攻擊,包括惡意軟件、網絡釣魚、勒索軟件等。因此,我們每個人都需要關注…

Windows系統下載并安裝 Windows PowerShell

PowerShell下載地址 一 windows7 版本 **若要確定您正在使用的 Microsoft PowerShelll 版本,請在 Windows 7 或 Windows Server 2008R2 或 Windows Server 2012 計算機上執行以下操作: 單擊“開始”,單擊“所有程序”,單擊“附件”,單擊“Windows PowerShell”,然后單擊…

渲染農場渲染一分鐘動畫需要多少錢?需要渲染多少時間?

現在很公司都開始使用渲染農場渲染動畫,但是還是有很多人不知道渲染農場渲染動畫需要多少錢,需要渲染多少時間。在這篇文章中我們將為你一一解答,為你提供一個清晰的參考。 渲染農場的收費通常是按照渲染的使用時間收費,渲染十分…

華大基因助力烏茲別克斯坦精準醫學發展,共筑健康絲綢之路

今年上半年,中國與中亞五國元首齊聚陜西西安,舉辦中國-中亞峰會。過去的20年里,中國已經成為中亞國家的主要投資來源國,總投資額接近400億美元。烏茲別克斯坦是中國-中亞合作機制的重要參與者,烏…

elasticsearch命令大全

1、查詢全部索引 GET /_cat/indices?v2、要按文檔數對所有索引進行降序排序 GET /_cat/indices?v&hindex,docs.count&sdocs.count:descv:參數用于顯示列標題 h:參數用于指定要顯示的列 s:參數用于指定按哪一列進行排序 desc&…

CAD隨機多面體_圓柱試件3D插件

插件介紹 CAD隨機多面體_圓柱試件3D插件可用于在AutoCAD軟件內生成隨機三維多面體及外側圓柱體試件。插件可確保多面體之間不發生干涉,且多面體與外側圓柱體試件之間保持適配關系,確保生成的模型導入有限元軟件后幾何合理有效。本插件主要可應用于三維混…

講概念談愿景AI Agent名不副實?看實在智能RPA Agent智能體如何落地!

OpenAI在首屆開發者大會上推出了GPTs和Assitant API,不僅改寫了AI Agent的構建范式,也把AI智能體的應用推向一個新高潮。GPTs和GPT商店,使得用戶無需編碼通過自然語言就能創建并擁有多個專屬私人助理,且可以如在蘋果應用商店一樣在…

開發教育APP的意義

開發教育APP的意義有以下幾點: 促進教育資源發揮效果:通過教育APP軟件開發,可以讓現代教育資源有效合理的進行利用,并且能夠更進一步的提升發揮功能,促進教育資源全面發揮其具體作用和效果,從而提升教育行…

3.3.1詳解linux內核鏈表list_head及其接口應用

文章目錄 1 list定義2 list接口2.1 list初始化方法1:定義并初始化鏈表方法2:先定義再初始化鏈表2.2 list_add2.3 list_del2.4 list_replace2.5 list_move2.6 list_splice3 list遍歷3.1 list_entry3.2 list_first_entry3.3 list_last_entry3.4 list_first_entry_or_null3.5 li…

Y-MODEM協議定制上位機

最近在使用N32G031和STM32F10X系列單片機進行IAP,使用的是Ymodem協議。單片機上的軟件已經完成了,一般是使用secureCRT這樣的工具作為上位機來進行測試,后來想做一個定制化的簡單的上位機。在網上找了下資料,以下這篇文章寫的使用…

淺談安科瑞無線測溫設備在挪威某項目的應用

摘要:安科瑞無線溫度設備裝置通過無線溫度收發器和各無線溫度傳感器直接進行溫度值的傳輸,并采用液晶顯示各無線溫度傳感器所測溫度。 Absrtact:Acre wireless temperature device directly transmits the temperature value through the wireless temp…

基于51單片機傾角MPU6050老人跌倒遠程GSM短信報警器+源程序

一、系統方案 1、本設計采用這51單片機作為主控器。 2、MPU6050角度值送到液晶1602顯示。 3、紅外傳感器檢測心率。 4、跌倒遠程GSM報警。 二、硬件設計 原理圖如下: 三、單片機軟件設計 1、首先是系統初始化 void LCD_Init() //初始化液晶時間顯示 { write_com…

yarn:無法加載文件 C:\Users\***\AppData\Roaming\npm\yarn.ps1,因為在此系統上禁止運行腳本

原因:PowerShell 腳本的執行有著嚴格的安全策略限制! 解決方案:管理員身份啟動Windows PowerShell 在命令行中輸入set-ExecutionPolicy RemoteSigned 再使用yarn就可以了

SQL常見函數整理 _ LAG() 向上偏移

1. 用法 窗口函數,用于訪問窗口中當前行之前的行的數據。該函數可以根據需要計算當前行之前的值,使我們能夠輕松地比較不同行之間的差異和變化。 2. 基本語法 LAG(column, offset, default_value) OVER (ORDER BY column)column:代表在返回…

【UE5】資源(Asset)

了解UE游戲的基本構成 資源(Asset): 在UE中,資源(Asset)是指游戲中使用到的各種素材,例如模型、紋理、材質、聲音、動畫、藍圖、數據表格、關卡等(通常以uasset結尾),他…

Java shiro框架,切換身份后刷新subject的用戶屬性

/*** title 切換身份,登錄后,動態更改subject的用戶屬性* param principal* desc principal為用戶的認證信息*/ public static void reloadAuthorizing(User principal) throws Exception{Subject subject SecurityUtils.getSubject();String realmNam…

如何在springboot項目中使用minio上傳下載刪除文件

引入maven依賴 <!-- minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.2</version> </dependency>申請 bucket | access_key | secret_key 項目中配置相關參數 mini…

ROLLUP 的幾點說明(十七)

ROLLUP 最根本的作用是提高某些查詢的查詢效率&#xff08;無論是通過聚合來減少數據量&#xff0c;還是修改列順序以匹配前綴索引&#xff09;。因此 ROLLUP 的含義已經超出了“上卷”的范圍。這也是為什么在源代碼中&#xff0c;將其命名為 Materialized Index&#xff08;物…