国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux】深入理解進程概念

這篇具有很好參考價值的文章主要介紹了【Linux】深入理解進程概念。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Linux】深入理解進程概念,Linux,linux,服務器,運維
【Linux】深入理解進程概念,Linux,linux,服務器,運維

個人主頁:??在肯德基吃麻辣燙
我的gitee:Linux倉庫
個人專欄:Linux專欄
分享一句喜歡的話:熱烈的火焰,冰封在最沉默的火山深處


前言

本篇文章繼上一篇的馮諾依曼體系結構和操作系統(tǒng)這兩個軟硬件的概念之后,開始講解Linux下三座大山之一的進程

因為進程概念雖然不是很多,但比較難以理解,因為它離我們?nèi)粘I畋容^遠,比較抽象,本文章以最平易近人的語言和生活中我們都熟悉的例子對進程進行剖析,希望這篇文章能進一步幫助你理解進程的概念,吃透Linux的其中一座大山。

廢話不多說,我們現(xiàn)在開始。


淺談進程概念

  • 進程到底是什么呢?

這里給出一個比較簡單的理解:

一個加載到內(nèi)存的程序就叫做進程。

正在運行的程序,也叫做進程。

我們可以這樣理解,進程,進:進入,程:程序,進入內(nèi)存的程序,就是進程。

自從我們理解馮諾依曼之后,程序加載到內(nèi)存這件事情我們就可以輕松理解。前面我們講過,操作系統(tǒng)是一款進行管理的軟件。 既然操作系統(tǒng)是軟件,那就應該也會被加載到內(nèi)存中運行。我們平時所說的啟動電腦,就是先啟動操作系統(tǒng),也就是將操作系統(tǒng)加載到內(nèi)存中。

以我的電腦為例,當打開任務管理器時,下面一覽無余的任務等,這些就是進程,正在運行的程序。【Linux】深入理解進程概念,Linux,linux,服務器,運維

1. 進程和操作系統(tǒng)的聯(lián)系

其實,程序是一堆數(shù)據(jù)和代碼,最先是被存放到磁盤中。我們知道啟動電腦時,操作系統(tǒng)也會被加載到內(nèi)存中運行,在內(nèi)存中有一塊空間屬于操作系統(tǒng)自己的數(shù)據(jù)和代碼。
【Linux】深入理解進程概念,Linux,linux,服務器,運維

當我們想要運行整個程序時,由于CPU只會和內(nèi)存打交道,不會直接和磁盤交互,這就注定了程序想要運行必須加載到內(nèi)存中,這個同時也遵守了馮諾依曼體系結構。


  • 這時候我們仔細想想,只能由一個程序能加載到內(nèi)存里面嗎?

其實并不是,我們玩電腦的時候,會同時啟動幾個軟件,我們會一邊看b站一邊登錄qq和微信,一邊敲代碼,這些都可以同時進行。

所以,一個操作系統(tǒng),是可以同時運行多個進程的!

這就像大學里面有大一的,有大二的,有在實習的,有天天在宿舍打游戲的一樣,一個操作系統(tǒng)要想同時運行那么多個進程,就必須將進程管理起來!

  • 操作系統(tǒng)如何管理進程呢?

還記得上篇文章那句貫穿整個Linux的話嗎?

先描述,再組織

描述的過程就是讓操作系統(tǒng)先認識進程,再將進程用一個struct結構體描述起來,然后將眾多進程全部都具體化,而對于進程的管理無非就是多一個進程,少一個進程等等這些操作,所以操作系統(tǒng)再將進程組織起來,就能達到管理。

2.描述進程的對象——PCB

從上面我們可以知道,任何一個程序,加載到內(nèi)存時,操作系統(tǒng)對進程進行描述時,會把進程具象化成一個struct結構體,而這個結構體就是PCB,全稱是Process Ctrl Block:進程控制塊。

怎么理解進程PCB?


  • 這里有一個問題:人是怎么認識一個事物的?

假如這里有一個蘋果,我們都會說,這個蘋果是圓的,是紅色的,大大的一個東西,還是一個甜甜的水果。

又譬如對你大學舍友的描述,長得怎么樣,兩個眼睛扛著兩片眉毛,一個鼻子,一張嘴巴,愛好什么,喜歡做什么等等。

可以看出來,這些描述一個事物,就是通過事物本身的屬性來描述的!

其實我們對一個事物本身并不了解,而是通過該事物的大量屬性來了解這個事物,當屬性足夠多時,這一堆屬性的集合,就是目標事物本身!

所以描述進程的對象——PCB,就是進程屬性的集合!


到這里我們再對程序加載到內(nèi)存這件事情進一步詳談:

程序加載到內(nèi)存中時:

  • 1.把數(shù)據(jù)和代碼都加載到內(nèi)存中
  • 2.同時創(chuàng)建描述該進程的PCB對象并加載到內(nèi)存中

這就像是,大學新生考上了某所學校時,要證明我真正在那所學校了,就需要在學校的教務系統(tǒng)錄入我的名字信息等等。也許該名同學還在放暑假,可是當學校教務系統(tǒng)有該同學的信息時, 就表明這名同學真正的來這所大學就讀了。

深談進程概念

從前面我們可以知道,一個程序加載到內(nèi)存,一是程序本身的數(shù)據(jù)和代碼加載到內(nèi)存,二是操作系統(tǒng)創(chuàng)建了一個PCB對象并加載到內(nèi)存

所以,單純的數(shù)據(jù)和代碼不叫進程,單純的PCB對象也不叫進程,而是數(shù)據(jù)和代碼 + 描述該進程的PCB結構體 = 進程!
1)進程的數(shù)據(jù)和代碼是程序員寫的
2)描述該進程的PCB結構體是操作系統(tǒng)維護的

可以想想,在學校中我們對學生的管理是看學生的及格率,掛科率,學分績,宿舍號等屬性進行管理的。

所以,操作系統(tǒng)對進程的管理并不是對數(shù)據(jù)和代碼的管理,而是對描述該進程的PCB結構體進行管理!

因為這個內(nèi)核PCB結構體就是該進程屬性的集合!

【Linux】深入理解進程概念,Linux,linux,服務器,運維


可是,操作系統(tǒng)對進程進行管理,不只是要知道該進程的屬性值,還要獲取進程的數(shù)據(jù)和代碼。因此,在描述該進程的PCB結構體中,一定有指向該進程數(shù)據(jù)和代碼指針信息!

就像管理學生,學校老師如何通過學生的屬性去獲取指向學生數(shù)據(jù)的 “ 指針信息 ”?

其實就是手機號。手機號是該學生的屬性值,但是這個屬性可以找到學生這個人!

以上就是關于操作系統(tǒng)如何對進程進行描述的過程。


3. 對進程的組織操作

通過上面的信息可以知道,操作系統(tǒng)會對多個進程進行描述,管理這些進程的時候就管理對應描述進程的PCB對象就可以了。

在PCB結構體中大概有這些信息:
【Linux】深入理解進程概念,Linux,linux,服務器,運維
前面說過,操作系統(tǒng)對進程的管理方式是:
先描述,再組織。

那么該如何對那么多的進程組織起來呢?
其實我們可以再PCB結構體中再加一個指針信息:

struct PCB* next,該指針指向下一個PCB結構體對象,如下圖:
【Linux】深入理解進程概念,Linux,linux,服務器,運維

從而將操作系統(tǒng)對進程的管理轉化成對一個鏈表的增刪查改!

這個過程就是對進程進行組織的過程!

總結:進程 = 內(nèi)核PCB數(shù)據(jù)結構 + 自己的代碼和數(shù)據(jù)。
操作系統(tǒng)對進程的管理是先描述,再組織的過程;操作系統(tǒng)對進程的數(shù)據(jù)管理是被弱化的,更重要的是對進程的PCB結構體進行管理,然后將這一個個的PCB結構體連接起來,就形成了對鏈表的增刪查改。


總結

本篇文章重點在于理解進程的概念就可以了,進程的相關內(nèi)容比較多且難以理解,從進程概念入手是最合適的,后面會持續(xù)更新如何創(chuàng)建進程,進程的狀態(tài)等詳細的內(nèi)容,更好地理解進程,貫穿整個Linux。文章來源地址http://www.zghlxwxcb.cn/news/detail-634461.html

到了這里,關于【Linux】深入理解進程概念的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 藍易云:Linux系統(tǒng)sshd命令 – openssh服務器守護進程

    sshd是Linux系統(tǒng)中的一個守護進程,它提供了遠程登錄服務和安全的文件傳輸功能。以下是sshd的詳細教程。 1. 安裝openssh-server 在Debian/Ubuntu上安裝openssh-server命令如下: sudo apt-get update sudo apt-get install openssh-server 在CentOS/RHEL上安裝openssh-server命令如下: sudo yum update sudo yum install

    2024年02月16日
    瀏覽(26)
  • 基于linux下的高并發(fā)服務器開發(fā)(第二章)- 2.7 進程退出、孤兒進程、僵尸進程

    基于linux下的高并發(fā)服務器開發(fā)(第二章)- 2.7 進程退出、孤兒進程、僵尸進程

    ? 父進程運行結束,但子進程還在運行(未運行結束),這樣的子進程就稱為孤兒進程 (Orphan Process)。 ? 每當出現(xiàn)一個孤兒進程的時候,內(nèi)核就把孤兒進程的父進程設置為 init ,而 init 進程會循環(huán)地 wait() 它的已經(jīng)退出的子進程。這樣,當一個孤兒進程凄涼地結束 了其生

    2024年02月16日
    瀏覽(24)
  • Linux高并發(fā)服務器開發(fā)---筆記1(環(huán)境搭建、系統(tǒng)編程、多進程)

    Linux高并發(fā)服務器開發(fā)---筆記1(環(huán)境搭建、系統(tǒng)編程、多進程)

    0613 首先這整個系列筆記屬于筆記①:牛客校招沖刺集訓營—C++工程師中的 第四章 筆記。 視頻課鏈接: 視頻1:Linux高并發(fā)服務器開發(fā)(40h); 視頻2:第4章 項目制作與技能提升(錄播)(26h30min); 視頻課3: 第5章 高頻考點與真題精講(錄播)中的 5.10-5.13 項目回顧 有個學

    2024年02月15日
    瀏覽(108)
  • 【Linux】進程學習(1)---理解進程概念

    【Linux】進程學習(1)---理解進程概念

    數(shù)學家馮·諾依曼提出了計算機制造的三個基本原則,即采用二進制邏輯、程序存儲執(zhí)行以及計算機由五個部分組成(運算器、控制器、存儲器、輸入設備、輸出設備),這套理論被稱為馮·諾依曼體系結構。我們常見的計算機,如筆記本。我們不常見的計算機,如服務器,大

    2023年04月25日
    瀏覽(22)
  • linux 服務器進程、端口查找,nginx 配置日志查找,lsof 命令詳解

    linux 服務器進程、端口查找,nginx 配置日志查找,lsof 命令詳解

    1.1 使用查看端口號對應的進程信息 方式一 : 使用netstat命令 -t:顯示TCP連接 -u:顯示UDP連接 -l:僅顯示監(jiān)聽狀態(tài)的連接 -n:以數(shù)字形式顯示端口號,而不是以服務名稱顯示 通過管道符號|將netstat的輸出結果傳遞給grep命令,用于過濾出包含指定端口號的行。 執(zhí)行命令后,終端

    2024年02月04日
    瀏覽(32)
  • 【Linux】對進程概念的理解

    【Linux】對進程概念的理解

    進程定義? 進程是一個具有一定獨立功能的程序在一個數(shù)據(jù)集合上依次動態(tài)執(zhí)行的 過程 。進程是一個正在執(zhí)行的程序的實例,包括程序計數(shù)器、寄存器和程序變量的當前值。 進程特征 1.進程依賴于程序運行而存在,進程是動態(tài)的,程序是靜態(tài)的。 當一個程序被加載到內(nèi)存當

    2024年02月09日
    瀏覽(17)
  • Linux 常用操作命令(CentOS 7.0)- 故障定位:服務器負載、進程管理、日志分析

    系統(tǒng)經(jīng)研發(fā)測試上線后,如果運行期間出現(xiàn)了BUG,需要對服務故障進行定位,一般會查看服務器負載、服務狀態(tài)、進程管理、服務日志等。 本文以CentOS 7.0 操作系統(tǒng)上的命令操作作為示例進行記錄。 #服務器負載 完整參見:http://www.laobingbiji.com/note/detail.html?note_id=20231115154337

    2024年01月17日
    瀏覽(99)
  • Linux中 socket編程中多進程/多線程TCP并發(fā)服務器模型

    一次只能處理一個客戶端的請求,等這個客戶端退出后,才能處理下一個客戶端。 缺點:循環(huán)服務器所處理的客戶端不能有耗時操作。 模型 源碼 可以同時處理多個客戶端請求 父進程 / 主線程專門用于負責連接,創(chuàng)建子進程 / 分支線程用來與客戶端交互。 模型 源碼 模型 源

    2024年02月12日
    瀏覽(23)
  • 【Linux】初步理解操作系統(tǒng)和進程概念

    【Linux】初步理解操作系統(tǒng)和進程概念

    操作系統(tǒng)是一款純正的 “搞管理” 的文件 。 那操作系統(tǒng)為什么要管理文件? “管理” 又是什么? 它是怎么管理的? 1.操作系統(tǒng)幫助用戶,管理好底層的軟硬件資源; 2.為了給用戶提供一個良好,安全的環(huán)境 即操作系統(tǒng)通過管理好底層的軟硬件資源,為用戶提供一個良好

    2024年02月15日
    瀏覽(16)
  • [Linux] 網(wǎng)絡編程 - 初見TCP套接字編程: 實現(xiàn)簡單的單進程、多進程、多線程、線程池tcp服務器

    [Linux] 網(wǎng)絡編程 - 初見TCP套接字編程: 實現(xiàn)簡單的單進程、多進程、多線程、線程池tcp服務器

    網(wǎng)絡的上一篇文章, 我們介紹了網(wǎng)絡變成的一些重要的概念, 以及 UDP套接字的編程演示. 還實現(xiàn)了一個簡單更簡陋的UDP公共聊天室. [Linux] 網(wǎng)絡編程 - 初見UDP套接字編程: 網(wǎng)絡編程部分相關概念、TCP、UDP協(xié)議基本特點、網(wǎng)絡字節(jié)序、socket接口使用、簡單的UDP網(wǎng)絡及聊天室實現(xiàn)…

    2024年02月16日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包