linux系統編程之進程(一):進程與程序

  • 本節目標:

    • 什麼是程序
    • 什麼是進程
    • 進程數據結構
    • 進程與程序區別與聯繫
  • 一,什麼是程序?

    • 程序是完成特定任務的一系列指令集合
  • 二,什麼是進程?

    • 從用戶的角度來看進程是程序的一次動態執行過程
    • 從操作系統的核心來看,進程是操作系統分配的內存、CPU時間片等資源的基本單位。
    • 進程是資源分配的最小單位
    • 每一個進程都有自己獨立的地址空間與執行狀態。
    • 像UNIX這樣的多任務操作系統能夠讓許多程序同時運行,每一個運行著的程序就構成了一個進程
  • 三,進程數據結構

    • 進程的靜態描述:由三部分組成:PCB、有關程序段和該程序段對其進行操作的數據結構集。
    • 進程控制塊(PCB):用於描述進程情況及控制進程運行所需的全部信息,是操作系統用來感知進存在的一個重要數據結構。
    • 代碼段:是進程中能被進程調度程序在CPU上執行的程序代碼段。
    • 數據段:一個進程的數據段,可以是進程對應的程序加工處理的原始數據,也可以是程序執行後產生的中間或最終數據
    • 進程=代碼段(編譯後形成的一些指令)+數據段(程序運行時需要的數據)+堆棧段(程序運行時動態分配的一些內存)+PCB(進程信息,狀態標識等)
  • 數據段包括:

    • 只讀數據段:常量
    • 已初始化數據段:全局變量,靜態變量
    • 位初始化數據段(bss)(0初始化段):未初始化的全局變量和靜態變量(實際上不分配內存,因為都為0,只有一些標記信息)
  • 四,進程與程序區別與聯繫

    • 進程是動態的,程序是靜態的
    • 進程的生命週期是相對短暫的,而程序是永久的。
    • 進程數據結構PCB
    • 一個進程只能對應一個程序,一個程序可以對應多個進程。

书籍推荐