华科操作系统实验报告.doc

上传人:F****n 文档编号:98763148 上传时间:2019-09-14 格式:DOC 页数:22 大小:309KB
返回 下载 相关 举报
华科操作系统实验报告.doc_第1页
第1页 / 共22页
华科操作系统实验报告.doc_第2页
第2页 / 共22页
华科操作系统实验报告.doc_第3页
第3页 / 共22页
华科操作系统实验报告.doc_第4页
第4页 / 共22页
华科操作系统实验报告.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《华科操作系统实验报告.doc》由会员分享,可在线阅读,更多相关《华科操作系统实验报告.doc(22页珍藏版)》请在金锄头文库上搜索。

1、华 中 科 技 大 学 课 程 设 计 报 告 课 程 实 验 报 告课程名称: 操作系统课程设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 课程设计任务书一课设目的1. 掌握Linux操作系统的使用方法;2. 了解Linux系统内核代码结构;3. 掌握实例操作系统的实现方法。二课设内容1. 掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。(1) 编一个C程序,其内容为实现文件拷贝的功能;(2) 编一个C程序,其内容为分窗口同时显示三个并发进程的运行结果。要求用到Linux下的图形库。gtk/qt 2. 掌握系统调用的

2、实现过程,通过编译内核方法,增加一个新的系统调用。另编写一个应用程序,调用新增加的系统调用(实现的功能为文件拷贝)。3. 掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动程序,其功能可以简单(实现字符设备的驱动)。4. 了解和掌握/proc文件系统的特点和使用方法 (选做)(1) 了解/proc文件的特点和使用方法(2) 监控系统状态,显示系统中若干部件使用情况(3) 用图形界面实现系统监控状态。5. 设计并实现一个模拟的文件系统(选做) 多用户的多级目录的文件系统设计。 多用户、多级目录、login (用户登录)、系统初始化(建文件卷、提供登录模块)、文件的创建、文件的打开、文

3、件的读、文件的写、文件关闭、删除文件、创建目录(建立子目录)、改变当前目录、列出文件目录、退出。三课设说明Linux系统版本:Fedora 5.0 6.0 ubuntu 10.04 11.10 内核版本: linux-2.6.x四考核要求1 必须独立完成课程设计内容,不分小组,不能有相同的拷贝。2 上机考试:学生根据老师提出的要求,演示所完成的系统;并回答老师的问题。3 第三周五下午2:00全体到实验室做中期检查,只检查1、2题;第四周 周五下午2:00:最后检查。按学号次序逐个检查。4 评分方法: 完成1、2题,得60-65分; 完成1、2、3题,得65-75分; 完成1、2、3、4(5)题

4、,得80-100分; 报告:10分(倒扣分)上交:课程设计报告(打印/电子档),内容包括调试记录和程序清单(附注释)。第六周五前以班为单位交指导老师。五参考资料 Linux的“man”帮助!Linux内核2.4版源代码分析大全Linux内核源代码分析Linux编程白皮书 课程内容与过程一掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。1) 编一个C程序,其内容为实现文件拷贝的功能。1 任务分析: 在Linux下,如果要编译一个C语言源程序,要使用到gcc编译器。gcc编译器中, -o选项表示我们要求输出的可执行文件名。-c选项表示我们只要求编译器输

5、出目标代码,而不必要输出可执行文件。 -g选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息。知道了这三个选项,我们就可以编译我们自己所写的简单的源程序了。文件拷贝的C程序主要用到如下几个函数: l open:打开文件 open()函数 功能描述:用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。 所需头文件:#include ,#include ,#include 函数原型:int open(const char *pathname,int flags,int perms) 参数:pathname:被打开的文件名(可包括路径名如dev/ttyS0

6、) flags:文件打开方式, O_RDONLY:以只读方式打开文件 O_WRONLY:以只写方式打开文件 O_RDWR:以读写方式打开文件 O_CREAT:如果改文件不存在,就创建一个新的文件,并用第三个参数为其设置权限返回值:成功:返回文件描述符 失败:返回-1l close:关闭文件 close()函数 功能描述:用于关闭一个被打开的的文件 所需头文件: #include 函数原型:int close(int fd) 参数:fd文件描述符 函数返回值:0成功,-1出错l read:读操作 read()函数 功能描述: 从文件读取数据。 所需头文件: #include 函数原型:ssize

7、_t read(int fd, void *buf, size_t count); 参数:fd: 将要读取数据的文件描述词。 buf:指缓冲区,即读取的数据会被放到这个缓冲区中去。 count: 表示调用一次read操作,应该读多少数量的字符。 返回值:返回所读取的字节数;0(读到EOF);-1(出错)。l write:写操作 write()函数 功能描述: 向文件写入数据。 所需头文件: #include 函数原型:ssize_t write(int fd, void *buf, size_t count); 返回值:写入文件的字节数(成功);-1(出错)2 实现文件拷贝的源程序如下所示:

8、#include #includeint main(int argc,char *argv)int sfd,tfd,num; char *buf; if(argc!=3) printf(ERROR!COPY FROM TOn);return -1;if(sfd=open(argv1,O_RDONLY,0)=-1)printf(ERROR,OPEN FILE FAILED !n);return -1;if(tfd=open(argv2,O_WRONLY|O_CREAT|O_TRUNC,0666)=-1) printf(TARGET FILE OPEN FAIL !n);return -1; wh

9、ile(num=read(sfd,buf,1)0)write(tfd,buf,num);close(sfd); close(tfd); exit(0);3 程序运行结果 源程序通过gcc编译器编译后会生成可执行文件1,执行可执行文件1之前,/hukeled目录下的文件a内容如图1所示,文件b内容如图2所示。 图1 执行1前文件a中的内容 图2 执行1前文件b中的内容 执行1后,目录/hukeled下文件b中的内容如图3所示,由图可知文件a的内容正确无误的拷贝到了文件b中,故程序运行结果正确。 图3 执行1后文件b中的内容 同时,源程序还可以实现图片等字符流数据的拷贝。2) 编一个C程序,其内容

10、为分窗口同时显示三个并发进程的运行结果。要求用到Linux下的图形库。1 任务分析:程序是指令的有序集合,是一个静态概念,其本身并没有任何运行的含义。而进程是程序在处理机上的一次执行过程,是一个动态概念。一个程序可能有许多进程,而每一个进程又可以有许多子进程。为了区分各个不同的进程,系统给每一个进程分配了一个ID(就象我 们的身份证)以便识别。 为了充分的利用资源,系统还对进程区分了不同的状态,将进程分为新建、运行、阻塞、就绪和完成五个状态。当一个进程调用了fork以后,系统会创建一个子进程。这个子进程和父进程不同的地方只有他的进程ID和父进程ID,其他的都是一样,就像父进程克隆(clone)

11、自己一样。当然创建两个一模一样的进程是没有意义的。为了区分父进程和子进程,我们必须跟踪fork的返回值, 当fork调用失败的时候(内存不足或者是用户的最大进程数已到)fork返回-1。否则fork的返回值有重要的作用。对于父进程fork返回子进程的ID,而对于fork子进程返回0。我们可以根据这个返回值来区分父子进程。 Qt是一个跨平台的C+图形用户界面库,具有优良的跨平台特性:1) Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OS

12、F/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。2) 面向对象3) Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。4) 丰富的 API5) Qt 包括多达 250 个以上的 C+ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理 功能。6) 支持 2D/3D 图形渲染,支持 OpenGL7) 大量的开发文档8) XML 支持。 在编译qt程序时,需要用到与编译普通程序不同的命令。比如程序名为hello,则编译过程为: 用qt的工具qmake来生成工程文件:qmake-project;生成Makefile文件:qmakehello.pro;接下来就是make;运行程序./hello。2 程序源代码为:int main(int argc, char *argv)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

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