作業系統lab5

2021-09-24 11:19:47 字數 1961 閱讀 3537

檔案系統

實驗報告

實驗簡介

本實驗要求在假設的i/o系統之上開發乙個簡單的檔案系統,這樣做既能讓實驗者對檔案系統有整體了解,又避免了涉及過多細節。使用者通過create、open 、read等命令與檔案系統互動。檔案系統把磁碟視為順序編號的邏輯塊序列,邏輯塊的編號為0至l-1。i/o系統利用記憶體中的陣列模擬磁碟。

實驗要求

檔案系統的組織:磁碟的前k個塊是保留區,其中包含如下資訊:點陣圖和檔案描述符。位圖用來描述磁碟塊的分配情況。點陣圖中的每一位對應乙個邏輯塊。建立或者刪除檔案,以及檔案的長度發生變化時,檔案系統都需要進行位圖操作。前k 個塊的剩餘部分包含一組檔案描述符。每個檔案描述符包含如下資訊:

• 檔案長度,單位位元組

• 檔案分配到的磁碟塊號陣列。該陣列的長度是乙個系統引數。在實驗中我們可以把它設定為乙個比較小的數。

目錄:我們的檔案系統中僅設定乙個目錄,該目錄包含檔案系統中的所有檔案。除了不需要顯示地建立和刪除之外,目錄在很多方面和普通檔案相像。目錄對應0 號檔案描述符。初始狀態下,目錄中沒有檔案,所有,目錄對應的描述符中記錄的長度應為0,而且也沒有分配磁碟塊。每建立乙個檔案,目錄檔案的長度便增加一分。目錄檔案的內容由一系列的目錄項組成,其中每個目錄項由如下內容組成:

• 檔名

• 檔案描述符序號

對檔案的操作:檔案系統需提供如下函式;create, destroy, open, read, write。

• create(filename): 根據指定的檔名建立新檔案。

• destroy(filename): 刪除指定檔案。

• open(filename): 開啟檔案。該函式返回的索引號可用於後續的read, write, lseek, 或close 操作。

• close(index): 關閉制定檔案。

• read(index, mem_area, count): 從指定檔案順序讀入count 個位元組mem_area 指定的記憶體位置。讀操作從檔案的讀寫指標指示的位置開始。

• write(index, mem_area, count): 把mem_area 指定的記憶體位置開始的count 個位元組順序寫入指定檔案。寫操作從檔案的讀寫指標指示的位置開始。

• lseek(index, pos): 把檔案的讀寫指標移動到pos 指定的位置。pos是乙個整數,表示從檔案開始位置的偏移量。檔案開啟時,讀寫指標自動設定為0。每次讀寫操作之後,它指向最後被訪問的位元組的下乙個位置。lseek 能夠在不進行讀寫操作的情況下改變讀寫指標能位置。

• directory: 列表顯示所有檔案及其長度。

實驗結果

圖(命令選單)

圖(建立檔案)

圖(顯示當前檔案)

圖(刪除檔案)

圖(開啟檔案)

圖(寫操作)

圖(讀操作)

圖(關閉檔案)

圖(ldisk)

**見github:

北航作業系統實驗lab5總結

磁碟檔案系統是一種設計用來利用資料儲存裝置來儲存計算機檔案的檔案系統,最 常用的資料儲存裝置是磁碟驅動器,可以直接或者間接地連線到計算機上。與此相對的是眾多微核心中使用的使用者空間檔案系統,其特點是檔案系統在使用者空間中實現,通過特殊的系統呼叫介面或者通用機制為其他使用者程式提供服務。整個檔案系統包...

作業系統實驗課程 Lab1

lab1 bootloader interrupt device driver 啟動作業系統的bootloader,了解作業系統啟動前的狀態和要做的準備工作,了解執行作業系統的硬體支援,作業系統如何載入到記憶體中,理解兩類中斷 外設中斷 陷阱中斷 等 1.基於分段機制的儲存管理 2.裝置管理的基本概...

作業系統5

虛擬機器 是用軟體來模擬具有完整硬體功能的,執行在乙個完全隔離環境的計算機系統,應用在虛擬機器在執行的慢是因為虛擬機器需要模仿底層的硬體指令 微核心的設計思想 為了實現高可靠性,將作業系統劃分成小的,良好定義的模組,只有微核心模組執行在核心態,其餘的模組由於功能相對弱些,則作為普通使用者程序,特別是...