1. 程式人生 > >linux進程及作業管理

linux進程及作業管理

進程、任務

1、cpu指令級別:

cpu環0級別:存放只能系統調用的指令

cpu環3級別:存放只能用戶調用的指令


2、操作系統組成:(廣義)

計算機硬件、kernel(操作系統:system call,只能系統調用,比較底層)、庫調用(library call,為用戶編程提供接口)、應用程序。

所謂調用就是將載入別人事先編譯好的功能模塊,如函數、類、對象等。


3、cpu模式分類:

用戶模式:也叫用戶空間

內核模式:也叫內核空間

模式切換:用戶模式和內核模式之間的切換。


4、應用程序執行過程:

根據編譯好的應用程序從上往下執行,當涉及到內核調用的時候,則由內核進行調用執行,執行完成後,返回結果給用戶程序,然後用戶程序在繼續執行,直到程序執行完成。


5、內核功能:

進程管理:其中有個重要的功能就是進程調度

文件系統管理:

網絡功能管理

內存管理

驅動程序管理

安全功能管理


6、進程優先級:

進程:process,運行中程序的一個副本(一個程序可以執行多次,多個人可以同時進行),一個程序運行時可能只運行了部分代碼,如:ls,ls -l;

進程就是程序在執行中動態過程,線程是指當程序為了更好的運行,可能會分成多個部分小程序運行,這些進程中被分開執行的部分程序即為線程。

多個程序同時執行,會用到cpu資源,cpu按時間分片的形式為不同程序提供cpu資源。

那麽,當進程運行時,如5秒鐘,會切換到其他的進程,需要cpu寄存器來保存中間狀態。


7、進程的特點:

進程存在生命周期。

保存一個進程運行的狀態的地方,被稱為保存現場。

task struct:內核存儲進程的固定格式。(鏈表,循環鏈表)

任務:進程運行起來以後變成了任務。

多個任務的task struct組成的鏈表被稱為task list(任務列表)


8、進程創建:

內核創建第一個進程:init;後續用戶的進程管理都由init實現。

進程特點:

父子進程:進程都由其父進程創建,銷毀,內核調用接口(fock()、clone()),允許創建子進程。

父進程指向的內存空間,也是子進程指向的內存空間。

cow:寫時復制機制,它是指父進程與子進程共用一段內存空間,當子進程沒有寫操作時,一直共用這段內存空間;但是當子進程需要寫操作時,父進程又要保留老的數據,則此時父進程會給子進程創造一段內存空間,此為寫時復制。


9、進程優先級:

0-139:

1-99:實時優先級,數字越大,優先級別越高

100-139:靜態優先級,數字越小,優先級別越高

進程nice值:

指靜態優先級,降低優先級

取值範圍:-20,19;-20對用100,19對用139


big O:衡量一個程序的復雜程度:

O(1):數據量增加,復雜度增加,解決時間是恒定的。

O(log n):

O(n):線性復雜度,數據量上升,復雜度上升

O(n^2):

O(2^n):


11、進程隊列優先級:

運行隊列、過期隊列,各140個優先級隊列;當運行隊列中的進程運行完後,過期隊列便成了需要的運行隊列,運行隊列則成了過期隊列,一直持續進行。



12、進程task struct結構:


13、進程內存:

page frame:頁框,用於存儲頁面數據,將數據存儲在內存中的一個片段中。

內存線性地址:每個內存都以為自己獨占內存的所有空間

內存的物理地址:

虛擬內存實現機制:

cpu中的mmu:memory management unit,內存管理單元


ipc:inter process communication,進程間通訊機制

同一主機上:

singal

shm:shared memory

semerphor

不同主機上:

rpc:remote process call,進程過程調用

socket:


14:linux內核:搶占式、多任務執行




























linux進程及作業管理