进程管理.docx
- 文档编号:26327826
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:14
- 大小:963.34KB
进程管理.docx
《进程管理.docx》由会员分享,可在线阅读,更多相关《进程管理.docx(14页珍藏版)》请在冰豆网上搜索。
进程管理
操作系统
课程设计报告
设计题目:
进程管理系统的实现,包括进程的创建、调度、撤消等功能
摘要
在不同的操作系统中采用的调度方式是不同的。
本次课程设计的是一个用C#言模拟进程创建,创建的程排在就绪队列上,准备准备执行。
作业调度算法主要包括三种算法:
先来先服务优先调度算法、短作业优先调度算法和高响应比优先调度算法。
用if语句分别描述每个算法特有的条件,循环测试数组中的每个作业,来确定各个作业接受系统服务的次序,从而输出每个算法对作业处理结果
Schedulingmodeusingdifferentoperatingsystemsaredifferent.ThecourseisdesignedtosimulateaprocessusingC#tocreatewords,theprocesstocreatearowinthereadyqueue,getreadytoperform.Jobschedulingalgorithmmainlyincludesthreealgorithms:
afirst-comefirst-servepriorityschedulingalgorithm,shortoperatingpriorityschedulingalgorithmandahighresponseratiopriorityschedulingalgorithm.Withanifstatementdescribetheuniqueconditionsofeachalgorithm,thetestcycleforeachjobinthearraytodeterminethevariousoperatingsystemservicestoreceivetheorder,sothattheoutputofeachalgorithmforjobprocessingresults
关键词:
C#,进程,调度算法
目录
摘要3
1.概述2
2.课程设计任务及要求2
2.1设计任务2
2.2设计要求2
3.算法及数据结构2
3.1算法的总体思想(流程)2
3.2进程阻塞模块2
3.2.1功能2
3.2.2算法2
3.3进程的创建模块2
3.3.1功能2
3.3.2算法3
4.程序设计与实现3
4.1程序流程图3
4.2程序说明3
4.3实验结果3
5.结论3
6.参考文献。
3
7.收获、体会和建议。
3
1.概述
在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。
对于批量型作业而言,通常需要经历作业调度(又称高级调度或长程调度)和进程调度(又称低级调度或短程调度)两个过程后方能获得处理机;对于终端型作业,则通常只需经过进程调度即可获得处理机。
在较完善的操作系统中,为提高内存的利用率,往往还设置了中级调度(又称中程调度)。
对于上述的每一级调度,又都可采用不同的调度方式和调度算法。
最高优先数优先调度算法(即把处理机分配给优先数最高的进程)的基本思想是把CPU分配给就绪队列中优先数最高的进程。
采用动态优先数,即优先数在创建进程时给定一个初始值,当进程获得一次CPU后其优先数就减少1,然后把它插入就绪队列等待CPU。
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。
当在作业调度中采用该算法时,每次调度都是从后备队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。
在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。
该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
2.课程设计任务及要求
2.1设计任务
设计管理系统包括进程的创建、调度、撤消等功能;
2.2设计要求
1、在深入理解操作系统基本原理的基础上,对于选定的题目,以小组为单位,先确定设计方案;
2、设计系统的数据结构和程序结构,设计每个模块的处理流程。
要求设计合理;
3、编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果;
4、确定测试方案,选择测试用例,对系统进行测试;
5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并回答指导教师的提问;
3.算法及数据结构
3.1算法的总体思想(流程)
a.先进先出算法
if(dataGridView2[0,0].Value!
=null)
{
if(dataGridView1[0,0].Value==null&&comboBox1.Text=="先进先出模式“)
{
dataGridView1[0,0].Value=dataGridView2[0,0].Value;
dataGridView1[1,0].Value=dataGridView2[1,0].Value;
dataGridView1[2,0].Value=dataGridView2[2,0].Value;
dataGridView1[3,0].Value=dataGridView2[3,0].Value;
dataGridView2.Rows.RemoveAt(0);
timer1.Enabled=true;
b.优先数优先算法
if(dataGridView1[0,0].Value==null&&comboBox1.Text=="优先数优先模式")
{
inti,j,k,l;
j=Convert.ToInt16(dataGridView2[2,0].Value);
k=0;
for(i=1;i { l=Convert.ToInt16(dataGridView2[2,i].Value); if(l>j) { j=l; k=i; } } dataGridView1[0,0].Value=dataGridView2[0,k].Value; dataGridView1[1,0].Value=dataGridView2[1,k].Value; dataGridView1[2,0].Value=dataGridView2[2,k].Value; dataGridView1[3,0].Value=dataGridView2[3,k].Value; dataGridView2.Rows.RemoveAt(k); timer1.Enabled=true; timer1.Interval=Convert.ToInt32(dataGridView1[3,0].Value)/200; } timer1.Enabled=true; timer1.Interval=(int)dataGridView1[3,0].Value/200; } C时间片轮转调度算法 if(dataGridView1[0,0].Value==null&&comboBox1.Text=="时间片轮转模式") { dataGridView1[0,0].Value=dataGridView2[0,0].Value; dataGridView1[1,0].Value=dataGridView2[1,0].Value; dataGridView1[2,0].Value=dataGridView2[2,0].Value; dataGridView1[3,0].Value=dataGridView2[3,0].Value; dataGridView2.Rows.RemoveAt(0); if(Convert.ToInt32(dataGridView1[3,0].Value)>0) { timer2.Enabled=true; timer2.Interval=Convert.ToInt32(dataGridView1[3,0].Value)/200; } elseif(Convert.ToInt32(dataGridView1[3,0].Value)<=0) { dataGridView1.Rows.Clear(); if(dataGridView2[0,0].Value! =null) order(); } } } } 3.2进程阻塞模块 3.2.1功能 实现把就绪队列的进程阻塞。 3.2.2算法 privatevoid阻塞进程_Click(objectsender,EventArgse)//“阻塞进程”按钮作用 { if(dataGridView1[0,0].Value==null) { timer1.Enabled=false; MessageBox.Show("没有正在运行的进程! ","Warning! ",MessageBoxButtons.OK); if(dataGridView2[0,0].Value! =null) order(); } else { i3=dataGridView3.RowCount-1; dataGridView3.Rows.Add(); dataGridView3[0,i3].Value=dataGridView1[0,0].Value; dataGridView3[1,i3].Value=dataGridView1[1,0].Value; dataGridView3[2,i3].Value=dataGridView1[2,0].Value; dataGridView3[3,i3].Value=dataGridView1[3,0].Value; dataGridView1.Rows.Clear(); progressBar1.Value=0; timer1.Enabled=false; if(dataGridView2[0,0].Value! =null) {order();} } } 3.3进程的创建模块 3.3.1功能 对进程进行创建,并把创建好的进程放在就绪队列中 3.3.2算法 privatevoid创建进程_Click(objectsender,EventArgse)//“创建进程”按钮作用 { Form2a=newForm2(); if(a.ShowDialog()==DialogResult.OK) { i2=dataGridView2.RowCount-1; dataGridView2.Rows.Add(); dataGridView2[0,i2].Value=a.textBox1.Text; dataGridView2[1,i2].Value=(string)a.textBox2.Text; dataGridView2[2,i2].Value=a.textBox3.Text; dataGridView2[3,i2].Value=a.textBox4.Text; count1=count1+1; } order(); } publicForm2() { InitializeComponent(); } publicintbiao; publicstringname; publicintyou; publicintshi; privatevoidbutton2_Click(objectsender,EventArgse) { textBox1.Text=""; textBox2.Text=""; textBox3.Text=""; textBox4.Text=""; textBox1.Focus(); } privatevoidbutton1_Click(objectsender,EventArgse) { biao=Convert.ToInt32(textBox1.Text); name=textBox2.Text; you=Convert.ToInt32(textBox3.Text); shi=Convert.ToInt32(textBox4.Text); } 4.程序设计与实现 4.1程序流程图 4.2程序说明 进入程序主界面后点击创建进程输入标志数、进程名、优先数和时间片段就可以创建一个就绪进程,创建多个进程后可以有3种模式的调度算法(先进先出模式、优先数优先模式和时间片轮转模式)选择,点击阻塞进程能把就绪队列中进程阻塞,撤销进程则把阻塞队列中的进程给撤销了。 4.3实验结果 主界面 创建进程 进程调度 进程阻塞 5.结论 进程管理系统的实现,包括进程的创建、调度、撤消等功能。 6.参考文献。 1、汤子瀛,计算机操作系统,西安电子科技大学出版社,修订版 2、张丽芬,操作系统实验教程,清华大学出版社,第一版 3、邹鹏编著,操作系统原理与实践,高等教育出版社,2008年9月版 4、张尧学编著.计算机操作系统教程习题解答与实验指导.北京: 清华大学出版社.2000. 7.收获、体会和建议。 通过本次实验,我们理解了在操作系统中,进程的整个生命周期工作原理,加深了我们对进程管理的印象,同时加强了实践能力。 其中也有许多不足,如刚开始没有头绪,对进程理解不够透彻,导致大家在网上盲找资料,耽误了不少时间,但后来及时改正,按照设计报告一步步实现。 通过这次试验,我们受益良多!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 管理