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