日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux——进程系列知识详述(操作系统、PCB进程控制块、查看进程状态等)

發(fā)布時(shí)間:2025/3/21 linux 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux——进程系列知识详述(操作系统、PCB进程控制块、查看进程状态等) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、馮諾依曼體系
  • 二、操作系統(tǒng)(OS)
    • 1.概念
    • 2.設(shè)計(jì)OS的目的
    • 3.如何“管理”
    • 3.系統(tǒng)調(diào)用函數(shù)和庫(kù)函數(shù)
  • 三、進(jìn)程
    • 1.基本概念
    • 2.描述進(jìn)程-PCB
      • task_struct-PCB的一種
      • task_ struct內(nèi)容分類
    • 3.查看進(jìn)程
      • 1.ps命令
      • 2.`/proc`文件夾

一、馮諾依曼體系

了解進(jìn)程之前,首先了解一些基本知識(shí),如——馮諾依曼體系:我們常見(jiàn)的計(jì)算機(jī),如筆記本。不常見(jiàn)的計(jì)算機(jī)、如服務(wù)器,大部分都服從馮諾依曼體系。

主要由五大部件組成:

1.存儲(chǔ)器用來(lái)存放數(shù)據(jù)和程序

2.運(yùn)算器主要運(yùn)行算數(shù)運(yùn)算和邏輯運(yùn)算,并將中間結(jié)果暫存到運(yùn)算器中

3.控制器主要用來(lái)控制和指揮程序和數(shù)據(jù)的輸入運(yùn)行,以及處理運(yùn)算結(jié)果

4.輸入設(shè)備用來(lái)將人們熟悉的信息形式轉(zhuǎn)換為機(jī)器能夠識(shí)別的信息形式,常見(jiàn)的有鍵盤,鼠標(biāo)等

5.輸出設(shè)備可以將機(jī)器運(yùn)算結(jié)果轉(zhuǎn)換為人們熟悉的信息形式,如打印機(jī)輸出,顯示器輸出等

輸入單元:包括鍵盤,鼠標(biāo),掃描儀,寫板等;
中央處理器(CPU):含有運(yùn)算器和控制器等;
輸出單元:打印機(jī)、顯示器等。

關(guān)于馮諾依曼體系,需強(qiáng)調(diào):

  • 這里的存儲(chǔ)器指的是內(nèi)存
  • 不考慮緩存情況,這里的CPU能且只能對(duì)內(nèi)存進(jìn)行讀寫,不能訪問(wèn)外設(shè)(輸入或輸出設(shè)備
  • 外設(shè)(輸入或輸出設(shè)備)要輸入或者輸出數(shù)據(jù),也只能寫入內(nèi)存或者從內(nèi)存中讀取。
  • 一句話,所有設(shè)備都只能直接和內(nèi)存打交道。

特點(diǎn):

  • 馮諾依曼體系結(jié)構(gòu)的指令和數(shù)據(jù)均采用二進(jìn)制碼表示;
  • 指令在存儲(chǔ)器中按順序存放,通常指令是按順序執(zhí)行的,特定條件下,可以根據(jù)運(yùn)算結(jié)果或者設(shè)定的條件改變執(zhí)行順序;
  • 指令和數(shù)據(jù)以同等地位存放于存儲(chǔ)器中,均可按地址尋訪;
  • 指令由操作碼和地址碼組成,操作碼用來(lái)表示操作的性質(zhì),地址碼用來(lái)表示操作數(shù)所在存儲(chǔ)器中的位置;

二、操作系統(tǒng)(OS)

1.概念

任何計(jì)算機(jī)系統(tǒng)都包含一個(gè)基本的程序集合,稱為操作系統(tǒng)(OS)。籠統(tǒng)的理解,操作系統(tǒng)包括:

  • 內(nèi)核(進(jìn)程管理,內(nèi)存管理,文件管理,驅(qū)動(dòng)管理)
  • 其他程序(例如函數(shù)庫(kù),shell程序等等)

2.設(shè)計(jì)OS的目的

  • 與硬件交互,管理所有的軟硬件資源(操作系統(tǒng)也是‘軟件’)
  • 為用戶程序(應(yīng)用程序)提供一個(gè)良好的執(zhí)行環(huán)境

在整個(gè)計(jì)算機(jī)軟硬件架構(gòu)中,操作系統(tǒng)的定位是:一款純正的“搞管理”的軟件,所以說(shuō),操作系統(tǒng)最重要的作用也就是“管理

3.如何“管理”

首先,操作系統(tǒng)實(shí)現(xiàn)管理可以分為兩部分—— 描述(結(jié)構(gòu)體)+組織(鏈表)

描述使用自定義數(shù)據(jù)類型,如struct結(jié)構(gòu)體
組織:使用雙向鏈表對(duì)描述的內(nèi)容進(jìn)行組織

通過(guò)下圖觀察操作系統(tǒng)在計(jì)算機(jī)中的定位:

可以看到操作系統(tǒng)所在位置正是整個(gè)計(jì)算機(jī)的中間位置,起到了承上啟下的作用。

3.系統(tǒng)調(diào)用函數(shù)和庫(kù)函數(shù)

在上面的圖中,我們看到操作系統(tǒng)上面的部分叫做系統(tǒng)調(diào)用接口,因此接下來(lái)就解釋一下系統(tǒng)調(diào)用接口和庫(kù)函數(shù)的區(qū)別。

系統(tǒng)調(diào)用接口:由操作系統(tǒng)內(nèi)核為程序員提供的一系列內(nèi)核函數(shù),調(diào)用這些函數(shù)可以使用操作系統(tǒng)管理的資源;

庫(kù)函數(shù):系統(tǒng)調(diào)用在使用上,功能比較基礎(chǔ),對(duì)用戶的要求相對(duì)也比較高,所以,有心的開(kāi)發(fā)者可以對(duì)部分系統(tǒng)調(diào)用進(jìn)行適度封裝,從而形成庫(kù),有了庫(kù),就很有利于更上層用戶或者開(kāi)發(fā)者進(jìn)行二次開(kāi)發(fā)。

查看函數(shù)類別

在linux系統(tǒng)中,我們可以使用man -函數(shù)名命令查看函數(shù)是系統(tǒng)調(diào)用函數(shù)/庫(kù)函數(shù),如果是系統(tǒng)調(diào)用函數(shù),左上角顯示(2),庫(kù)函數(shù)左上角顯示(3)。


三、進(jìn)程

1.基本概念

首先了解程序程序是經(jīng)過(guò)源代碼編譯出來(lái)的文件,這個(gè)文件是靜態(tài)的。
其次了解進(jìn)程進(jìn)程是程序執(zhí)行的一個(gè)實(shí)例,是正在執(zhí)行的程序、是動(dòng)態(tài)的,從內(nèi)核的角度看,進(jìn)程是操作系統(tǒng)分配資源的實(shí)體

2.描述進(jìn)程-PCB

  • 進(jìn)程信息被放在一個(gè)叫做進(jìn)程控制塊的數(shù)據(jù)結(jié)構(gòu)中,可以理解為進(jìn)程屬性的集合
  • 課本上稱之為PCB(process control block),Linux操作系統(tǒng)下的PCB是: task_struct

task_struct-PCB的一種

  • 在Linux中描述進(jìn)程的結(jié)構(gòu)體叫做task_struct。
  • task_struct是Linux內(nèi)核的一種數(shù)據(jù)結(jié)構(gòu),它會(huì)被裝載到RAM(內(nèi)存)里并且包含著進(jìn)程的信息。

task_ struct內(nèi)容分類

  • 標(biāo)示符(pid): 描述本進(jìn)程的唯一標(biāo)示符,用來(lái)區(qū)別其他進(jìn)程。(使用top命令可查看進(jìn)程pid)
  • 狀態(tài): 任務(wù)狀態(tài),退出代碼,退出信號(hào)等。
    進(jìn)程狀態(tài)可分為:
    R:運(yùn)行狀態(tài)
    S:可中斷睡眠狀態(tài)
    D:不可中斷睡眠狀態(tài)
    T:暫停狀態(tài)
    ?? ctrl+z:使得一個(gè)進(jìn)程變成暫停狀態(tài),暫停后進(jìn)程任然是存在,不同于ctrl+c
    t:跟蹤狀態(tài)
    ?? 在gdb調(diào)試的時(shí)候會(huì)出現(xiàn)
    X:死亡狀態(tài)
    Z:僵尸狀態(tài)
  • 優(yōu)先級(jí): 相對(duì)于其他進(jìn)程的優(yōu)先級(jí)。
  • 程序計(jì)數(shù)器: 程序中即將被執(zhí)行的下一條指令的地址。
  • 內(nèi)存指針: 包括程序代碼和進(jìn)程相關(guān)數(shù)據(jù)的指針,還有和其他進(jìn)程共享的內(nèi)存塊的指針
  • 上下文數(shù)據(jù): 進(jìn)程執(zhí)行時(shí)處理器的寄存器中的數(shù)據(jù)[休學(xué)例子,要加圖CPU,寄存器]。
  • I/O狀態(tài)信息: 包括顯示的I/O請(qǐng)求,分配給進(jìn)程的I/O設(shè)備和被進(jìn)程使用的文件列表。
  • 記賬信息: 可能包括處理器時(shí)間總和,使用的時(shí)鐘數(shù)總和,時(shí)間限制,記賬號(hào)等。
  • 其他信息

3.查看進(jìn)程

1.ps命令

可以通過(guò)ps aux命令和ps-ef命令查看進(jìn)程狀態(tài)。也可以配合管道查看想觀察的進(jìn)程,如ps aux|grep [可執(zhí)行程序],使用該命令可以查看指定進(jìn)程的狀態(tài)

2./proc文件夾

/proc`文件夾保存了當(dāng)前操作系統(tǒng)維護(hù)的所有進(jìn)程信息,每一個(gè)進(jìn)程都是一個(gè)文件夾。該文件夾下的文件以pid命名,代表每個(gè)進(jìn)程。

總結(jié)

以上是生活随笔為你收集整理的Linux——进程系列知识详述(操作系统、PCB进程控制块、查看进程状态等)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。