Linux程序學習(一)

2021-09-26 00:15:54 字數 1136 閱讀 7898

程序是乙個動態的實體,是程式執行的一次過程。程序是作業系統資源分配的基本單位。

區分程序和程式,程序是動態的,程式是靜態的;程序是執行中的程式,程式是一些可執行的**。

linux下可通過命令ps或pstree或ps -af檢視當前系統中的程序。

如圖所示:

再認識幾個id:

在unistd.h標頭檔案中,以下是獲取各種程序id的函式表。

注:linux中乙個程序有3部分組成:**段、資料段和堆疊段。如圖所示:

**段資料段

堆疊段**段:存放程式的可執行**。

資料段:存放程式的全域性變數、常量、靜態變數。

堆疊段:堆存放動態分配的記憶體變數,棧用於函式的呼叫,存放函式的引數、函式內部定義的區域性變數。

linux 系統中程序有以下幾種狀態。

linux 程序控制包括建立程序、執行新程式、退出程序以及改變程序優先順序等。

用於對程序進行控制的主要系統呼叫如下所示:

①linux 下程式轉化成程序

linux 下c程式的生成分為4個階段:預處理、編譯、彙編、鏈結。編譯器gcc經過前三步將源程式檔案轉化為目標檔案。若程式有多個目標檔案或程式中使用了庫函式,編譯器還要將所有的目標檔案或所需的庫鏈結起來,最後生成可執行程式。

程式轉化為程序通常要經過以下步驟:

核心將程式讀入記憶體,對程式分配記憶體空間。

核心為該程序分配程序識別符號(pid)和其他所需資源。

核心為該程序儲存pid及相應的狀態資訊,把程序放到執行佇列中等待執行。程式轉化為程序後就可以被作業系統的排程程式排程執行了。

②程序的記憶體映像

Linux 程序學習 一

知識點1 程序概念 程序是作業系統最核心的概念之一。程序簡單而言是作業系統中執行的程式,它是作業系統資源管理的最小單元。程序是乙個動態的實體,是程式的一次執行過程。程序和程式的區別在於 程序是動態的,程式是靜態的,程序是執行中的程式,而程式是儲存在硬碟上的可執行的 知識點2 程序三態 1 執行 乙個...

Linux學習記錄之程序(一)

程序是unix作業系統的最重要的抽象之一,它是處於執行期的程式,但是它不僅僅包括 還包括相關的檔案,掛起訊號等資源。執行緒是程序活動的物件,每個執行緒都有乙個程式計數器,程序棧和一組程序計數器。linux中線程是程序的一種特例。程序提供兩種虛擬機制,虛擬處理器和虛擬記憶體。linux系統中通過for...

例項學習Linux程序通訊(一)

1 實驗一 訊號通訊 說明 利用訊號通訊在父子程序及兄弟程序之間進行通訊 解決方案 讓子程序在結束時,向父程序傳送sigchld訊號,父程序通過signal 或sigaction 函式來響應子程序的結束。在乙個程序終止或者停止時,將sigchld訊號傳送給其父程序。原始碼1 阻塞型通訊 includ...