- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计讲义
(学生稿)
编写人:朱敏、杜中军等
2009年9月于成都.川大望江校区
目 录
第一部分 基于Windows环境的实验 4
实验一 读者写者问题 4
1.1实验要求 4
1.2 实验环境 4
1.3测试数据文件格式 4
1.4 试验分析 5
1.5 相关API函数说明 5
1.6简单说明: 12
实验二 内存管理 14
2.1实验要求 14
2.2实验目的 14
2.3实验内容 15
2.4实验环境 15
2.5实验提示 15
2.5.1源程序提示 15
2.5.2相关API函数说明 16
第二部分 基于Linux环境的实验 22
实验一 shell 程序 22
1.1 实验目的 22
1.2 实验要求 22
1.2.1 ysh解释程序的重要特征 22
1.2.2 ysh解释程序的具体要求 23
1.3相关基础知识 26
1.3.1 shell与内核的关系 26
1.3.2 系统调用 27
1.4实验环境 36
1.5程序的实现 36
1.5.1数据结构 36
1.5.2程序结构 37
1.6实验总结 45
实验二:作业调度系统 46
2.1实验内容 46
2.2实验目的 46
2.3环境要求 46
2.4实验要求 46
2.4.1实验包括的程序 46
2.4.2调度策略 48
2.5实验提示 48
2.5.1重要数据结构 48
2.5.2作业调度程序的实现 49
2.5.3作业控制命令的实现 52
实验三 文件系统 53
3.1实验内容 53
3.2实验目的 53
3.3环境要求 53
3.4 实验要求 53
3.5实验提示 54
3.5.1数据结构 54
3.5.2文件操作函数的实现 55
第一部分 基于Windows环境的实验
实验一 读者写者问题
1.1实验要求
创建一个控制台进程。此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面有介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题。
读者-写者问题的读写操作限制(包括读者优先和写者优先):
1)写-写互斥,即不能有两个写者同时进行写操作。
2)读-写互斥,即不能同时有一个线程在读,而另一个线程在写。
3)读-读允许,即可以有一个或多个读者在读。
读者优先的附加限制:如果一个读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。
写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。
运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。
1.2 实验环境
windows 2000/xp ,visual c++
1.3测试数据文件格式
测试数据文件包括n行测试数据,分别描述创建的n个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,各个字段间用空格分隔。第一字段为一个正整数,表示线程序号。第二字段表示相应线程角色,R表示读者,w表示写者。第三字段为一个正数,表示读写操作的开始时间:线程创建后,延迟相应时间(单位为秒)后发出对共享资源的读写申请。第四字段为一个正数,表示读写操作的持续时间。当线程读写申请成功后,开始对共享资源的读写操作,该操作持续相应时间后结束,并释放共享资源。
下面是一个测试数据文件的例子:
1 R 3 5
2 W 4 5
3 R 5 2
4 R 6 5
5 W 5.1 3
由于牵涉格式的问题,最好在记事本中手工逐个键入数据,而不要拷贝粘贴数据,
1.4 试验分析
可以将所有读者和所有写者分别存于一个读者等待队列和一个写者等待队列中,每当读允许时,.就从读者队列中释放一个或多个读者线程进行读操作;每当写允许时,就从写者队列中释放一个写者进行写操作。
1.读者优先
读者优先指的是除非有写者在写文件,否则读者不需要等待。所以可以用一个整型变量read_count记录当前的读者数目,用于确定是否需要释放正在等待的写者线程(当read_count=0时,表明所有的读者读完,需要释放写者等待队列中的一个写者)。每一个读者开始读文件时,必须修改read_count变量。因此需要一个互斥对象mutex来实现对全局变量read_count修改时的互斥。
另外,为了实现写-写互斥
您可能关注的文档
最近下载
- 瓷砖胶品牌、瓷砖胶缺点、瓷砖胶禁忌.doc VIP
- 《杜邦分析法下公司盈利能力分析—以海澜之家为例》7500字.docx VIP
- 2025年高中数学奥林匹克竞赛试卷试题及答案解析.docx VIP
- 住房公积金政策知识竞赛题库附答案(150题).docx VIP
- EN 50618-2014 光伏系统用电缆.pdf VIP
- 边坡治理工程(抗滑桩、锚杆、锚索、挡板、冠梁)专项施工组织设计.doc VIP
- 畜牧兽医法律法规和职业道德(第二版)PPT课件(全).pptx VIP
- 人教版(新教材)七年级上册音乐第一单元《生活中的音乐》全单元教学课件课件.pptx
- 苏教版五年级上册《科学》全套教学课件(共486页PPT).pptx
- 欧洲知识点PPT课件.pptx
文档评论(0)