Linux——进程系列知识详述(操作系统、PCB进程控制块、查看进程状态等)
文章目錄
- 一、馮諾依曼體系
- 二、操作系統(OS)
- 1.概念
- 2.設計OS的目的
- 3.如何“管理”
- 3.系統調用函數和庫函數
- 三、進程
- 1.基本概念
- 2.描述進程-PCB
- task_struct-PCB的一種
- task_ struct內容分類
- 3.查看進程
- 1.ps命令
- 2.`/proc`文件夾
一、馮諾依曼體系
了解進程之前,首先了解一些基本知識,如——馮諾依曼體系:我們常見的計算機,如筆記本。不常見的計算機、如服務器,大部分都服從馮諾依曼體系。
主要由五大部件組成:
1.存儲器用來存放數據和程序
2.運算器主要運行算數運算和邏輯運算,并將中間結果暫存到運算器中
3.控制器主要用來控制和指揮程序和數據的輸入運行,以及處理運算結果
4.輸入設備用來將人們熟悉的信息形式轉換為機器能夠識別的信息形式,常見的有鍵盤,鼠標等
5.輸出設備可以將機器運算結果轉換為人們熟悉的信息形式,如打印機輸出,顯示器輸出等
輸入單元:包括鍵盤,鼠標,掃描儀,寫板等;
中央處理器(CPU):含有運算器和控制器等;
輸出單元:打印機、顯示器等。
關于馮諾依曼體系,需強調:
- 這里的存儲器指的是內存
- 不考慮緩存情況,這里的CPU能且只能對內存進行讀寫,不能訪問外設(輸入或輸出設備
- 外設(輸入或輸出設備)要輸入或者輸出數據,也只能寫入內存或者從內存中讀取。
- 一句話,所有設備都只能直接和內存打交道。
特點:
- 馮諾依曼體系結構的指令和數據均采用二進制碼表示;
- 指令在存儲器中按順序存放,通常指令是按順序執行的,特定條件下,可以根據運算結果或者設定的條件改變執行順序;
- 指令和數據以同等地位存放于存儲器中,均可按地址尋訪;
- 指令由操作碼和地址碼組成,操作碼用來表示操作的性質,地址碼用來表示操作數所在存儲器中的位置;
二、操作系統(OS)
1.概念
任何計算機系統都包含一個基本的程序集合,稱為操作系統(OS)。籠統的理解,操作系統包括:
- 內核(進程管理,內存管理,文件管理,驅動管理)
- 其他程序(例如函數庫,shell程序等等)
2.設計OS的目的
- 與硬件交互,管理所有的軟硬件資源(操作系統也是‘軟件’)
- 為用戶程序(應用程序)提供一個良好的執行環境
在整個計算機軟硬件架構中,操作系統的定位是:一款純正的“搞管理”的軟件,所以說,操作系統最重要的作用也就是“管理”
3.如何“管理”
首先,操作系統實現管理可以分為兩部分—— 描述(結構體)+組織(鏈表)
描述使用自定義數據類型,如struct結構體
組織:使用雙向鏈表對描述的內容進行組織
通過下圖觀察操作系統在計算機中的定位:
可以看到操作系統所在位置正是整個計算機的中間位置,起到了承上啟下的作用。
3.系統調用函數和庫函數
在上面的圖中,我們看到操作系統上面的部分叫做系統調用接口,因此接下來就解釋一下系統調用接口和庫函數的區別。
系統調用接口:由操作系統內核為程序員提供的一系列內核函數,調用這些函數可以使用操作系統管理的資源;
庫函數:系統調用在使用上,功能比較基礎,對用戶的要求相對也比較高,所以,有心的開發者可以對部分系統調用進行適度封裝,從而形成庫,有了庫,就很有利于更上層用戶或者開發者進行二次開發。
查看函數類別
在linux系統中,我們可以使用man -函數名命令查看函數是系統調用函數/庫函數,如果是系統調用函數,左上角顯示(2),庫函數左上角顯示(3)。
三、進程
1.基本概念
首先了解程序:程序是經過源代碼編譯出來的文件,這個文件是靜態的。
其次了解進程:進程是程序執行的一個實例,是正在執行的程序、是動態的,從內核的角度看,進程是操作系統分配資源的實體。
2.描述進程-PCB
- 進程信息被放在一個叫做進程控制塊的數據結構中,可以理解為進程屬性的集合。
- 課本上稱之為PCB(process control block),Linux操作系統下的PCB是: task_struct。
task_struct-PCB的一種
- 在Linux中描述進程的結構體叫做task_struct。
- task_struct是Linux內核的一種數據結構,它會被裝載到RAM(內存)里并且包含著進程的信息。
task_ struct內容分類
- 標示符(pid): 描述本進程的唯一標示符,用來區別其他進程。(使用top命令可查看進程pid)
- 狀態: 任務狀態,退出代碼,退出信號等。
進程狀態可分為:
R:運行狀態
S:可中斷睡眠狀態
D:不可中斷睡眠狀態
T:暫停狀態
?? ctrl+z:使得一個進程變成暫停狀態,暫停后進程任然是存在,不同于ctrl+c
t:跟蹤狀態
?? 在gdb調試的時候會出現
X:死亡狀態
Z:僵尸狀態 - 優先級: 相對于其他進程的優先級。
- 程序計數器: 程序中即將被執行的下一條指令的地址。
- 內存指針: 包括程序代碼和進程相關數據的指針,還有和其他進程共享的內存塊的指針
- 上下文數據: 進程執行時處理器的寄存器中的數據[休學例子,要加圖CPU,寄存器]。
- I/O狀態信息: 包括顯示的I/O請求,分配給進程的I/O設備和被進程使用的文件列表。
- 記賬信息: 可能包括處理器時間總和,使用的時鐘數總和,時間限制,記賬號等。
- 其他信息
3.查看進程
1.ps命令
可以通過ps aux命令和ps-ef命令查看進程狀態。也可以配合管道查看想觀察的進程,如ps aux|grep [可執行程序],使用該命令可以查看指定進程的狀態
2./proc文件夾
/proc`文件夾保存了當前操作系統維護的所有進程信息,每一個進程都是一個文件夾。該文件夾下的文件以pid命名,代表每個進程。
總結
以上是生活随笔為你收集整理的Linux——进程系列知识详述(操作系统、PCB进程控制块、查看进程状态等)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++——入门知识点汇总(命名空间、缺省
- 下一篇: 计算机视觉——利用openCV与Sock