Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 程序核心觀念:定義、生命週期、狀態與父子關係圖解

編輯:Linux 系統常見問題解答

什麼是程序?

程式:靜態的二進位可執行檔(如 /bin/date, /usr/sbin/httpd)。
程序:程式執行時的動態實例,擁有獨立的記憶體空間、安全屬性、一或多個執行緒、以及生命週期狀態。

程序組成要素

  • 已配置記憶體的位址空間(程式碼段、資料段、堆疊、堆積)。
  • 安全屬性:擁有者憑證(UID/GID)、特權(Capabilities)。
  • 一或多個執行緒。
  • 程序狀態(Running, Sleeping, Zombie 等)。

程序生命週期(fork → exec → exit → wait)

  1. 父程序 fork():複製自身位址空間建立子程序,子程序獲得唯一 PID,繼承父程序的開啟檔案描述符、環境變數、權限等。
  2. 子程序 exec():載入新程式映像取代原有程式碼,開始執行新邏輯。
  3. 父程序 wait():父程序通常睡眠等待子程序結束。
  4. 子程序 exit():釋放資源,進入僵屍狀態,向父程序發送 SIGCHLD 信號。
  5. 父程序回收:清理子程序殘留資訊(PCB),繼續執行。
  6. 所有程序皆為第一個系統程序的後代:

    • CentOS 5/6:init (PID 1)
    • CentOS 7+ / RHEL 7+ / Ubuntu 16.04+:systemd (PID 1)

    程序狀態圖解

    代碼狀態說明
    RRunning正在執行或等待 CPU 排程
    SSleeping可中斷睡眠,等待事件(I/O、信號)
    DUninterruptible Sleep不可中斷睡眠(通常等待磁碟 I/O),不可被 kill
    TStopped被作業控制信號停止(SIGSTOP)
    ZZombie僵屍程序,已結束但父程序未回收
    XDead即將消失的狀態

    常見狀態組合

    • Ss:Session leader(通常是父程序/daemon)。
    • S<:高優先級(nice 值負)。
    • SN:低優先級(nice 值正)。
    • R+:前景程序組。
    • Sl:多執行緒程序(顯示為線程)。

    小結

    理解 fork/exec/wait 機制與程序狀態,是 Linux 系統程式設計、效能調校、故障排查的基石。僵屍程序大量出現通常意味父程序未正確處理 SIGCHLD,需檢查程式碼或重啟服務。

Copyright © Windows教程網 All Rights Reserved