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

本節目標:數據結構

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

一,什麼是程序?ide

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

二,什麼是進程?生命週期

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

三,進程數據結構進程

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

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

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

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

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

數據段包括:

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

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

  • 進程是動態的,程序是靜態的
  • 進程的生命週期是相對短暫的,而程序是永久的。
  • 進程數據結構PCB
  • 一個進程只能對應一個程序,一個程序能夠對應多個進程。
相關文章
相關標籤/搜索