上一節主要梳理了下調度器的流程,其中對於blk_init_allocated_queue有一個elevator_init的初始化函數,下面從elevator_init為突破口,來看看內核中有哪些的調度算法。對於elevator_init其主要用來為請求隊列分配一個I/O調度器 ...
通過generic make request提交請求給I O調度層,這個函數最后調用到q gt make request fn q, bio ,那么對於這個函數的調用就是I O調度層的入口點,首先來看看這個make request fn在哪被賦於能量的 從上面可以看出,這個函數是設置一些請求隊列的參數,如請求數目,dma處理的時候的對齊,i o參數和請求處理函數。下面需要層層剝絲,直到發現由哪個 ...
2016-06-10 21:03 0 2340 推薦指數:
上一節主要梳理了下調度器的流程,其中對於blk_init_allocated_queue有一個elevator_init的初始化函數,下面從elevator_init為突破口,來看看內核中有哪些的調度算法。對於elevator_init其主要用來為請求隊列分配一個I/O調度器 ...
通過上節,基本了解了一個文件的訪問過程,user空間通過一系列的調用,將會創建了一個請求,該請求指明了要讀取的數據塊所在磁盤的位置、數據塊的數量以及拷貝該數據的目標位置,然后調將求提交給通用塊層處理,首先來看看塊設備通用層涉及到幾個重要的數據結構。 當一個塊被調用內存時,要儲存在一個 ...
IO調度器的總體目標是希望讓磁頭能夠總是往一個方向移動,移動到底了再往反方向走,這恰恰就是現實生活中的電梯模型,所以IO調度器也被叫做電梯. (elevator)而相應的算法也就被叫做電梯算法.而Linux中IO調度的電梯算法有好幾種,一個叫做as(Anticipatory),一個叫做 cfq ...
I/O設備一般是由執行I/O操作的機械部分和執行控制I/O的電子部件組成。 通常將這兩部分分開,執行I/O操作的機械部分就是一般的I/O設備,而執行控制I/O的電子部件則稱為設備控制器或適配器(adapter)。 在微型機和小型機中的控制器常做成印刷電路卡形式,因而也常稱為控制卡、接口卡或網卡 ...
一.早期階段:CPU和IO設備串行工作,分散連接,I/O設備與主存交換信息必須經過CPU. 程序查詢方式:由CPU通過程序不斷查詢IO設備是否己做好准備,從而控制IO設備與主機交換信息。 二.接口模塊和DMA階段:CPU和IO並行工作,總線連接,IO設備通過接口模塊連接總線上與CPU交流 ...
【基本概念】 1、阻塞 阻塞操作是指在執行設備操作時,托不能獲得資源,則掛起進程直到滿足操作所需的條件后再進行操作。被掛起的進程進入休眠狀態(不占用cpu資源),從調度器的運行隊列轉移到等待隊列,直到條件滿足。 2、非阻塞 非阻塞操作是指在進行設備操作是,若操作條件不滿足並不會掛起 ...
IO概念 一.發展過程: 1.早期階段:CPU和IO設備串行工作,分散連接,I/O設備與主存交換信息必須經過CPU. 程序查詢方式:由CPU通過程序不斷查詢IO設備是否己做好准備,從而控制IO設備與主機交換信息。 2..接口模塊和DMA階段:CPU和IO並行工作,總線連接,IO設備通過接口模塊 ...
傳送數據 4.反映設備的工作狀態 結構:設備選擇電路、命令寄存器和命令譯碼器、數據緩沖寄存器DBR, ...