网络操作系统课程设计报告书

上传人:cn****1 文档编号:508306090 上传时间:2023-01-07 格式:DOCX 页数:39 大小:440.08KB
返回 下载 相关 举报
网络操作系统课程设计报告书_第1页
第1页 / 共39页
网络操作系统课程设计报告书_第2页
第2页 / 共39页
网络操作系统课程设计报告书_第3页
第3页 / 共39页
网络操作系统课程设计报告书_第4页
第4页 / 共39页
网络操作系统课程设计报告书_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《网络操作系统课程设计报告书》由会员分享,可在线阅读,更多相关《网络操作系统课程设计报告书(39页珍藏版)》请在金锄头文库上搜索。

1、一共有4个部分,但最后一个代码量过大,没有写出来,不过我上传到了 csdn上,叫“ubuntu下用gtk实现仿windows资源管理器”比较有借鉴意义的 可能就是后3个吧。一、目的1、掌握Linux操作系统的使用方法;2、了解1 inux系统核代码结构;3、掌握实例操作系统的实现方法。二、实验容1、掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux 下的编程环境。编一个C程序,其容为实现文件拷贝的功能;编一个C程序,其容为分窗口同时显示三个并发进程的运行结果。要求用到 Linux下的图形库。2、掌握系统调用的实现过程,通过编译核方法,增加一个新的系统调用。 另编写一个应

2、用程序,调用新增加的系统调用。实现的功能是:文件拷贝;3、掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动 程序,其功能可以简单。实现字符设备的驱动4、了解和掌握/proc文件系统的特点和使用方法了解/proc文件的特点和使用方法监控系统状态,显示系统中若干部件使用情况用图形界面实现系统监控状态。5、文件系统(选作)三、系统环境1、硬件环境:处理器:Intel(R) Core(TM)2 Duo CPU T7250 2.00GHz 2.00GHz存(RAM) : 1526MB2、软件环境:操作系统:ubuntu9.10核版本:linux2.6.32.10四、设计与实现11、文件拷贝

3、文件拷贝函数本身并不是很难,主要是用到了一些现有的函数如 fprintf等。在最开始写这个函数的时候,我只写了打开、创建和拷贝的那一部 分,代码量很少,没有过多的去考虑当出现了错误时的情况。后来我在网上接触 到了一些比较优秀的拷贝代码,意识到了对于拷贝失败时的情况要输出错误信 息,就增加了比较多的条件判断和错误信息输出,才有了这个最终的版本。编译时使用的命令:gcc -o test1_1 test1_1.c运行时使用的命令:./test1_1 源代码#include #include #include #include #include #include #include #define BU

4、FFER_SIZE 1024/缓冲区大小int main(int argc,char *argv)int from_fd,to_fd;int bytes_read,bytes_write;char bufferBUFFER_SIZE; /设定一个缓冲区 char *ptr;if(argc!=3) /三个参数fprintf(stderr,“Usage:%s fromfiletofilena,argv0);return(-1);/*打开源文件*/if(from_fd=open(argv1,O_RDONLY)=-1)fprintf(stderr,“Open %sError:%sn,argv1,str

5、error(errno);return(-1);/*创建目的文件*/if(to_fd=open(argv2,O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR)=-1)fprintf(stderr,“Open %sError:%sn,argv2,strerror(errno);return(-l);while(bytes_read=read(from_fd,buffer,BUFFER_SIZE)/* 一个致命的错误发生了 */if(bytes_read=-1)&(errno!=EINTR) break;else if(bytes_read0)ptr=buffer;while(by

6、tes_write=write(to_fd,ptr,bytes_r ead)/* 一个致命错误发生了 */if(bytes_write=-1)&(errno!=EI NTR)break;/*写完了所有读的字节*/else if(bytes_write=bytes_read) break;/*只写了一部分,继续写*/else if(bytes_write0)ptr+=bytes_write;bytes_read-=bytes_writ e;/*写的时候发生的致命错误*/if(bytes_write=-1)break;close(from_fd);close(to_fd);return(1);1.

7、2、多窗口的并发程序这里主要是设计了三个窗口,第一个窗口由一个进度条和“close”按 钮组成,第二个窗口只有一个文本框不断地计数输出,第三个窗口是第一个窗口 和第二个窗口的结合。程序一共涉与到四个源文件,分别是progress_bar.c、 window_text.c、text_bar.c 和 test1_2.c。需要分别编译,最后运行 test1_2运行的效果如下:O 窗口 2互叵区_Sh o-wTextshow text 35入show36show teKt 37show text- 38show test 39勘cm4Gshow text 41show t巳蠢 42show text

8、43show text 44show text 45show test 4G下面分别列出四个文件的源代码和编译方式(1) progress_bar.c编译命令:gcc -o progress_bar progress_bar.c pkg-config -cflags -libsgtk+-2.0源代码#include #includeGtkWidget *window;GtkWidget *table;GtkWidget *button;GtkWidget *progress_bar;/更新进度条,这样就能够看到进度条的移动gint progress_timeout( gpointer data

9、 )(gdouble value;int v;char text20=0%;/使用在调整对象中设置的取值围计算进度条的值value=gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR (progress_bar)+0.01;if (value1.0)value=0.0;v=(int)(value*100);strcpy(text,“);sprintf(text,“%d,v);strcat(text,“% );/设置进度条的新值gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar),v

10、alue);gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress_bar),text),/这是一个timeout函数,返回TRUE,这样它就能够继续被调用/如果想要结束,可以在进度条到100%时,return 0 ;这样回调函数 就会结束return TRUE;int main(int argc,char *argv)int timer;gpointer data;gtk_init(&argc,&argv);/在任何构件生成之前完成window=gtk_window_new(GTK_WINDOW_TOPLEVEL);/创建窗口gtk_windo

11、w_set_title(GTK_WINDOW(window),“窗口 1);/设置窗口标 题gtk_widget_set_usize(window, 200, 200);/设置窗口大小gtk_container_set_border_width(GTK_CONTAINER(window),5);/设置 窗口边框宽度gtk_widget_show(window);/显示窗口gtk_signal_connect(GTK_OBJECT(window),destroy”,GTK_SIGNAL_FUNC(gtk_main_quit),NULL);table=gtk_table_new(3,5,TRUE)

12、;/创建表格 3 行*5 列gtk_widget_show(table);/ 显示表格gtk_container_add(GTK_CONTAINER(window),table);/将 table1 装进 窗口/*创建进度条*/progress_bar=gtk_progress_bar_new();gtk_table_attach_defaults(GTK_TABLE(table),progress_bar,0,5,0,1);/进度条装进表格gtk_widget_show(progress_bar);/*加一个定时器(timer),以更新进度条的值*/timer=gtk_timeout_add

13、(100,progress_timeout,data);/*添加一个按钮,用来退出应用程序*/button = gtk_button_new_with_label (close);gtk_table_attach_defaults(GTK_TABLE(table),button,0,5,2,3);/进度条装进表格gtk_widget_show (button);gtk_signal_connect(GTK_OBJECT(button),clicked,GTK_SIGNAL _FUNC(gtk_main_quit),NULL);gtk_main ();return 0;(2) window_te

14、xt.c编译命令:gcc -o window_text window_text.c pkg-config -cflags -libs g tk+-2.0源代码#define GTK_ENABLE_BROKEN#include#includeGtkWidget *window;GtkWidget *table;GtkWidget *label;GtkWidget *text;int i=0;gint text_timeout( gpointer data )(char buf20;char temp10;sprintf(temp,%d,i);strcpy(buf,“show text );strcat(buf,temp); strcat(buf,“n);/将buf容插入到文本构件中gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,buf,-1);i+;/这是一个timeout函数,返回TRUE,这样它就能够继续被调用/如果想要结束,可以在进度条到100%时,retur

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号