- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统上同时运行着多个进程,正在执行的一个或多个相关进
Linux是一個多工的作業系統,系統上同時運行著多個進程,正在執行的一個或多個相關進程稱爲一個作業。使用作業控制,用戶可以同時運行多個作業,並在需要時在作業之間進行切換。本章詳細介紹進程管理及作業控制的命令,包括啓動進程、查看進程、調度作業的命令。
進程及作業的概念
Linux是一個多用戶多工的作業系統。多用戶是指多個用戶可以在同一時間使用電腦系統;多工是指Linux可以同時執行幾個任務,它可以在還未執行完一個任務時又執行另一項任務。 作業系統管理多個用戶的請求和多個任務。
大多數系統都只有一個CPU和一個主存,但一個系統可能有多個二級存儲磁片和多個輸入/輸出設備。作業系統管理這些資源並在多個用戶間共用資源,當您提出一個請求時,給您造成一種假像,好象系統只被您獨自佔用。而實際上作業系統監控著一個等待執行的任務佇列,這些任務包括用戶作業、作業系統任務、郵件和列印作業等。作業系統根據每個任務的優先順序爲每個任務分配合適的時間片,每個時間片大約都有零點幾秒,雖然看起來很短,但實際上已經足夠電腦完成成千上萬的指令集。每個任務都會被系統運行一段時間,然後挂起,系統轉而處理其他任務;過一段時間以後再回來處理這個任務,直到某個任務完成,從任務佇列中去除。
Linux系統上所有運行的東西都可以稱之爲一個進程。每個用戶任務、每個系統管理守護進程,都可以稱之爲進程。Linux用分時管理方法使所有的任務共同分享系統資源。我們討論進程的時候,不會去關心這些進程究竟是如何分配的,或者是內核如何管理分配時間片的,我們所關心的是如何去控制這些進程,讓它們能夠很好地爲用戶服務。
進程的一個比較正式的定義是:在自身的虛擬位址空間運行的一個單獨的程式。進程與程式是有區別的,進程不是程式,雖然它由程式産生。程式只是一個靜態的指令集合,不占系統的運行資源;而進程是一個隨時都可能發生變化的、動態的、使用系統運行資源的程式。而且一個程式可以啓動多個進程。
Linux作業系統包括三種不同類型的進程,每種進程都有自己的特點和屬性。
交互進程——由一個shell啓動的進程。交互進程既可以在前臺運行,也可以在後臺運行。
批次處理進程——這種進程和終端沒有聯繫,是一個進程序列。
監控進程(也稱守護進程)——Linux系統啓動時啓動的進程,並在後臺運行。
上述三種進程各有各的作用,使用場合也有所不同。
進程和作業的概念也有區別。一個正在執行的進程稱爲一個作業,而且作業可以包含一個或多個進程,尤其是當使用了管道和重定向命令。例如“nroff -man ps.1|grep kill|more”這個作業就同時啓動了三個進程。
作業控制指的是控制正在運行的進程的行爲。比如,用戶可以挂起一個進程,等一會兒再繼續執行該進程。shell將記錄所有啓動的進程情況,在每個進程過程中,用戶可以任意地挂起進程或重新啓動進程。作業控制是許多shell(包括bash和tcsh)的一個特性,使用戶能在多個獨立作業間進行切換。
一般而言,進程與作業控制相關聯時,才被稱爲作業。
在大多數情況下,用戶在同一時間只運行一個作業,即它們最後向shell鍵入的命令。但是使用作業控制,用戶可以同時運行多個作業,並在需要時在這些作業間進行切換。這會有什麽用途呢?例如,當用戶編輯一個文字檔案,並需要中止編輯做其他事情時,利用作業控制,用戶可以讓編輯器暫時挂起,返回shell提示符開始做其他的事情。其他事情做完以後,用戶可以重新啓動挂起的編輯器,返回到剛才中止的地方,就象用戶從來沒有離開編輯器一樣。這只是一個例子,作業控制還有許多其他實際的用途。
啓動進程
鍵入需要運行的程式的程式名,執行一個程式,其實也就是啓動了一個進程。在Linux系統中每個進程都具有一個進程號,用於系統識別和調度進程。啓動一個進程有兩個主要途徑:手工啓動和調度啓動,後者是事先進行設置,根據用戶要求自行啓動。
手工啓動
由用戶輸入命令,直接啓動一個進程便是手工啓動進程。但手工啓動進程又可以分爲很多種,根據啓動的進程類型不同、性質不同,實際結果也不一樣,下面分別介紹。
1. 前臺啓動
這或許是手工啓動一個進程的最常用的方式。一般地,用戶鍵入一個命令“ls –l”,這就已經啓動了一個進程,而且是一個前臺的進程。這時候系統其實已經處於一個多進程狀態。或許有些用戶會疑惑:我只啓動了一個進程而已。但實際上有許多運行在後臺的、系統啓動時就已經自動啓動的進程正在悄悄運行著。還有的用戶在鍵入“ls –l”命令以後趕緊使用“ps –x”查看,卻沒有看到ls進程,也覺得很奇怪。其實這是因爲ls這個進程結束太快,使用ps查看時該進程已經執行結束了。如果啓動一個比
文档评论(0)