Linux學習 程序概念

2022-09-03 01:48:09 字數 1604 閱讀 1721

>>程序

說程序,感覺好空洞,來一張圖,linux下的程序:

ps -eo pid,comm,cmd
說明:-e表示列出全部程序,-o pid,comm,cmd表示我們需要pid,command,cmd資訊

下面:我們好好說說,linux下的程序的含義:

1》.程式的乙個執行例項

2》.正在執行的程式。

3》.能分配處理器並由處理器執行的實體。

4》.核心觀點:擔當分配系統資源(cpu時間,記憶體)的實體。

程序的兩個基本元素:

程式**(可能被執行相同程式的其他程序共享)和**相關聯的資料集。

程序是一種動態描述,但是並不代表所有的程序都在執行。(程序在記憶體中因策略或排程需求,會處於各種狀態)

在來看看另外一些對程序的描述:

廣義上,所有的程序資訊被放在乙個叫做程序控制塊的資料結構中,可以理解為程序屬性 的集合。 程序控制塊每個程序在核心中都有乙個程序控制塊(pcb)來維護程序相關的資訊,linux核心的 程序控制塊是task_struct結構體。現在我們全面了解一下其中都有哪些資訊。

在linux中,這個結構叫做task_struct。 task_struct是linux核心的一種資料結構,它會被裝載到ram⾥裡並且包含著程序的資訊。 每個程序都把它的資訊放在 task_struct 這個資料結構裡,task_struct 包含了這些內容: 

1》.標示符 : 描述本程序的唯一標示符,用來區別其他程序。 

2》.狀態    :任務狀態,退出**,退出訊號等。 

3》.優先順序 :相對於其他程序的優先順序。 

4》.程式計數器:程式中即將被執行的下一條指令的位址。 

5》.記憶體指標:包括程式**和程序相關資料的指標,還有和其他程序共享的記憶體塊的指標 

6》.上下文資料:程序執行時處理器的暫存器中的資料。 

7》.i/o狀態資訊:包括顯示的i/o請求,分配給程序的i/o裝置和被程序使用的檔案列表。 

8》.記賬資訊:可能包括處理器時間總和,使用的時鐘數總和,時間限制,記賬號等。 儲存程序資訊的資料結構叫做 task_struct,並且可以在 include/linux/sched.h 裡找到它。所有執行在系統裡的程序都以 task_struct 鍊錶的形式存在核心裡。 程序的資訊可以通過 /proc 系統資料夾檢視。要獲取pid為400的程序資訊,你需要檢視 /

proc/400 這個資料夾。大i多數程序資訊同樣可以使用top和ps這些使用者級工具來獲取。

最後借用博友的話說:

程序是程式的乙個具體實現。只有食譜沒什麼用,我們總要按照食譜的指點真正一步步實行,才能做出菜餚。程序是執行程式的過程,類似於按照食譜,真正去做菜的過程。同乙個程式可以執行多次,每次都可以在記憶體中開闢獨立的空間來裝載,從而產生多個程序。不同的程序還可以擁有各自獨立的io介面。

作業系統的乙個重要功能就是為程序提供方便,比如說為程序分配記憶體空間,管理程序的相關資訊等等,就好像是為我們準備好了乙個精美的廚房。

以上為linux下程序的相關概念,關於程序的建立,見另一篇部落格:

linux學習--程序建立

Linux學習 程序概念

程序 說程序,感覺好空洞,來一張圖,linux下的程序 ps eo pid,comm,cmd說明 e表示列出全部程序,o pid,comm,cmd表示我們需要pid,command,cmd資訊 下面 我們好好說說,linux下的程序的含義 1 程式的乙個執行例項 2 正在執行的程式。3 能分配處理器...

Linux 程序概念

任何計算機系統都包含乙個基本的程式集合,成為作業系統 os 它包括 作業系統是管管理的軟體 使用者操作 使用者操作介面 shell,lib,指令等 作業系統 驅動程式 硬體 作業系統管理硬體 系統呼叫 在開發者角度,作業系統會對外表現為乙個整體,但是會暴露自己的一部分介面供上層開發者使用,這部分由作...

Linux 程序概念

程序排程演算法 在早期作業系統的排程方式大多數是非剝奪的,這是由於早期的應用一般是科學計算或事務處理,不太把人機互動的響應時間指標放在首要位置。在這種情況下,正在執行的程序可一直占用cpu直到程序阻塞或終止。這種方式的排程演算法可以很簡單,且比較適用對於響應時間不關心或者關心甚少的批處理科學計算或事...