操作系统课程设计报告.doc

上传人:F****n 文档编号:101515161 上传时间:2019-09-28 格式:DOCX 页数:23 大小:120.32KB
返回 下载 相关 举报
操作系统课程设计报告.doc_第1页
第1页 / 共23页
操作系统课程设计报告.doc_第2页
第2页 / 共23页
操作系统课程设计报告.doc_第3页
第3页 / 共23页
操作系统课程设计报告.doc_第4页
第4页 / 共23页
操作系统课程设计报告.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

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

1、操作系统课程设计报告专业班级: 计科1106班 姓 名: 李育洪、胡 壮 刘春林、邓程峰 指导老师: 李 玺 设计时间: 2014年6月 目录第一章 概论3第二章 设计的基本概念和原理4第三章 总体设计6第四章 详细设计8第五章 系统的测试和运行18第六章 系统的使用说明20第七章 课程设计总结21第八章 参考资料22第一章 概论1.1 课程设计的内容本次课程设计我们是四个人的小组,我们选择的是第三个题目,题目的描述如下:在uC/OS操作系统中增加一个简单的文件系统, 要求如下:(1) 熟悉并分析uc/os操作系统(2) 设计并实现一个简单的文件系统(3) 可以是存放在内存的虚拟文件系统,也可

2、以是存放在磁盘的实际文件系统(4) 编写测试代码,测试对文件的相关操作:建立,读写等1.2 课程设计的目的操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。1.3 要解决的主要问题通过对题目的分析,以及对相关资料的查阅,我们决定为C/OS-II写一个FAT32文件系统。那么,我们要解决的主要问题就有:1) 掌握C/OS-II的基本原理,并能在C/OS-II上用C语言进行程序

3、设计;2) C/OS-II开发环境的建立。由于我们没有嵌入式的硬件设备,所以在PC上进行开发。于是就需要把C/OS-II一直到windows下,用VC+作为开发环境;3) 了解FAT32文件系统的底层细节。必须要有FAT32这种文件系统的详细说明。4) 手动实现FAT32文件系统。5) 测试。必须保证文件系统能在C/OS-II下运行。第二章 设计的基本概念和原理2.1 C/OS-II简介C/OS-II由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它适用于多种微处理器,微控制器和数字处理芯片(已经移植到超过100种以上的微处理器应用中)。同时,该系统源代码开放

4、、整洁、一致,注释详尽,适合系统开发。 C/OS-II已经通过联邦航空局(FAA)商用航行器认证,符合航空无线电技术委员会(RTCA)DO-178B标准。C/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。1) 核心部分是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。能够维持系统基本工作的部分都在这里。2) 任务处理部分任务处理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为C/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。3) 时钟部分C/O

5、S-II中的最小时钟单位是timetick(时钟节拍)。任务延时等操作是在这里完成的。4) 任务同步和通信部分为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。5) 与CPU的接口部分是指C/OS-II针对所使用的CPU的移植部分。由于C/OS-II是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据具体CPU的具体内容和要求作相应的移植。这部分内容由于牵涉到SP等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。2.2 C/OS-II在V

6、C+下的移植为了开发环境的方便,需要将C/OS-II移植到VC+上。移植主要有三步,下面作简要说明。详细的方法可以参考嵌入式实时操作系统C/OS原理与实践一书。1) VC下时钟的获得可以使用采用软件定时器来模拟时钟中断。这里我们采用的是timeSetEvent()函数。这个函数很简单,不需要消息循环,定时精度为ms级,主要应用在多媒体定时方面,能够在非常精确的时间间隔内完成一个事件、函数或过程的调用。可以通过调用timeSetEvent()函数,将需要周期性执行的任务定义在LpTimeProc回调函数中,从而完成所需处理的事件。调用这个函数后会增加一个线程,时间一到则在这个线程中调用回调函数,

7、对于主线程来说,非常类似外部中断调用,我们需要的正是这样的效果。2) 模拟时钟中断的产生中断指的是中止当前的事务,处理别的更要紧的事情。我们通过软件定时器来模拟产生uC/OS-II的时钟中断,但timeSetEvent()函数调用定时回调函数是和主线程同时被windows操作系统调度的,并没有起到中断的作用。所以在调用定时回调函数的时候必须停止主线程的运行,退出回调函数则恢复主线程的运行,自然这些事情可以都放在定时回调函数,也就是uC/OS-II的时钟中断处理函数中完成。Windows下要挂起一个线程的运行,首先要得到这个线程的句柄,然后调用SuspendThread(hangdler)和Re

8、sumeThread(handler)就可以挂起和继续执行线程。3) 任务切换任务切换,其实做的是任务的上下文切换,在其他CPU上非常容易分辨出任务的上下文,一般就是CPU上的相应寄存器,那么在VC下呢?从简单考虑,我们选择了不带浮点运算的上下文环境,因此任务的上下文和uC/OS-II在80x86上移植的上下文很相近,不同点只是段寄存器不用保存,因为在VC下任务其实只是在同一个线程中切换,而且在保护模式下段寄存器的概念已变,其值在同一个线程中是不会变的。2.3 FAT32文件系统格式FAT32是Windows系统硬盘分区格式的一种。这种格式采用32位的文件分配表,使其对磁盘的管理能力大大增强,

9、突破了FAT16对每一个分区的容量只有2 GB的限制。由于现在的硬盘生产成本下降,其容量越来越大,运用FAT32的分区格式后,我们可以将一个大硬盘定义成一个分区而不必分为几个分区使用,大大方便了对磁盘的管理。目前已被性能更优异的NTFS分区格式所取代。一个FAT文件系统包括四个不同的部分:保留扇区、FAT区域、根目录区域、数据区域。对于FAT32的具体说明可以参考微软官网上关于FAT32的白皮书,网址:http:/ 总体设计嵌入式文件系统由于功能和作用与普通桌面操作系统的文件系统不同,导致了二者在体系结构上具有很大的差异性。在普通桌面操作系统中,文件系统不仅要管理文件,提供文件系统调用API,

10、还要管理各种设备,支持对设备和文件操作的一致性(即要像操作文件一样来操作各种I/O设备)。在嵌入式文件系统中,这种规则发生了很大的变化。在某些情况下,嵌入式系统可以针对特殊的目的来进行定制,特别是随着ASOS(为应用定制的嵌入式操作系统)的发展,对嵌入式操作系统的系统功能规整性、可伸缩性及其灵活性提出了更高的要求。基于以上的考虑,我们采用了下图所示的嵌入式文件系统体系结构,该结构定义的文件系统从上到下有三个层次:第一层为API层、第二层为中间转换层、下层为介质驱动层。第一层:API层。API层是文件系统和用户应用程序之间的接口,它有一个标准C函数库,其中包含有诸如打开文件(f_open)、写文

11、件(f_write)等函数。本层的功能是将用户调用传送给中间转换层。这是整个系统设计的核心,也是嵌入式文件系统中用户唯一可见的部分。第二层:中间转换层。中间转换层要为文件系统的实现提供与硬件无关的统一接口,是文件系统结构规整性的基础。中间转换层包含有文件系统子层及逻辑块子层,其中文件系统子层将文件操作解释到逻辑块子层,然后文件系统调用逻辑块子层并根据不同的设备定义出相应的设备驱动程序;逻辑块子层主要是同步对设备驱动程序的访问,向上提供友好界面。第三层:介质驱动层。介质驱动层是访问硬件的最低端的程序,该程序的结构要能够便于实现对硬件的访问。本层的功能主要是完成对介质的访问。本层的重要任务就是提供

12、统一的设备驱动程序接口。根据文件系统的层次结构,可以将该文件系统分成三大功能块:API接口模块、中间转换模块、设备驱动模块。其中API接口模块主要完成文件的基本操作,包含有文件的生成、删除、打开、关闭、文件读、文件写等。中间转换模块主要完成对存取权限的检查、介质的选择、逻辑到物理的转换。设备驱动模块完成存储介质的驱动程序,包含有一个驱动程序函数表和介质读、介质写、检查状态、执行特定命令等驱动程序。第四章 详细设计总体设计完成之后,就可以几种精力进行详细设计。根据总体设计划分的模块,一个模块一个模块进行详细设计。4.1 文件系统对外提供的主要接口1、FRESULT f_open (FIL*, c

13、onst char*, BYTE);函数功能:打开或者创建一个文件2、FRESULT f_read (FIL*, BYTE*, WORD, WORD*);函数功能:读一个文件3、FRESULT f_close (FIL*);函数功能:关闭一个文件4、FRESULT f_opendir (DIR*, const char*);函数功能:读一个目录中的目录项5、FRESULT f_readdir (DIR*, FILINFO*);函数功能:读取目录的内容6、FRESULT f_stat (const char*, FILINFO*);函数功能:获取文件的状态7、FRESULT f_mountdrv

14、 ();函数功能:初始化文件系统8、FRESULT f_write (FIL*, const BYTE*, WORD, WORD*);函数功能:写文件9、FRESULT f_sync (FIL*);函数功能:同步文件缓冲区的内容到磁盘中10、FRESULT f_delete(const char*);函数功能:删除一个文件或者目录11、FRESULT f_mkdir (const char*);函数功能:创建一个目录这就是文件系统提供的全部功能,灵活地运用上述函数,就可以编写出复杂的应用程序。4.2 文件系统的主要数据结构1)UCFS结构体/* 文件系统结构体,保存文件系统的有关信息 */typedef struct BYTE fs_type; / 文件系统类型 BYTE files; / 当前已打开的文件的数目 BYTE sects_clust; / 每个簇的扇区数 BYTE n_fats; /

展开阅读全文
相关资源
相关搜索

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

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