1. 程式人生 > >Linux程序的概念

Linux程序的概念

1 作業系統

設計OS的目的:
1.管理計算機軟硬體資源
2.為使用者程式提供一個良好的執行環境

1.1 OS如何管理計算機資源

1.描述被管理的物件
2.組織被管理的物件

1.1.1 如何描述被管理的物件

用struct結構體

1.1.2 如何組織被管理的物件

用連結串列或者其他更高效的資料結構

1.2 系統呼叫

系統呼叫:由作業系統提供的介面
庫函式:開發者對部分系統呼叫進行適度封裝,形成庫函式

2 程序

概念:正在執行的程式

2.1 OS如何描述程序

struct——程序控制塊(PCB)
在Liunx系統下PCB是task_struct

2.1.1 認識task_struct

task_struct內容分類
識別符號:描述本程序的唯一識別符號,用來區別其他程序
狀態:任務狀態,退出程式碼,退出訊號等
優先順序:相對於其他程序的優先順序
程式計數器:記錄下一條將被執行的指令的地址
記憶體指標:包括程式程式碼和程序相關資料的指標
上下文資料:程序執行時處理器的暫存器的資料
I/O狀態資訊:包括顯示的I/O請求,分配給程序的I/O裝置和被程序使用的檔案列表
其他資訊

2.2 程序狀態

R執行狀態:程序在執行中或者在執行佇列中
S睡眠狀態:程序在等待事件完成
D磁碟休眠狀態:程序在等待IO結束
T停止狀態:傳送SIGSTOP訊號給程序來停止程序,傳送SIGCONT使程序繼續
Z殭屍狀態:程序退出並且父程序沒有讀取子程序退出的返回程式碼

2.2.1 殭屍程序的危害

1.程序的退出狀態屬於程序基本資訊,也儲存在PCB中,殭屍程序一直存在,就要一直維護著它的PCB,造成記憶體資源的浪費
2.記憶體洩漏

3 環境變數

在作業系統中用來指定作業系統執行環境的一些引數

環境變數可以被子程序繼承

3.1常見的環境變數

PATH:指定命令的搜尋路徑
HOME:指定使用者的主工作目錄
HISTSIZE:指定儲存歷史命令記錄的條數
SHELL:指定當前shell