操作系统课程设计任务书(2022级计算机、
软件)
2022-2022学年第一学期
「操作系统」课程设计任务书
依照大纲和课程内容实践特点,结合《操作系统》、《LINUX操作系统》和《嵌入式程序设计》课程主要内容,课设的具体要求及任务如下:
一、设计成果的要求
课程设计应严格按照要求完成,在系统调试成功后, 需要提供「操作系统」课程设计报告,具体包括:
(1)设计目的(2)设计任务(3)设计准备(理论、技术)(4)设计过程(设计思想、代码实现)(5)设计结果并分析(6)系统的结构、原理框图和模块等的详细说明(7)用户使用说明书和参考资料(8)设计体会。
二、设计任务(两名同学选一题,协作完成)
题目一:进程与线程—Linux进程与线程通讯
1.设计目的
深刻理解线程和进程的概念,掌握线程与进程在组成成分上的差别以及与其相适应的通讯方式和应用目标。
Linux系统的fork()保持了UNIX的经典语义,被创建的进程具有独立于父进程的地址空间,二者之间的通讯通常
可采用pipe机制,clone()是Linux 系统特有的系统调用,可以通过参数确定父子进程之间是否共享存储空间等资源。在地址空间等资源共享的情况下,clone实质相当于创建了一个轻进程或线程,这是clone的通常用法。实际在Linux 系统中,fork以及用户级线程pthread 都是基于clone实现的。
2.设计内容
以Linux系统进程和线程机制为背景,掌握fork()和clone()系统调用的形式和功能以及与其相适应的高级通讯方式。由fork派生的子进程之间通过pipe通讯,由clone 创建的线程之间通过共享内存通讯,对于后者需要考虑互斥问题。
以生产者-消费者问题为例,通过实验理解fork()和clone()两个系统调用的区别。程序要求能够创建4个进程或线程,其中包括两个生产者和两个消费者,生产者和消费者之间能够传递数据。
题目二:处理机调度—实时调度算法EDF和RMS
1.设计目的
深入理解处理机调度算法,了解硬实时概念,掌握最早截止期优先调度算法EDF(Earliest Deadline First)和速率单调调度算法RMS(Rate Monotonic Scheduling)的可调度条件,并能在可调度情况下给出具体调度结果。
2.设计内容
在Linux环境中采用用户级线程模拟实现EDF和RMS两种实时调度算法。给定一组实时任务,按照EDF算法和RMS 算法分别判断是否可调度。在可调度的情况下,创建一组用户级线程,分别代表各个实时任务,并按算法所确定的调度次序安排各个线程运行,运行时在终端上画出其Gantt图。为避免图形绘制冲淡算法,Gantt图可用字符表示。
嵌入式linux培训课程题目三:存储管理—动态异长存储资源分配算法
1.设计目的
理解动态异长存储分区资源管理,掌握所需数据结构和管理程序,了解各种存储分配算法的优点和缺点。
2.设计内容
(1)分析UNIX最先适应(First Fit,FF)存储分配算法,即map数据结构、存储分配函数malloc()和存储释放函数mfree(),出与算法有关的成分。
(2) 修改上述与算法有关的成分,使其分别体现BF (Best Fit,最佳适应)分配原则和WF(Worst Fit,最环适应)分配原则。
题目四:文件系统—Hash结构文件
1.设计目的
理解Linux文件系统的内部技术,掌握Linux与文件有关的系统调用命令,并在此基础上建立面向随机检索的Hash
结构文件。
Linux系统保持UNIX文件系统的风格,提供流式文件界面,这种结构具有简洁灵活的特点,但并不直接支持记录式文件和关键字检索。本设计在Linux 文件系统基础上,设计一组库函数,以提供对随机检索的支持。
2.设计内容
(1)参考教程中Has件构造算法,设计一组Hash 文件函数,包括Hash 文件创建、打开、关闭、读、写等。
(2)编写一个测试程序,通过记录保存、查、删除等操作,检查上述Hash 文件是否实现相关功能。
题目五:设备管理—Linux设备驱动程序安装
1.设计目的
认识Linux设备的种类和设备工作方式,理解设备驱动程序的工作原理,掌握设备驱动程序的编写规范,能编写并安装简单的设备驱动程序。
2. 设计内容
在Linux系统中,编写一个简单的字符型设备驱动程序模块,设备具有独占特性,可执行读和写操作,相关系统调用为open,close,read,write。Open 和close分别相当于请求和释放设备,read和write将内容保存在设备模块内的绥冲区中。设备模块可动态注册和卸载,并建立与之对应的特殊文件
/dev/mydev。
题目六:Bootloader引导程序设计与实现
1.设计目的
认识Bootloader的作用,深入理解Bootloader的编程思想。以典型的引导程序vivi为例,对vivi程序的架构,vivi的启动流程,使用vivi完成系统引导程序的设计方法形成深刻的理解和认识。
2. 设计内容
在嵌入式操作系统中,Bootloader的作用与PC机上的BIOS类似,通过Bootloader可以完成对系统板上的主要部件如CPU、SDRAM、Flash、串行口等进行初始化。当运行操作系统时,它会在操作系统内核运行之前运行,通过它,可以分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。
本设计要求同学首先分析老师提供的vivi程序源代码,理清vivi程序的架构分为哪几个模块,然后根据分析vivi 程序的执行流程具体分为哪几个阶段,各阶段的主要任务是什么。最后要求同学编写内存映射初始化函数
mem_map_init()和内存管理单元初始化函数mmu_init()。
题目七:嵌入式linux下键盘驱动程序的设计与实现

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。