Linux 進程的基礎概念
運行中的程序,是將程序腳本放入內核執行。
進程創建
內核會首先創建Init進程,再由Init進程管理其他進程。進程都是由其父進程創建的。
進程優先級
0-139:
1-99 實時優先級 數字越大 優先級越高
100-139 靜態優先級 數字越小 優先級越高
nice值:-20~19 算是微調自己的優先級,但是優先級只能調低,不能調高。
虛擬內存
使用Page frame實現,page frame就是分頁。將不連續的物理內存(物理地址空間)以虛擬(線性地址)的方式提供給進程使用。每個分頁默認是4K。
IPC
進程間通信, Inter process Communication
同一主機上的通信:1、signal 2、shm(share memory) 3、semerphor(類似於旗語,協議語言)
不同主機上的通信:1、RPC(remote procecure call 遠程過程調用) 2、socket(套接字,遠程過程調用也基於套接字)
Linux內核的多任務是搶占式多任務
進程類型
1、守護進程 daemon 一般由內核啟動的進程
2、前臺進程 用戶通過終端啟動的進程
註意:有些守護進程可以通過終端啟動
進程狀態
1、運行狀態
2、就緒狀態
3、睡眠狀態
可中斷:interruptable(CPU 時間已經耗盡)
不可中斷:uninterruptable(進程的數據沒有從磁盤調入到內存中完畢,進程就處於不可中斷狀態,喚醒也沒用,數據不完整)
4、停止狀態 暫停於內存中,但不會被調度。除非手動啟動
5、僵死狀態 zombie只能通過父進程處理。出現這種狀態的一個情況就是子進程在運行時父進程掛了。
進程加載數據
進程請求內核從磁盤讀入數據,那麽內核先要將磁盤數據讀入內核內存,再從內核內存復制到進程內存中。
Linux 進程的基礎概念