您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统课程设计实验报告(以Linux为例)
《操作系统课程设计》实验报告学号:1117404059姓名:姜栏苏州大学计算机科学与技术学院2014年9月操作系统课程设计实验报告1目录目录...........................................................................................................1一、实验环境..............................................................................................2二、实验报告总体要求..............................................................................2实验一编译LINUX内核............................................................................................3实验二观察LINUX行为..........................................................................................38实验三进程间通信..................................................................................................45操作系统课程设计实验报告2一、实验环境Linux平台硬件平台:普通PC机硬件环境。操作系统:Linux环境,例如,红旗Linux或RedHatLinux;启动管理器使用GRUB。编译环境:伴随着操作系统的默认gcc环境。工作源码环境:一个调试的内核源码,版本不低于2.4.20。二、实验报告总体要求在2013年11月25日前提交实验报告。实验报告至少要求包含以下内容:1.引言:概述本次实验所讨论的问题,工作步骤,结果,以及发现的意义。2.问题提出:叙述本篇报告要解决什么问题。注意不可以抄写实验要求中的表述,要用自己的话重新组织我们这里所提出的问题。3.解决方案:叙述如何解决自己上面提出的问题,可以用小标题3.1,3.2…等分开。这是实验报告的关键部分,请尽量展开来写。注意,这部分是最终课程设计的基本分的部分。这部分不完成,本课程设计不会及格。4.实验结果:按照自己的解决方案,有哪些结果。结果有异常吗?能解释一下这些结果吗?同别人的结果比较过吗?注意,这部分是实验报告出彩的地方。本课程设计要得高分,应该在这部分下功夫。5.结束语:小结并叙述本次课程设计的经验、教训、体会、难点、收获、为解决的问题、新的疑惑等。6.附录:加了注释的程序清单,注释行数目至少同源程序行数目比1:2,即10行源程序,至少要给出5行注释。操作系统课程设计实验报告3实验一编译Linux内核实验时间6小时实验目的认识Linux内核的组成,掌握配置、编译、安装Linux内核的步骤。实验目标下载2.6.19或更新的Linux内核,配置该内核使其支持NTFS,并在新的内核中修改其版本为LinuxNameTestKernelx.x.x,其中,Name是你的名字(汉语拼音);x.x.x是新内核的版本号,最后在你的机器上编译安装这个新内核。背景知识参见《RedHatEnterpriseLinux4入门与提高》第20章。实验步骤1.验证gcc的可用:在你自己的工作目录下,编译链接运行HelloWorld程序。2.在上下载指定的内核,或者查找更新的稳定版内核并下载之。3.准备相关工具。提示:如当前运行的Linux内核是基于2.4版本的,则需要更新以下软件:module-init-tools和mkinitrd。具体更新信息可参见下载内核源代码中的Documentation/Changes这个文件。4.把源代码解压缩至/usr/src中,最终形成/usr/src/linuxx.x.x/目录(x.x.x是新内核的版本号)。提示:这里的注意点是路径的选择,一般要放在/usr/src/linuxx.x.x/目录下面,以满足Makefile对路径设置的初始要求。5.进入源代码的根目录(/usr/src/linuxx.x.x),找到合适自己的内核配置方法,并按照实验目标对其进行配置。操作系统课程设计实验报告46.修改/usr/src/linuxx.x.x/include/linux/version.h文件中的版本信息。注:如果没有这个文件,请执行命令:makeinclude/linux/version.h7.编译内核。8.安装模块文件。9.安装内核文件。10.重新启动新内核。实验结果1.实验步骤1中,编译链接运行程序你下达了哪些命令?2.实验步骤2中,你下载了哪个版本的内核文件?3.实验步骤3中,你是否安装了相关工具?如安装,则写出安装过程。4.实验步骤4中,你是用哪些命令解压缩内核文件的?5.实验步骤5中,你用了哪种内核配置的方法?6.你对实验步骤6中涉及的文件做了怎样的修改?7.实验步骤7-9的过程,是否出现错误?如有,你是如何解决的?8.观察你机器中GRUB的配置文件,它在安装完新内核后发生了哪些变化?9.新内核启动过程是否成功?如有错误,是哪些错误?你是如何消错的?操作系统课程设计实验报告5(如不够,可另附页)实验报告#includemqx_inc.h//将“max-inc.h”添加到源文件中/*!*\private//声明私有变量及分配存储空间声明私有变量及分配存储空间**\briefCreatesthelightweightsemaphore.//简单创建轻量级的信号**\param[in]sem_ptrPointertothelightweightsemaphoretocreate.//创建轻量级指针信号*\param[in]initial_numberInitalnumberofsemaphoresavailable.//信号量可用的初始数量*\param[in]hiddenTRUEifsemaphorewillnehiddenfromkernel,FALSEifnot.如果信号量ne被隐藏在核心代码中则为true,否则则为false*\param[in]userUsermodefunctionality.//用户模式的功能**\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_internal(LWSEM_STRUCT_PTRsem_ptr,_mqx_intinitial_number,//初始数booleanhidden,//隐藏booleanuser//用户){KERNEL_DATA_STRUCT_PTRkernel_data;//内核数据结构指针的核心数据操作系统课程设计实验报告6LWSEM_STRUCT_PTRsem_chk_ptr;//lwsemstructPTRSEM检查PTR#ifMQX_ENABLE_USER_MODE//如果启用用户模式代码if(user&&!_psp_mem_check_access_mask((uint_32)sem_ptr,sizeof(LWSEM_STRUCT),MPU_UM_R,MPU_UM_RW))如果用户{returnMQX_INVALID_LWSEM;//返回MQX_INVALID_LWSEM;}#endif/*MQX_ENABLE_USER_MODE*///结束条件指令_GET_KERNEL_DATA(kernel_data);//得到的内核数据(内核-数据)_KLOGE2(KLOG_lwsem_create,initial_number);//sem_ptr-VALUE=initial_number;_QUEUE_INIT(&sem_ptr-TD_QUEUE,0);_int_disable();if(!hidden)//如果没有隐藏{#ifMQX_CHECK_ERRORS/*Checkiflwsemisalreadyinitialized*///检查lwsem是否已经初始化#ifMQX_ENABLE_USER_MODE//如果用户启用mqxif(user){sem_chk_ptr=(LWSEM_STRUCT_PTR)((pointer)kernel_data-USR_LWSEM.NEXT);while(sem_chk_ptr!=(LWSEM_STRUCT_PTR)((pointer)&kernel_data-USR_LWSEM)){if(sem_chk_ptr==sem_ptr){_int_enable();_KLOGX2(KLOG_lwsem_create,MQX_EINVAL);return(MQX_EINVAL);}sem_chk_ptr=(LWSEM_STRUCT_PTR)((pointer)sem_chk_ptr-NEXT);}}操作系统课程设计实验报告7else#endif/*MQX_ENABLE_USER_MODE*/{sem_chk_ptr=(LWSEM_STRUCT_PTR)((pointer)kernel_data-LWSEM.NEXT);while(sem_chk_ptr!=(LWSEM_STRUCT_PTR)((pointer)&kernel_data-LWSEM)){if(sem_chk_ptr==sem_ptr){_int_enable();_KLOGX2(KLOG_lwsem_create,MQX_EINVAL);return(MQX_EINVAL);}sem_chk_ptr=(LWSEM_STRUCT_PTR)((pointer)sem_chk_ptr-NEXT);}}#endif/*MQX_CHECK_ERRORS*/#ifMQX_ENABLE_USER_MODEif(user){_QUEUE_ENQUEUE(&kernel_data-USR_LWSEM,sem_ptr);}else#endif/*MQX_ENABLE_USER_MODE*/{_QUEUE_ENQUEUE(&kernel_data-LWSEM,sem_ptr);}}sem_ptr-VALID=LWSEM_VALID;_int_enable();_KLOGX2(KLOG_lwsem_create,MQX_OK);return(MQX_OK);}/*!*\briefCreatesthelightweightsemaphore.//简单创建轻量级的信号操作系统课程设计实验报告8**Becauselightweightsemaphoresareacorecomponent,anapplicationneednotto*createthecomponentbeforeitcreateslightweightsemaphores.//因为是轻量的核心组件,所以应用程序不需要在它创建的轻量级信号量创建组件**\param[in]sem_ptrPointertothelightweightsemaphoretocreate.//参数sem_ptr指针创建轻量级信号.*\param[in]initial_numberInitalnumberofsemaphoresavailable.//参数initial_number初始数量的可用信号量。**\r
本文标题:操作系统课程设计实验报告(以Linux为例)
链接地址:https://www.777doc.com/doc-3364974 .html