- 9
- 0
- 约1.92万字
- 约 21页
- 2017-08-09 发布于安徽
- 举报
杭州电子科技大学
操作系统课程设计
课程设计题目:基于DOS的多任务系统实现
姓名:xxx
班级:xx
学号:xx
学院:计算机学院
专业:网络工程
负责老师:
完成日期:2015-6-9
基于DOS的多任务系统的实现
课程设计的目的
通过对线程(和进程)的创建和撤销,CPU的调度,同步机制,通信机制的实现,以达到一下目的:
加深对线程和进程概念的理解,明确进程和程序的区别。
加深对CPU调度过程(现场保护,CPU的分派和现场的恢复)的理解。
进一步认识并执行的概念,明确顺序执行和并发执行的区别。
加深对临界资源,临界区,信号量以及同步机制的理解。
加深对消息缓冲通信的理解。
设计要求
用C语言完成线程的创建和撤销,并按优先权加时间片轮转算法对多线程进行调度。
改变时间片的大小,观察结果的变化,
假设两个线程共用同一软件资源(如某以变量,或者某以数据结构),请用记录型信号量来实现对它的互斥访问。
假设有两个线程共享一个可以存放5个整数的缓冲,一线程不停地计算1至50的平方,并将结构放入缓冲中,另一个线程不断地从缓冲中取出结果,并将它们打印出来,请用记录型信号量实现这一生产者和消费者的同步问题。
实现消息缓冲通信,并与3,4中的简单通信进行比较。
程序设计思想以及总流程图
程序的设计思想:
该程序主要是分5大块内容:线程的创建和撤销,线程的调度,线程的同步与互斥,线程的阻塞与唤醒,利用消息缓冲队列的线程间的通信。由这五大块功能来完成的基于DOS的多任务系统的实现。在这个系统中,首先先由main函数进行一些初始化工作,然后直接创建0#线程对应于main函数,再由0#线程调用create创建1#,2#线程分别对应与函数f1(),f2(),最后将系统的中断服务程序设置为new_int8,并把控制交给1#线程,启动多个线程的并发执行。
0#线程是一个比较特殊的线程,它在创建的时候没有使用create来创建,而是在系统初始化后直接创建的,因它对应的程序段为main函数中的一段,所以也直接使用整个系统的堆栈,而不再创建时为私有堆栈分配额外的空间;同样,撤销的时也不需要释放私有堆栈的空间,所以也没有over()函数而是直接撤销,从这方面来看,它是一个系统线程。
此外,在启动多个线程并发执行过程后,0#线程将系统控制权转交出去,直至系统中其他进程都不具备执行条件时,它才有可能重新得到CPU,从这方面看,0#线程相当于是一个空转线程,最后,0#线程还担负着一个特别的使命:等待系统中所有其他的线程的完成,此时,它将直接撤销自己并恢复原来的时钟中断服务程序,从此终止整个多任务系统。
系统的总流程图
系统各个功能的实现思想
线程的创建和撤销
线程的创建过程关键就是对私有堆栈和TCB初始化的过程,其过程如下:
为新线程分配一空闲的线程控制块
为新线程的私有堆栈分配内存空间(因为对等线程共享程序段和数据段空间,所以创建线程时不必像创建进程那样再为程序段和数据段分配内存空间)
初始化新线程的私有堆栈,即按CPU调度时现场信息的保存格式布置堆栈。
初始化线程控制块,即填入线程的外部标识符,设置好线程私有堆栈的始址,段址和栈顶指针,将线程的状态置为就绪状态。
最后哦返回新线程的内部标识符
线程的内存映像如下:
线程的撤销过程中,一个关键的地方是在初始化线程私有堆栈时需要将over()的入口地址压入线程的私有堆栈中,这样做的好处是:当线程所对应的函数正常结束时,over()函数的入口地址将最为函数的返回地址被弹出至CS,IP寄存器,那么控制将自动转向over(),从而使对应的线程被自动撤销,并重新进行CPU调度。
线程的调度
引起CPU调度原因主要是有三种情况:时间片到时,线程执行完毕或正在执行的线程因等待某种事件而不能继续执行。
由这些原因,调度程序可以通过两个函数分别处理不同原因引起的调度:
New_int8()函数主要是处理因时间片到时引起的调度该调度可以通过截取时钟中断(int 08)来完成;
Swtch()函数主要是处理因其他原因引起的调度;
New_int8()函数因为是通过截取时钟中断来实现,可以知道其是属于系统调度,由于涉及到系统调度的函数都是需要对DOS状态进行判断,以防止出现系统数据混乱等情况的发生(从Dos的不可重入性来得出),而Swtch()函数是处理因其他原因引起的调度,所以它所涉及到的仅仅是用户级的函数调度,没有涉及到系统级的函数调度,因此Swtch()函数不需要对Dos状态进行判断。对于线程的两种调度函数的过程,因其相似,给出New_int8()函数的执行过程图,如下:
需要主要的是:新的时钟中断处理程序不能太长,否则系统效率将大大下降甚至使系统无法正常工作;在新的时钟中断处理程序必须调用系统原来的INT 0
您可能关注的文档
- 毕业设计(论文)-企业柔性管理研究.doc
- 毕业设计(论文)-汽车备轮架加固板冲压模具设计.doc
- 毕业设计(论文)-汽车车架有限元分析.doc
- 毕业设计(论文)-汽车膜片弹簧离合器设计.doc
- 毕业设计(论文)-千分尺的三维设计与研究.doc
- 毕业设计(论文)-浅谈数控机床的维修与维护.doc
- 毕业设计(论文)-浅析建筑工程成本管理.doc
- 毕业设计(论文)-浅析数形结合在中学数学解题中的应用.doc
- 毕业设计(论文)-球形氧化铜纳米颗粒的模板合成.doc
- 毕业设计(论文)-人工挖孔桩施工方案设计.doc
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
最近下载
- 春节祝福短信 春节祝福短信大全 春节短信.docx VIP
- 两级ao生化工艺设计计算书.doc VIP
- 《船舶电气与自动化(船舶电气)(二三管轮)》_第二章船舶电机与电力拖动系统.ppt VIP
- 山东药品食品职业学院单招《数学》通关题库【轻巧夺冠】附答案详解.docx VIP
- 新人教版七年级下册语文诗歌鉴赏及答案.doc VIP
- 五年级数学下册全套单元测试题及答案.pdf VIP
- 一站到底游戏课件.ppt VIP
- 小学三年级下册教学设计西师版.pdf VIP
- 人教PEP版六年级下册Unit 1 How tall are you单元词形填空题(含答案).doc VIP
- 2026-2030 中枢神经系统药物市场需求趋势及发展机遇可行性研究报告.docx
原创力文档

文档评论(0)