linux進程管理及進程
A. linux進程管理怎麼樣工作的
linux的進程管理,process進程間的常用信號1 SIGHUP 如果進程終止則掛斷該進程2 SIGINT 從鍵盤ctrl-c中斷進程9 SIGKILL 強制終止進程15 SIGTERM 正常終止進程17 SIGSTOP 從鍵盤ctrl-z暫停進程詳細見man 7 signal進程管理相關命令ps 顯示當前進程信息top 實時顯示當前進程信息並可以進程管理pstree 顯示進程樹結構kill 向進程發送信號,對進程重啟、終止等功能killall 通過進程名稱關閉進程nice 啟動新進程並設置它的優先順序root可任意調整nice值,范圍-20~19一般user僅可將nice值調高,范圍0~19renice 對正在運行的進程的nice值進行修改free 顯示內存使用情況uname 顯示系統信息uptime 顯示系統啟動時間和工作負載netstat 顯示網路信息dmesg 顯示核心檢測系統信息vmstat 檢測系統各項資源運行狀況fuser 查看正使用文件的進程lsof 查看某個進程正在使用那些文件pidof 找出正在運行的進程的PID相關文件/proc/* 整個系統的所有進程信息詳細見man 5 proc
B. linux內核基礎進程管理
linux內核基礎進程管理
進程管理
進程:
處於執行期的程序(目標碼存放在內存中),進程是其所用的資源和打開的文件描述符,CPU的使用情況,掛起的信號,內核的內部數據等等一系列的信息與資源的總稱。
執行線程:
簡稱線程,是在進程中活動的對象,每一個線程都擁有一個獨立的程序計數器,進程棧,和一組進程寄存器。
在內核看來,線程只是一種特殊的進程,所以內核的調度對象是線程,而不是進程。
進程提供兩種虛擬機制:
虛擬處理器和虛擬內存,其實就是一種假象,給進程提供的一種假象,好像進程正在獨立的使用所有的內存資源與整個處理器,假象一直是計算機的一個重要問題,在《深入理解計算機系統》一書中有更詳細的描述。
進程描述符及任務結構:
內核把進程的列表放在一個叫做任務隊列的雙向鏈表中,其中的每一項是一個結構體,task_struct這是一個稱為進程描述符的結構這個結構包含一個進程所需的所有信息。在32位機器上就有1.7KB已經不小了。
分配進程描述符:
linux通過slab分配器分配進程描述符。現在一般建立一個struct thread_info 結構體來記錄進程描述符的,這個結構體是為了減少對寄存器的依賴,尤其是像X86 這種寄存器較少的結構,一般進程描述符是提前分配並且在一個進程死亡後它的描述符還可以再次使用所以linux的進程創建非常迅速。
進程描述符的存放:
內核通過唯一的進程標識值或者PID來標識每一個進程。PID其實是一個整形,可以通過改變系統代碼的宏值來改變進程ID的上限。
C. Linux進程和文件管理
通過進程pid 查看進程引用的文件
#lsof -p 13444
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
pptpd 13444 root cwd DIR 3,1 4096 2 /
pptpd 13444 root rtd DIR 3,1 4096 2 /
pptpd 13444 root txt REG 3,1 32597 2962913 /usr/local/sbin/pptpd
pptpd 13444 root mem REG 3,1 144776 3375150 /lib64/ld-2.5.so
通過埠號查看
##lsof -i [email protected]:80
#+d 顯示某目錄下的打開文件 +D 顯示某目錄下的打開文件,包括子目錄。
lsof +d /usr/local
lsof +D /usr/local
#-u 顯示某用戶打開的文件
lsof -u root
D. linux操作系統中常見的進程管理命令有哪些
ps:查看進程
pstree:顯示進程狀態樹
pgrep:查找匹配條件的進程
kill:終止進程
killall:通過進程名終止進程
pkill:通過進程名終止進程
top:實時顯示系統中各個進程的資源佔用狀況
nice:調整程序運行時的優先順序
renice:調整運行中進程的優先順序
nohup:用戶退出系統進程繼續工作
strace:跟蹤進程的系統調用
ltrace:跟蹤進程調用庫函數
runlevel:輸出當前運行級別
init:初始化Linux進程
service:管理系統服務
E. 討論linux 系統進程運行的機制和特點,系統通過什麼來管理進程
進程提供了兩種優先順序,一種是普通的進程優先順序,第二個是實時優先順序。前者適用SCHED_NORMAL調度策略,後者可選SCHED_FIFO或SCHED_RR調度策略。任何時候,實時進程的優先順序都高於普通進程,實時進程只會被更高級的實時進程搶占,同級實時進程之間是按照FIFO(一次機會做完)或者RR(多次輪轉)規則調度的。
首先,說下實時進程的調度
實時進程,只有靜態優先順序,因為內核不會再根據休眠等因素對其靜態優先順序做調整,其范圍在0~MAX_RT_PRIO-1間。默認MAX_RT_PRIO配置為100,也即,默認的實時優先順序范圍是0~99。而nice值,影響的是優先順序在MAX_RT_PRIO~MAX_RT_PRIO+40范圍內的進程。
F. Linux如何實現進程管理
管理系統進程還是自己派生出來的進程, 是講述系統的進程管理原理嗎?
如果是實現自己的進程管理的話,可以採用派生子進程,然後通過消息隊列、管道、共享內存區管理子進程
系統的進程實現原理很復雜的
G. Linux如何進行進程調度引入線程機制後,進程管理內容包括哪些
進程調度的演算法有很多,簡單來說就是每個進程都有一個自己的時間片,時間到了,就會被掛起,然後系統挑選下一個合適的進程來執行。至於誰合適,那就要看演算法了,優先順序,是不是飢餓,I/O型還是運算型,都要考慮的。
調度演算法比較復雜龐大,不是這里說的清楚的。
進程切換的過程大概就是保存當前上下文,也就是各種寄存器的狀態,包括指令寄存器。然後把下一個進程的上下文載入上來。
有了線程機制之後,進程管理主要管理線程之間的數據共享,管理進程地址空間,進程的交換空間。因為這些資源是屬於進程的,線程之間是共享的。
現代操作系統調度基本是圍繞線程進行的,進程更多的是起到資源管理分配的作用。
H. Linux進程內存如何管理
Linux系統提供了復雜的存儲管理系統,使得進程所能訪問的內存達到4GB。在Linux系統中,進程的4GB內存空間被分為兩個部分——用戶空間與內核空間。用戶空間的地址一般分布為0~3GB(即PAGE_OFFSET,在Ox86中它等於OxC0000000),這樣,剩下的3~4GB為內核空間,用戶進程通常只能訪問用戶空間的虛擬地址,不能訪問內核空間的虛擬地址。用戶進程只有通過系統調用(代表用戶進程在內核態執行)等方式才可以訪問到內核空間。每個進程的用戶空間都是完全獨立、互不相乾的,用戶進程各自有不同的頁表。而內核空間是由內核負責映射,它並不會跟著進程改變,是固定的。內核空間的虛擬地址到物理地址映射是被所有進程共享的,內核的虛擬空間獨立於其他程序。Linux中1GB的內核地址空間又被劃分為物理內存映射區、虛擬內存分配區、高端頁面映射區、專用頁面映射區和系統保留映射區這幾個區域。對於x86系統而言,一般情況下,物理內存映射區最大長度為896MB,系統的物理內存被順序映射在內核空間的這個區域中。當系統物理內存大於896MB時,超過物理內存映射區的那部分內存稱為高端內存(而未超過物理內存映射區的內存通常被稱為常規內存),內核在存取高端內存時必須將它們映射到高端頁面映射區。Linux保留內核空間最頂部FIXADDR_TOP~4GB的區域作為保留區。當系統物理內存超過4GB時,必須使用CPU的擴展分頁(PAE)模式所提供的64位頁目錄項才能存取到4GB以上的物理內存,這需要CPU的支持。加入了PAE功能的Intel Pentium Pro及以後的CPU允許內存最大可配置到64GB,它們具備36位物理地址空間定址能力。由此可見,對於32位的x86而言,在3~4GB之間的內核空間中,從低地址到高地址依次為:物理內存映射區隔離帶vmalloc虛擬內存分配器區隔離帶高端內存映射區專用頁面映射區保留區。