- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络操作系统课程设计推荐
??? 一共有4个部分,但最后一个代码量过大,没有写出来,不过我上传到了csdn上,叫“ubuntu下用gtk实现仿windows资源管理器”比较有借鉴意义的可能就是后3个吧。
一、目的
1、掌握Linux操作系统的使用方法;
2、了解Linux系统内核代码结构;
3、掌握实例操作系统的实现方法。
?
二、实验内容
1、掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。
编一个C程序,其内容为实现文件拷贝的功能;
编一个C程序,其内容为分窗口同时显示三个并发进程的运行结果。要求用到Linux下的图形库。
?
2、掌握系统调用的实现过程,通过编译内核方法,增加一个新的系统调用。另编写一个应用程序,调用新增加的系统调用。
实现的功能是:文件拷贝;
?
3、掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动程序,其功能可以简单。
实现字符设备的驱动
?
4、了解和掌握/proc文件系统的特点和使用方法
了解/proc文件的特点和使用方法
监控系统状态,显示系统中若干部件使用情况
用图形界面实现系统监控状态。
?
5、文件系统(选作)
?
三、系统环境
1、硬件环境:
?????????处理器:Intel(R)??Core(TM)2??Duo??CPU??T7250??@2.00GHz??2.00GHz
?????????内存(RAM):1526MB
2、软件环境:
?????????操作系统:ubuntu9.10
?????????内核版本:linux2.6.32.10
?
四、设计与实现
?????????1.1、文件拷贝
?????????文件拷贝函数本身并不是很难,主要是用到了一些现有的函数如fprintf等。在最开始写这个函数的时候,我只写了打开、创建和拷贝的那一部分,代码量很少,没有过多的去考虑当出现了错误时的情况。后来我在网上接触到了一些比较优秀的拷贝代码,意识到了对于拷贝失败时的情况要输出错误信息,就增加了比较多的条件判断和错误信息输出,才有了这个最终的版本。
编译时使用的命令:gcc??-o??test1_1??test1_1.c
运行时使用的命令:./test1_1
?
源代码
#include unistd.h
#include fcntl.h
#include stdio.h
#include sys/types.h
#include sys/stat.h
#include errno.h
#include string.h
#define BUFFER_SIZE 1024???//缓冲区大小
int main(int argc,char **argv)
{
?????????int from_fd,to_fd;
?????????int bytes_read,bytes_write;
?????????char buffer[BUFFER_SIZE];???//设定一个缓冲区
?????????char *ptr;
?????????if(argc!=3)????//三个参数
?????????{
???????????????????fprintf(stderr,Usage:%s fromfile tofile\n\a,argv[0]);
???????????????????return(-1);
?????????}
?????????/*?打开源文件?*/
?????????if((from_fd=open(argv[1],O_RDONLY))==-1)
?????????{
???????????????????fprintf(stderr,Open %s Error:%s\n,argv[1],strerror(errno));
???????????????????return(-1);
?????????}
?????????/*?创建目的文件?*/
?????????if((to_fd=open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))==-1)
?????????{
???????????????????fprintf(stderr,Open %s Error:%s\n,argv[2],strerror(errno));
???????????????????return(-1);
?????????}
?
?????????while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
?????????{
???????????????????/*?一个致命的错误发生了?*/
???????????????????if((bytes_read==-1)(e
文档评论(0)