实验二-实验报告进程管理.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二-实验报告进程管理

实验二 模拟实现进程管理 组长:李和林 软件1402 组员分工实验目的 理解进程的概念,明确进程和程序的区别。 理解并发执行的实质。 掌握进程的创建,睡眠,撤销等进程控制方法。 实验内容 用C语言,JAVA语言,C++语言编写程序,模拟实现创建新的进程;查看运行进程,换出某个进程;杀死运行进程。 实验准备 进程的定义 进程是程序在一个数据集合上的运行过程,是系统资源分配和调度的一个独立单位。一个程序在不同的数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。 进程的状态 通常情况下,一个进程必须具有就绪,执行和阻塞三种基本情况。 就绪状态 当进程已分配到除处理器外的所有必要资源后,只要再获得处理器就可以立即执行,这时进程的状态就为就绪状态。在一个系统里,可以有多个进程同时处于就绪状态,通常把这些就绪进程排成一个或多个队列,称为就绪队列。 执行状态 处于就绪状态的进程一旦获得处理器,就可以运行,进程状态也就处于执行状态,在单处理器系统中,只能有一个进程处于执行状态,在多处理器系统中,则可能有多个进程处于执行状态 阻塞状态 正在执行的进程因为发生某些事件而暂停运行,这种受阻暂停的状态称为阻塞状态,也可称为等待状态。通常将处于阻塞状态的进程拍成一个队列,称为阻塞队列,在有些系统中,也会按阻塞原因的不同将阻塞状态的进程排成多个队列。 进程状态之间的转换 接纳 完成 中断 调度 阻塞 执行 终止 就绪 新进程 I/O请求 I/O完成 进程控制块 进程控制块的作用 进程控制块是进程实体的重要组成部分,主要包含下述四个方面的信息: 进程标示信息 说明信息 现场信息 管理信息 进程控制块的组织方式 链接方式 索引方式 进程控制原语 创建原语 撤销原语 阻塞原语 唤醒原语 程序代码 #include stdio.h #includeiostream using namespace std; void clrscr(); void create(); void run( ); void exchange( );//唤出 void kill( ); void wakeUp( );//唤醒 struct process_type{ int pid; int priority;//优先次序 int size; int state;//状态 char info[10]; }; struct process_type internalMemory[20]; int amount=0,hangUp=0,pid,flag=0;//数目,挂起 void main( ){ int n; int a; n=1; clrscr( ); while(n==1){ cout\n********************************************; cout\n* 进程演示系统 *; cout\n********************************************; cout\n 1.创建新的进程 2.查看运行进程 ; cout\n 3.换出某个进程 4.杀死运行进程 ; cout\n 5.唤醒某个进程¨ 6.退出系统 ; cout\n*********************************************endl; cout请选择 ; cina; switch(a){ case 1: create( ); break; case 2: run( ); break; case 3: exchange();//换出 break; case 4: kill(); break; case 5: wakeUp(); break; case 6: exit(0); default: n=0; } } } void create(){ //创建进程 int i=0; if (amount=20) { cout 内存已满,请先结束或换出进程; } else{ for (i=0;i20;i++) { if (internalMemory[i].state==0) { break; } } cout请输入新进程的pid: endl; cininternalMemory[ i ].pid; cout请

您可能关注的文档

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档