【程序基本概念:
(1)課本概念:程式的乙個執行例項,正在執行的程式等。
(2)核心觀點:擔當分配系統資源(cpu時間、記憶體)的實體。
作業系統在管理程序時,先將其描述起來,再對其組織管理。
【描述程序-pcb:
(1)程序資訊被放在乙個叫做程序控制塊的資料結構中,可以理解為程序屬性的集合。
(2)課本上稱之為pcb(process control block)(程序控制塊),linux作業系統下的pcb是:task_struct。
【task_struct-pcb的一種:
(1)在linux中描述程序的結構體叫做task_struct。
(2)task_struct是linux核心的一種資料結構,它會被裝載到ram(記憶體)裡並且包含著程序的資訊。
【task_struct內容分類:
【檢視程序:
框內是程序識別符號
我們可通過ps和top來獲取程序資訊:
【程序的基本狀態:
1.程序的三種基本狀態:
(1)就緒態:程序已分配到資源,只要再獲得cpu,便可立即執行。
(2)執行態:程序已獲得cpu,其程式正在執行狀態。
(3)阻塞態:程序由於發生某事件暫時無法繼續執行時的狀態。
2.三種狀態的轉換:
3.程序的狀態:
(1)r執行狀態(runing):並不意味著程序一定在執行中,它表明程序要麼是在執行中要麼在執行佇列裡。
(2)s睡眠狀態(sleeping):意味著程序在等待事件完成。(可中斷睡眠)
(3)d磁碟休眠狀態(disk sleep):也叫不可中斷睡眠狀態。
(4)t停止狀態(stopped):可以通過傳送sigstop訊號給程序來停止(t)程序。這個被暫停的程序可以通過傳送sigcont訊號讓程序繼續執行。
(5)x死亡狀態(dead):這個狀態只是乙個返回狀態,不會在任務列表裡看到這個狀態。
【建立程序:
1.通過系統呼叫建立程序-fork
2.fork有兩個返回值,當fork成功時,子程序返回0,父程序返回子程序的程序號;當fork失敗,父程序返回錯誤。
3.父程序子程序**共享,資料各自開闢空間,私有乙份;子程序就是對父程序進行寫實拷貝。
#include
#include
#include
int main()
else
if(ret==0) //子程序
如圖:子程序正常退出返回0,父程序返回子程序的程序碼6469。
【殭屍程序:
(1)僵死狀態(zombies)是乙個比較特殊的狀態。當程序退出並且父程序沒有讀取到子程序退出的返回碼時就會產生僵死(屍)程序。
(2)僵死程序會以終止狀態保持在程序表中,並且會一直在等待父程序讀取退出狀態**。
(3)只要子程序退出,父程序還在執行,但父程序沒有讀取子程序狀態,子程序進入z狀態。
#include
#include
#include
int main()
else
if(id>0)
else
return
0;}
檢視其執行狀態
【孤兒程序:
父程序先退出,子程序就被稱之為「孤兒程序」。孤兒程序被1號init程序領養。
#include
#include
#include
int main()
else
if(id==0)
else
return
0;}
檢視程序狀態:
Linux 程序簡單了解
首先我們先了解下程式和程序的區別 程式是儲存在硬碟 光碟等介質中的可執行 和資料,是硬碟 外設 上的乙個普通檔案。程序是在cpu及記憶體中執行的程式 就是被載入到記憶體裡的程式 程序大體要了解如下內容 描述程序 pcb linux下的pcb是 task struct task struct內容分類 ...
Linux 孤兒程序和殭屍程序概念了解
孤兒程序 父程序先於子程序結束,則子程序成為孤兒程序,子程序的父程序成為init程序,成為init程序領養孤兒程序 init程序孤兒院 子程序一直在迴圈,而父程序之後就 死亡 殭屍程序 程序終止,父程序尚未 子程序殘留資源 pcb 存放於核心中,程式設計殭屍 zombie 程序,注意,殭屍程序是不能...
linux程序和記憶體管理了解
1.程序簡介 1 執行中的乙個程式的乙個副本,是被載入記憶體的乙個指令集合,是資源分配的單位 2 檢視所有程序 兩種 root centos8 pstree p 花括號的為執行緒 root centos8 ll proc 目錄裡的數字其實就是程序檔案 在這些檔案中含有乙個名為 status 的檔案,...