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