资源简介

假定系统有五个进程,每一个进程用一个进程控制块PCB来代表;进程控制块如包含:进程名、指针、要求运行时间、优先数、状态等。 在每次运行所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间” 在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。 为五个进程任意确定一组“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程

资源截图

代码片段和文件信息

#include “stdafx.h“

#include “ProcessDlg.h“



extern enum State;

extern CListCtrl m_ProcessShow;
extern void Display( PCB* pcb );

//void Process::Run()
//{
// if (m_PCB.PState = Terminated)
// {
// return;
// }
// m_PCB.RequestTime--;
// if (m_PCB.RequestTime <= 0)
// {
// m_PCB.PState = Terminated;
// }
//}
//
//void Process::Wait()
//{
// m_PCB.Priority++;
//}
//


//void Process::SetTime( int time )
//{
// m_PCB.RequestTime = time;
//}
//
//void Process::SetPriority( int priority )
//{
// m_PCB.Priority = priority;
//}
//
//void Process::SetState( State state )
//{
// m_PCB.PState = state;
//}
//
//void Process::SetName( CString strName )
//{
// m_PCB.PName = strName;
//}
//
//void Process::SetID( int id )
//{
// m_PCB.PID = id;
//}
//
//PCB& Process::GetPCB()
//{
// return m_PCB;
//}

DWORD WINAPI ProcessSimulate( LPVOID lParam )
{
CProcessDlg* MyProcess = (CProcessDlg*) lParam;
ASSERT(MyProcess != NULL);
//HANDLE hProcessFalse = NULL;
//HANDLE hProcessTrue = NULL;
//HANDLE hThreadFalse = NULL;
//HANDLE hThreadTrue = NULL;
//hProcessFalse = GetCurrentProcess();
//hThreadFalse = GetCurrentThread();
//DuplicateHandle( hProcessFalse hThreadFalse hProcessFalse &hThreadTrue 0 FALSE DUPLICATE_SAME_ACCESS );

PCB* m_PCB = MyProcess->m_ProcessSchedule.GetPCB(MyProcess->m_ProcessSchedule.currentrun);


while(m_PCB->RequestTime >= 0)
{

m_PCB->RequestTime--;
if (m_PCB->RequestTime <= 0)
{
m_PCB->PState = Terminated;
return 0;
}
SuspendThread(MyProcess->m_ProcessSchedule.currentrun);
}

return 0;
}

bool ProcessSchedule::Step()
{
PCB* pcb = GetPCBHead();
int runPID;
runPID = SortProcess();
Display(pcb);
Sleep(100);
if (runPID == -1)
{
return false;
}

runID = runPID;

HANDLE handle = GetPCB(runPID)->pHandle;

currentrun = handle;
// ResumeThread(handle);

CreateThread(NULL0(LPTHREAD_START_ROUTINE)Waitthis0NULL);
// Wait(runPID);
Display(pcb);

return true;
}

int ProcessSchedule::SortProcess()
{
int i = -1 j = -1;
PCB* pcb = PCBHead;
while(pcb != NULL)

if (i<(pcb->Priority))
{
if (pcb->PState == Terminated)
{
pcb = pcb->next;
continue;
}
i = pcb->Priority;
if (pcb->RequestTime == 0)
{
continue;
}
j = pcb->PID;
}
if (GetPCB(j)->RequestTime == 0)
{
return -1;
}
if (pcb->RequestTime != 0)
{
pcb->PState =Ready;
}
else
{
pcb->PState = Terminated;
}
pcb = pcb->next;
}
MaxPriority = i;


return j;
}


int ProcessSchedule::GetLenth()
{
return iLenth;
}

PCB* ProcessSchedule::GetPCB( int pid )
{
PCB * pcb = PCBHead;
for (int i = pid;i>0;i--)
{
pcb = pcb->next;
}
return pcb;
}

PCB* ProcessSchedule::GetPCB( HANDLE handle )
{
PCB * pcb = PCBHead;
while(pcb != NULL)
{
if (handle == pcb->pHandle)
{
break;
}
pcb = 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     136192  2010-04-20 23:37  进程管理大作业\doc\设计方案报告.doc

     文件      48128  2010-04-20 23:35  进程管理大作业\exe\ProcessScheduleSimulator.exe

     文件       4531  2010-04-20 23:26  进程管理大作业\src\ProcessScheduleSimulator\MyProcess.cpp

     文件       1846  2010-04-20 23:07  进程管理大作业\src\ProcessScheduleSimulator\MyProcess.h

     文件       6516  2010-04-20 23:07  进程管理大作业\src\ProcessScheduleSimulator\ProcessDlg.cpp

     文件       1149  2010-04-20 22:34  进程管理大作业\src\ProcessScheduleSimulator\ProcessDlg.h

     文件      59800  2010-04-20 22:26  进程管理大作业\src\ProcessScheduleSimulator\ProcessScheduleSimulator.aps

     文件       1694  2010-04-19 01:13  进程管理大作业\src\ProcessScheduleSimulator\ProcessScheduleSimulator.cpp

     文件        481  2010-04-19 01:13  进程管理大作业\src\ProcessScheduleSimulator\ProcessScheduleSimulator.h

     文件       6056  2010-04-20 22:26  进程管理大作业\src\ProcessScheduleSimulator\ProcessScheduleSimulator.rc

     文件       5746  2010-04-20 22:51  进程管理大作业\src\ProcessScheduleSimulator\ProcessScheduleSimulator.vcproj

     文件       1413  2010-04-20 16:06  进程管理大作业\src\ProcessScheduleSimulator\ProcessScheduleSimulator.vcproj.416-0040.user.user

     文件       1427  2010-04-20 23:36  进程管理大作业\src\ProcessScheduleSimulator\ProcessScheduleSimulator.vcproj.ZSP-64042843A6F.zsp.user

     文件       2984  2010-04-19 01:13  进程管理大作业\src\ProcessScheduleSimulator\ReadMe.txt

     文件      21630  2003-07-24 09:52  进程管理大作业\src\ProcessScheduleSimulator\res\ProcessScheduleSimulator.ico

     文件        380  2010-04-19 01:13  进程管理大作业\src\ProcessScheduleSimulator\res\ProcessScheduleSimulator.rc2

     文件       1068  2010-04-20 22:26  进程管理大作业\src\ProcessScheduleSimulator\resource.h

     文件        155  2010-04-19 01:13  进程管理大作业\src\ProcessScheduleSimulator\stdafx.cpp

     文件       1796  2010-04-19 01:13  进程管理大作业\src\ProcessScheduleSimulator\stdafx.h

     文件       1030  2010-04-19 01:13  进程管理大作业\src\ProcessScheduleSimulator\targetver.h

     文件        938  2010-04-19 01:13  进程管理大作业\src\ProcessScheduleSimulator.sln

     文件      23552  2010-04-20 23:36  进程管理大作业\src\ProcessScheduleSimulator.suo

     目录          0  2012-10-29 18:00  进程管理大作业\src\ProcessScheduleSimulator\res

     目录          0  2012-10-29 18:00  进程管理大作业\src\ProcessScheduleSimulator

     目录          0  2013-03-24 21:26  进程管理大作业\doc

     目录          0  2012-10-29 18:00  进程管理大作业\exe

     目录          0  2012-10-29 18:00  进程管理大作业\src

     目录          0  2012-10-29 18:00  进程管理大作业

----------- ---------  ---------- -----  ----

               328512                    28

............此处省略1个文件信息

评论

共有 条评论