進程與線程詳細介紹

目錄

一 進程概念

二 進程的組成

2.1 PCB

2.2 數據段

2.3 程序段

三 進程的五大特點

四 進程的創建與銷毀

五 線程概念

六 線程特征

七 進程與線程的區別與聯系

?區別

?聯系


一 進程概念

進程是程序的一次執行過程,是操作系統進行資源分配和調度的基本單位。

一個程序至少有一個進程,一個進程至少有一個線程
每個進程有獨立的內存空間和系統資源,一個進程的錯誤不會影響其他進程。?

二 進程的組成

2.1 PCB

PCB:進程控制塊。進程存在的唯一標識。用來描述進程的屬性信息

當進程被創建時,操作系統為其創建 PCB,當進程結束時,會回收其 PCB。

?進程控制塊 PCB 一般包含如下四類信息:

? ? ? ? 進程描述信息:用來讓操作系統區分各個進程,當進程被創建時,操作系統會為該進程分配一個唯一的、不重復的 “身份證號”— PID(ProcessID,進程 ID)。另外,進程描述信息還包含進程所屬的用戶 ID(UID)

? ? ? ? 進程控制和管理信息:記錄進程的運行情況。比如 CPU 的使用時間、磁盤使用情況、網絡流量使用情況等。

? ? ? ? 資源分配清單:記錄給進程分配了哪些資源。比如分配了多少內存、正在使用哪些 I/O 設備、正在使用哪些文件等。

? ? ? ? CPU 相關信息:進程在讓出 CPU 時,必須保存該進程在 CPU 中的各種信息,比如各種寄存器的值。用于實現進程切換,確保這個進程再次運行的時候恢復 CPU 現場,從斷點處繼續執行。這就是所謂的保存現場信息。

2.2 數據段

一個進程的數據段,可以是進程對應的程序加工處理的原始數據,也可以是程序執行時產生的中間或最終結果,即進程運行過程中的各種數據(比如程序中定義的變量)。

2.3 程序段

程序段就是能被進程調度時程序調度到CPU執行的程序代碼段(指令序列)。注意,程序可被多個進程共享,即多個進程可以運行同一個程序。同時掛三個 QQ 號,會對應三個 QQ 進程,它們的 PCB、數據段各不相同,但程序段的內容都是相同的(都是運行著相同的 QQ 程序)

三 進程的五大特點

動態性:進程是程序的一次執行過程,有著創建,活動,暫停,終止等過程。具有一定生命周期 。是動態的產生,變化和消亡的。動態性是最基本的特征

并發性:多個進程實體同時存在內存中。能在一段時間內同時運行。重要特征。引入進程的目的就是為了使程序能與其他進程的程序并發執行,提高資源利用率

獨立性:指進程實體是一個能獨立運行、獨立獲得資源和獨立接受調度的基本單元。

異步性:由于進程的相互制約,使得進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度走走停停、何時開始何時暫停何時結束不可預知的性質,就會導致執行結果的不可再現性,為此在操作系統中必須配置相應的進程同步機制。

結構性:每個進程都配置一個PCB對其進行描述。從結構上看,進程實體是由程序段、數據段和進程控制塊三部分組成的。

四 進程的創建與銷毀

創建: 通常通過?fork()?系統調用創建子進程。fork()?會復制父進程的地址空間和資源到子進程。

銷毀: 進程可以通過?exit()?終止自身,父進程可以通過?wait()?等待子進程的終止。

五 線程概念

同一進程中的線程共享資源,一個線程的錯誤可能會影響其他線程

線程是程序執行流的最小單元。一個進程可以包含多個線程,這些線程共享進程的資源(如內存空間、文件描述符等),但每個線程有其獨立的執行路徑和線程上下文(如寄存器狀態、棧等)。線程是操作系統調度的基本單位,它允許程序在并發執行時更加靈活和高效。

引入線程增加并發度。線程成為了程序執行流的最小單位。

可以把線程理解“輕量級進程”。
線程是一個基本的CPU執行單元,也是程序執行流的最小單位。
引入線程之后,不僅是進程之間可以并發,進程內的各線程之間也可以并發,從而進一步提升了系統的并發度,使得一個進程內也可以并發處理各種任務(如QQ視頻、文字聊天、傳文件)
引入線程后,進程只作為除CPU之外的系統資源的分配單元(如打印機、內存地址空間等都是分配給進程的)。

線程庫完成了對線程的管理工作

六 線程特征

  1. 輕量級

    • 線程是輕量級的執行單元,創建、切換和銷毀線程的開銷比進程小得多。

    • 線程共享進程的資源,因此不需要像進程那樣分配獨立的內存空間和系統資源。

  2. 并發性

    • 線程支持并發執行,多個線程可以在同一個進程中同時運行。

    • 并發性使得程序可以更高效地利用多核處理器,提高程序的性能。

  3. 共享資源

    • 同一進程中的多個線程共享進程的資源,如內存空間、文件描述符等。

    • 這種共享機制使得線程之間的通信和同步更加高效,但也增加了線程之間的競爭和沖突。

  4. 獨立性

    • 每個線程有其獨立的執行路徑和線程上下文,包括程序計數器(PC)、寄存器狀態和棧。

    • 線程的執行是獨立的,一個線程的執行不會直接影響其他線程的執行。

  5. 異步性

    • 線程的執行順序和速度是不可預測的,取決于操作系統的調度策略和系統資源的可用性。

    • 異步性使得程序的運行更加靈活,但也增加了程序設計的復雜性。

七 進程與線程的區別與聯系

計算機的核心是cpu,他承擔了所有計算任務,單個cpu一次只能運行一個任務,也就是說任意時刻cpu總是運行一個進程(任務),其他進程屬于非運行狀態。一個任務可以由多個線程協同來完成。進程的空間是可以由線程共享的,每個線程都可以使用這些共享內存,但是有些共享內存只能有一個線程使用,這代表一個線程使用這些共享內存時,其他線程必須等他結束才能使用。為了防止使用時其他線程進入,我們可以給它加一把鎖,叫互斥鎖mutex。防止多個進程與線程同時讀寫某一塊內存區域

?區別

1. 進程是程序的一次執行過程,是操作系統進行資源分配和調度的基本單位。每個進程都有獨立的內存空間,系統資源等

線程是進程的一個執行單元,是操作系統能進行調度的最小單位。同一進程中的多個線程共享進程的資源

2. 每個進程都有獨立的內存空間,系統資源如文件描述符,信號處理等。進程之間的資源是隔離的

同一進程中的線程共享進程的資源。線程之間的資源共享更加高效

3. 創建和銷毀進程的開銷大,線程的開銷小

4. 進程之間的通信需要通過進程通信ipc機制,如管道,消息隊列,共享內存等,通信開銷大

同一進程中的線程可以共享內存直接通信,開銷小,線程之間的通信更加高效

5. 每個進程都有獨立的內存空間和系統資源,一個進程的錯誤不會影響其他進程

同一進程中的線程共享資源,一個線程的錯誤可能會影響其他線程

6. 操作系統調度的基本單位是進程

線程是操作系統調度的最小單位,調度的粒度更小,可以更高效的利用多核處理器

?聯系

1. 線程是進程的一部分

一個進程可以包含多個線程,線程的生命周期依賴于進程的生命周期。線程的創建和銷毀必須在進程的上下文中進程

2. 共享資源

共享機制使得線程之間的通信和同步更加高效

3. 進程和線程都可以并發執行

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

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

相關文章

如何在服務器后臺運行Python腳本,并配置虛擬環境與GPU支持

使用Conda虛擬環境在服務器后臺運行Python腳本,并檢查GPU分配 在服務器開發環境中,我們需要確保Python腳本運行在指定的Conda虛擬環境中,并且確認是否正確分配了GPU資源。本文將通過一個完整的start.sh腳本,完成以下功能&#xff…

前端取經路——工程化渡劫:八戒的構建之道

大家好,我是老十三,一名前端開發工程師。前端工程化就像八戒的釘耙,看似簡單卻能降妖除魔。在本文中,我將帶你探索前端工程化的九大難題,從模塊化組織到CI/CD流程,從代碼規范到自動化測試,揭示這些工具背后的核心原理。無論你是初學者還是資深工程師,這些構建之道都能幫…

Ubuntu 安裝 Keepalived

Keepalived 是什么 Keepalived 是一個用于實現高可用性(High Availability, HA)的服務,是一款基于 VRRP 協議的高可用軟件,常用于主備切換和虛擬IP漂移,在服務故障時自動實現故障轉移。 Keepalived 的核心功能 功能說…

DHCP理解

文章目錄 DHCP理解DHCP的核心作用DHCP默認端口DHCP的工作原理(4個步驟)圖示說明(含中繼代理)DHCP Discover(客戶端發現階段)DHCP Offer(服務器提供階段)DHCP Request(客戶…

云計算-容器云-部署CICD-jenkins連接gitlab

安裝 Jenkins 將Jenkins部署到default命名空間下。要求完成離線插件的安裝,設置Jenkins的登錄信息和授權策略。 上傳BlueOcean.tar.gz包 [root@k8s-master-node1 ~]#tar -zxvf BlueOcean.tar.gz [root@k8s-master-node1 ~]#cd BlueOcean/images/ vim /etc/docker/daemon.json…

AI 大模型新浪潮:從 DeepSeek-Prover 到 Qwen3,再到 DeepSeek-R2,邁向自動推理的新時代20250507

🧠 AI 大模型新浪潮:從 DeepSeek-Prover 到 Qwen3,再到 DeepSeek-R2,邁向自動推理的新時代 🚀 引言:大模型,不止是語言處理器,而是思維建構者 在 2025 年春天,我們見證了…

觀察者模式(Observer Pattern)詳解

文章目錄 1. 什么是觀察者模式?2. 為什么需要觀察者模式?3. 觀察者模式的核心概念4. 觀察者模式的結構5. 觀察者模式的基本實現簡單的氣象站示例6. 觀察者模式的進階實現推模型 vs 拉模型6.1 推模型(Push Model)6.2 拉模型(Pull Model)7. 觀察者模式的復雜實現7.1 在線商…

前端代碼規范詳細配置

以下是現代前端項目的完整代碼規范配置方案,涵蓋主流技術棧和自動化工具鏈配置: 一、基礎工程配置 1. 項目結構規范 project/ ├── src/ │ ├── assets/ # 靜態資源 │ ├── components/ # 通用組件 │ ├── layouts/ …

Missashe考研日記-day34

Missashe考研日記-day34 1 專業課408 學習時間:3h學習內容: 今天是學習I/O管理第二小節的內容,聽了課也做了題,這是操作系統倒數第二節知識了,還差最后一節就完結了。知識點回顧: 1.I/O核心子系統&#x…

Milvus 向量數據庫詳解與實踐指南

一、Milvus 核心介紹 1. 什么是 Milvus? Milvus 是一款開源、高性能、可擴展的向量數據庫,專門為海量向量數據的存儲、索引和檢索而設計。它支持近似最近鄰搜索(ANN),適用于圖像檢索、自然語言處理(NLP&am…

算力經濟模型研究:從云計算定價到去中心化算力市場設計

引言:算力商品化的雙重革命 在H800 GPU集群的算力供給能力突破2.3 EFLOPS的今天,算力定價機制正經歷從"資源租賃"到"動態市場"的范式轉變。傳統云計算定價模型(如AWS按需實例)的靜態價格機制已難以適應大模型…

[D1,2] 貪心刷題

文章目錄 擺動序列最大子數組合買賣股票跳躍游戲跳躍2 擺動序列 不像是貪心,只要抓住擺動這個點,前一個上升,那下一個就要下降,記錄上一次的狀態為1的話,那下一次就要更新為-1,如果上一次為1,這…

Spring Boot操作MongoDB的完整示例大全

以下是基于Spring Boot操作MongoDB的完整示例大全&#xff0c;涵蓋增刪改查、聚合查詢、索引、事務等核心功能&#xff1a; 一、基礎CRUD操作 1. 環境配置 依賴配置&#xff08;pom.xml&#xff09; <dependency><groupId>org.springframework.boot</groupId…

【實戰教程】零基礎搭建DeepSeek大模型聊天系統 - Spring Boot+React完整開發指南

&#x1f525; 本文詳細講解如何從零搭建一個完整的DeepSeek AI對話系統&#xff0c;包括Spring Boot后端和React前端&#xff0c;適合AI開發入門者快速上手。即使你是編程萌新&#xff0c;也能輕松搭建自己的AI助手&#xff01; &#x1f4da;博主匠心之作&#xff0c;強推專欄…

Linux系統基本指令和知識指南

一、Linux系統簡介 Linux是一種自由和開放源代碼的類UNIX操作系統&#xff0c;由林納斯托瓦茲在1991年首次發布。它以穩定性、安全性和靈活性著稱&#xff0c;廣泛應用于服務器、嵌入式系統和個人計算機。 Linux主要特點&#xff1a; 開源免費 多用戶、多任務 良好的安全性…

【計算機視覺】OpenCV實戰項目:Long-Exposure:基于深度學習的長時間曝光合成技術

Long-Exposure&#xff1a;基于深度學習的長時間曝光合成技術 項目概述與技術背景項目核心功能技術原理 環境配置與安裝硬件要求建議詳細安裝步驟可選組件安裝 實戰應用指南1. 基礎使用&#xff1a;視頻轉長曝光2. 高級模式&#xff1a;自定義光軌合成3. 批量處理模式 技術實現…

TikTok 矩陣賬號運營實操細節:打造爆款矩陣

在 TikTok 的流量版圖里&#xff0c;打造 TikTok 矩陣賬號能顯著提升影響力與吸粉能力。而借助 AI 工具&#xff0c;更可為 TikTok 矩陣運營效率的提升賦能&#xff0c;讓運營如虎添翼。下面就為大家詳細講講其中的實操細節&#xff0c;并結合一些偽代碼示例輔助理解。 一、矩…

互聯網大廠Java求職面試:分布式系統中向量數據庫與AI應用的融合探索

互聯網大廠Java求職面試&#xff1a;分布式系統中向量數據庫與AI應用的融合探索 面試開場&#xff1a;技術總監與鄭薪苦的“較量” 技術總監&#xff08;以下簡稱T&#xff09;&#xff1a;鄭薪苦先生&#xff0c;請簡單介紹一下你在分布式系統設計方面的經驗。 鄭薪苦&…

【每日八股】學習 RocketMQ Day2:進階(一)

文章目錄 復習昨日內容為什么要使用消息隊列為什么選擇 RocketMQRocketMQ 的優缺點&#xff1f;談談你對 RocketMQ 的理解&#xff1f;消息隊列有哪些類型&#xff1f;RocketMQ 采用哪種消息隊列模型&#xff1f;消息的消費模式了解嗎&#xff1f;了解 RocketMQ 的基本架構嗎&a…

探索智能體開發新邊界:Cangjie Magic開源平臺體驗與解析

文章目錄 每日一句正能量前言一、Cangjie Magic的核心技術&#xff08;一&#xff09;Agent DSL架構&#xff08;二&#xff09;原生支持MCP通信協議&#xff08;三&#xff09;智能規劃功能 二、實際應用場景&#xff08;一&#xff09;智能客服系統&#xff08;二&#xff09…