操作系统实验报告材料31869

操作系统实验报告材料31869

ID:39782782

大小:715.75 KB

页数:27页

时间:2019-07-11

操作系统实验报告材料31869_第1页
操作系统实验报告材料31869_第2页
操作系统实验报告材料31869_第3页
操作系统实验报告材料31869_第4页
操作系统实验报告材料31869_第5页
资源描述:

《操作系统实验报告材料31869》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、标准文档操作系统课程设计实验报告2015年1月9日成绩:姓名沈XX夏XX江XX学号130558051305580713055816班级13052314专业计算机科学与技术课程名称操作系统课程设计任课老师赵伟华指导老师赵伟华实验序号1实验名称进程调度管理实验时间15年10月实验地点1教南1楼一、题目说明(1)用C语言完成线程的创建和撤消,并按先来先服务方式对多个线程进行调度。(2)将线程调度算法修改为时间片轮转算法,实现时间片轮转调度。(也可以结合优先权,实现优先权加时间片轮转算法的线程调度。)(3)改变

2、时间片的大小,观察结果的变化。思考:为什么时间片不能太小或太大。(4)假设两个线程共用同一软件资源(如某一变量,或某一数据结构),请用记录型信号量来实现对它的互斥访问。(5)假设有两个线程共享一个可存放5个整数的缓冲,其中一个线程不停地计算1至50的平方,并将结果放入缓冲中,另一个线程不断地从缓冲中取出结果,并将它们打印出来,请用记录型信号量实现这一生产者和消费者的同步问题。(6)实现消息缓冲通信,并与4、5中的简单通信进行比较。(7)思考:在线程间进行消息缓冲通信时,若对消息队列的访问没有满足互斥要求

3、,情况将会怎样?实用文案标准文档二、设计方案(系统框架)该程序主要是分5大块内容:(1)线程的创建和撤销,(2)线程的调度,(3)线程的同步与互斥,(4)线程的阻塞与唤醒,(5)利用消息缓冲队列的线程间的通信。由这五大块功能来完成的基于DOS的多任务系统的实现。在这个系统中,首先先由main函数进行一些初始化工作,然后直接创建0#线程对应于main函数,再由0#线程调用create创建1#,2#线程分别对应与函数f1(),f2(),最后将系统的中断服务程序设置为new_int8,并把控制交给1#线程,启

4、动多个线程的并发执行。0#线程是一个比较特殊的线程,它在创建的时候没有使用create来创建,而是在系统初始化后直接创建的,因它对应的程序段为main函数中的一段,所以也直接使用整个系统的堆栈,而不再创建时为私有堆栈分配额外的空间;同样,撤销的时也不需要释放私有堆栈的空间,所以也没有over()函数而是直接撤销,从这方面来看,它是一个系统线程。此外,在启动多个线程并发执行过程后,0#线程将系统控制权转交出去,直至系统中其他进程都不具备执行条件时,它才有可能重新得到CPU,从这方面看,0#线程相当于是一个

5、空转线程,最后,0#线程还担负着一个特别的使命:等待系统中所有其他的线程的完成,此时,它将直接撤销自己并恢复原来的时钟中断服务程序,从此终止整个多任务系统。三、程序流程图实用文案标准文档四、实验结果(程序截图)实用文案标准文档主界面先进先出效果实用文案标准文档实现线程的并发执行,可设置时间片大小实现线程对同一资源的互斥访问实用文案标准文档实现生产者和消费者同步问题实现消息缓冲通信五、思考与探索(1)为什么时间片不能太小或太大实用文案标准文档答:设置过长的时间片会导致结果和进程在一个时间片内完成任务,从而

6、先进先出算法的效果一样,失去时间片的意,义。设置过短会导致进程切换频繁,CPU的效率降低(1)引起调度的原因有哪些?答:引起CPU调度的主要原因有:时间片到时、线程执行完毕或正在执行的线程因等待某事件发生而不能继续执行。(2)处理中断时控制转移情况答:当中断发生时,系统首先将标志寄存器Flags的值压入堆栈,然后将装有被中断程序下一条指令地址的CS和IP寄存器的内容也分别压入堆栈,再从中断向量中获取中断服务程序的入口地址并将它们装入CS和IP寄存器,这样,控制就从被中断的程序转向中断服务程序。中断返回时

7、,系统自动从栈顶弹出返址1的偏移、返址1的段址和Flags并送到IP、CS和Flags寄存器中,CPU就开始继续从断点处执行被中断程序。(3)为什么创建的时候,线程的DS和ES都是一样的答:因为线程共用进程的数据段。(4)函数调度时控制转移情况答:在执行函数调用指令时,系统会自动地先将主调函数的下一条指令的地址(在CS:IP中)压入堆栈,然后把被调函数的入口地址装入CS和IP寄存器(段内函数调用只需压入和装配IP),控制就从主调函数转向被调函数;当执行函数返回指令时,系统将当前堆栈的栈顶的两个字(主调函

8、数下一条指令的地址)弹出并送到IP和CS中(段内函数返回只需弹出一个字送到IP中),控制就从被调函数返回到主调函数。(5)new_int8(void)函数的作用,以及怎样让它自动地定期地运行答:该函数要完成的主要工作包括:首先执行老的时钟中断处理程序的功能;然后判断当前线程的时间片是否到了,如果到了,且DOS不忙,则保存当前线程的运行环境,重新选择一个新的就绪线程,恢复其运行现场,使其在CPU上参加运行。由于该函数必须是自动地定期地运行,所

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。