linux操作系統原理

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

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

進程類別:
   交互式進程(I/O)
   批處理進程(CPU)
   實時進程(Real-time),立即響應,優先級最高
   
   CPU密集型(批處理進程):時間片長,優先級低
   IO密集型(交互式進程):時間片短,優先級高


[root@localhost ~]# 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進程的優先級




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章