实验 2 进程管理c语言,实验二-实验报告(进程管理)

《实验二-实验报告(进程管理)》由会员分享,可在线阅读,更多相关《实验二-实验报告(进程管理)(14页珍藏版)》请在人人文库网上搜索。

1、实验二 模拟实现进程管理组长:李和林 软件1402组员分工一、 实验目的1. 理解进程的概念,明确进程和程序的区别。2. 理解并发执行的实质。3. 掌握进程的创建,睡眠,撤销等进程控制方法。二、 实验内容用C语言,JAVA语言,C+语言编写程序,模拟实现创建新的进程;查看运行进程,换出某个进程;杀死运行进程。三、 实验准备1. 进程的定义进程是程序在一个数据集合上的运行过程,是系统资源分配和调度的一个独立单位。一个程序在不同的数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。2. 进程的状态通常情况下,一个进程必须具有就绪,执行和阻塞三种基本情况。1) 就绪状态当进程已分配。

2、到除处理器外的所有必要资源后,只要再获得处理器就可以立即执行,这时进程的状态就为就绪状态。在一个系统里,可以有多个进程同时处于就绪状态,通常把这些就绪进程排成一个或多个队列,称为就绪队列。2) 执行状态处于就绪状态的进程一旦获得处理器,就可以运行,进程状态也就处于执行状态,在单处理器系统中,只能有一个进程处于执行状态,在多处理器系统中,则可能有多个进程处于执行状态3) 阻塞状态正在执行的进程因为发生某些事件而暂停运行,这种受阻暂停的状态称为阻塞状态,也可称为等待状态。通常将处于阻塞状态的进程拍成一个队列,称为阻塞队列,在有些系统中,也会按阻塞原因的不同将阻塞状态的进程排成多个队列。3. 进程状。

3、态之间的转换接纳完成中断调度阻塞执行终止就绪新进程I/O请求I/O完成4. 进程控制块1) 进程控制块的作用进程控制块是进程实体的重要组成部分,主要包含下述四个方面的信息:a) 进程标示信息b) 说明信息c) 现场信息d) 管理信息5. 进程控制块的组织方式1) 链接方式2) 索引方式6. 进程控制原语1) 创建原语2) 撤销原语3) 阻塞原语4) 唤醒原语7. 程序代码#include #includeusing namespace std;void clrscr();void create();void run( );void exchange( );/唤出void kill( );voi。

4、d wakeUp( );/唤醒struct process_typeint pid;int priority;/优先次序int size;int state;/状态char info10;struct process_type internalMemory20;int amount=0,hangUp=0,pid,flag=0;/数目,挂起 void main( )int n;int a;n=1;clrscr( );while(n=1)couta;switch(a)case 1:create( );break;case 2:run( );break;case 3:exchange();/换出br。

5、eak;case 4:kill();break;case 5:wakeUp();break;case 6:exit(0);default:n=0;void create() /创建进程int i=0;if (amount=20)coutinternalMemory i .pid;coutinternalMemoryamount.priority;coutinternalMemoryamount.size;coutinternalMemoryamount.info;internalMemoryi.state=1;amount+;void clrscr()/清除内存空间for (int i=0;ipid;for (int i=0;ipid;for (int i=0;ipid;for (int i=0;i20;i+)if (pid=internalMemoryi.pid)flag=0;if (internalMemoryi.state=2)internalMemoryi.state=1;hangUp-;cout已经成功唤醒进程n;else if (internalMemoryi.state=0)coutn要换醒的进程不存在n;elsecoutn要唤醒的进程已被挂起n;break;if (flag)coutn要唤醒的进程已被挂起nendl;8.实现的结果14 / 14文档可自由编辑。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验 进程管理   Windows所创建的每个进程都从调用CreateProcess() API函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用ExitProcess() 或TerminateProcess() API函数终止。通常应用程序的框架负责调用 ExitProcess() 函数。对于C++ 运行库来说,这一调用发生在应用程序的main() 函数返回之后。 1. 创建进程 CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行。表 2-1详细地列出了每个参数的类型和名称。   表2-1 CreateProcess() 函数的参数 参数名称 使用目的 LPCTSTR lpApplivationName 全部或部分地指明包括可执行代码的EXE文件的文件名 LPCTSTR lpCommandLine 向可执行文件发送的参数 LPSECURIITY_ATTRIBUTES lpProcessAttributes 返回进程句柄的安全属性。主要指明这一句柄是否应该由其他子进程所继承 LPSECURIITY_ATTRIBUTES lpThreadAttributes 返回进程的主线程的句柄的安全属性 BOOL bInheritHandle 一种标志,告诉系统允许进程继承创建进程的句柄 DWORD dwCreationFlage 特殊的创建标志 (如CREATE_SUSPENDED) 的位标记 LPVOID lpEnvironment 向进程发送的一套环境变量;如为null值则发送调用者环境 LPCTSTR lpCurrentDirectory 进程的启动目录 STARTUPINFO lpStartupInfo STARTUPINFO结构,包括进程的输入和输出配置的详情 LPPROCESS_INFORMATION lpProcessInformation 调用的结果块;发送应用程序的进程和主线程的句柄和ID   可以指定第一个参数,即应用程序的名称,其中包括相对于当前进程的当前目录的全路径或者利用搜索方法找到的路径;lpCommandLine参数允许调用者向应用程序发送数据;接下来的三个参数与进程和它的主线程以及返回的指向该对象的句柄的安全性有关。 然后是标志参数,用以在dwCreationFlags参数中指明系统应该给予进程什么行为。经常使用的标志是CREATE_SUSPNDED,告诉主线程立刻暂停。当准备好时,应该使用ResumeThread() API来启动进程。另一个常用的标志是CREATE_NEW_CONSOLE,告诉进程启动自己的控制台窗口,而不是利用父窗口。这一参数还允许设置进程的优先级,用以向系统指明,相对于系统中所有其他的活动进程来说,给此进程多少CPU时间。 接着是CreateProcess() 函数调用所需要的三个通常使用缺省值的参数。第一个参数是lpEnvironment参数,指明为进程提供的环境;第个参数是lpCurrentDirectory,可用于向主创进程发送与缺省目录不同的进程使用的特殊的当前目录;第三个参数是STARTUPINFO数据结构所必需的,用于在必要时指明应用程序的主窗口的外观。 CreateProcess() 的最后一个参数是用于进程对象及其主线程的句柄和ID的返回值缓冲区。以PROCESS_INFORMATION结构中返回的句柄调用CloseHandle() API函数是重要的,因为如果不将这些句柄关闭的话,有可能危及主创进程终止之前的任何未释放的资源。 2. 正在运行进程 如果一个进程拥有至少一个执行线程,则为正在系统中运行进程。通常,这种进程使用主线程来指示它的存在。当主线程结束时,调用ExitProcess() API函数,通知系统终止它所拥有的所有正在运行、准备运行或正在挂起的其他线程。当进程正在运行时,可以查看它的许多特性,其中少数特性也允许加以修改。 首先可查看进程特性是系统进程标识符 (PID) ,可利用GetCurrentProcessId() API函数来查看,与GetCurrentProcess() 相似,对该函数的调用不能失败,但返回的PID在整个系统中都可使用。其他的可显示当前进程信息的API函数还有GetStartupInfo()和GetProcessShutdownParameters() ,可给出进程存活期内的配置详情。 通常,一个进程需要它的运行期环境的信息。例如API函数GetModuleFileName() 和GetCommandLine() ,可以给出用在CreateProcess() 中的参数以启动应用程序。在创建应用程序时可使用的另一个

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值