I O檔案的具體操作

2021-08-20 19:41:12 字數 1221 閱讀 5223

對於乙個磁碟來說,檔案系統是通過檔案目錄從檔名來進行對映,從而得到了檔案的空間分配,比如說ms-dos將檔名對映為乙個數,這個數顯示了檔案訪問表的乙個條目,這個條目說明了哪些磁碟塊被分配給檔案。在unix當中將檔名對映為inode號,相應的inode包含了空間分配資訊

從檔名到磁碟控制器的連線是如何建立的?下面就舉個例子來說明

在ms-dos當中,其檔名在冒號前的部分有乙個字串比如說c:\asbc\ass.html,這裡的c就可以用來表示特定的硬體裝置,就比如說作業系統可以規定c:代表的就是我整個磁碟裝置當中的第乙個磁碟,然後可以通過c:這個字串去通過裝置表的對映去找到乙個特定的埠,就可以去找到這個磁碟控制器

在unix當中的路徑名是不區分裝置部分的也就是說沒有冒號這一說,但是在unix當中有乙個裝配表,用這個可以將路徑名的字首和特定裝置的名稱相連線,然後去解析這個錄節目的時候,unix會檢查裝配表內的名稱以找到最長的匹配字首裝配表當中的相應的條目就會給出裝置的名稱,這個裝置的名稱在檔案系統命名空間當中還有乙個名稱,當unix在檔案系統目錄結構當中找到這個名稱的時候,得到的不是inode號,而是裝置號《主,次》,然後主裝置號表示處理該裝置i/o的裝置驅動程式,次裝置號是傳遞給裝置驅動程式以查詢裝置表,裝置表內的相應條目會給出裝置控制器的埠位址或者是記憶體對映位址

目前現代的作業系統通過對請求與物理裝置控制器之間的多級表查詢,可以獲得巨大的靈活性。應用程式與驅動程式之間的請求傳遞機制是通用的,因此,不必重新編譯核心也能為計算機引入新裝置和新的驅動程式

有的作業系統是按需載入裝置驅動程式的,在啟動的時候,系統胡先去檢測硬體匯流排以確定有哪些裝置,然後接著作業系統就馬上或等待第一次i/o騎牛的時候裝入所需的驅動程式

下面是關於乙個阻塞i/o的read請求的圖

IO檔案讀寫具體操作

outputstream 把記憶體中的資料寫入到硬碟的檔案 1 寫入單個字元 public static void main string args throws ioexception 當開啟a.txt的時候,會發現寫入的是a,這是因為任意文字編輯器開啟檔案都回去查詢編碼表,把位元組轉換為字元表示...

Spring 具體操作

1.建立物件 ioc建立物件的方式1.預設使用無參構造建立物件 2.在呼叫 getbean 方法時,配置檔案內的所有物件都被建立 使用有參構造建立物件 xmlns xmlns xsi xsi schemalocation user class com.liye.pojo.user name age ...

MFC ListControl 具體操作詳細用法

1 listcontrol初始化 listcontrol初始化 新增在虛函式cdlg oninitdialog 中 m mylist.modifystyle 0l,lvs showselalways dword dwstyle m mylist.getextendedstyle dwstyle lv...