unix system V
BSD
ps -e 顯示所有進程(tty相關的是前臺進程 ?tty無關)
-u 用戶相關
-f full format listing
-F print extra information
-o command 選擇顯示字段
ps aux
ps -ef
ps -eF
bsd風格
a
x
state:
S sleep
s session loader
< high priority
N low priority
l multithread
+ 前臺進程組中的進程 如與bash相關的前臺進程組
D uninterruptible sleeping
R runnable or running
T stop
Z zombie
加[]表示內核級線程
ps aux | wc -l
pgreb 過濾顯示某些進程
pidof process
進程間通信 IPC
信號
共享內存
proc目錄
信號 短小信息,由一個進程發往另一個進程
man 7 signal kill -l
SIGHUP 1 運行時重啓配置
SIGINT 2 終止信號 ctrl+c
SIGKILL 9 立即結束
kill -signal pid signal 默認15
killall -signal pid 進程樹
kill -HUP httpd
重新讀取配置文件
j進程優先級
進程:
Task_struct c語言實現 鏈表實現
進程描述符 元數據
雙向鏈表
struct含有龐大的描述符數據結構。
進程由內核切換 存在用戶態與內核態之間的切換。
內核模式不應占用太多時間 切換過多
cpu密集型 批處理 時間片長 優先級低
io交互式 時間片短 優先級高
實時進程 real-time
linux優先級 proority
實時優先級 1-99 數字越小 優先級越低
靜態優先級 100-139 數字越小 優先級越高
實時優先級高於靜態優先級
內核進程常爲實時優先級 rt實時優先級
nice 調整靜態優先級 Nice -20 ~ 19 對應 100-139 默認nice 0 優先級120
進程隊列 兩個 活動隊列 過期隊列
活動時調換兩個隊列 活動 過期 調換 o(1)算法
CFQ complete fair queue
SCHED_Other 更適用於桌面系統
cow Copy On Write 寫時複製 先與父進程共享資源 子進程要修改則複製
RT
SCHED_FIFO
SCHED_RR
100-139
SCHED_Other
SCHED_BATCH
SCHED_IDLE
memory controller
get address
read/write
三級緩存是共享的 存在競爭
numa no union memory access
內核重新平衡內存訪問