1. 程式人生 > >linux操作系統原理

linux操作系統原理

linux操作系統原理

linux:進程搶占,根據時間中斷搶占
系統時鐘:內部時鐘頻率,產生時鐘中斷
tick:時間解析度,中斷次數Hz

100Hz 每秒100次時間中斷
1000Hz
每次滴答都會產生可搶的時鐘中斷
A:5ms, 1ms
C:

進程類別:
交互式進程(I/O)
批處理進程(CPU)
實時進程(Real-time),立即響應,優先級最高

CPU密集型(批處理進程):時間片長,優先級低
IO密集型(交互式進程):時間片短,優先級高


[[email protected] ~]# ps -e -o class,rtprio,nice,pri,nice,cmd
CLS RTPRIO NI PRI NI CMD

TS (other) - 0 19 0 /sbin/init
TS - 0 19 0 [kthreadd] 凡是加了括號的都為內核線程
FF (fifo) 99 - 139 - [migration/0]
TS - 0 19 0 [ksoftirqd/0]
FF 99 - 139 - [migration/0]


Liunx優先級:priority
實時優先級:1-99,數字越小,優先級越低
靜態優先級:100-139,數字越小,優先級越高

nice值 -20到19,對應100到139,nice值為0對應的為120,默認為0
實時優先級畢靜態優先級高


nice值:調整靜態優先級

調度類別;
實時進程:
SCHED FIFO:first in first out 調度fifo的進程
SCHED_RR: round robin 調度rr的實時調度進程
SCHED_Other:專門用來調度用戶空間進程的,100-139之間的進程

紅帽6上多2個:

SCHED_BATCH 調度批處理進程

SCHED_IDLE 調度空閑進程

動態優先級:
臨時性的調高優先級,主要對100-139的進程,對用戶空間進程,長時間沒有獲得時間片或長時間獲得時間片,進行調整
dynamic priority = max (100,min ( static priority - bonus + 5,139)) 動態優先級等於 從100和 min ( static priority - bonus + 5,139)中取最大數

bonus(範圍-10到10)

比如110的優先級 懲罰3級的措施後
110-(-3)+5 =118
等於118

手動調整進程優先級:

100-139 :nice值

nice N COMMAND

renice -n 指定新的nice值 指定PID號

1-99:

chrt:

-p 指定PID

-f 指定fifo類別

-r 指定 rr類別

-b 指定批處理進程

-i 空閑進程

chrt -f -p [prio] PID 調整fifo的優先級

chrt -r -p [prio] PID 調整rr的優先級


chrt -f -p [prio] COMMAND 啟動命令時指定優先級

ps -e -o class,rtprio,nice,pri,nice,cmd 查看命令

chrt -p [prio] COMMAND 調整100-139進程的優先級




本文出自 “運維成長路” 博客,謝絕轉載!

linux操作系統原理