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 檢視記憶體的相關資訊