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

本節目標:

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

一,什麼是程序?

程序是完成特定任務的一系列指令集合

二,什麼是進程?

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

三,進程數據結構

進程的靜態描述:由三部分組成:PCB、有關程序段和該程序段對其進行操作的數據結構集。

進程控制塊(PCB):用於描述進程情況及控制進程運行所需的全部信息,是操作系統用來感知進存在的一個重要數據結構。

代碼段:是進程中能被進程調度程序在CPU上執行的程序代碼段。

數據段:一個進程的數據段,可以是進程對應的程序加工處理的原始數據,也可以是程序執行後產生的中間或最終數據

進程=代碼段(編譯後形成的一些指令)+數據段(程序運行時需要的數據)+堆棧段(程序運行時動態分配的一些內存)+PCB(進程信息,狀態標識等)

數據段包括:

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

四,進程與程序區別與聯繫

  • 進程是動態的,程序是靜態的
  • 進程的生命週期是相對短暫的,而程序是永久的。
  • 進程數據結構PCB
  • 一個進程只能對應一個程序,一個程序可以對應多個進程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章