操作系统课程设计任务书(2022级计算机、软件).docx
《操作系统课程设计任务书(2022级计算机、软件).docx》由会员分享,可在线阅读,更多相关《操作系统课程设计任务书(2022级计算机、软件).docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统课程设计任务书(2022级计算机、软件) 2022-2022学年第一学期 操作系统课程设计任务书 依照大纲和课程内容实践特点,结合操作系统、LINUX操作系统和嵌入式程序设计课程主要内容,课设的具体要求及任务如下: 一、设计成果的要求 课程设计应严格按照要求完成,在系统调试成功后, 需要提供操作系统课程设计报告,具体包括: (1)设计目的(2)设计任务(3)设计准备(理论、技术)(4)设计过程(设计思想、代码实现)(5)设计结果并分析(6)系统的结构、原理框图和模块等的详细说明(7)用户使用说明书和参考资料(8)设计体会。 二、设计任务(两名同学选一题,协作完成) 题目一:进程与线程L
2、inux进程与线程通讯 1.设计目的 深刻理解线程和进程的概念,掌握线程与进程在组成成分上的差别以及与其相适应的通讯方式和应用目标。 Linux系统的fork()保持了UNIX的经典语义,被创建的进程具有独立于父进程的地址空间,二者之间的通讯通常可采用pipe机制,clone()是Linux 系统特有的系统调用,可以通过参数确定父子进程之间是否共享存储空间等资源。在地址空间等资源共享的情况下,clone实质相当于创建了一个轻进程或线程,这是clone的通常用法。实际在Linux系统中,fork以及用户级线程pthread 都是基于clone实现的。 2.设计内容 以Linux系统进程和线程机制
3、为背景,掌握fork()和clone()系统调用的形式和功能以及与其相适应的高级通讯方式。由fork派生的子进程之间通过pipe通讯,由clone创建的线程之间通过共享内存通讯,对于后者需要考虑互斥问题。 以生产者-消费者问题为例,通过实验理解fork()和clone()两个系统调用的区别。程序要求能够创建4个进程或线程,其中包括两个生产者和两个消费者,生产者和消费者之间能够传递数据。 题目二:处理机调度实时调度算法EDF和RMS 1.设计目的 深入理解处理机调度算法,了解硬实时概念,掌握最早截止期优先调度算法EDF(Earliest Deadline First)和速率单调调度算法RMS(R
4、ate Monotonic Scheduling)的可调度条件,并能在可调度情况下给出具体调度结果。 2.设计内容 在Linux环境中采用用户级线程模拟实现EDF和RMS两种实时调度算法。给定一组实时任务,按照EDF算法和RMS算法分别判断是否可调度。在可调度的情况下,创建一组用户级线程,分别代表各个实时任务,并按算法所确定的调度次序安排各个线程运行,运行时在终端上画出其Gantt图。为避免图形绘制冲淡算法,Gantt图可用字符表示。 题目三:存储管理动态异长存储资源分配算法 1.设计目的 理解动态异长存储分区资源管理,掌握所需数据结构和管理程序,了解各种存储分配算法的优点和缺点。 2.设计内
5、容 (1)分析UNIX最先适应(First Fit,FF)存储分配算法,即map数据结构、存储分配函数malloc()和存储释放函数mfree(),找出与算法有关的成分。 (2) 修改上述与算法有关的成分,使其分别体现BF(Best Fit,最佳适应)分配原则和WF(Worst Fit,最环适应)分配原则。 题目四:文件系统Hash结构文件 1.设计目的 理解Linux文件系统的内部技术,掌握Linux与文件有关的系统调用命令,并在此基础上建立面向随机检索的Hash结构文件。 Linux系统保持UNIX文件系统的风格,提供流式文件界面,这种结构具有简洁灵活的特点,但并不直接支持记录式文件和关键
6、字检索。本设计在Linux 文件系统基础上,设计一组库函数,以提供对随机检索的支持。 2.设计内容 (1)参考教程中Hash文件构造算法,设计一组Hash文件函数,包括Hash 文件创建、打开、关闭、读、写等。 (2)编写一个测试程序,通过记录保存、查找、删除等操作,检查上述Hash 文件是否实现相关功能。 题目五:设备管理Linux设备驱动程序安装 1.设计目的 认识Linux设备的种类和设备工作方式,理解设备驱动程序的工作原理,掌握设备驱动程序的编写规范,能编写并安装简单的设备驱动程序。 2. 设计内容 在Linux系统中,编写一个简单的字符型设备驱动程序模块,设备具有独占特性,可执行读和
7、写操作,相关系统调用为open,close,read,write。Open 和close分别相当于请求和释放设备,read和write将内容保存在设备模块内的绥冲区中。设备模块可动态注册和卸载,并建立与之对应的特殊文件 /dev/mydev。 题目六:Bootloader引导程序设计与实现 1.设计目的 认识Bootloader的作用,深入理解Bootloader的编程思想。以典型的引导程序vivi为例,对vivi程序的架构,vivi的启动流程,使用vivi完成系统引导程序的设计方法形成深刻的理解和认识。 2. 设计内容 在嵌入式操作系统中,Bootloader的作用与PC机上的BIOS类似,
8、通过Bootloader可以完成对系统板上的主要部件如CPU、SDRAM、Flash、串行口等进行初始化。当运行操作系统时,它会在操作系统内核运行之前运行,通过它,可 以分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。 本设计要求同学首先分析老师提供的vivi程序源代码,理清vivi程序的架构分为哪几个模块,然后根据分析vivi程序的执行流程具体分为哪几个阶段,各阶段的主要任务是什么。最后要求同学编写内存映射初始化函数 mem_map_init()和内存管理单元初始化函数mmu_init()。 题目七:嵌入式linux下键盘驱动程序的设计与
9、实现 1.设计目的 通过完成对嵌入式linux下键盘驱动程序的设计和调试,掌握嵌入式linux 驱动程序的编写方法,理解驱动程序动态模块的调试方法,掌握驱动程序添加到内核的流程。 2. 设计内容 设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,故在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。 本设计要求同学按照标准设备驱动程序的步骤编写驱动程序。由于键盘的设备驱动程序属于字符设备的驱动,因此,应当按照字符设备的规则编写。要求同学编写键盘设备文件file_operations结构,以及以下几个键盘操作函数:键盘
10、控制函数Kbd_Ioctl()、关闭键盘设备函数Kbd_Close()、打开键盘设备函数Kbd_Open()、获取键值函数Kbd_Getkey()、键盘服务子程序Kbd_ISR()、键盘设备的硬件初始化函数Setup_Kbd()、注册键盘设备使用函数KbdInit()和卸载键盘设备函数Kbd_Exit()。 题目八:首次适应算法的动态分区分配方式模拟 1.设计目的 了解动态分区分配中使用的数据结构和分配算法,并进一步加深对动态分区存储管理方式及其实现过程的理解。 2.设计内容 1)用C语言实现采用首次适应算法的动态分区分配过程alloc()和回收过程free()。其中,空闲分区通过空闲分区链表
11、来管理,在进行内存分配时,系统优先使用空闲区低端的空间。 2)假设初始状态如下,可用的内存空间为640KB,并有下列的请求序列; 作业1申请130KB 作业2申请60KB 作业3申请100KB 作业2释放60KB 作业4申请200 KB 作业3释放100 KB 作业1释放130 KB 作业5申请140 KB 作业6申请60 KB 作业7申请50KB 作业6释放60 KB 请采用首次适应算法进行内存块的分配和回收,同时显示内存块分配和回收后空闲内存分区链的情况。 题目九:循环首次适应算法的动态分区分配方式模拟 1.设计目的 了解动态分区分配中使用的数据结构和分配算法,并进一步加深对动态分区存储管
12、理方式及其实现过程的理解。 2.设计内容 1)用C语言实现采用循环首次适应算法的动态分区分配过程alloc()和回收过程free()。其中,空闲分区通过空闲分区链表来管理,在进行内存分配时,系统优先使用空闲区低端的空间。 2)假设初始状态如下,可用的内存空间为640KB,并有下列的请求序列; 作业1申请130KB 作业3申请100KB 作业2释放60KB 作业4申请200 KB 作业3释放100 KB 作业1释放130 KB 作业5申请140 KB 作业6申请60 KB 作业7申请50KB 作业6释放60 KB 请采用循环首次适应算法进行内存块的分配和回收,同时显示内存块分配和回收后空闲内存分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 任务书 2022 计算机 软件
限制150内