华中科技大学计算机操作系统实验报告【优质4篇】
华中科技大学计算机操作系统实验报告 篇一
实验目的:
本次实验的目的是通过对计算机操作系统的学习,加深对操作系统的理解,掌握操作系统的基本原理和应用技术。
实验内容:
本次实验主要包括以下内容:
1. 进程管理:学习进程的概念、进程控制块的结构、进程的状态转换以及进程的创建和撤销等操作。
2. 内存管理:学习内存的分段和分页管理方式,了解虚拟内存和页面置换算法。
3. 文件系统:学习文件的存储结构,文件的操作和管理等知识。
4. 输入输出设备管理:了解输入输出设备的工作原理,学习输入输出设备的管理和驱动程序的编写。
实验步骤:
1. 进程管理实验:编写一个简单的多进程程序,实现进程的创建、撤销和状态转换等操作,并观察进程的运行情况。
2. 内存管理实验:实现一个简单的内存管理系统,包括分段和分页管理方式,并通过测试程序验证其正确性。
3. 文件系统实验:编写一个简单的文件系统,实现文件的创建、打开、读写和删除等操作,并通过测试程序验证其正确性。
4. 输入输出设备管理实验:编写一个简单的输入输出设备管理程序,实现输入输出设备的管理和驱动程序的编写,并通过测试程序验证其正确性。
实验结果:
经过实验,我对计算机操作系统的原理和应用技术有了更深入的了解。通过编写各个实验的程序,我掌握了进程的创建和撤销、内存的分段和分页管理、文件的操作和管理以及输入输出设备的管理和驱动程序的编写等技术。
实验总结:
通过本次实验,我不仅加深了对计算机操作系统的理解,还提高了自己的编程能力。在实验过程中,我遇到了一些问题,但通过查阅资料和与同学讨论,最终成功解决了这些问题。实验让我更好地理解了操作系统的运行原理和工作机制,为以后深入学习操作系统打下了坚实的基础。
华中科技大学计算机操作系统实验报告 篇二
实验目的:
本次实验的目的是通过对计算机操作系统的学习,加深对操作系统的理解,掌握操作系统的基本原理和应用技术。
实验内容:
本次实验主要包括以下内容:
1. 进程管理:学习进程的概念、进程控制块的结构、进程的状态转换以及进程的创建和撤销等操作。
2. 内存管理:学习内存的分段和分页管理方式,了解虚拟内存和页面置换算法。
3. 文件系统:学习文件的存储结构,文件的操作和管理等知识。
4. 输入输出设备管理:了解输入输出设备的工作原理,学习输入输出设备的管理和驱动程序的编写。
实验步骤:
1. 进程管理实验:编写一个简单的多进程程序,实现进程的创建、撤销和状态转换等操作,并观察进程的运行情况。
2. 内存管理实验:实现一个简单的内存管理系统,包括分段和分页管理方式,并通过测试程序验证其正确性。
3. 文件系统实验:编写一个简单的文件系统,实现文件的创建、打开、读写和删除等操作,并通过测试程序验证其正确性。
4. 输入输出设备管理实验:编写一个简单的输入输出设备管理程序,实现输入输出设备的管理和驱动程序的编写,并通过测试程序验证其正确性。
实验结果:
经过实验,我对计算机操作系统的原理和应用技术有了更深入的了解。通过编写各个实验的程序,我掌握了进程的创建和撤销、内存的分段和分页管理、文件的操作和管理以及输入输出设备的管理和驱动程序的编写等技术。
实验总结:
通过本次实验,我不仅加深了对计算机操作系统的理解,还提高了自己的编程能力。在实验过程中,我遇到了一些问题,但通过查阅资料和与同学讨论,最终成功解决了这些问题。实验让我更好地理解了操作系统的运行原理和工作机制,为以后深入学习操作系统打下了坚实的基础。
华中科技大学计算机操作系统实验报告 篇三
实验目的
掌握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 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))