當前位置:才華齋>計算機>作業系統>

華中科技大學計算機作業系統實驗報告兩篇

作業系統 閱讀(2.9W)

篇一:華中科技大學計算機作業系統實驗報告

華中科技大學計算機作業系統實驗報告兩篇

實驗目的

掌握Linux作業系統的使用方法;

瞭解Linux系統核心程式碼結構;

掌握例項作業系統的實現方法。

一、實驗要求

1、掌握Linux作業系統的使用方法,包括鍵盤命令、系統呼叫;掌握在Linux

下的程式設計環境

編一個C程式,其內容為實現檔案拷貝的功能;

編一個C程式,其內容為分視窗同時顯示三個併發程序的執行結

果。要求用到Linux下的圖形庫。

2、掌握系統呼叫的實現過程,通過編譯核心方法,增加一個新的系統呼叫。

另編寫一個應用程式,呼叫新增加的系統呼叫。

實現的功能是:檔案拷貝;

3、掌握增加裝置驅動程式的方法。通過模組方法,增加一個新的裝置驅動

程式,其功能可以簡單。

實現字元裝置的驅動;

4、瞭解和掌握/proc檔案系統的特點和使用方法

瞭解/proc檔案的特點和使用方法

監控系統狀態,顯示系統中若干部件使用情況

用圖形介面實現系統監控狀態。

5、設計並實現一個模擬的檔案系統(選作)

二、實驗一

1、編一個C程式,其內容為實現檔案拷貝的功能

要實現檔案拷貝功能,主要用到的函式是fopen、fputc、fgetc。

主要用到的標頭檔案:

#include

#include

設計思路:由scanf函式獲取2個檔名,根據其檔名和路徑分別開啟該2個檔案,設定一個迴圈,從原始檔複製1個位元組到目的檔案,直到原始檔指標到檔案尾,最後關閉2個檔案。

在可能出錯的地方需要加上相應的'報錯程式碼,並輸出錯誤資訊,以方便除錯。

理清楚設計思路後,首先搭建linux下程式設計環境。

安裝gcc: sudo apt-get install build-essential

安裝codeblocks: sudo apt-get install codeblocks

在整合開發環境Code::Blocks IDE下根據需求寫出相應的原始碼copy.c ,將程式編譯並生成exe可執行檔案。

然後手動建立一個測試檔案 ,執行檔案,並輸入

篇二:華中科技大學計算機作業系統實驗報告

實驗目的

掌握Linux作業系統的使用方法;

瞭解Linux系統核心程式碼結構;

掌握例項作業系統的實現方法。

一、 實驗要求

1、 掌握Linux作業系統的使用方法,包括鍵盤命令、系統呼叫;掌握在Linux

下的程式設計環境。

編一個C程式,其內容為實現檔案拷貝的功能;

編一個C程式,其內容為分視窗同時顯示三個併發程序的執行結

果。要求用到Linux下的圖形庫。

2、 掌握系統呼叫的實現過程,通過編譯核心方法,增加一個新的系統呼叫。

另編寫一個應用程式,呼叫新增加的系統呼叫。

實現的功能是:檔案拷貝;

3、 掌握增加裝置驅動程式的方法。通過模組方法,增加一個新的裝置驅動

程式,其功能可以簡單。

實現字元裝置的驅動;

4、 瞭解和掌握/proc檔案系統的特點和使用方法

瞭解/proc檔案的特點和使用方法

監控系統狀態,顯示系統中若干部件使用情況

用圖形介面實現系統監控狀態。

5、 設計並實現一個模擬的檔案系統(選作)

二、 實驗一

1、 編一個C程式,其內容為實現檔案拷貝的功能

要實現檔案拷貝功能,主要用到的函式是fopen、fputc、fgetc。

主要用到的標頭檔案:

#include

#include

設計思路:由scanf函式獲取2個檔名,根據其檔名和路徑分別開啟該2個檔案,設定一個迴圈,從原始檔複製1個位元組到目的檔案,直到原始檔指標到檔案尾,最後關閉2個檔案。

在可能出錯的地方需要加上相應的報錯程式碼,並輸出錯誤資訊,以方便除錯。

理清楚設計思路後,首先搭建linux下程式設計環境。

安裝gcc: sudo apt-get install build-essential

安裝codeblocks: sudo apt-get install codeblocks

在整合開發環境Code::Blocks IDE下根據需求寫出相應的原始碼copy.c ,將程式編譯並生成exe可執行檔案。

然後手動建立一個測試檔案 ,執行檔案,並輸入

與。

這樣就能將原始檔複製到目標檔案

程式原始碼 copy.c:

#include

#include

int main()

{

char a[20],b[20];

scanf("%s",a);

get);

scanf("%s",b);

FILE *p=NULL,*q=NULL;

p=fopen(a,"rb");

if(p==NULL){printf("%s default",a);return 0;}

q=fopen(b,"wb+");

char c;

while((c=fgetc(p))!=EOF)

{

fputc(c,q);

}

printf("copy success");

return 0;

}

2、 編一個C程式,其內容為分視窗同時顯示三個併發程序的執行結果。要

求用到Linux下的圖形庫。 安裝Linux下的GTK+: sudo apt-get install build-essential

這將安裝gcc/g++/gdb/make 等基本程式設計工具

sudo apt-get install gnome-core-devel

這將安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫檔案 sudo apt-get install pkg-config

用於在編譯GTK程式時自動找出標頭檔案及庫檔案位置

sudo apt-get install devhelp

這將安裝 devhelp GTK文件檢視程式

sudo apt-get install libglib2.0-doc libgtk2.0-doc

這將安裝 gtk/glib 的API參考手冊及其它幫助文件

sudo apt-get install glade libglade2-dev

這將安裝基於GTK的介面GTK是開發Gnome視窗的c/c++語言圖形庫

sudo apt-get install libgtk2.0*, gtk+2.0

所需的所有檔案統通下載安裝完畢

編寫一個GTK+程式的基本步驟如下: 初始化Gtk 建立控制元件 登記訊息與訊息處理函式 執行訊息迴圈函式gtk_main()

題名

初始化主要使用的函式有 gtk_init(&argc,&argv);//啟動GTK gtk_window_new(GTK_WINDOW_TOPLEVEL); //建立視窗 gtk_window_set_title(GTK_WINDOW(window),"標題名"); //設定視窗標gtk_widget_set_usize(window, 200, 200); //設定視窗大小 gtk_widget_show(window); //顯示視窗建立控制元件的一般流程

/*建立表格準備封裝*/ gtk_table_new ( //建立多少列

gint rows,

gint columns,

gint homogeneous);

//建立多少欄 //用來決定表格如何來定大小 /*這個函式是將表格table,結合到視窗window裡*/ gtk_container_add(GTK_CONTAINER(window),table);

gtk_widget_show(table); // 顯示該表格

/*要把物件放進box中,可用以下函式*/

void gtk_table_attach_defaults (

GtkTable*table, //引數("table")是選定某表格

GtkWidget*widget, //("child")是想放進去的物件

gintleft_attach, //以下引數是指定把物件放在哪裡, 及用多少個boxes

gintright_attach,

ginttop_attach,

gintbottom_attach);

在Code::Blocks IDE建立GTK+工程如下流程:

首先在codeblocks選中File,然後選擇New,最後Project。出現如上圖所示介面。

在該介面中選中GTK+Project然後Go進入下一步。

繼續Next,直到如下圖輸入工程名稱與路徑。

然後Next->Finish

這樣,就建立了一個GTK+工程。

直接執行剛才建立的GTK+工程中的預設程式,得到一個包含2個按鈕的視窗介面應用,如下圖所示:

此時,可以按此模板修改原始碼,也可以刪除重寫。

併發程序:

建立3個如上GTK+工程,生成3個不同的exe檔案。

if ((p1=fork()) == 0)

{

execv("../1",NULL);

}

else if ((p2=fork())==0)

{

execv("../2",NULL);

}

else if ((p3=fork()==0))