课程名称计算机操作系统实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课程名称:计算机操作系统实验
(一)本课程实验总体介绍
1、本课程上机实验的任务:
通过该实验真正认识多进程、多线程、微核、死锁、文件系统、缓存等概念及实现原理;在充分理解原理和算法的基础上,发挥学生自我创造力,鼓励并创造机会让学生提出新的算法或实现。
2、本课程上机实验简介:
分为课程实验和课程设计两大部分。
课程实验通过应用层编程调用系统接口加深对进程、内存、文件和设备等功能的理解。具体为实验1-4。课程设计通过对Linux核心源代码的实例分析和设计掌握系统设计的原理和方法。具体为实验5-12。
3、本课程适用专业:
计算机相关专业。
4、本课程上机实验涉及核心知识点:
核心知识点:微核、系统调用、核心态与用户态、进程、线程、同步、互斥、并发、死锁、伙伴算法、文件及文件目录、I/O缓冲、调度算法、系统初始化、时钟中断等。
5、本课程上机实验重点与难点:
并发控制,内核代码的分析与设计。
6、本课程上机实验运用软件名称:
VC++编译环境, Source Insight分析器、gcc编译器,
7、总学时:
课程实验:16学时
课程设计:共8个课程设计,每个根据难度在8-20学时。
8、教材名称及教材性质(自编、统编、临时):
名称:《LINUX操作系统分析与设计》
性质:自编
9、参考资料:
●计算机操作系统. 汤子瀛,西安电子科技大学出版社(第3版)
●《Linux设备驱动程序》第二版Alessandro Rubini & Jonathan Corbet编
著魏永明骆刚等译中国电力出版社2002年11月第一版。
●《Linux操作系统内核分析》陈莉君编人民邮电出版社第一版。
●《Linux操作系统内核实习》Gary Nutt 著机械工业出版社。
(二)包含实验项目基本信息
实验项目1
1、实验项目名称:
进程调度算法设计实践
2、实验项目的目的和任务:
目的:通过该实验,加深对多道系统中调度算法的认识。
任务:实现FIFO,RR(q=1),SPN, SRT, HRRN, FB(去=2i-1)六种调度算法。
并通过输入一组进程序列计算出每种算法的输出进程序列。
3、上机实验内容:
(1)实现主程序及六种调度算法。
(2)输入一组进程序列,对序列中的每一个进程,定义不同的优先级、总执行时间,用六种调度算法输出调度最终的排序结果。
序列例;
4、学时数:4
实验项目2
1、实验项目名称:
线程间同步与互斥
2、实验项目的目的和任务:
目的:通过多线程并发程序设计,掌握同步与互斥的设计方法。
任务:实现一个生产者、消费者的两线程同步算法。
3、上机实验内容:
(1)申请10个缓冲区。
(2)编制生产者线程:首先产生一个随机数,写入到一个缓冲区中。其次将该缓冲区置“满”标志。
(3)编制消费者线程:取一个“满”标志的缓冲区中数据,打印输出,然后将该缓冲区置“空”标志。
(4)添加相应的同步互斥控制代码。
4、学时数:4
实验项目3
1、实验项目名称:
内存分配与回收设计
2、实验项目的目的和任务:
目的:学习内存管理的实现原理。
任务:实现一个基于伙伴算法的内存分配回收算法,并通过输入一组内存请求与回收序列验证该算法执行情况。
3、上机实验内容:
(1)实现主程序及伙伴算法(设内存总量为1M)。
(2)用如下请求和释放序列验证该算法执行情况。
请求100k――>请求240k――>请求64k――>请求256k――>释放240k――>释放100k――>请求75k――>释放64k――>释放75k――>释放256k
试输出每次请求和释放动作产生后的内存状态。
4、学时数:4
实验项目4
1、实验项目名称:
文件复制
2、实验项目的目的和任务:
目的:掌握文件系统的系统调用的使用。
任务:产生两个文件A和B,并将这两个文件内容交叉复制到文件C中,并输出文件C的结果。
3、上机实验内容:
(1)产生一个1k的文件A,其内容为数字。
(2)产生一个1k的文件B,其内容为字母。
(3)以100字节为单位,将A、B两文件的内容交替复制到文件C中。最后输出C的结果。
4、学时数:4
实验项目5
1、实验项目名称:
Linux时间系统分析
2、实验项目的目的和任务:
通过对LINUX系统与时间有关的系统源代码分析,学习多任务系统中调度的核心事件时钟中断的实现原理,学习LINUX的内核机制以及内核时钟维护机制。
3、上机实验内容:
●编写一个拾取当前时间的应用程序,熟悉系统调用gettimeofday() 的使
用。
●分析\linux\kernel\time.c中的sys_gettimeofday()过程,说明时间是从何处
取得的,并给出分析流图。
●分析\linux\kernel\itimer.c中的sys_getitimer()和sys_setitimer()过程,给出
分析流图。
●分析\linux\arch\i386\kernel中的时钟中断处理过程do_timer_interrupt()和
\linux\kernel\中的timer_bh()过程,给出分析流图,解释时钟中断处理的