0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux進(jìn)程管理:什么是進(jìn)程?進(jìn)程的生命周期

馬哥Linux運(yùn)維 ? 來源:lq ? 2019-02-15 14:29 ? 次閱讀

1.1 Linux進(jìn)程管理

進(jìn)程管理是操作系統(tǒng)的最重要的功能之一。有效率的進(jìn)程管理能保證一個(gè)程序平穩(wěn)而高效地運(yùn)行。

Linux的進(jìn)程管理與UNIX的進(jìn)程管理相似。它包括進(jìn)程調(diào)度、中斷處理、信號(hào)、進(jìn)程優(yōu)先級(jí)、上下文切換、進(jìn)程狀態(tài)、進(jìn)度內(nèi)存等。

在本節(jié)中,我們將描述Linux進(jìn)程管理的基本原理的實(shí)現(xiàn)。它將更好地幫助你理解Linux內(nèi)核如何處理進(jìn)程及其對系統(tǒng)性能的影響。

1.1.1 什么是進(jìn)程?

一個(gè)進(jìn)程是一個(gè)運(yùn)行在處理器的程序的一個(gè)實(shí)例。該進(jìn)程使用Linux內(nèi)核能夠處理的任何資源來完成它的任務(wù)。

所有運(yùn)行在Linux操作系統(tǒng)中的進(jìn)程都被task_struct結(jié)構(gòu)管理,該結(jié)構(gòu)同時(shí)被叫作進(jìn)程描述。一個(gè)進(jìn)程描述包含一個(gè)運(yùn)行進(jìn)程所有的必要信息,例如進(jìn)程標(biāo)識(shí)、進(jìn)程屬性和構(gòu)建進(jìn)程的資源。如果你了解該進(jìn)程構(gòu)造,你就能理解對于進(jìn)程的運(yùn)行和性能來說,什么是重要的。圖1-2展示了進(jìn)程結(jié)構(gòu)相關(guān)的進(jìn)程信息概述。

圖1-2task_struct結(jié)構(gòu)體

1.1.2 進(jìn)程的生命周期

每一個(gè)進(jìn)程都有其生命周期,例如創(chuàng)建、運(yùn)行、終止和消除。這些階段會(huì)在系統(tǒng)啟動(dòng)和運(yùn)行中重復(fù)無數(shù)次。因此,進(jìn)程的生命周期對于其性能的分析是非常重要的。

圖1-3展示了經(jīng)典的進(jìn)程生命周期。

圖1-3經(jīng)典的進(jìn)程生命周期

當(dāng)一個(gè)進(jìn)程創(chuàng)建一個(gè)新的進(jìn)程,進(jìn)程的創(chuàng)建進(jìn)程(父進(jìn)程)調(diào)用 一個(gè)fork()系統(tǒng)調(diào)用。當(dāng)fork()系統(tǒng)調(diào)用被調(diào)用,它得到該新創(chuàng)建進(jìn)程(子進(jìn)程)的進(jìn)程描述并調(diào)用一個(gè)新的進(jìn)程id。它復(fù)制該值到父進(jìn)程進(jìn)程描述到子進(jìn)程中。此時(shí)整個(gè)的父進(jìn)程的地址空間是沒有被復(fù)制的;父子進(jìn)程共享相同的地址空間。

exec()系統(tǒng)調(diào)用復(fù)制新的程序到子進(jìn)程的地址空間。因?yàn)楦缸舆M(jìn)程共享地址空間,寫入一個(gè)新的程序的數(shù)據(jù)會(huì)引起一個(gè)分頁錯(cuò)誤。在這種情況下,內(nèi)存會(huì)分配新的物理內(nèi)存頁給子進(jìn)程。

這個(gè)推遲的操作叫作寫時(shí)復(fù)制。子進(jìn)程通常運(yùn)行他們自己的程序而不是與父進(jìn)程運(yùn)行相同的程序。這個(gè)操作避免了不必要的開銷,因?yàn)閺?fù)制整個(gè)地址空間是一個(gè)非常緩慢和效率低下的操作,它需要使用大量的處理器時(shí)間和資源。

當(dāng)程序已經(jīng)執(zhí)行完成,子進(jìn)程通過調(diào)用exit()系統(tǒng)調(diào)用終止。exit()系統(tǒng)調(diào)用釋放進(jìn)程大部分的數(shù)據(jù)并通過發(fā)送一個(gè)信號(hào)通知其父進(jìn)程。此時(shí),子進(jìn)程是一個(gè)被叫作僵尸進(jìn)程的進(jìn)程(參閱page 7的“Zombie processes”)。

子進(jìn)程不會(huì)被完全移除直到其父進(jìn)程知道其子進(jìn)程的調(diào)用wait()系統(tǒng)調(diào)用而終止。當(dāng)父進(jìn)程被通知子進(jìn)程終止,它移除子進(jìn)程的所有數(shù)據(jù)結(jié)構(gòu)并釋放它的進(jìn)程描述。

1.1.3 線程

一個(gè)線程是一個(gè)單獨(dú)的進(jìn)程生成的一個(gè)執(zhí)行單元。它與其他的線程并行地運(yùn)行在同一個(gè)進(jìn)程中。各個(gè)線程可以共享進(jìn)程的資源,例如內(nèi)存、地址空間、打開的文件等等。它們能訪問相同的程序數(shù)據(jù)集。線程也被叫作輕量級(jí)的進(jìn)程(Light Weight Process,LWP)。因?yàn)樗鼈児蚕碣Y源,所以每個(gè)線程不應(yīng)該在同一時(shí)間改變它們共享的資源?;コ獾膶?shí)現(xiàn)、鎖、序列化等是用戶程序的責(zé)任。

從性能的角度來說,創(chuàng)建線程的開銷比創(chuàng)建進(jìn)程少,因數(shù)創(chuàng)建一個(gè)線程時(shí)不需要復(fù)制資源。另一方面,進(jìn)程和線程擁在調(diào)度算法上有相似的特性。內(nèi)核以相似的方式處理它們。

圖1-4 進(jìn)程和線程

在現(xiàn)在的Linux實(shí)現(xiàn)中,線程支持UNIX的可移植操作系統(tǒng)接口(POSIX)標(biāo)準(zhǔn)庫。在Linux操作系統(tǒng)中有幾種可用的線程實(shí)現(xiàn)。以下是廣泛使用的線程庫:

LinuxThreads

LinuxThreads自從Linux內(nèi)核2.0起就已經(jīng)被作為默認(rèn)的線程實(shí)現(xiàn)。LinuxThreads的一些實(shí)現(xiàn)并不符合POSIX標(biāo)準(zhǔn)。Native POSIX Thread Library(NPTL)正在取代LinuxThreads。LinuxThreads在將來的Linux企業(yè)發(fā)行版中將不被支持。

Native POSIX Thread Libary(NPTL)

NPTL最初是由紅帽公司開發(fā)的。NPTL與POSIX更加兼容。通過Linux內(nèi)核2.6的高級(jí)特性,例如,新的clone()系統(tǒng)調(diào)用、信號(hào)處理的實(shí)現(xiàn)等等,它具有比LinuxThreads更高的性能和伸縮性。

NPTL與LinuxThreads有一些不兼容。一個(gè)依賴于LinuxThreads的應(yīng)用可能不能在NPTL實(shí)現(xiàn)中工作。

Next Generation POSIX Thread(NGPT)

NGPT是一個(gè)IBM開發(fā)的POSIX線程庫?,F(xiàn)在處于維護(hù)階段并且在未來也沒有開發(fā)計(jì)劃。

使用LD_ASSUME_KERNEL環(huán)境變量,你可以選擇在應(yīng)用中使用哪一個(gè)線程庫。

1.1.4 進(jìn)程優(yōu)先級(jí)和nice值

進(jìn)程優(yōu)先級(jí)是一個(gè)數(shù)值,它通過動(dòng)態(tài)的優(yōu)先級(jí)和靜態(tài)的優(yōu)先級(jí)來決定進(jìn)程被CPU處理的順序。一個(gè)擁有更高進(jìn)程優(yōu)先級(jí)的進(jìn)程擁有更大的機(jī)率得到處理器的處理。

內(nèi)核根據(jù)進(jìn)程的行為和特性使用試探算法,動(dòng)態(tài)地調(diào)整調(diào)高或調(diào)低動(dòng)態(tài)優(yōu)先級(jí)。一個(gè)用戶進(jìn)程可以通過使用進(jìn)程的nice值間接改變靜態(tài)優(yōu)先級(jí)。一個(gè)擁有更高靜態(tài)優(yōu)先級(jí)的進(jìn)程將會(huì)擁有更長的時(shí)間片(進(jìn)程能在處理上運(yùn)行多長時(shí)間)。

Linux支持從19(最低優(yōu)先級(jí))到-20(最高優(yōu)先級(jí))的nice值。默認(rèn)值為0。把程序的nice值修改為負(fù)數(shù)(使進(jìn)程的優(yōu)先級(jí)更高),需要以root身份登陸或使用su命令以root身份執(zhí)行。

1.1.5 上下文切換

在進(jìn)程運(yùn)行過程中,進(jìn)程的運(yùn)行信息被保存于處理器的寄存器和它的緩存中。正在執(zhí)行的進(jìn)程加載到寄存器中的數(shù)據(jù)集被稱為上下文。為了切換進(jìn)程,運(yùn)行中進(jìn)程的上下文將會(huì)被保存,接下來的運(yùn)行進(jìn)程的上下文將被被恢復(fù)到寄存器中。進(jìn)程描述和內(nèi)核模式堆棧的區(qū)域?qū)?huì)用來保存上下文。這個(gè)切換被稱為上下文切換。過多的上下文切換是不受歡迎的,因?yàn)樘幚砥髅看味急仨毲蹇账⑿录拇嫫骱途彺?,為新的進(jìn)程制造空間。它可能會(huì)引起性能問題。

圖1-5 說明了上下文切換如何工作。

圖1-5 上下文切換

1.1.6 中斷處理

中斷處理是優(yōu)先級(jí)最高的任務(wù)之一。中斷通常由I/O設(shè)備產(chǎn)生,例如網(wǎng)絡(luò)接口卡、鍵盤、磁盤控制器、串行適配器等等。中斷處理器通過一個(gè)事件通知內(nèi)核(例如,鍵盤輸入、以太網(wǎng)幀到達(dá)等等)。它讓內(nèi)核中斷進(jìn)程的執(zhí)行,并盡可能快地執(zhí)行中斷處理,因?yàn)橐恍┰O(shè)備需要快速的響應(yīng)。它是系統(tǒng)穩(wěn)定的關(guān)鍵。當(dāng)一個(gè)中斷信號(hào)到達(dá)內(nèi)核,內(nèi)核必須切換當(dāng)前的進(jìn)程到一個(gè)新的中斷處理進(jìn)程。這意味著中斷引起了上下文切換,因此大量的中斷將會(huì)引起性能的下降。

在Linux的實(shí)現(xiàn)中,有兩種類型的中斷。硬中斷是由請求響應(yīng)的設(shè)備發(fā)出的(磁盤I/O中斷、網(wǎng)絡(luò)適配器中斷、鍵盤中斷、鼠標(biāo)中斷)。軟中斷被用于處理可以延遲的任務(wù)(TCP/IP操作,SCSI協(xié)議操作等等)。你可以在/proc/interrupts文件中查看硬中斷的相關(guān)信息。

在多處理器的環(huán)境中,中斷被每一個(gè)處理器處理。綁定中斷到單個(gè)的物理處理中能提高系統(tǒng)的性能。更多的細(xì)節(jié),請參閱4.4.2,“CPU的中斷處理親和力”。

1.1.7 進(jìn)程狀態(tài)

每一個(gè)進(jìn)程擁有自己的狀態(tài),狀態(tài)表示了進(jìn)程當(dāng)前在發(fā)生什么。

在進(jìn)程的執(zhí)行期間進(jìn)程的狀態(tài)會(huì)發(fā)生改變。一些進(jìn)程的狀態(tài)如下:

TASK_RUNNING

在此狀態(tài)下,表示進(jìn)程正在CPU中運(yùn)行或在隊(duì)列中等待運(yùn)行(運(yùn)行隊(duì)列)。

TASK_STOPPED

在此狀態(tài)下的進(jìn)程被某些信號(hào)(如SIGINT,SIGSTOP)暫停。進(jìn)程正在等待通過一個(gè)信號(hào)恢復(fù)運(yùn)行,例如SIGCONT。

TASK_INTERRUPTIBLE

在此狀態(tài)下,進(jìn)程被暫停并等待一個(gè)某些條件狀態(tài)的到達(dá)。如果一個(gè)進(jìn)程處于TASK_INTERRUPTIBLE狀態(tài)并接收到一個(gè)停止的信號(hào),進(jìn)程的狀態(tài)將會(huì)被改變并中斷操作。一個(gè)典型的TASK_INTERRUPTIBLE狀態(tài)的進(jìn)程的例子是一個(gè)進(jìn)程等待鍵盤中斷。

TASK_UNINTERRUPTIBLE

與TASK_INTERRUPTIBLE相似。當(dāng)一個(gè)進(jìn)程處于?TASK_UNINTERRUPTIBLE狀態(tài)可以被中斷,向處于TASK_UNINTERRUPTIBLE狀態(tài)的進(jìn)程發(fā)送一個(gè)信號(hào)不會(huì)發(fā)生任何操作。一個(gè)TASK_UNINTERRUPTIBLE進(jìn)程的典型的例子是等待磁盤I/O操作。

TASK_ZOMBIE

當(dāng)一個(gè)進(jìn)程調(diào)用exit()系統(tǒng)調(diào)用退出后,它的父進(jìn)程應(yīng)該知道該進(jìn)程的終止。處于TASK_ZOMBIE狀態(tài)的進(jìn)程會(huì)等待其父進(jìn)程通知其釋放所有的數(shù)據(jù)結(jié)構(gòu)。

圖1-6 進(jìn)程狀態(tài)

僵尸進(jìn)程

當(dāng)一個(gè)進(jìn)程接收到一個(gè)信號(hào)而終止,它在結(jié)束自己之前,通常需要一些時(shí)間來結(jié)束所有的任務(wù)(例如關(guān)閉打開的文件)。在這個(gè)通常非常短暫的時(shí)間內(nèi),該進(jìn)程就是一個(gè)僵尸進(jìn)程。

進(jìn)程已經(jīng)完成所有的關(guān)閉任務(wù)后,它會(huì)向父進(jìn)程報(bào)告其即將終止。有些時(shí)候,一個(gè)僵尸進(jìn)程不能把自己終止,這將會(huì)引導(dǎo)它的狀態(tài)顯示為z(zombie)。

使用kill命令來關(guān)閉這樣的一個(gè)進(jìn)程是不可能的,因?yàn)樵撨M(jìn)程已經(jīng)被認(rèn)為已經(jīng)死掉了。如果你不能清除僵尸進(jìn)程,你可以結(jié)束其父進(jìn)程,然后僵尸進(jìn)程也隨之消失。但是,如果父進(jìn)程為init進(jìn)程,你不能結(jié)束它。init進(jìn)程是一個(gè)非常重要的進(jìn)程,因此可能需要重啟系統(tǒng)來清除僵尸進(jìn)程。

1.1.8 進(jìn)程內(nèi)存段

進(jìn)程使用其自身的內(nèi)存區(qū)域來執(zhí)行工作。工作的變化根據(jù)情況和進(jìn)程的使用而決定。進(jìn)程可以擁有不同的工作量特性和不同的數(shù)據(jù)大小需求。進(jìn)程必須處理各種數(shù)據(jù)大小。為了滿足需求,Linux內(nèi)核為每個(gè)進(jìn)程使用動(dòng)態(tài)申請內(nèi)存的機(jī)制。進(jìn)程內(nèi)存分配的數(shù)據(jù)結(jié)構(gòu)如圖1-7所示。

圖1-7 進(jìn)程地址空間

進(jìn)程內(nèi)存區(qū)由以下幾部分組成:

Text段

該區(qū)域用于存儲(chǔ)運(yùn)行代碼。

Data段

數(shù)據(jù)段包括三個(gè)區(qū)域。

– Data:該區(qū)域存儲(chǔ)已被初始化的數(shù)據(jù),如靜態(tài)變量。– BSS:該區(qū)域存儲(chǔ)初始化為0的數(shù)據(jù)。數(shù)據(jù)被初始化為0。– Heap:該區(qū)域用于根據(jù)需求使用malloc()動(dòng)態(tài)申請的內(nèi)存。堆向高地址方向增長。

Stack段

該區(qū)域用于存儲(chǔ)局部變量、函數(shù)參數(shù)和返回函數(shù)的地址。棧向低地址方向增長。

用戶進(jìn)程的地址空間內(nèi)存分布可以使用pmap命令來查看。你可以使用ps命令來查看內(nèi)存段的大小。可以參閱2.3.10的“pmap”,“ps和pstree”。

1.1.9 Linux CPU調(diào)度

任何的計(jì)算機(jī)的基本功能都非常簡單,就是計(jì)算。為了能夠計(jì)算,它意味著必須管理計(jì)算資源或處理器和計(jì)算任務(wù),也就是我們所知道的線程或進(jìn)程。感謝Ingo Molnar的巨大貢獻(xiàn),Linux內(nèi)核使用一個(gè)O(1)的算法代替以前的O(n)的CPU調(diào)度算法。O(1)指的是一種靜態(tài)的算法,意味著選擇一個(gè)進(jìn)程并執(zhí)行所花費(fèi)的時(shí)間是一個(gè)常數(shù),不管進(jìn)程的數(shù)量的大小。

新的調(diào)度算法的擴(kuò)展性非常好,不管進(jìn)程的數(shù)量或者處理器的數(shù)量是多少,系統(tǒng)的開銷都是非常少的。該算法使用兩個(gè)進(jìn)程優(yōu)先級(jí)數(shù)組:

active(活動(dòng)的)

expired(過期的)

調(diào)度器根據(jù)進(jìn)程的優(yōu)先級(jí)和優(yōu)先攔截率為進(jìn)程分配時(shí)間片,然后進(jìn)程以優(yōu)先級(jí)順序放置到active數(shù)組內(nèi)。當(dāng)進(jìn)程時(shí)間片耗盡,進(jìn)程申請一個(gè)新的時(shí)間片并放置到expired數(shù)組內(nèi)。當(dāng)active數(shù)組中的所有進(jìn)程的時(shí)間片耗盡,這兩個(gè)數(shù)組進(jìn)行切換,重新運(yùn)行該算法。對于一般的交互式進(jìn)程(相對于實(shí)時(shí)進(jìn)程),擁有高優(yōu)先級(jí)的進(jìn)程通常比低優(yōu)先級(jí)的進(jìn)程得到更長的時(shí)間片和更多的計(jì)算時(shí)間,但這并不表示低優(yōu)先級(jí)的進(jìn)程會(huì)被完全忽略(餓死)。該算法的優(yōu)勢是為擁有大量線程和進(jìn)程并擁有多處理器的企業(yè)級(jí)環(huán)境提升Linux內(nèi)核的擴(kuò)展性。該O(1)的新CPU調(diào)度器是為內(nèi)存2.6設(shè)計(jì)的,但是現(xiàn)在已經(jīng)移植到2.4系列中。圖1-8說明了Linux CPU如何調(diào)度工作。

圖1-8 Linux內(nèi)核2.6 O(1)調(diào)度器

新調(diào)度器的另一個(gè)顯著改進(jìn)是支持非一致性內(nèi)存架構(gòu)(NUMA)和對稱多線程處理器,例如Intel超線程技術(shù)。

改進(jìn)后的NUMA支持確保只有某個(gè)節(jié)點(diǎn)過載時(shí),負(fù)載平衡才會(huì)跨越某個(gè)NUMA節(jié)點(diǎn)。這個(gè)機(jī)制確保了在NUMA系統(tǒng)相對比較緩慢的擴(kuò)展鏈接流量的最小化。盡管每個(gè)調(diào)度節(jié)拍時(shí)負(fù)載平衡會(huì)遍歷調(diào)度域群組中的處理器,但只有在節(jié)點(diǎn)過載并請求負(fù)載平衡時(shí),負(fù)載才會(huì)跨越調(diào)度域轉(zhuǎn)移。

圖1-9 O(1)CPU調(diào)度器結(jié)構(gòu)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18924

    瀏覽量

    227200
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207892
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    501

    瀏覽量

    19580

原文標(biāo)題:運(yùn)維架構(gòu)師進(jìn)階:Linux進(jìn)程管理

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux開發(fā)_Linux進(jìn)程編程

    介紹Linux進(jìn)程概念、進(jìn)程信號(hào)捕獲、進(jìn)程管理相關(guān)的命令的使用等知識(shí)點(diǎn)。
    的頭像 發(fā)表于 09-17 15:38 ?1253次閱讀
    <b class='flag-5'>Linux</b>開發(fā)_<b class='flag-5'>Linux</b>下<b class='flag-5'>進(jìn)程</b>編程

    Linux 查看進(jìn)程和刪除進(jìn)程

    1. 在 LINUX 命令平臺(tái)輸入 1-2 個(gè)字符后按 Tab 鍵會(huì)自動(dòng)補(bǔ)全后面的部分(前提是要有這個(gè)東西,例如在裝了 tomcat 的前提下, 輸入 tomcat 的 to 按 tab)。2.
    發(fā)表于 04-24 00:04

    Linux學(xué)習(xí)雜談】之進(jìn)程的誕生和消失

    的過程,是一個(gè)程序的一次執(zhí)行過程。(1)程序的消亡有兩種方式,分別是正常終止和異常終止。正常終止就是說我們執(zhí)行到了return 0或者是exit(1),然后程序結(jié)束,這屬于正常的程序的生命周期。那么對于
    發(fā)表于 09-01 20:38

    詳解linux進(jìn)程管理

    進(jìn)程需要了解 進(jìn)程,父進(jìn)程進(jìn)程組,會(huì)話和控制終端的相關(guān)概念。進(jìn)程和父進(jìn)程:每個(gè)
    發(fā)表于 08-07 08:28

    Linux進(jìn)程管理

    Linux進(jìn)程管理
    發(fā)表于 05-20 10:53

    LINUX下的進(jìn)程管理問題如何解決

    基于LINUX下的進(jìn)程管理問題
    發(fā)表于 05-20 07:58

    linux系統(tǒng)進(jìn)程存在狀態(tài)及管理

    linux系統(tǒng)進(jìn)程存在狀態(tài)及管理詳解
    發(fā)表于 05-21 06:28

    Linux進(jìn)程管理

    Linux進(jìn)程管理 本章主要介紹進(jìn)程的概念、狀態(tài)、構(gòu)成以及Linux進(jìn)程的相關(guān)知識(shí)。 掌握
    發(fā)表于 04-28 14:57 ?0次下載

    Linux守護(hù)進(jìn)程詳解

    較長的進(jìn)程,通常獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。守護(hù)進(jìn)程常常在系統(tǒng)引導(dǎo)載入時(shí)啟動(dòng),在系統(tǒng)關(guān)閉時(shí)終止。Linux有很多系統(tǒng)服務(wù),大多數(shù)服務(wù)都是通過守護(hù)
    發(fā)表于 10-18 14:24 ?0次下載
    <b class='flag-5'>Linux</b>守護(hù)<b class='flag-5'>進(jìn)程</b>詳解

    基于Linux進(jìn)程管理的詳細(xì)剖析

    上一篇,我們講到了Linux內(nèi)核開發(fā)和應(yīng)用程序開發(fā),今天我們來講講Linux重點(diǎn)部分Linux進(jìn)程管理。
    的頭像 發(fā)表于 01-26 11:24 ?3636次閱讀
    基于<b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b><b class='flag-5'>管理</b>的詳細(xì)剖析

    有效管理進(jìn)程的8個(gè)Linux命令分享

    一般來說,應(yīng)用程序進(jìn)程生命周期有三種主要狀態(tài):啟動(dòng)、運(yùn)行和停止。如果我們想成為稱職的管理員,每個(gè)狀態(tài)都可以而且應(yīng)該得到認(rèn)真的管理。這八個(gè)命令可用于
    的頭像 發(fā)表于 10-05 09:10 ?2279次閱讀

    可用于管理進(jìn)程的整個(gè)生命周期的八個(gè)Linux命令

    一般來說,應(yīng)用程序進(jìn)程生命周期有三種主要狀態(tài):啟動(dòng)、運(yùn)行和停止。如果我們想成為稱職的管理員,每個(gè)狀態(tài)都可以而且應(yīng)該得到認(rèn)真的管理。這八個(gè)命令可用于
    的頭像 發(fā)表于 10-02 17:22 ?3459次閱讀
    可用于<b class='flag-5'>管理</b><b class='flag-5'>進(jìn)程</b>的整個(gè)<b class='flag-5'>生命周期</b>的八個(gè)<b class='flag-5'>Linux</b>命令

    Linux進(jìn)程內(nèi)核棧的認(rèn)識(shí)

    在每一個(gè)進(jìn)程生命周期中,必然會(huì)通過到系統(tǒng)調(diào)用陷入內(nèi)核。在執(zhí)行系統(tǒng)調(diào)用陷入內(nèi)核之后,這些內(nèi)核代碼所使用的棧并不是原先用戶空間中的棧,而是一個(gè)內(nèi)核空間的棧,這個(gè)稱作進(jìn)程的“內(nèi)核?!薄?/div>
    發(fā)表于 05-12 08:53 ?580次閱讀
    對<b class='flag-5'>Linux</b>的<b class='flag-5'>進(jìn)程</b>內(nèi)核棧的認(rèn)識(shí)

    學(xué)會(huì)Linux進(jìn)程管理的方法

    Linux 是一種動(dòng)態(tài)系統(tǒng),能夠適應(yīng)不斷變化的計(jì)算需求。Linux 計(jì)算需求的表現(xiàn)是以進(jìn)程 的通用抽象為中心的。進(jìn)程可以是短期的(從命令行執(zhí)行的一個(gè)命令),也可以是長期的(一種網(wǎng)絡(luò)服務(wù)
    發(fā)表于 05-16 17:19 ?723次閱讀
    學(xué)會(huì)<b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b><b class='flag-5'>管理</b>的方法

    Linux進(jìn)程基礎(chǔ)

    功能,被打扮成進(jìn)程的樣子以方便操作系統(tǒng)管理。我們不必考慮它們。)?我們看第一行,PID為1,名字為init。這個(gè)進(jìn)程是執(zhí)行/bin/init這一文件(程序)生成的。當(dāng)Linux啟動(dòng)的時(shí)
    發(fā)表于 04-02 14:50 ?246次閱讀