1、內核數據結構(task structure)
包含了:PID PPID 進程上一次的運行狀態 相關數據 名稱等信息
堆:動態增加的內存,可以簡稱爲堆
stack:棧,用於存儲本地變量
MMU:內存管理單元(CPU中的設備)
進程切換:也叫上下文切換(
進程包含的信息
進程號
內存空間
用戶
父進程
CPU time
VSZ:虛擬內集,即進程的虛擬內存大小,包含了共享庫的內存大小,棧,堆,data,程序命令本身
RSS:常住內存集(residentsize)
多線程:thread,多線程需並行編程模型編寫,即可以使用多線程處理任務
進程狀態:
stopped:停止,不會被調試
ready:就緒,排隊中
executing:正在運行,
uninterruptible:睡眠狀態(sleep),不可中斷的睡眠,需等待IO的資源
sleep:當一個進程需要與IO設備讀取文件時,等待文件的讀取過程,需要交出CPU運行時間,給予
其他進程運行,故睡眠
interruptible:睡眠狀態(sleep),可中斷的睡眠
zombie:殭屍進程
kernel-->init-->生成任務進程
pstree
大O標準:
o(1)
o(n)
0(logn)
o(n^2)
o(2^n)
進程知識
進程狀態
父子關係
優先級關係:0-139,一共140個優先級,數值越小優先級越高,100-139用戶可控制的,0-99內核調 整的
高優先級的特性:1、獲得更多的CPU運行時間,2、更優先獲得運行的機會。
每個進程都有一個nice值:優雅的,友好的,nice值從-20到19分別對應100-139,默 認每個程序的nice都爲0,普通用戶只能調大自己的進程的nice值,管理可以隨意調整
進程號:process ID
在/proc/目錄下,以數字開頭的文件夾就爲一個進程,數字爲PID,其中init進程號永遠爲1
命令:
ps :process state
BSD風格:不需要加橫線
a:顯示所有跟終端有關的進程
u:顯示進程由哪個用戶啓動的
x:所有與終端無關的進程
system V風格:選項需要加橫線
-e:顯示所有進程
-l:長格式
-F:顯示完全字段
ps -o property1,property2:指定顯示的字段
進程的分類:
跟終端相關的進程:
跟終端無關的進程
進程狀態:
D:不可中斷的睡眠
R:運行或就緒
S:可中斷的睡眠
T:停止
S:僵死態
<:高優先級的進程
N:低優先級進程
+:前臺進程組中的進程
l:多線程進程
s:會話進程首進程,會話進程的領導者
COMMAND進程,如果加[],說明是一個內核線程
pstree:顯示進程數
pgrep:以指定字段顯示進程
pgrep -u root bash
pidof:查找某進程的ID號
pidof sshd
top:動態顯示進程信息
load average:平均隊列長度 1,5,10分鐘,值越小CPU負載就越低
us:用戶空間所佔的百分比
sy:系統空間所佔的百分比
ni:調整優先級所佔的百分比
id:空閒的百分比
wa:等待IO完成的所佔的百分比
hi:硬件中斷所佔的百分比
si:軟中斷所佔的百分比
st:被偷走的時間
virt:虛擬內存集
res:常駐內存集
shr:共享內存大小
top的交互子命令:
M:根據駐留內存大小進行排序
P:根據CPU使用百分比進行排序
T:根據累計時間進行排序
l:是否顯示平均負載和啓動時間
t:是否顯示進程和CPU狀態相關信息
m:是否顯示內存相關信息
c:是否顯示完整的命令行信息
q:退出top
k:終止某個進程
top選項
-d #:設置刷新時長
-b:以批處理模式刷新顯示
-n #:在批處理模式顯示幾屏
進程間通信(IPC : Inter process communication)
共享內存機制
信號機制:signal
Semaphore:旗語機制
kill -l:顯示所有的信號,重要的信號如下:
1:SIGHUP:讓一個進程不用重啓,就可以重讀其配置文件,並讓新的配置信息生效
2:SIGINT:ctrl+c,中斷一個進程
9:SIGKILL:殺死一個進程
15:SIGTERM:殺死或中止一個進程,給時間,讓其保存工作,默認指定的信號
調用或指定信號:
信號號碼:kill -1
信號名稱:kill -SIGKILL
信號名稱簡寫:kill -KILL
kill 命令:
kill PID
killall COMMAND
調整用戶的nice值:
1、調整已經啓動的進程的nice值:
renice NI PID
2、啓動時指定nice值
nice -n NI COMMAND
後臺運行任務:
Command & ,將命令放到後臺運行
ctrl+z,前臺調到後臺,但任務會被掛起
bg:讓後臺的停止作業繼續運行
bg [%]JOBID
Jobs:查看後臺的所有作業,作業號不同於進程號
+:命令將默認操作的作業
-:命令將第二個默認操作的作業
fg:讓後臺運行的作業調回前臺
fg [%]JOBID
殺死後臺進程
kill %JOBID
vmstat命令,系統狀態查看命令
r:運行隊列長度
b:阻塞隊列長度
in:中斷的個數
us:用戶空間佔用的百分比
sy:內核空間佔用的百分比
id:空閒
wa:等待IO
CS:上下文切換的次數
vmstat # :每隔#秒刷新一次
vmstat # #1:每隔#秒鐘顯示一次,只顯示#1次
uptime命令:查看系統運行信息
/proc/meminfo 查看內存的相關信息