Linux程序理解

2021-05-24 13:34:51 字數 1847 閱讀 9213

1.1程序分類;

linux作業系統包括三種不同型別的程序,每種程序都有自己的特點和屬性。

a) 互動程序--由乙個shell啟動的程序。互動程序既可以在前台執行,也可以在後台執行。

b) 批處理程序--這種程序和終端沒有聯絡,是乙個程序序列。

c) 監控程序(也稱守護程序)--linux系統啟動時啟動的程序,並在後台執行。

值得一提的是守護程序總是活躍的,一般是後台執行,守護程序一般是由系統在開機時通過指令碼自動啟用啟動或超級管理使用者root來啟動。比如在 fedora或redhat中,我們可以定義httpd 伺服器的啟動指令碼的執行級別,此檔案位於/etc/init.d目錄下,檔名是httpd,/etc/init.d/httpd 就是httpd伺服器的守護程式,當把它的執行級別設定為3和5時,當系統啟動時,它會跟著啟動。

由於守護程序是一直執行著的,所以它所處的狀態是等待請求處理任務。比如,我們是不是訪問 linuxsir.org ,linuxsir.org 的httpd伺服器都在執行,等待著使用者來訪問,也就是等待著任務處理。

1.2程序的屬性;

程序id(pid):是唯一的數值,用來區分程序;

父程序和父程序的id(ppid);

啟動程序的使用者id(uid)和所歸屬的組(gid);

程序狀態:狀態分為執行r、等待w、休眠s、殭屍z;

程序執行的優先順序;

程序所連線的終端名;

程序資源占用:比如占用資源大小(記憶體、cpu佔用量);

1.3程序的空間;

linux中乙個程序在記憶體裡有三部份的資料,就是"資料段","堆疊段"和"**段",基於i386相容的**處理器,都有上述三種段暫存器,以方便作業系統的執行。見圖-1。

圖-1 linux程序的結構

代 碼段,是存放了程式**的資料,假如機器中有數個程序執行相同的乙個程式,那麼它們就可以使用同乙個**段。而資料段則存放程式的全域性變數,常數以及動態資料分配的資料空間。堆疊段存放的就是子程式的返回位址、子程式的引數以及程式的區域性變數。堆疊段包括程序控制塊pcb(process control block)中。pcb處於程序核心堆疊的底部,不需要額外分配空間。

1.4異常程序;

殭屍程序:乙個子程序在其父程序還沒有呼叫wait()或waitpid()的情況下退出(子程序異常退出)。這個子程序就是殭屍程序。

孤兒程序:乙個父程序退出,而它的乙個或多個子程序還在執行,那麼那些子程序將成為孤兒程序(父程序異常退出)。孤兒程序將被init程序(程序號為1)所收養,並由init程序對它們完成狀態收集工作。

殭屍程序將會導致資源浪費,而孤兒則不會。

1.5相關命令;

nice/renice:設定程序優先順序

nice -n 5  gaim &注:執行gaim程式,並為它指定謙讓度增量為5;

pstree:顯示程序樹

netstat:顯示網路狀態

uptime:顯示開機時間

& 最經常被用到,這個用在乙個命令的最後,可以把這個命令放到後台執行

ctrl + z:可以將乙個正在前台執行的命令放到後台,並且暫停

jobs:檢視當前有多少在後台執行的命令

fg:將後台中的命令調至前台繼續執行

如果後台中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)

bg:將乙個在後台暫停的命令,變成繼續執行

Linux 程序的理解

程序的描述 通俗的講,程序就是正在執行的程式或 我們知道,程式本身就是一堆 開始的時候儲存在磁碟上,這時它是靜態的 無生命的 只有當程式的 被載入到記憶體中,才有了生命,才能被cpu動態的執行。問題是,現在的作業系統可以並行的執行多個程式,也就是記憶體中同時存放著多個程式的 為了方便管理,必須要合理...

Linux 程序概念以及程序狀態理解

2 程序狀態 2.2 孤兒程序 2.3 守護程序 精靈程序 程序是乙個pcb 程序控制塊 是乙個執行程式中的描述 在linux下是乙個task struct結構體,通過這個結構體實現作業系統對執行中程式的排程管理。1.1 task struct結構體 task struct結構體是linux核心中的...

Linux 程序和執行緒 理解

linux 程序和執行緒 2011 10 16 8 43 00 了解linux的程序與執行緒 程序狀態 task running 執行 task interruptible 程序可接收os訊號。task uninterruptible 此時程序不接收os訊號。task zombie 程序結束,資源釋...