1. 程式人生 > >linux系統程式設計之程序(一)

linux系統程式設計之程序(一)

本節目標:

  • 什麼是程式
  • 什麼是程序
  • 程序資料結構
  • 程序與程式區別與聯絡

一,什麼是程式?

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

二,什麼是程序?

  • 從使用者的角度來看程序是程式的一次動態執行過程
  • 從作業系統的核心來看,程序是作業系統分配的記憶體、CPU時間片等資源的基本單位。
  • 程序是資源分配的最小單位
  • 每一個程序都有自己獨立的地址空間與執行狀態。
  • 像UNIX這樣的多工作業系統能夠讓許多程式同時執行,每一個執行著的程式就構成了一個程序

三,程序資料結構

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

程序控制塊(PCB):用於描述程序情況及控制程序執行所需的全部資訊,是作業系統用來感知進存在的一個重要資料結構。

程式碼段:是程序中能被程序排程程式在CPU上執行的程式程式碼段。

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

程序=程式碼段(編譯後形成的一些指令)+資料段(程式執行時需要的資料)+堆疊段(程式執行時動態分配的一些記憶體)+PCB(程序資訊,狀態標識等)

資料段包括:

  • 只讀資料段:常量
  • 已初始化資料段:全域性變數,靜態變數
  • 位初始化資料段(bss)(0初始化段):未初始化的全域性變數和靜態變數(實際上不分配記憶體,因為都為0,只有一些標記資訊)

四,程序與程式區別與聯絡

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