作業系統課程設計報告

2021-03-14 13:59:23 字數 4638 閱讀 5547

課程設計說明書

設計名稱: 作業系統課程設計

題目: 檔案訪問介面設計

學生姓名: 陳小浪

專業: 電腦科學與技術

班級: 12級1班

學號: 2012314118

指導教師: 任朝暉

日期: 2014 年 9 月 15 日

課程設計任務書

電腦科學與技術專業年級班

一、 設計題目

檔案訪問介面設計

二、 主要內容

利用c語言設計,具體包括:

1、 基本檔案內容輸入

2、 基本檔案內容輸出

3、 建立檔案

4、 開啟檔案

5、 關閉檔案

6、 檔案緩衝區管理

7、 檔案控制代碼管理

8、讀順序檔案

9、寫順序檔案

10、讀隨機檔案

11、寫隨機檔案

12、文字檔案操作驗證程式

上述功能由兩部分程式驗證,中斷駐留程式和驗證程式。首先執行中斷駐留程式,然後執行驗證程式得到預期結果。

三、 具體要求

本設計的目的是通過bios呼叫設計簡單的檔案訪問介面,使學生掌握程式介面的設計方法。

要求學生在熟悉比bios、dos作業系統的中斷介面及程式介面的基礎上,利用c語言設計簡單的檔案訪問介面,最後通過程式驗證介面的正確性。

四、 進度安排

依照教學計畫,課程設計時間為:2周。

1. 要求講解、資料查詢、系統分析,概要設計 (2天)

2. 系統詳細設計、功能設計(2天)

3. 演算法實現、程式設計除錯(5天)

4. 功能演示、資料整理、課程設計說明書編寫。(1天)

五、 完成後應上交的材料

課程設計說明書紙質文件

六、 總評成績

指導教師簽名日期年月日

系主任審核日期年月日

目錄 本設計要求編寫乙個簡單的檔案訪問介面設計,利用c語言,dos,bios中斷呼叫進行設計。主要完成要求中所提到的功能如: 建立檔案,刪除檔案,開啟檔案,關閉檔案,基本檔案內容輸入,基本檔案內容輸出,讀順序檔案,寫順序檔案,文字檔案操作驗證程式,檔案緩衝區管理的實現。

在設計過程主要遇到了以下的問題:一是關於中斷的理解,二是在理解了中斷的意義之後,進行中斷函式如int86(),int86x(),intdos(),intdos()等函式的呼叫不是很清晰。

解決的過程:通過與同學討論,在網上查閱了相關的書籍和學過的課本,如《c高階實用設計》以及《80x86組合語言程式設計》之後,便有了比較清晰的思路。有關函式的呼叫引數的設計,基本上是基於這些:

結構體wordregs,byteregs,sregs, 聯合體regs ,檔案屬性位元組,以及組合語言中int 21h dos系統功能呼叫中中斷型別(主要是21h)以及呼叫功能號的查詢和設定。

下面主要介紹上述提及的幾個結構體跟聯合體:

//以字作為單位的暫存器所組合的結構體

struct wordregs

;//以位元組作為單位的暫存器做組合的結構體

struct byteregs

;//由上述兩個結構體所組合的共用體(聯合體)

union regs

;//由段暫存器組合的結構體

struct sregs;中斷

中斷:顧名思義,是指當出現需要時,cpu暫時停止當前程式的執行轉而執行處理新情況的程式和執行過程。即在程式執行過程中,系統出現了乙個必須由cpu立即處理的情況,此時,cpu暫時中止程式的執行轉而處理這個新的情況的過程就叫做中斷。

本課題中涉及的為dos中斷跟bios中斷。

檔案訪問介面

所謂訪問介面,實際上即為使用者通過dos狀態下的提示,鍵入相關命令後,作為訪問相關檔案操作的中介,即類似乙個中轉站。而系統同時也需要在響應了使用者鍵入的命令後執行預先編寫好的相應程式,並將程式的執行結果通過中介,即檔案訪問介面,輸出給使用者。而事實上在系統響應一次使用者的命令時,系統進行了一次io中斷。

中斷駐留程式

中斷駐留程式,指的是當載入進記憶體的程式執行完畢後,依然能夠儲存產生的臨時資料跟臨時狀態,而在下一次呼叫時繼續執行。

驗證程式

本課題的驗證程式,指的是,當用dos,bios中斷呼叫編寫好相關用於檔案訪問的函式並執行之後,用c語言高階的函式如fopen(),fprintf(),fgetc(),fclose()等函式來驗證上述編寫的訪問函式是否可行。本課題中用fopen(),fclose()來驗證用dos中斷呼叫所編寫的函式closefile(),createfile()和closefile();用fgetc(),fprintf()等函式來驗證用dos中斷呼叫所編寫的writetofile()和readfromfile()函式;除此之外,像ftell(),fseek()等的驗證是同樣的道理。只需基於上述由dos,bios中斷呼叫所編寫的函式.

系統呼叫

系統呼叫,顧名思義,說的是作業系統提供給使用者程式呼叫的一組「特殊」介面。使用者程式可以通過這組「特殊」介面來獲得作業系統核心提供的服務,比如使用者可以通過檔案系統相關的呼叫請求系統開啟檔案、關閉檔案或讀寫檔案,可以通過時鐘相關的系統呼叫獲得系統時間或設定定時器等。

從邏輯上來說,系統呼叫可被看成是乙個核心與使用者空間程式互動的介面,它好比乙個中間人,把使用者程序的請求傳達給核心,待核心把請求處理完畢後再將處理結果送回給使用者空間。

本課題的執行結果,首先是在執行開始時給定了10個選擇開關,供使用者選擇,每當接收一次使用者的選擇時,系統將進行一次的io中斷,之後執行相應的中斷服務程式,在這裡是指由dos,bios中斷呼叫編寫好的函式,呼叫結束時,將臨時結果儲存,並退出中斷,繼續響應使用者的選擇,直到使用者選擇了退出。

如下圖所示:

程式通過選擇開關switch...case將用dos,bios呼叫編寫的函式組合起來供使用者做出選擇。在對應處理使用者的選擇編寫的函式中,主要的核心是dos功能中斷呼叫函式的編寫,其中包括中斷型別號,中斷功能呼叫號等的設定,以及響應使用者選擇後中斷服務程式的編寫。

另外,可以通過參看當前工作目錄下的檔案資訊或者通過validate開頭的相關函式進行程式執行結果的驗證

整個程式的設計流程,圍繞著bios,dos功能中斷呼叫這一主線,編寫好相關檔案操作函式,在響應使用者選擇之後,對應執行相關的函式

int operofsel():

用於顯示可供使用者選擇的功能,並提示使用者作出相應的功能選擇

void createfile(char filename[80]):

用於建立乙個新的檔案:根據使用者輸入的檔名進行檔案的建立,如果檔案建立失敗:如磁碟空間已滿或者已經存在該檔案,即建立失敗

int deletefile(char filename[80]):

用於刪除乙個檔案,如果刪除成功,將返回檔案代號,否則刪除失敗:可能是不存在該檔案

int openfile(char filename[80]):

用於開啟乙個檔案,如果開啟成功,則返回檔案代號,否則開啟失敗,可能是不存在該檔案

void closefile(filename[80]):

用於關閉乙個檔案

void writetofile(filename[80]):

用於寫順序檔案基本檔案內容的輸入以及檔案緩衝區的管理:首先根據使用者輸入的檔名開啟乙個檔案,如果存在該檔案,則開啟成功,開始寫入內容,此時繼續接受使用者輸入的內容,注意,輸入直到使用者鍵入回車鍵即表示輸入完畢,此時將輸入的內容根據檔案緩衝區管理規則將使用者輸入的內容進行儲存至指定檔名的檔案中

void readfromfile(filename[80]):

用於讀順序檔案基本檔案內容的輸出以及檔案緩衝區的管理:從指定的檔案中讀取檔案中的內容,並輸出;

void validateopenfile(char filename[80]):

用於驗證上述檔案訪問函式編寫的正確性:用於驗證建立檔案開啟檔案是否成功

void validatereadfile(char filename[80]):

用於驗證上述檔案訪問函式編寫的正確性:用於驗證上述中 writetofile(filename[80])以及 readfromfile(filename[80]):函式

4.2引用函式

clrscr()

用於清空螢幕的作用

本程式完成了其中的9項,能夠實現檔案的建立,開啟,關閉,基本檔案內容的輸入,輸出,檔案緩衝區的管理,以及文字檔案的驗證程式,寫順序檔案,讀順序檔案。因為對檔案控制代碼以及寫,讀隨機檔案的理解不是很清晰,故而沒有動手實踐完成。另外,本程式在dos下進行演示,需要根據提示來進行輸入,不允許使用者胡亂的輸入,不然有可能程式處理不了,即本程式在某種程度上還不是很穩定,安全。

但從理論上的角度上講,只要操作合理,那麼本程式將可以實現對應的功能。

執行成功後進行首頁,開始接受使用者的選擇

接著進行相應功能選項前面對應數字的輸入,在這裡以1,5,6,10為例,其他為同樣的道理

1:為建立乙個新的檔案

表示test.txt檔案已經存在,故而建立失敗檢視目錄,果然已經存在了test.txt,故而提示建立失敗

再次執行1號功能選擇:newfile.txt建立成功

檢視目錄下,果然建立了newfile.txt

進行10號功能的選擇

結果將出現清空螢幕的效果

進行5號功能的選擇:

輸入成功,提示輸入了多少個字元 ,上述統計了一下(包括字元)為63個在目錄開啟此檔案,果然是寫入了這些內容

下面進行6號功能的演示

上述的演示結果正好符合了其中的要求

其他的功能演示也是同樣的道理

作業系統課程設計報告

上海電力學院 計算機作業系統原理 課程設計報告 題目名稱 編寫程式模擬虛擬儲存器管理 姓名 杜志豪 學號 20121798 班級 2012053班 同組姓名 孫嘉軼 課程設計時間 2014.6.30 2014.7.4 評語成績 一 設計內容及要求4 1.1 設計題目4 1 2 使用演算法分析4 1 ...

作業系統課程設計報告

作業系統 課程設計報告 姓名吳昊學號 20091811042 系別資訊管理與工程系 專業電腦科學與技術班級 09級 課程設計題目模擬檔案管理系統 指導教師崔新會 小組成員吳昊 丁強強 辛夢娟 王放 周洋 2012 年 6 月 11 日 目錄 內容摘要 2 第一章引言 2 第二章需求分析 4 第三章系...

作業系統課程設計報告

一 課程設計目的 1 程序排程是處理機管理的核心內容。2 本設計要求用c語言編寫和除錯乙個簡單的程序排程程式。3 通過設計本可以加深理解有關程序控制塊 程序佇列的概念,並體會和了解最高優先數優先的排程演算法 即把處理機分配給優先數最高的程序 和先來先服務演算法的具體實施辦法。二 課程設計主要內容 1...