大学生计算机课设报告,华中科技大学计算机学院操作系统课程设计报告.docx

41528d3028836879cd698677c3999917.gif华中科技大学计算机学院操作系统课程设计报告.docx

华中科技大学嵌入式操作系统课程设计实验报告院系计算机科学与技术学院专业班级姓名指导老师报告时间计算机科学与技术学院计算机科学与技术学院操作系统课程设计实验报告U201014281__________________________第2页/共27页目录1课程设计目的32课程设计环境搭建33内容一熟悉和理解LINUX编程环境31内容要求532设计过程及实现54内容二掌握添加系统调用的方法41内容要求942设计过程及实现95内容三掌握添加设备驱动程序的方法51内容要求1752设计过程及实现176内容四理解和分析/PROC文件61内容要求2262设计过程及实现22计算机科学与技术学院操作系统课程设计实验报告U201014281__________________________第3页/共27页1课程设计目的(1)掌握LINUX操作系统的使用方法;(2)了解LINUX系统内核代码结构;(3)掌握实例操作系统的实现方法。2课程设计环境搭建(1)WINDOWS7上,利用虚拟机软件VMWARE软件搭建的LINUX平台◎UBUNTU1110(安装包UBUNTU1110DESKTOPI386)◎内核LINUXHEADERS30012GENERIC(2)更改ROOT登录在现阶段UBUNTU的系统中,是不允许直接以ROOT身份登录系统的,但是在做课设的过程中,需要大量的使用ROOT权限来进行命令的操作。如果以普通用户登录UBUNTU,会连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用ROOT身份登录的方法◎开始的时候,只能以普通用户登录,用CTRLALTT打开终端初始化/修改ROOT密码SUDOPASSWDROOT用VI编辑器修改这个文件SUDOVI/ETC/LIGHTDM/LIGHTDMCONF在文件最后加入这么一行代码GREETERSHOWMANUALLOGINTRUE然后保存退出,SUDOREBOOT重启系统。之后就可以输入ROOT用户登录。(3)在添加系统调用中用到的其他内核包◎下载和当前实验环境最为接近的系统版本(这点很重要)使用APTGETINSTALLLINUXSOURCE300命令,◎下载结果是LINUXSOURCE300TARBZ2◎解压命令TAR–XJVFLINUXSOURCE300TARBZ2–C/USR/SRC◎解压后,在/USR/SRC目录下得到内核文件夹LINUXSOURCE300计算机科学与技术学院操作系统课程设计实验报告U201014281__________________________第4页/共27页(4)在调用LINUX图形库时需要安装GTK环境◎安装GCC/G/GDB/MAKE等基本编程工具APTGETINSTALLBUILDESSENTIALTIP如果提示由于依赖项不能安装,需要使用APT的强化版APTITUDE,这个工具可以自动分析软件包依赖,系统一般不自带,需要先安装,具体过程是APTGETINSTALLAPTITUDEAPTITUDEINSTALLBUILDESSENTIALAPTITUDE这个工具很强大,对于解决软件包安装时的依赖问题很有帮助。◎安装LIBGTK20DEVLIBGLIB20DEV等开发相关的库文件APTGETINSTALLGNOMECOREDEVEL◎安装GTK核心组件APTGETINSTALLLIBGTK20DEV这个安装完成后,GTK环境就基本搭建成功,网上有些教程说要安装其他配置文件,经我亲测,发现只要安装LIBGTK20DEV这个包就能搞定。计算机科学与技术学院操作系统课程设计实验报告U201014281__________________________第5页/共27页3内容一熟悉和理解LINUX编程环境31内容要求(1)编写一个C程序,实现文件拷贝功能(2)编写一个C程序,使用LINUX下的图形库,分窗口显示三个并发进程运行;32设计过程及实现(1)文件拷贝①文件的拷贝主要的思想就是利用文件指针操作,在两个文件之间进行按字符的FGET和FPUT。从而完成整个文件的拷贝操作。在这个基本功能之外,需要增加程序的健壮性,具体有以下几个方面源文件是否存在且能读取数据;是否能创建目的文件,且能向里面写入数据;程序需要的ARGC参数个数是否满足要求;②基于以上几点和内容要求,主要的程序段如下IFARGC3//判断参数个数是否为3,否则返回{PRINTF“ERRORINARGC\N“RETURN0}IFFSOURCEARGV1,“RB“NULL{PRINTF“ERRORINOPENSOURCEFILE\N“//判断源文件是否能打开和读出RETURN0}IFFTARGETARGV2,“WB“NULL{PRINTF“ERRORINOPENTARGETFILE\N“//判断目的文件时候能创建和写入RETURN0}WHILECFGETCFSOURCEEOF{FPUTCC,FTARGET//按字符读取和写入数据}计算机科学与技术学院操作系统课程设计实验报告U201014281__________________________第6页/共27页③执行结果如下将SOURCE/SOURCETXT文件拷贝到到TARGETTXT,开始时如下图31所示图31复制开始前SOURCE/SOURCETXT文件内容利用MYCOPY程序复制,查看TARGETTXT文件复制结果如下图32所示图32复制后TARGETTXT文件的具体内容(2)实现三个进程之间的并发程序这里需要用到课程实验时的FORK程序以及GTK的图形显示。①基本FORK()程序,调用显示一个父进程和两个子进程的结构如下IFPID_1FORK0{PRINTF“CHILD1ISRUNNING\N“//第一个子进程CHILD1SHOWARGC,ARGV,“THISISCHILD1“//调用函数显示窗口}ELSE{IFPID_2FORK0{PRINTF“CHILD2ISRUNNING\N“//第二个子进程CHILD2SHOWARGC,ARGV,“THISISCHILD2“//调用函数显示窗口}ELSE{PRINTF“PARENTISRUNNING\N“//父进程PARENT//由于父进程需要显示全部子进程PID,所以这里直接用参数画窗口}}计算机科学与技术学院操作系统课程设计实验报告U201014281__________________________第7页/共27页②调用GTK显示窗体函数模块的结构VOIDSHOWINTARGC,CHARARGV,CHARTITLE{GTK_INIT//初始化工具包并且获取命令行参数WINDOWGTK_WINDOW_NEWGTK_WINDOW_TOPLEVEL//创建新的窗口//设定窗口的位置GTK_WINDOW_SET_POSITIONGTK_WINDOWWINDOW,GTK_WIN_POS_CENTER//监听窗口的DESTROY事件G_SIGNAL_CONNECTG_OBJECTWINDOW,“DESTROY“,G_CALLBACKDESTROY_PROGRESS,NULLGTK_WINDOW_SET_TITLEGTK_WINDOWW

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值