日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

20135320赵瀚青LINUX第四章读书笔记

發布時間:2024/4/17 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20135320赵瀚青LINUX第四章读书笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

什么是進程調度

  • 進程調度:在可運行態進程之間分配有限處理器時間資源的內核子系統。

    一、調度策略

    4.1進程類型

  • I/O消耗型進程:大部分時間用來提交I/O請求或是等待I/O請求,經常處于可運行狀態,但運行時間短,等待請求過程時處于阻塞狀態。如交互式程序。

  • 處理器消耗型進程:時間大都用在執行代碼上,除非被搶占否則一直不停的運行。

  • 綜合型:既是I/O消耗型又是處理器消耗型。

  • 調度策略要在:進程響應迅速(響應時間短)和最大系統利用率(高吞吐量)之間尋找平衡。

    4.2 調度概念

  • 優先級:基于進程價值和對處理器時間需求進行進程分級的調度。

  • 時間片:表明進程被搶占前所能持續運行的時間,規定一個默認的時間片。時間片過長導致系統交互性的響應不好,

  • 程序并行性效果差;時間片太短增大進程切換帶來的處理器耗時。矛盾!

  • 間片耗盡進程運行到期,暫時不可運行狀態。直到所有進程時間片都耗盡,重新計算進程時間片。

  • Linux調度程序提高交互式程序優先級,提供較長時間片;實現動態調整優先級和時間片長度機制。

  • 進程搶占:Linux系統是搶占式,始終運行優先級高的進程。

4.3 策略

  • 決定調度程序在何時讓進程運行。

    4.3.1 I/O消耗型和處理器消耗型的進程

  • I/O消耗型:大多時間在提交或等待I/O請求。

  • 處理器消耗型:大多時間在執行代碼。不屬于I/O驅動類型。

4.3.2 進程優先級

  • 相同優先級按照輪轉方式進行調度。

  • 調度程序總是選擇時間片未用盡且優先級高的進程運行。

4.3.3 時間片

  • nice值作為權重將調整進程所使用的處理器時間使用比。

  • I/O消耗型:不需要長的時間片。

  • 處理器消耗型:需要越長越好的時間片。

4.3.4 調度策略的活動

文字編輯程序顯然是 1/0 消耗型的,因為它大部分時間都在等待用戶的鍵盤輸入〈無論用戶的輸入速度有多快,都不可能趕上處理的速度λ 用戶總是希望按下鍵系統就能馬上響應。視頻編碼程序是處理器消耗型的。

4.4 Linux調度算法

4.4.1 調度器類

以模塊方式提供的,這樣做的目的是允許不同類型的進程可以有針對性地選
擇調度算哉。

4.4.2 Unix系統中的進程調度

4.4.3 公平調度

CFS的做怯是允許每個進程運行一段時間、循環輪轉、選擇運行最少的進程作為下一個運行進程,而不再采用分配給每個進程時間片的做法了,在所有可運行進程總數基礎上計算出一個進程應該運行多久。 - -

nice 值在 CFS 中被
作為進程獲得的處理器運行比的權重:越高的nice 值(越低的優先級)進程在得更低的處理器
使用權重。

可運行進程數量趨于無窮,每個最少也能獲得 lms 的運行時間。

任何進程所獲得的處理器時間是由它自己和其他所有可運行進程nice 值的相對差值決定的。

4.5 Linux調度的實現

4.5.1 時間記賬

所有的調度器都必須對進程運行時間做記賬。CFS 使用調度器實體結構(定義在文件<linux/sched.h>的 struct_sched _entity 中)來追蹤進程運行記賬。CFS 使用 vruntime 變量來記錄一個程序到底運行了多長時間以及它還應該再運行多久。定義在kemeVsched_fair.c 文件中的 update_curr()函數實現了該記賬功能。update_ currO 計算了當前進程的執行時間,并且將其存放在變量delta_exec 中,update_ curr()是囪系統定時器周期性調用。

4.5.3 調度器入口

主要入口點是函數schedule(),它定義在文件kemel/sched.c中。

4.5.4 睡眠和喚醒

睡眠:為了等待一些事件。內核的操作都相同 2 進程把自己標記成休眠狀態,從可執行紅黑樹中移出,放入等待隊列,然后調用 schedule()選擇和執行一個其他進程。喚醒的過程剛好相反進程被設置為可執行狀態,然后再從等待隊列中移到可執行紅黑樹中。

4.6.1 用戶搶占

  • 用戶搶占在以下情況時產生:

  • 從系統調返回用戶空間時;
  • 從中斷處理程序返回用戶空間時;

4.6.2 內核搶占

內核搶占會發生在:

中斷處理程序正在執行,且返回內核空間之前 內核代碼再一次具有可搶占性 如果內核中的任務顯式地調用 schedule() 如果內核中的任務阻塞(這同樣也會導敖調用 schedule()

4.7 實時調度策略

兩種策略
SCHED_FIFO和 SCHED_RR

SCHED_FIFO 實現了一種簡單的、先入先出的調度算怯
SCHED_RR 是帶有時鬧片的 SCHED_FIFO,一種實時輪流調度算掛.

4.8 與調度相關的系統調用

4.8.1 與調度策略和優先級相關的系統調用

sched_setparam()和sched__getparam()分別用于設置和獲取進程的實時優先級

nice()函數會調用內核的 set_ user_ nice()函數,這個函數會設置進程的 task_struct 的 static_prio 和prio 值。

轉載于:https://www.cnblogs.com/5320zhq/p/5384757.html

總結

以上是生活随笔為你收集整理的20135320赵瀚青LINUX第四章读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。