《操作系統 - 清華大學》8 -1:進程的組成

文章目錄

  • 1. 進程的組成
  • 2. 進程與程序的聯系
  • 3. 進程與程序的區別
  • 4. 進程與程序關系

1. 進程的組成

在這里插入圖片描述
進程具體包含哪些東西:

  1. 首先要執行相應的代碼,所以執行代碼需要放到內存中
  2. 代碼執行需要處理數據,數據需要放到內存中
  3. 需要知道現在要執行哪條指令,需要一個相應的記錄,用程序計數器表示,程序計數器存著下一條要執行指令在什么地方
  4. 同時在處理過程中會用到大量 CPU 寄存器,寄存器會在動態變化
  5. 還有會用到很多計算機提供的資源,包含內存資源,文件系統,網絡等等一系列資源

總之,進程在執行過程中包含了正在運行的程序的所有狀態信息,狀態信息是比較抽象的概念。

2. 進程與程序的聯系

在這里插入圖片描述
進程不等于程序,進程是動態執行過程,而程序是靜態代碼。

  • 程序和進程到底什么樣關系?

    程序是產生進程的基礎,因為進程執行的所有功能其實在程序中有具體的描述,進程執行功能受制于程序代碼,代碼已經限制了進程到底實現什么樣的功能,所以說程序是產生進程的基礎。

    另一方面,程序的每次執行構成不同進程,其實可以看到程序只有一份,它放在硬盤中,但可以多次執行這個程序,多次執行程序得到結果不一定是一樣的,因為數據可以不一樣,當這個程序在運行過程中,它在內存中處理的數據是不一樣,那有可能導致它產生行為不一樣,這也意味著一個程序多份執行的時候,由于有可能處理的數據不一樣,它獲得的資源不一樣,那么最后得到效果也是不一樣,所以說程序的每一次執行,構成不同的進程,而不是同一個進程。

不管怎么說,進程的執行過程是程序功能的體現,雖然可能輸入不一樣,導致輸出不一樣,但整體的功能體現是一樣。

通過多次執行,一個程序可以應對多個進程,通過調用關系一個進程也可以包含多個程序,因為有可能多個程序合在一起來完成一個更大的功能體現,可以看到進程和程序之間是一種比較復雜的多對多的映射關系。

3. 進程與程序的區別

在這里插入圖片描述
進程是動態的體現,而程序是靜態的代碼,程序是有序代碼的集合,進程是程序的執行,所以說進程實際上是程序的具體體現。進程在執行過程中需要注意有核心態和用戶態度區分,核心態在操作系統中運行,但是寫代碼時候并沒寫操作系統代碼,那為什么有核心態呢?寫代碼都是運行在用戶態,那為什么有核心態存在?其實進程在執行中需要去完成特定功能,功能只有操作系統才能提供,比如說要讀文件,讀寫文件的過程涉及到跟具體硬盤打交道,那這過程全是操作系統來完成,所以說進程只需給操作系統發出請求,操作系統代表進程在內核中執行,這時候說進程處于核心態,因為它在內核中執行。

進程是暫時的,而程序是永久的。執行一個程序,以進程形式在內存中運行,占用 CPU 運行,整個過程有開始到結束的變化過程,過程結束之后進程就結束了。但程序不一樣,程序保存在硬盤中,只要硬盤不壞,程序可以長久地保存。

在具體組成方面也有不一樣的地方,雖然說進程用到程序的代碼段、數據段等數據結構,但進程執行中有其它一些變化,處理數據的時候,數據在變,而這一點在程序的組成中是不存在的,比如它處理輸入數據,最后產生輸出數據,以及為了管理這個進程,操作系統所建立進程控制塊等等,這些信息在程序中是沒有的。所以應該說進程包含了程序部分,還包含一些新的部分。

4. 進程與程序關系

在這里插入圖片描述

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

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

相關文章

【Java】String類API

創建字符串 字符串字面量"Hello"高效,常量池復用常見、簡單的字符串創建 new 關鍵字new String("Hello")每次創建新對象,性能開銷較高顯式創建新對象 字符數組new String(char[])轉換字符數組字符數組轉字符串 StringBuilder/St…

數據結構初階---二叉樹---堆

一、樹 1.樹的概念 樹是一種非線性的數據結構,由n(n≥0)個有限結點組成的一個有層次關系的集合。形狀類似一棵倒掛的樹,根朝上,分支向下。 根結點沒有前驅結點,可以有n(n≥0)個后繼結點。 其余結點被分為M個互不相交的集合&am…

CocosCreator對配置文件加密

一、加密 1.首先假設你已經將Excel表格數據導出為了json數據 2.然后可以通關nodejs對其進行xor加密 const fs require(fs);// 讀取配置文件 const path "hero_info.json"; const data fs.readFileSync(path, utf-8); const jsonObject JSON.parse(data);// XO…

學習 Dockerfile 常用指令

學習 Dockerfile 常用指令 在構建 Docker 鏡像時,Dockerfile 文件是一份至關重要的配置文件,它定義了構建鏡像的所有步驟。通過在 Dockerfile 中使用不同的指令(命令),我們可以控制鏡像的構建過程、設置環境、指定執行…

D95【python 接口自動化學習】- pytest進階之fixture用法

day95 pytest的fixture詳解(二) 學習日期:20241210 學習目標:pytest基礎用法 -- pytest的fixture詳解(二) 學習筆記: fixture(autouseTrue) func的autouse是TRUE時,所有函數方法…

C語言 字符串輸入輸出函數、scanf(“%[^\n]“,)可輸入空格 、fgets刪除換行符

字符串輸入函數: scanf("%s",數組名) gets(數組名) fgets() --- 文件流輸入函數 函數原型: int scanf( const char *format, ...…

深度學習camp-第J4周:ResNet與DenseNet結合探索

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 本周任務: 探索ResNet和DenseNet的結合可能性本周任務較難,我們在chatGPT的幫助下完成 一、網絡的構建 設計一種結合 ResNet 和 Den…

「iOS」通過CoreLocation Framework深入了解MVC架構

「iOS」通過CoreLocation Framework重新了解多界面傳值以及MVC架構 文章目錄 「iOS」通過CoreLocation Framework重新了解多界面傳值以及MVC架構前言CoreLocation了解根據需求建模設計屬性方法設計協議傳值Block傳值KVONotification通知方式 總結參考文章 前言 在這個學期的前…

Debezium系列之:使用Debezium采集oceanbase數據庫

Debezium系列之:使用Debezium采集oceanbase數據庫 一、oceanbase數據庫二、安裝OceanBase三、安裝oblogproxy四、基于Docker的簡單采集案例五、生產實際應用案例Debezium 是一個開源的分布式平臺,用于監控數據庫變化和捕捉數據變動事件,并以事件流的形式導出到各種消費者。D…

線程sleep的時候會釋放鎖嗎

來看一段代碼&#xff1a; void task1(mutex &m) {cout << "thread 1 init..." << endl;{std::unique_lock<mutex> lock(m);cout << "thread 1 getLock" << endl;sleep(5);}cout << "thread 1 freeLock&quo…

wordpress建站--如何用Let‘s Encrypt給網站添加免費ssl證書,支持https訪問

本文首發網站&#xff1a;https://www.click234.com 默認情況下我們的網站是http訪問&#xff0c;為了增加訪問安全性&#xff0c;我們需要添加ssl證書&#xff0c;支持采用https方式訪問&#xff0c;今天我們來看下怎么創建免費的ssl證書--Lets Encrypt 使用 Certbot 自動化工…

青少年編程與數學 02-004 Go語言Web編程 02課題、依賴管理

青少年編程與數學 02-004 Go語言Web編程 02課題、依賴管理 課題摘要:一、項目結構各目錄說明&#xff1a; 二、依賴項三、依賴管理任務四、依賴管理步驟1. 初始化Go Modules項目2. 添加依賴3. 指定依賴版本4. 更新依賴5. 清理未使用的依賴6. 離線工作7. 模塊隔離8. 可重現構建 …

Debezium OracleConnection 分析

Debezium OracleConnection 分析 目錄 1. 概述2. 核心功能3. 實現分析4. 使用場景5. 示例分析6. 最佳實踐7. 總結1. 概述 OracleConnection 是 Debezium Oracle 連接器中的數據庫連接管理組件,主要負責: 數據庫連接的建立和管理事務控制查詢執行元數據操作LogMiner 會話管理…

【每日一練 基礎題】[藍橋杯 2022 省 A] 求和

[藍橋杯 2022 省 A] 求和 暴力破解會超時,用因式分解的平方差公式 a2 2abb2(a)2 a-2abb2(a-b)2 輸出整數((a1a2a3…an)-a1-a2-a3-…-an)/2 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);l…

ArrayList源碼分析、擴容機制面試題,數組和List的相互轉換,ArrayList與LinkedList的區別

目錄 1.java集合框架體系 2. 前置知識-數組 2.1 數組 2.1.1 定義&#xff1a; 2.1.2 數組如何獲取其他元素的地址值&#xff1f;&#xff08;尋址公式&#xff09; 2.1.3 為什么數組索引從0開始呢&#xff1f;從1開始不行嗎&#xff1f; 3. ArrayList 3.1 ArrayList和和…

【C++】- 掌握STL List類:帶你探索雙向鏈表的魅力

文章目錄 前言&#xff1a;一.list的介紹及使用1. list的介紹2. list的使用2.1 list的構造2.2 list iterator的使用2.3 list capacity2.4 list element access2.5 list modi?ers2.6 list的迭代器失效 二.list的模擬實現1. list的節點2. list的成員變量3.list迭代器相關問題3.1…

Docker--Docker Container(容器) 之容器實戰

對docker容器的前兩篇文章 Docker–Docker Container(容器) 之 操作實例 Docker–Docker Container(容器&#xff09; Mysql容器化安裝 我們可以先在Docker Hub上查看對應的Mysql鏡像,拉取對應的鏡像&#xff1a; 拉取mysql5.7版本的鏡像&#xff1a; docker pull mysql:5.7…

ModuleNotFoundError: No module named ‘torchvision.transforms.functional_tensor‘

問題&#xff1a; 運行代碼時&#xff0c;報錯&#xff1a; … File “/home/xzy/anaconda3/envs/groundinggpt/lib/python3.10/site-packages/pytorchvideo/transforms/augmix.py”, line 6, in from pytorchvideo.transforms.augmentations import ( File “/home/xzy/anac…

【匯編語言】內中斷(二) —— 安裝自己的中斷處理程序:你也能控制0號中斷

文章目錄 前言1. 編程處理0號中斷1.1 效果演示1.2 分析所要編寫的中斷處理程序1.2.1 引發中斷1.2.2 中斷處理程序1.2.3 中斷處理程序do0應該存放的位置1.2.4 中斷向量表的修改1.2.5 總結 1.3 程序框架1.4 注意事項1.5 從CPU的角度看中斷處理程序1.6 一些問題的思考與解答 2. 安…

華為OD E卷(100分)23-連續字母長度

前言 工作了十幾年&#xff0c;從普通的研發工程師一路成長為研發經理、研發總監。臨近40歲&#xff0c;本想辭職后換一個相對穩定的工作環境一直干到老, 沒想到離職后三個多月了還沒找到工作&#xff0c;愁腸百結。為了讓自己有點事情做&#xff0c;也算提高一下自己的編程能力…