進程控制開發(fā)之:Linux進程概述
7.1.3Linux下進程的模式和類型
在Linux系統(tǒng)中,進程的執(zhí)行模式劃分為用戶模式和內(nèi)核模式。如果當(dāng)前運行的是用戶程序、應(yīng)用程序或者內(nèi)核之外的系統(tǒng)程序,那么對應(yīng)進程就在用戶模式下運行;如果在用戶程序執(zhí)行過程中出現(xiàn)系統(tǒng)調(diào)用或者發(fā)生中斷事件,那么就要運行操作系統(tǒng)(即核心)程序,進程模式就變成內(nèi)核模式。在內(nèi)核模式下運行的進程可以執(zhí)行機器的特權(quán)指令,而且此時該進程的運行不受用戶的干擾,即使是root用戶也不能干擾內(nèi)核模式下進程的運行。
用戶進程既可以在用戶模式下運行,也可以在內(nèi)核模式下運行,如圖7.3所示。
圖7.3用戶進程的兩種運行模式
7.1.4Linux下的進程管理
Linux下的進程管理包括啟動進程和調(diào)度進程,下面就分別對這兩方面進行簡要講解。
1.啟動進程
Linux下啟動一個進程有兩種主要途徑:手工啟動和調(diào)度啟動。手工啟動是由用戶輸入命令直接啟動進程,而調(diào)度啟動是指系統(tǒng)根據(jù)用戶的設(shè)置自行啟動進程。
(1)手工啟動。
手工啟動進程又可分為前臺啟動和后臺啟動。
n 前臺啟動是手工啟動一個進程的最常用方式。一般地,當(dāng)用戶鍵入一個命令如“ls-l”時,就已經(jīng)啟動了一個進程,并且是一個前臺的進程。
n 后臺啟動往往是在該進程非常耗時,且用戶也不急著需要結(jié)果的時候啟動的。比如用戶要啟動一個需要長時間運行的格式化文本文件的進程。為了不使整個shell在格式化過程中都處于“癱瘓”狀態(tài),從后臺啟動這個進程是明智的選擇。
(2)調(diào)度啟動。
有時,系統(tǒng)需要進行一些比較費時而且占用資源的維護工作,并且這些工作適合在深夜無人值守的時候進行,這時用戶就可以事先進行調(diào)度安排,指定任務(wù)運行的時間或者場合,到時候系統(tǒng)就會自動完成這一切工作。
使用調(diào)度啟動進程有幾個常用的命令,如at命令在指定時刻執(zhí)行相關(guān)進程,cron命令可以自動周期性地執(zhí)行相關(guān)進程,在需要使用時讀者可以查看相關(guān)幫助手冊。
2.調(diào)度進程
調(diào)度進程包括對進程的中斷操作、改變優(yōu)先級、查看進程狀態(tài)等,在Linux下可以使用相關(guān)的系統(tǒng)命令實現(xiàn)其操作,在表7.1中列出了Linux中常見的調(diào)用進程的系統(tǒng)命令,讀者在需要的時候可以自行查找其用法。
表7.1 Linux中進程調(diào)度常見命令
選項 | 參數(shù)含義 |
ps | 查看系統(tǒng)中的進程 |
top | 動態(tài)顯示系統(tǒng)中的進程 |
nice | 按用戶指定的優(yōu)先級運行 |
renice | 改變正在運行進程的優(yōu)先級 |
kill | 向進程發(fā)送信號(包括后臺進程) |
crontab | 用于安裝、刪除或者列出用于驅(qū)動cron后臺進程的任務(wù)。 |
bg | 將掛起的進程放到后臺執(zhí)行 |
linux相關(guān)文章:linux教程
pid控制器相關(guān)文章:pid控制器原理
評論