linux進程及作業管理
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進程及作業管理