成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全面了解Linux進程技術

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

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

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

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

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

二、進程在運行中的三種狀態:

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

三、 理解Linux下進程的結構

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

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

五、 Linux進程的創建

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

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

六、進程的管理

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

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

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

以上就是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網卡

2014-11-26 23:45:04

2016-06-08 11:36:52

2009-12-15 13:42:22

GNU計劃

2010-09-03 10:04:51

PPP Multili

2009-12-16 14:40:40

Linux調整虛擬機硬

2009-12-24 17:36:47

嵌入式Linux

2009-12-24 14:02:57

Linux集群技術

2010-06-09 12:07:59

路由選擇協議

2014-02-19 10:47:00

Android開發規范

2010-07-01 16:52:19

CAN總線協議

2018-05-30 13:42:39

2009-03-10 19:19:16

Linux日志文件系統安裝使用

2021-06-01 17:40:54

111

2019-01-30 14:42:00

Apache服務器web服務器

2020-05-13 07:00:13

優化云端方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 五月天天丁香婷婷在线中 | 999国产精品视频 | 久色| 国产精品日韩欧美一区二区三区 | 婷婷色婷婷 | 久久精品国产一区二区三区 | 日韩欧美在线不卡 | 亚洲国产aⅴ精品 | 国产精品一区二区三区久久久 | 亚洲视频www | 黄色小视频大全 | 日本视频免费 | 国产一区二区三区 | 中文字幕成人av | 精品国产久 | 久久国产欧美一区二区三区精品 | 精品国产欧美 | 亚洲成人中文字幕 | 久久久久久久久一区 | 中文字幕免费在线观看 | 男人的天堂久久 | 一区二区三区av | 欧美日韩1区 | 国产精品久久久久久久久久久久冷 | 福利视频一区二区 | 国产一区二区在线免费观看 | 拍真实国产伦偷精品 | 男女久久久| 亚洲精品在线国产 | 偷拍自拍第一页 | 精品av久久久久电影 | 亚洲欧美精品国产一级在线 | 9久久婷婷国产综合精品性色 | 美日韩精品 | 欧美精品一区二区三区四区五区 | 91精品国产色综合久久不卡98 | 中文字幕第100页 | 日韩和的一区二区 | 怡红院成人在线视频 | 亚洲高清成人 | 黄色国产在线视频 |