操作系统课程设计实验报告(以linux为例).doc
操作系统课程设计实验报告学号1117404059姓名姜栏苏州大学计算机科学与技术学院2014年9月操作系统课程设计实验报告1目录目录1一、实验环境2二、实验报告总体要求2实验一编译LINUX内核3实验二观察LINUX行为7实验三进程间通信14操作系统课程设计实验报告2一、实验环境LINUX平台硬件平台普通PC机硬件环境。操作系统LINUX环境,例如,红旗LINUX或REDHATLINUX;启动管理器使用GRUB。编译环境伴随着操作系统的默认GCC环境。工作源码环境一个调试的内核源码,版本不低于2420。二、实验报告总体要求在2013年11月25日前提交实验报告。实验报告至少要求包含以下内容1引言概述本次实验所讨论的问题,工作步骤,结果,以及发现的意义。2问题提出叙述本篇报告要解决什么问题。注意不可以抄写实验要求中的表述,要用自己的话重新组织我们这里所提出的问题。3解决方案叙述如何解决自己上面提出的问题,可以用小标题31,32等分开。这是实验报告的关键部分,请尽量展开来写。注意,这部分是最终课程设计的基本分的部分。这部分不完成,本课程设计不会及格。4实验结果按照自己的解决方案,有哪些结果。结果有异常吗能解释一下这些结果吗同别人的结果比较过吗注意,这部分是实验报告出彩的地方。本课程设计要得高分,应该在这部分下功夫。5结束语小结并叙述本次课程设计的经验、教训、体会、难点、收获、为解决的问题、新的疑惑等。6附录加了注释的程序清单,注释行数目至少同源程序行数目比12,即10行源程序,至少要给出5行注释。操作系统课程设计实验报告3实验一编译LINUX内核实验时间6小时实验目的认识LINUX内核的组成,掌握配置、编译、安装LINUX内核的步骤。实验目标下载2619或更新的LINUX内核,配置该内核使其支持NTFS,并在新的内核中修改其版本为LINUXNAMETESTKERNELXXX,其中,NAME是你的名字(汉语拼音);XXX是新内核的版本号,最后在你的机器上编译安装这个新内核。背景知识参见REDHATENTERPRISELINUX4入门与提高第20章。实验步骤1验证GCC的可用在你自己的工作目录下,编译链接运行HELLOWORLD程序。2在HTTP//WWWKERNELORG上下载指定的内核,或者查找更新的稳定版内核并下载之。3准备相关工具。提示如当前运行的LINUX内核是基于24版本的,则需要更新以下软件MODULEINITTOOLS和MKINITRD。具体更新信息可参见下载内核源代码中的DOCUMENTATION/CHANGES这个文件。4把源代码解压缩至/USR/SRC中,最终形成/USR/SRC/LINUXXXX/目录(XXX是新内核的版本号)。提示这里的注意点是路径的选择,一般要放在/USR/SRC/LINUXXXX/目录下面,以满足MAKEFILE对路径设置的初始要求。5进入源代码的根目录(/USR/SRC/LINUXXXX),找到合适自己的内核配置方法,并按照实验目标对其进行配置。操作系统课程设计实验报告46修改/USR/SRC/LINUXXXX/INCLUDE/LINUX/VERSIONH文件中的版本信息。注如果没有这个文件,请执行命令MAKEINCLUDE/LINUX/VERSIONH7编译内核。8安装模块文件。9安装内核文件。10重新启动新内核。实验结果1实验步骤1中,编译链接运行程序你下达了哪些命令2实验步骤2中,你下载了哪个版本的内核文件3实验步骤3中,你是否安装了相关工具如安装,则写出安装过程。4实验步骤4中,你是用哪些命令解压缩内核文件的5实验步骤5中,你用了哪种内核配置的方法6你对实验步骤6中涉及的文件做了怎样的修改7实验步骤79的过程,是否出现错误如有,你是如何解决的8观察你机器中GRUB的配置文件,它在安装完新内核后发生了哪些变化9新内核启动过程是否成功如有错误,是哪些错误你是如何消错的操作系统课程设计实验报告5(如不够,可另附页)实验报告INCLUDE“MQX_INCH“//将“MAXINCH”添加到源文件中/\PRIVATE//声明私有变量及分配存储空间声明私有变量及分配存储空间\BRIEFCREATESTHELIGHTWEIGHTSEMAPHORE//简单创建轻量级的信号\PARAMINSEM_PTRPOINTERTOTHELIGHTWEIGHTSEMAPHORETOCREATE//创建轻量级指针信号\PARAMININITIAL_NUMBERINITALNUMBEROFSEMAPHORESAVAILABLE//信号量可用的初始数量\PARAMINHIDDENTRUEIFSEMAPHOREWILLNEHIDDENFROMKERNEL,FALSEIFNOT如果信号量NE被隐藏在核心代码中则为TRUE,否则则为FALSE\PARAMINUSERUSERMODEFUNCTIONALITY//用户模式的功能\RETURNMQX_OK//返回MQX_OK\RETURNMQX_EINVAL//返回MOX_EINVAL\RETURNMQX_INVALID_LWSEM//返回MQX_INVALID_LWSEM\SEE_LWSEM_CREATE\SEE_LWSEM_CREATE_HIDDEN\SEE_USR_LWSEM_CREATE\SEELWSEM_STRUCT/_MQX_UINT_LWSEM_CREATE_INTERNALLWSEM_STRUCT_PTRSEM_PTR,_MQX_INTINITIAL_NUMBER,//初始数BOOLEANHIDDEN,//隐藏BOOLEANUSER//用户{KERNEL_DATA_STRUCT_PTRKERNEL_DATA//内核数据结构指针的核心数据操作系统课程设计实验报告6LWSEM_STRUCT_PTRSEM_CHK_PTR//LWSEMSTRUCTPTRSEM检查PTRIFMQX_ENABLE_USER_MODE//如果启用用户模式代码IFUSER//返回MQX_INVALID_LWSEM}ENDIF/MQX_ENABLE_USER_MODE///结束条件指令_GET_KERNEL_DATAKERNEL_DATA//得到的内核数据(内核数据)_KLOGE2KLOG_LWSEM_CREATE,INITIAL_NUMBER//SEM_PTRVALUEINITIAL_NUMBER_QUEUE_INIT_INT_DISABLEIFHIDDEN//如果没有隐藏{IFMQX_CHECK_ERRORS/CHECKIFLWSEMISALREADYINITIALIZED///检查LWSEM是否已经初始化IFMQX_ENABLE_USER_MODE//如果用户启用MQXIFUSER{SEM_CHK_PTRLWSEM_STRUCT_PTRPOINTERKERNEL_DATAUSR_LWSEMNEXTWHILESEM_CHK_PTRLWSEM_STRUCT_PTRPOINTER_KLOGX2KLOG_LWSEM_CREATE,MQX_EINVALRETURNMQX_EINVAL}SEM_CHK_PTRLWSEM_STRUCT_PTRPOINTER