獨佔裝置的分配程式

2021-10-08 11:23:57 字數 524 閱讀 4167

分配裝置

首先根據i/o請求中的物理裝置名查詢系統裝置表(sdt),從中找出該裝置的裝置控制表(dct),再根據dct中的裝置狀態字段,檢視該裝置是否繁忙,若忙,則將請求i/o的程序的pcb掛在裝置佇列上;否則,按照某種演算法,計算本次裝置分配的安全性。如果不會導致系統進入不安全狀態,則把裝置分配給請求程序;否則,仍將pcb插入裝置等待佇列。

分配控制器

在系統把裝置分給請求i/o的程序後,再到其dct中查詢與該裝置連線的控制器的coct,從coct的狀態字段中可知道該控制器是否繁忙。若忙,則將請求i/o程序的pcb,掛在該控制器的等待佇列上。否則,便將控制器分配給該程序。

分配通道

在該coct中又可找到與該控制器連線的通道的chct,再根據chct內的資訊檢視該通道是否繁忙,若忙,則將請求i/o的程序掛在通道的等待佇列上,否則,將通道分配給該程序。

只有在裝置、控制器、通道三者都分配成功時,這次的裝置分配才算成功

sdt->dct->coct->chct

為C 標準庫容器寫自己的記憶體分配程式

根據sgi 的stl原始碼的二級分配演算法改寫的記憶體池分配程式,只要稍微修改就可以實現共享記憶體方式管理,使用c 標準庫容器中的map,set,multimap,multiset測試通過,vector測試通不過,原因是在記憶體 的時候考慮的比較簡單,vector每次分配記憶體個數不固定,也不固定,...

字元裝置編號的註冊分配

核心中所有已分配的字元裝置編號都記錄在乙個名為 chrdevs 雜湊表裡。該雜湊表中的每乙個元素是乙個 char device struct 結構,它的定義如下 static struct char device struct chrdevs chrdev major hash size 注意,核心...

程式的記憶體分配

一 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是...