华中科技大学计算机操作系统实验报告两篇.docx
华中科技大学计算机操作系统实验报告两篇 试验目的 把握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可执行文件。 然后手动创立一个测试文件test.txt ,运行copy.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可执行文件。 然后手动创立一个测试文件test.txt ,运行copy.exe文件,并输入 text.txt与target.txt。 这样就能将源文件test.txt复制到目标文件target.txt 程序源代码 copy.c: #include #include int main char a20,b20; 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)