1 / 25
文档名称:

计算机操作系统-课设-操作系统.docx

格式:docx   大小:1,337KB   页数:25页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计算机操作系统-课设-操作系统.docx

上传人:54156456 2019/2/3 文件大小:1.31 MB

下载得到文件列表

计算机操作系统-课设-操作系统.docx

文档介绍

文档介绍:课程设计报告课程名称:操作系统原理___专业班级:____学号:_姓名:____指导教师:______报告日期:2016年3月15日计算机科学与技术学院目录1课程设计目的 12课程设计环境搭建 13内容一:熟悉和理解Linux编程环境 :掌握添加系统调用的方法 :掌握添加设备驱动程序的方法 171课程设计目的(1)掌握Linux操作系统的使用方法;(2)了解Linux系统内核代码结构;(3)掌握实例操作系统的实现方法。2课程设计环境搭建(1)安装linux系统: ◎ ◎内核:-51-generic(2)在添加系统调用中用到的其他内核包: ◎在相关的网站下载合适的linux内核 ◎下载结果是linux- ◎解压命令:tar–xjvflinux-–C/usr/src ◎解压后,在/usr/src目录下得到内核文件夹linux-(3)在调用linux图形库时需要安装GTK环境: ◎/g++/gdb/make等基本编程工具 apt-getinstallbuild-essential ◎--dev等开发相关的库文件: apt-getinstallgnome-core-devel ◎安装GTK核心组件: apt--dev 3内容一:(1)编写一个C程序,实现文件拷贝功能(2)编写一个C程序,使用Linux下的图形库,分窗口显示三个并发进程运行;(1)文件拷贝:①文件的拷贝主要的思想就是利用文件指针操作,在两个文件之间进行按字符的fget和fput。从而完成整个文件的拷贝操作。在这个基本功能之外,需要增加程序的健壮性,具体有以下几个方面: ·源文件是否存在且能读取数据; ·是否能创建目的文件,且能向里面写入数据; ·程序需要的argc参数个数是否满足要求;②主要的程序段如下:if(argc!=3)//判断参数个数是否为3,否则返回{printf("Errorinargc!");exit(1);}//打开源文件if((from_fd=open(argv[1],O_RDONLY))==-1)//文件描述符{printf("Errorinopensourcefile!");exit(1);}//创建目的文件if((to_fd=open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))==-1)//权限{printf("Errorinopentargetfile");exit(1);}//拷贝文件while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))//返回所读取的字节数{if((bytes_read==-1)&&(errno!=EINTR))break;//读过程遇到中断elseif(bytes_read>0){ptr=buffer;while(bytes_write=write(to_fd,ptr,bytes_read)){if((bytes_write==-1)&&(errno!=EINTR))break;elseif(bytes_write==bytes_read)break;elseif(bytes_write>0){ptr+=bytes_write;bytes_read-=bytes_write;}//ptr指向尚未写入的剩余数据首地址,bytes_read重新赋值为剩余数据大小,.}if(bytes_write==-1)break;//退出read循环}③执行结果如下: ,开始时如下图3-1所示:图3- 利用copy程序复制,-2所示:图3-(2)实现三个进程之间的并发程序: 这里需要用到课程实验时的fork()程序以及GTK的图形显示。①基本fork()程序,调用显示一个父进程和两个子进程的结构如下:if((pid_1=fork())==0){ printf("子进程1运行......\n");//第一个子进程 show(argc,argv,"子进程1");//调用函数显示窗口 }else{ if((pid_2=fork())==0)