操作系统课程设计论文.docx
- 文档编号:23868085
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:39
- 大小:362.24KB
操作系统课程设计论文.docx
《操作系统课程设计论文.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计论文.docx(39页珍藏版)》请在冰豆网上搜索。
操作系统课程设计论文
学年论文(课程设计)
题目:
操作系统课程设计
学院数学与计算机学院
学科门类工学
专业网络工程
学号
姓名
指导教师王煜
年月日
河北大学学年论文(课程设计)任务书
(指导教师用表)
学生姓名
指导教师
论文(设计)题目
基于时间片轮转调度算法的进程管理系统
主要研究
(设计)内容
在采用时间片轮转调度算的基础上实现单用户多进程的进程管理部分,包括:
主存分配与回收、设备的分配与回收、进程的创建、撤销、阻塞唤醒和进程调度等。
研究方法
根据操作系统理论课上学习的操作系统中关于进程管理、存储管理和设备管理实现方法,实现主存分配与回收、设备的分配与回收、进程的创建、撤销、阻塞唤醒和进程调度等
主要任务
及目标
主要任务:
在采用时间片轮转调度算的基础上实现单用户多进程的进程管理部分,包括:
主存分配与回收、设备的分配与回收、进程的创建、撤销、阻塞唤醒和进程调度等。
目标:
通过模拟操作系统原理的实现,加深对操作系统工作原理和操作系统实现方法的理解;通过模拟操作系统原理的实现练习编程。
主要参
考文献
[1]操作系统习题解答与实验指导.王煜,张明,刘振鹏.中国铁道出版社.2007
[2]操作系统实验指导.任爱华.清华大学出版社.2004
[3]操作系统实验教程(Windows版).姚卫华.清华大学出版社.2005
进度安排
论文(设计)各阶段名称
日期
布置任务
第10周-第11周
整体设计
第12周
编写程序
第13周-第17周
撰写论文
第18周
指导教师签字:
系主任签字:
主管教学院长签字:
河北大学学年论文(课程设计)成绩评定表
学院:
数学与计算机学院
学生姓名
专业年级
论文(设计)题目
基于时间片轮转调度算法的进程管理系统
论文(设计)内容提要
此系统实现了存储管理、设备管理和进程管理。
存储管理部分主要实现主存空间的分配和回收。
存储管理采用可移动的可变分区存储管理方式。
采用数组来模拟主存,大小为512个字节。
设备管理主要包括设备的分配和回收。
模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。
设备分配时采用采用先来先服务策略。
设备回收时唤醒等待设备的进程。
进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。
其中硬件中的中央处理器用不断循环的函数CPU()模拟,重要寄存器(如:
程序状态寄存器PSW、指令寄存器IR)用全局变量模拟,中断的发现是在函数CPU中加检测PSW的方式来模拟,时钟的模拟通过timer控件实现。
进程控制块的模拟通过数组,本系统最多容纳10个。
进程调度时采用时间片轮转调度算法,时间片为5。
指导教师评语
成绩:
指导教师(签名):
年月日
摘要
此系统实现了存储管理、设备管理和进程管理。
存储管理部分主要实现主存空间的分配和回收。
存储管理采用可移动的可变分区存储管理方式。
采用数组来模拟主存,大小为512个字节。
设备管理主要包括设备的分配和回收。
模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。
设备分配时采用采用先来先服务策略。
设备回收时唤醒等待设备的进程。
进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。
其中硬件中的中央处理器用不断循环的函数CPU()模拟,重要寄存器(如:
程序状态寄存器PSW、指令寄存器IR)用全局变量模拟,中断的发现是在函数CPU中加检测PSW的方式来模拟,时钟的模拟通过timer控件实现。
进程控制块的模拟通过数组,本系统最多容纳10个。
进程调度时采用时间片轮转调度算法,时间片为5。
关键词:
存储管理设备管理进程管理时间片
ABSTRACT
Thesystemhasstoragemanagement,equipmentmanagementandprocessmanagement.
Thestoragemanagementhasachievedtheallocationandrecoveryofthemainmemoryspace.Variablestoragemanagementisusedasstoragemanagement.Wesimulatethemainmemorybyarray,whosesizeis512bytes.
Thedevicemanagement,includingthedistributionandrecoveryofdevicet.Wesimulatethreedevices,A,B,C.thenumbersofthemare3,2,1.Thedistributionofdeviceusedtoadoptfirst-comefirst-servicestrategy.Itawakestheblockingprocesswhenthedeviceisrecycled.
Theprocessmanagement,includingscheduling,creatingrevocation,blockingandwakinguptheprocess,therealizationoftheinterruption.WesimulatethecentralprocessingunitbythecyclingfunctionnamedCPU(),simulatetheimportantregisterbyglobalvariable,simulatetherecoveringofinterruptionbycheckingPSWinthefunctionofCPU(),simulatetheclockbythetimercontrol.Thesimulationoftheprocesscontrolblockbyarray,whosenumberisupto10.Whentheschedulingoftheprocesshappens,weusethealgorithmoftimepiecerotationscheduling,andthetimepieceis5.
Keywords:
storagedeviceprocesstime
一引言
1.1性质
操作系统是计算机科学与技术专业的主要专业基础课和主干课。
操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。
本课程使学生掌握操作系统的基本概念、基本原理、设计方法和实现技术,具有初步分析实际操作系统的能力,训练分析和解决实际问题能力,为其今后在相关领域开展工作打下坚实的基础。
1.2教学目的
本科程通过模拟操作系统原理的实现,应使学生加深对操作系统工作原理和操作系统实现方法的理解,系统科学地受到分析问题和解决问题的训练,提高运用理论知识解决实际问题的能力。
为学生从事科学研究和独立负担计算机及其应用方面的工作打好扎实的基础。
1.3任务和要求
此系统为基于时间片轮转调度算法的进程管理系统,主要实现存储管理,设备管理和进程管理。
存储管理部分主要实现主存空间的分配和回收、存储保护。
设备管理主要包括设备的分配和回收。
进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。
1.4意义
通过本模拟系统的设计,可以加深学生对操作系统的原理的理解,明白操作系统的各项功能的具体实现和具体操作,提高学生的动手能力。
1.5论文结构安排
第二章为系统分析与设计,写出系统要求,分析出包含哪些功能模块、每个模块的计划采用的实现方法和原理。
第三章为系统实现,写出主要模块的实现,包括全局变量说明和主要功能的实现流程。
第四章为结束语,总结课程设计的体会。
二系统分析与设计
2.1.存储管理的要求
存储管理部分主要实现主存空间的分配和回收、存储保护。
模拟系统中,内存部分分为两部分,一部分是系统区,这里只存放进程控制块,一部分是用户区,这里主要是对用户区的管理。
系统区包括pcb区域、主存空间分配表。
存储管理采用可移动的可变分区存储管理方式。
采用数组来模拟主存的用户区,每个数组元素占用一个字节。
实验中主存大小为512个字节
2.2设备管理的要求
设备管理主要包括设备的分配和回收。
模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。
设备分配时,采用先来先服务策略。
回收设备后,要注意唤醒等待设备的进程。
2.3进程管理的要求
进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。
2.3.1进程控制块
进程控制块内容包括进程标识符、主要寄存器内容、进程状态、阻塞原因等等。
本模拟系统最多容纳10个进程块。
pcb区域用数组模拟。
进程控制块根据内容的不同组成不同的队列,空白进程控制块链、就绪队列和阻塞队列,正在运行的进程只有一个,系统初始时只有空白进程控制块链。
2.3.2进程调度
采用时间片轮转调度算法,时间片为5。
进程调度函数的主要工作是:
第一步,将正在运行的进程保存在该进程对应进程控制块中;
第二步,从就绪队列中选择一个进程;
第三步,将这个进程中进程控制块中记录的各寄存器内容恢复到CPU各个寄存器内。
2.3.3进程创建
进程创建creat的主要工作是:
第一步,申请空白进程控制块;
第二步,申请主存空间,申请成功,装入主存;
第三步,初始化进程控制块;
第四步,将进程链入就绪队列,根据情况决定是否转向进程调度。
2.3.4进程撤销
进程撤销destory的主要工作是:
第一步,回收进程所占内存资源;
第二步,回收进程控制块;
第三步,在屏幕上显示进程执行结果,进程撤销
2.3.5进程阻塞
进程阻塞block的主要工作是:
第一步,保存运行进程的CPU现场;
第二步,修改进程状态;
第三步,将进程链入对应的阻塞队列,然后转向进程调度。
2.3.6进程的唤醒
进程唤醒的主要工作是
第一步,将进程由阻塞队列中摘下;
第二步,修改进程状态为就绪;
第三步,链入就绪队列,根据情况决定是否转向进程调度。
2.3.7硬件工作的模拟
硬件工作的模拟包括中央处理器的模拟、主要寄存器的模拟、中断的模拟和时钟的模拟四方面。
①中央处理器的模拟。
用函数CPU()(该函数不能有参数)模拟中央处理器。
该函数主要负责解释“可执行文件”中的命令。
如:
给x赋值x=?
;x自加x++;x自减x--;申请设备和时间!
?
?
;程序结束end;
CPU只能解释指令寄存器IR中的指令。
一个进程的运行时要根据进程执行的位置,将对应的指令存放到指令寄存器中。
②主要寄存器的模拟用全局变量模拟重要寄存器,如cpu重要寄存器,程序状态寄存器PSW、指令寄存器IR,程序计数器PC,数据缓冲寄存器DR等。
③中断的模拟。
中断的发现应该是硬件的工作,这里在函数CPU中加检测PSW的方式来模拟。
在CPU()函数中,每执行一条指令之前,先检查PSW,判断有无中断,若有进行中断处理,然后再运行解释指令。
CPU函数应该不断循环执行的。
模拟中断的种类有如下几种:
程序结束、时间片到、I/O中断。
程序结束(执行指令end形成的中断,软中断):
将结果写入文件out,其中包括文件路径名和x的值,调用进程撤销原语撤销进程,然后进行进程调度;I/O中断(设备完成输入输出):
将输入输出完成的进程唤醒,将等待该设备的一个进程同时唤醒。
时钟中断:
进程时间片用完,转为就绪,重新进程调度。
④时钟的模拟。
系统中的绝对时钟和相对时钟用全局变量模拟。
系统时钟用来记录开机以后的时间。
这里的系统时钟并不是计算机的真正的时钟,这里所说的时间只是一个单位,例如使用vb中的时钟控件实现,每触发一次timer事件,绝对时钟增1,表示增加一个时间单位,绝对时钟减1。
三系统实现
3.1全局变量
系统代码中定义了一些全局变量
publicstructPCB
{
publicintProcessID;//进程块的编号(0-9)
publicstringProcessName;//使用该进程块的进程名
publicintPageAdress;//页表的首地址
publicintSum;//页表的长度
publicintPC;//各个寄存器的状态
publicstringIR;
publicintDR;
publicInterruptPSW;
publicintPri;//优先级
publicintWaitTime;//要使用设备多长时间
publicintGetDeviceTime;//获得设备的时间
publicintExecuteTime;//开始执行的时间
publicDeviceTypeNeedDevice;//申请失败的设备类型
publicDeviceTypeHaveDevice;//正在使用的设备类型
publicintDN;//使用的是哪个设备
publicstringBlockReason;//阻塞的原因
publicintNext;
}
classCPU
{
publicintPC;
publicintDR;
publicstringIR;
publicInterruptPSW;
publicInterruptPSW1;
publicPCB[]PCBArray=newPCB[10];
publicDateTimeXTTime;
publicintXDTime;
publicintWhite;
publicintReady;
publicintBlock;
publicintExecute;
privateDeviceTypetype;
privateinttime;
publicOS.ClassFolder.MainRamram=newMainRam();
publicOS.ClassFolder.DeviceDev=newDevice();
3.2内存分配
可变分区方式的内存分配流程如图3-1所示。
图3-1可变分区最优分配算法流程图
3.3内存回收
归还内存区域的流程如图3-3所示。
内存回收后颜色恢复。
如图3-4所示。
图3-4内存回收后的界面显示
3.4创建进程
当执行可执行文件时,把指令传过来,调用creat函数。
//Creat函数,创建进程
//
publicvoidCreat(stringName,stringstr)
{
//
//申请PCB,a>10,则申请失败
//
inta=GetOneFromWhite();
intb;
if(str.Length>0)
{
intsum=(str.Length+15)/16;
if(a<10)
{
if(ram.Judge(sum)==true)
{
//
//分配内存并加载到内存
//
b=ram.Allocate(sum);
ram.LoadContent(str,b);
//
//初始化PCB
//
PCBArray[a].ProcessName=Name;
PCBArray[a].PageAdress=b;
PCBArray[a].Sum=sum;
PCBArray[a].PC=0;
PCBArray[a].IR="";
PCBArray[a].DR=0;
PCBArray[a].PSW=Interrupt.No;
PCBArray[a].WaitTime=-10;
PCBArray[a].Pri=1024/str.Length;
PCBArray[a].ExecuteTime=0;
PCBArray[a].NeedDevice=DeviceType.no;
PCBArray[a].HaveDevice=DeviceType.no;
PCBArray[a].GetDeviceTime=0;
PCBArray[a].DN=-1;
PCBArray[a].BlockReason="";
InsertOneToReady(a);
//
//是否转向进程调度
//
intc=JudgeAttemper();
if(c<10)
{
Attemper(c);
}
}
else
{
InsertOneToWhite(a);
MessageBox.Show("内存不足或文件太长,创建进程失败","消息",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("PCB块不足,创建进程失败","消息",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("文件为空,不能创建进程","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
3.5撤销进程
进程结束时,即读到end指令后,传递指向当前正在运行的指针,撤销当前进程。
//Destroy函数,撤销程序
//
publicvoidDestory(inta)
{
//
//回收内存
//
intp=PCBArray[a].PageAdress;
intsum=PCBArray[a].Sum;
ram.DeAllocate(p,sum);
//
//回收PCB块
//
InsertOneToWhite(a);
Execute=10;
//
//显示结果
//
//
//
//
}
3.6进程调度
当前一进程结束时,CPU会调度就绪队列中的进程。
//判断是否需要进行进程的调度,若需要则返回进程块号(0-9),不需要则返回10
//
publicintJudgeAttemper()
{
//
//选出就绪链表中优先级最高
//
intk;
if(Ready<10)
{
intp=Ready;
inta=PCBArray[Ready].Pri;
k=Ready;//优先级最高的块号
while(PCBArray[p].Next<10)
{
if(PCBArray[PCBArray[p].Next].Pri>a)
{
a=PCBArray[PCBArray[p].Next].Pri;
k=PCBArray[p].Next;
}
p=PCBArray[p].Next;
}
}
else
{
return10;
}
//
//跟执行链表内的PCB块进行比较
//
if(Execute<10)
{
if(PCBArray[k].Pri>PCBArray[Execute].Pri)
{
returnk;
}
else
{
return10;
}
}
else
{
returnk;
}
}
//
//进程调度函数
//
publicvoidAttemper(inta)
{
//
//保护CPU现场
//
if(Execute<10)
{
PCBArray[Execute].PC=PC;
PCBArray[Execute].IR=IR;
PCBArray[Execute].DR=DR;
InsertOneToReady(Execute);
}
//
//选择一个进程,初始化CPU中的寄存器
//
GetOneFromReady(a);
Execute=a;
PC=PCBArray[a].PC;
IR=PCBArray[a].IR;
DR=PCBArray[a].DR;
}
3.7设备申请
进程的指令申请设备时,读到进程所要申请的设备,调用AppEquip函数
publicvoidAppEquip(charequipment,intr,intt)
{
inti;
for(i=0;i<6;i++)//查找所需设备
{
if(eq[i].name==equipment&&eq[i].flag==0)
{
eq[i].flag=1;
pcb[r].eq=equipment;
if(timer4.Enabled==false)
{
timer4.Enabled=true;//设备时间片开始执行
}
if(i==0)//设备区域显示~
{
ETIME[0]=t;
textBox001.Text=pcb[r].name.ToString();
textBox011.Text=ETIME[0].ToString();
}
elseif(i==1)
{
ETIME[1]=t;
textBox002.Text=pcb[r].name.ToString();
textBox012.Text=ETIME[1].ToString();
}
elseif(i==2)
{
ETIME[2]=t;
textBox003.Text=pcb[r].name.ToString();
textBox013.Text=ETIME[2].ToString();
}
elseif(i==3)
{
ETIME[3]=t;
textBox004.Text=pcb[r].name.ToString();
textBox014.Text=ETIME[3].ToString();
}
elseif(i==4)
{
ETIME[4]=t;
textBox005.Text=pcb[r].name.ToString();
textBox015.Text=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)