偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

全面了解Linux進程技術

運維 系統(tǒng)運維
在啟用電腦時,你會發(fā)現(xiàn)必不可少的就是操作系統(tǒng)。操作系統(tǒng)中微軟占很大部分,不過這幾年Linux也趕上了微軟。這里介紹Linux的知識,讓你學好應用Linux系統(tǒng)。今天一講Linux進程技術,希望你記住Linux進程技術。

在啟用電腦時,你會發(fā)現(xiàn)必不可少的就是操作系統(tǒng)。操作系統(tǒng)中微軟占很大部分,不過這幾年Linux也趕上了微軟。Linux是一個多用戶多任務的操作系統(tǒng)。這里介紹Linux的知識,讓你學好應用Linux系統(tǒng)。今天一講Linux進程技術,希望你記住Linux進程技術。
  
一、 進程的屬性

進程的定義:一個進程是一個程序的一次執(zhí)行的過程,程序是靜態(tài)的,它是一些保存在磁盤上的可執(zhí)行的代碼和數(shù)據(jù)集合,進程是一個動態(tài)的概念。它是Linux 系統(tǒng)的基本的調度單位,一個進程由如下元素組成:

1、 程序的讀取上下文,它表示程序讀取執(zhí)行的狀態(tài)。
2、 程序當前執(zhí)行目錄。
3、 程序服務的文件和目錄
4、 程序的訪問權限。
5、 內存和其他分配給進程的系統(tǒng)資源。

Linux進程中最知名的屬性就是它的進程號(Process Idenity Number,PID)和它的父進程號(parent process ID,PPID)。PID、PPID都是非零正整數(shù)。一個PID惟一地標識一個進程。一個進程創(chuàng)建新進程稱為創(chuàng)建了子進程(child process)。相反地,創(chuàng)建子進程的進程稱為父進程。所有進程追溯其祖先最終都會落到進程號為1的進程身上,這個進程叫做init進程。是內核自舉后***個啟動的進程。init進程作用是扮演終結父進程的角色。因為init進程永遠不會被終止,所以系統(tǒng)總是可以確信它的存在,并在必要的時候以它為參照。如果某個進程在它衍生出來的全部子進程結束之前被終止,就會出現(xiàn)必須以init為參照的情況。此時那些失去了父進程的子進程就都會以init作為它們的父進程。如果你執(zhí)行一下ps -af 命令,可以列出許多父進程ID(Parent Process ID,PPID)為1的進程來。Linux提供了一條pstree命令,允許用戶查看系統(tǒng)內正在運行的各個進程之間的繼承關系。直接在命令行中輸入pstree即可,程序會以樹狀結構方式列出系統(tǒng)中正在運行的各進程之間的繼承關系。

二、進程在運行中的三種狀態(tài):

執(zhí)行(Running)狀態(tài):CPU正在執(zhí)行,即進程正在占用CPU。
就緒(Waiting)狀態(tài):進程已經(jīng)具備的執(zhí)行的一切條件,正在等待分配CPU的處理時間片。
停止(Stoped)狀態(tài):進程不能使用CPU。
內核使用進程來控制對CPU和其他系統(tǒng)資源的訪問,并且使用進程來決定在CPU上運行那個程序、運行多久以及采用什么特性運行它。內核的調度器負責在所有的進程間分配CPU執(zhí)行時間,稱為時間片(time slice),它輪流在每個進程分得的時間片用完后從進程那里得到控制權。如果處理器比較快的話,你會覺得時間片非常小,仿佛是幾個進程在同時運行。在Linix操作系統(tǒng)啟動過程中,系統(tǒng)自動創(chuàng)建init等系統(tǒng)進程,用于管理內存資源以及對用戶進程進行調度等。進程是動態(tài)的, 一個程序的可以有多個進程同時或不同時執(zhí)行它。一次執(zhí)行多進程的好處在于你可以一邊發(fā)郵件,一邊聽音樂。

三、 理解Linux下進程的結構

Linux中一個進程在內存里有三部份的數(shù)據(jù),就是"數(shù)據(jù)段","堆棧段"和"代碼段",基于I386兼容的中央處理器,都有上述三種段寄存器,以方便操作系統(tǒng)的運行。
 
代碼段,是存放了程序代碼的數(shù)據(jù),假如機器中有數(shù)個進程運行相同的一個程序,那么它們就可以使用同一個代碼段。而數(shù)據(jù)段則存放程序的全局變量,常數(shù)以及動態(tài)數(shù)據(jù)分配的數(shù)據(jù)空間。堆棧段存放的就是子程序的返回地址、子程序的參數(shù)以及程序的局部變量。堆棧段包括進程控制塊PCB(Process Control Block)中。PCB處于進程核心堆棧的底部,不需要額外分配空間。
  
四、 Linux進程的種類

Linux操作系統(tǒng)包括三種不同類型的進程,每種進程都有自己的特點和屬性。 
a) 交互進程--由一個shell啟動的進程。交互進程既可以在前臺運行,也可以在后臺運行。
b) 批處理進程--這種進程和終端沒有聯(lián)系,是一個進程序列。
c) 監(jiān)控進程(也稱守護進程)--Linux系統(tǒng)啟動時啟動的進程,并在后臺運行。

五、 Linux進程的創(chuàng)建

在Linux下產(chǎn)生新的進程的系統(tǒng)調用就是fork函數(shù),這個函數(shù)名是英文中"分叉"的意思。為什么取這個名字呢?因為一個進程在運行中,如果使用了fork,就產(chǎn)生了另一個進程,于是進程就"分叉"了,所以這個名字取得很形象。fock的語法:
#include #include pid_t fork();
說明:本系統(tǒng)調用產(chǎn)生一個新的進程, 叫子進程, 調用進程叫父進程。
在Linux網(wǎng)絡編程中經(jīng)常用到fork()系統(tǒng)調用。例如一個客戶機/Web服務器構建的網(wǎng)絡環(huán)境中,Web服務器往往可以滿足許多客戶端的請求。如果一個客戶機如果需要訪問Web服務器需要發(fā)送一個請求,此時由服務器生成一個父進程,然后父進程通過fork()系統(tǒng)調用產(chǎn)生一個子進程,此時客戶機的請求由子進程完成。父進程可以再度回到等待狀態(tài)不斷服務其他用戶端。
 

有一個更簡單的執(zhí)行其它程序的函數(shù)system,參數(shù)string傳遞給一個命令解釋器(一般為sh)執(zhí)行, 即string被解釋為一條命令, 由sh執(zhí)行該命令.若參數(shù)string為一個空指針則為檢查命令解釋器是否存在.該命令可以和同命令行下的命令形式相同, 但由于命令做為一個參數(shù)放在系統(tǒng)調用中, 應注意編譯時對特殊意義字符的處理. 命令的查找是按PATH環(huán)境變量的定義的. 命令所生成的后果一般不會對父進多進程編程造成影響. 返回值:當參數(shù)為空指針時, 只有當命令解釋器有效時返回值為非零.若參數(shù)不為空指針, 返回值為該命令的返回狀態(tài)(同waitpid())的返回值. 命令無效或語法錯誤則返回非零值,所執(zhí)行的命令被終止. 其他情況則返回-1.它是一個較高層的函數(shù),實際上相當于在Shell下執(zhí)行一條命令,除了system之外,系統(tǒng)調用exec是用來執(zhí)行一個可執(zhí)行文件來代替當前進程的執(zhí)行映像。系統(tǒng)調用exit的功能是終止發(fā)出調用的進程。sleep 函數(shù)調用用來指定進程掛起的秒數(shù)。wait函數(shù)族用來等待和控制進程。poppen函數(shù)和system函數(shù)類似,區(qū)別是用管道方式處理的輸出。

六、進程的管理

Linux管理進程***方法就是使用命令行下的系統(tǒng)命令。

1、啟動進程
鍵入需要運行的程序的程序名,執(zhí)行一個程序,其實也就是啟動了一個進程。在Linux系統(tǒng)中每個進程都具有一個進程號(PID),用于系統(tǒng)識別和調度進程。啟動一個進程有兩個主要途徑∶手工啟動和調度啟動,后者是事先進行設置,根據(jù)用戶要求自行啟動。由用戶輸入命令,直接啟動一個進程便是手工啟動進程。但手工啟動進程又可以分為很多種,根據(jù)啟動的進程類型不同、性質不同,實際結果也不一樣。
(1) 前臺啟動
是手工啟動一個進程的最常用的方式。一般地,用戶鍵入一個命令"df",這就已經(jīng)啟動了一個進程,而且是一個前臺的進程。這時候系統(tǒng)其實已經(jīng)處于一個多進程狀態(tài)。有許多運行在后臺的、系統(tǒng)啟動時就已經(jīng)自動啟動的進程正在悄悄運行著。有的用戶在鍵入"df"命令以后趕緊使用"ps -x"查看,卻沒有看到df進程,也覺得很奇怪。其實這是因為df這個進程結束太快,使用ps查看時該進程已經(jīng)執(zhí)行結束了。如果啟動一個比較耗時的進程,例如在根命令下運行: find , 然后使用ps aux查看,就會看到一個find進程在里面。
(2) 后臺啟動
直接從后臺手工啟動一個進程用得比較少一些,除非是該進程甚為耗時,且用戶也不急著需要結果的時候。假設用戶要啟動一個需要長時間運行的格式化文本文件的進程。為了不使整個shell在格式化過程中都處于"癱瘓"狀態(tài),從后臺啟動這個進程是明智的選擇。

2、進程調度
當需要中斷一個前臺進程的時候,通常是使用Ctrl+c組合鍵;但是對于一個后臺進程就不是一個組合鍵所能解決的了,這時就必須使用kill命令.該命令可以終止后臺進程.至于終止后臺進程的原因很多,或許是該進程占用的CPU時間過多;或許是該進程已經(jīng)掛死.這種情況是經(jīng)常發(fā)生的。Kill命令的工作原理是:向Linux系統(tǒng)的內核發(fā)送一個系統(tǒng)操作信號和某個程序的進程標識號,然后系統(tǒng)內核就可以對進程標識號指定的進程進行操作。
除了kill外Linux下面的進程涉及到的命令還有:at :at命令在指定時刻執(zhí)行指定的命令序列;cron:cron命令用來完成重復的工作;crontab命令:crontab命令用于安裝、刪除或者列出用于驅動cron后臺進程的任務表。ps:ps命令主要查看系統(tǒng)中的進程;top命令:top命令和ps命令的基本作用是相同的,顯示系統(tǒng)當前的進程和其他狀況;但是top是一個動態(tài)顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態(tài)。nice:nice命令是進程按用戶指定的優(yōu)先級運行。renice: renice命令用來改變正在運行進程的優(yōu)先級

以上就是Linux進程技術的介紹。

【編輯推薦】

  1. Linux上的虛擬化技術 Xen虛擬化初學指南
  2. 處理Linux內核安全詳解
  3. Linux的Shell編程 Shell基本語法
  4. Linux的Shell編程 運行Shell程序的方法
  5. Linux的Shell編程bash的內部命令
責任編輯:小霞 來源: 博客園
相關推薦

2009-12-23 17:14:28

2009-12-23 11:05:28

Linux內核

2009-12-03 19:02:05

Linux

2010-01-05 14:46:03

Linux軟件安裝

2009-12-17 11:37:39

Linux網(wǎng)卡

2014-11-26 23:45:04

2016-06-08 11:36:52

2010-09-03 10:04:51

PPP Multili

2009-12-15 13:42:22

GNU計劃

2009-12-24 17:36:47

嵌入式Linux

2009-12-16 14:40:40

Linux調整虛擬機硬

2009-12-24 14:02:57

Linux集群技術

2010-06-09 12:07:59

路由選擇協(xié)議

2014-02-19 10:47:00

Android開發(fā)規(guī)范

2010-07-01 16:52:19

CAN總線協(xié)議

2018-05-30 13:42:39

2009-03-10 19:19:16

Linux日志文件系統(tǒng)安裝使用

2019-01-30 14:42:00

Apache服務器web服務器

2020-05-13 07:00:13

優(yōu)化云端方法

2010-01-05 15:32:33

點贊
收藏

51CTO技術棧公眾號