linux程序管理框架簡介:
1.fork_init()、sched_init() 用於初始化;
2.do_fork()用來建立乙個新程序,並把程序插入全域性鍊錶&init_task;
3.scheduler_tick()由時鐘中斷處理函式呼叫(os是基於時鐘中斷來實現基於時間片的多程序排程),用來更新當前程序的時間片,判斷程序的時間片是否用完,並把程序插入對應的鍊錶;
4.schedule()實現程序的排程;
下圖是程序pid管理的框架圖:
1. 當我們要根據pid查詢對應程序時,順序掃瞄程序鍊錶並檢查程序描述符的pid欄位是可行但相當低效的;
2.引入hash雜湊表的目的是為了加快程序的查詢;
3. 通過整形的hash演算法(見下面的**例項)計算pid的hash值,把具有相同hash值的pid組成乙個鍊錶;
4. 當我們要查詢乙個程序,先計算pid的hash值,再在對應鍊錶pid_hash[n]裡面根據pid查詢,這樣會快很多。
1. hash_long()會把pid的hash值限制在[0, 2^pidhash_shift-1] ;
//下圖顯示hash值被限制在 [0, 31]之間 (31 = 2^5-1) :bits值越小用的hashtable的空間越小
unsigned long hash_long(unsigned long val, unsigned int
bits)
int hash(void
)
return0;
}
LINUX程序管理
1.程序是什麼?乙個程序就是出於執行期的程式,包括 可執行程式 段 開啟的檔案,掛起的訊號,核心內部資料,處理器狀態,位址空間,乙個或多個執行執行緒,當然還包括用來存放全域性變數的資料段,等等.2.什麼是執行緒?它和程序的關係是什麼樣的?執行緒在linux中具體是怎麼樣實現的?是在程序中活動的物件,...
linux程序管理
程序的監控 使用ps aux 檢視當前所有程序。可以使用top檢視當前程序自動更新列表,在top中m 按記憶體大小排列,p 按cpu佔用率排列 終止和管理程序 程序之間通過訊號來進行通訊 top和kill都用於向程序傳送訊號。kill l顯示訊號編號表。kill 9 pid kill pid 向pi...
Linux 程序管理
1.linux程序管理工具,包括ps pgrep top kill killall pkill 等 常用 ps aux 或lax輸出的解釋 user 程序的屬主 pid 程序的id ppid 父程序 cpu 程序占用的cpu百分比 mem 占用記憶體的百分比 ni 程序的nice值,數值大,表示較少...