《作業系統》
課程設計報告
姓名吳昊學號 20091811042
系別資訊管理與工程系
專業電腦科學與技術班級 09級
課程設計題目模擬檔案管理系統
指導教師崔新會
小組成員吳昊、丁強強、辛夢娟、
王放、周洋
2012 年 6 月 11 日
目錄 內容摘要 (2)
第一章引言 (2)
第二章需求分析 (4)
第三章系統功能與設計 (7)
3.1功能實現 (7)
3.2 介面設計 (23)
第四章總結 (26)
4.1 問題及解決辦法 (26)
4.2 課程設計的收穫 (26)
第一章引言
本學期我們學習了《計算機作業系統》這門課程,重點內容有處理及管理、儲存器管理、裝置管理和檔案管理,其中檔案管理作為這門課程的重點部分,不僅能夠實現使用者對檔案的各種操作,而且能方便計算機對檔案實現按模組管理。
而我們組就檔案管理系統這一模組做了乙個虛擬的檔案管理系統,簡單是實現了檔案的各種操作,以求加深對課本知識的更深層次的理解與理論知識的掌握。組織和管理了虛擬系統中儲存的資料,實現了建立多級目錄以及不同目錄下的檔案建立,然後寫入檔案;取資料時候根據存入的許可權進行操作,包括複製、貼上、剪下、修改等操作。
我們選用的語言是c#,用c#做了乙個檔案模擬系統。
實現內容:建立檔案,刪除檔案,複製檔案,貼上檔案,顯示檔案,編輯檔案,建立目錄,刪除空目錄,刪除目錄等等。
建立樹形結構:對多級目錄用的是樹形節點進行節點建立的。
磁碟模擬:
用乙個檔案disk模擬磁碟,磁碟的每乙個塊64個位元組,模擬磁碟工128個塊,第0,1塊存放檔案分配表,第2個存放根目錄,期於存放子目錄和檔案。磁碟分配磁碟分配採用鏈式結構,系統採用檔案分配表的方式記錄磁碟空間的使用情況和鏈式結構的指標。
第二章需求分析
2.1 模擬檔案系統的功能流程圖
建立目錄:目錄下可以進行操作
1) 目錄下建立檔案:
1 件需要檔名、拓展名、讀寫許可權、檔案內容
2 將檔案寫入磁碟
3 根據讀寫許可權顯示內容
2) 目錄下檔案操作:
①重新命名、複製、貼上、剪下、刪除、編輯文字內容
②關閉檔案
第三章系統功能與設計
3.1 各個模組**的具體實現
(1)建立檔案
public void createfile(string pathname, byte attribute, byte address, char length, string harddisk) //定義檔案型別
//進行條件判斷
int searchresult = search(pathname,harddisk);
if (searchresult==1) //檔案存在
else if (searchresult == 2) //目錄存在
else //檔案可以建立,符合條件,寫fcb
string pnames = pathname.split(new char分割路徑
string halfpathname = pathname.remove(pathname.length - 6去掉檔名和副檔名
utf8encoding utf = new utf8encoding();
char chtype = convert.tochar(pnames[pnames.length - 1副檔名轉換為char
byte bytype = convert.tobyte(chtypechar再轉換成byte
if (findnullitem(searchresult,harddisk) == 0) //沒有空目錄項
messagebox.show("目錄已滿!");
return;
writefile(searchresult, findnullitem(searchresult,harddisk), createfcb(utf.getbytes(pnames[pnames.length - 2]), bytype, attribute, address, length),harddisk);
(2)建立目錄
public void createmenu(string pathname,string harddisk) //定義目錄屬性
//寫入目錄資訊
writefile(search(halfpathname,harddisk), findnullitem(search(halfpathname,harddisk),harddisk), createfcb(utf.getbytes(pnames[pnames.length - 1]), 0, 8, disknumber, convert.
tochar(0)),harddisk);
(3)刪除檔案
int item = finditem(disknum, name, attribute,harddisk)[0];
int address = finditem(disknum, name, attribute,harddisk)[1];
byte addr = convert.tobyte(address);
deletefcb(disknum, item,harddisk); //刪除fcb
for (int j = 0; j < dnums.length; j++)
disk.seek(64 * (dnums[j] - 1), seekorigin.begin);
disk.write(delcontent, 0, 64刪除檔案的內容
將fat表中檔案占用的記為
for (int t = 0; t < dnums.length; t++)
disk.seek(dnums[t] - 1, seekorigin.begin);
disk.writebyte(0);
(4)刪除目錄
deletefcb(disknum, item,harddisk); //刪除檔案控制塊的內容
filestream disk1 = new filestream(harddisk, filemode.open);
disk1.seek(64 * ( address- 1), seekorigin.begin);
disk1.write(delcontent, 0, 64);
disk1.seek(address - 1, seekorigin.begin); //記錄fat為
disk1.writebyte(0);
disk1.close();
(5)複製檔案
int nums = form.searchfat(dnums.length, harddisk2); //獲取潘快
form.recordfilefat(nums, harddisk2記錄檔案fat
form.writecontent(nums, content, harddisk2寫入檔案內容
createfile(pathname2, buffer.attribute, convert.tobyte(nums[0]), buffer.
length, harddisk2); //fcb寫入新目錄內
(6)建立樹的節點
新增樹節點
treeview.imagelist = imagelist;
treenode root = new treenode("計算機", 0, 0);
treenode node_c = new treenode("本地磁碟c", 4, 4);
作業系統課程設計報告
上海電力學院 計算機作業系統原理 課程設計報告 題目名稱 編寫程式模擬虛擬儲存器管理 姓名 杜志豪 學號 20121798 班級 2012053班 同組姓名 孫嘉軼 課程設計時間 2014.6.30 2014.7.4 評語成績 一 設計內容及要求4 1.1 設計題目4 1 2 使用演算法分析4 1 ...
作業系統課程設計報告
課程設計說明書 設計名稱 作業系統課程設計 題目 檔案訪問介面設計 學生姓名 陳小浪 專業 電腦科學與技術 班級 12級1班 學號 2012314118 指導教師 任朝暉 日期 2014 年 9 月 15 日 課程設計任務書 電腦科學與技術專業年級班 一 設計題目 檔案訪問介面設計 二 主要內容 利...
作業系統課程設計報告
一 課程設計目的 1 程序排程是處理機管理的核心內容。2 本設計要求用c語言編寫和除錯乙個簡單的程序排程程式。3 通過設計本可以加深理解有關程序控制塊 程序佇列的概念,並體會和了解最高優先數優先的排程演算法 即把處理機分配給優先數最高的程序 和先來先服務演算法的具體實施辦法。二 課程設計主要內容 1...