您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 计算机操作系统实验-进程与并发执行
重庆交通大学综合性设计性实验报告班级:计科专业2007级(1)班姓名:实验项目名称:模拟进程并发执行实验项目性质:操作系统多任务实验所属课程:计算机操作系统实验室(中心):语音大楼8楼801指导教师:实验完成时间:2010年5月3日一、实验目的1、通过实验来模拟进程的并发执行,来深入了解什么事操作系统的进程,以及进程有些什么特性。2、了解进程间是如何做到并发执行的,进程间是如何做到资源共享的。以及验证进程在运行过程中的进度是随机的,不可控制的。3、通过实验来了解进程的三种状态以及状态间的转换。二、实验内容及要求做一个能够能直观地体现多个进程的并发执行和多个进程实现资源共享的可执行程序,且进程的初始状态和进度都是随机的,不可控制的。三、实验设备PC机1台、VisualStdio2008开发环境四、设计方案㈠设计主要思想(1)、要模拟多线程并发,则首先需要可视化地体现进程的运行,这样我们才能看到效果,所以可以通过柱状条的长度表示进程的运行。而要实现多进程并发,则表示需要多个进程同时存在,所以需要在实验中至少定义两个以上的进程,我想在实验中定义3个进程并发执行。但是3个进程的属性和调度方法都是相同的,则可以通过一个进程类来实现进程对象。(2)、进程的启动时进程的速度是随机的,要模拟这样一个效果,则随要用一个随机数对象来产生一个随机的数来定义进程速度的位置。而且进程的进度也是随机的,也需要一个随机数来实现。教师评阅意见:签名:年月日实验成绩:㈡设计的主要步骤在VisualStdio2008中建立一个Windows桌面应用程序,然后向自动生成的Form中拖入3个Pa能够达到实验的要求效果,程序启动后,进程的运行位置是随机的,每一个进程的运行进度也是随机的,速度可快可慢。而且能够达到系统资源共享的效果,但其中一个或几个进程停止执行时,其它的进程的执行速度会加快。五、主要代码进程管理类的代码如下://Process.cpp:Definestheclassbehaviorsfortheapplication.//#includestdafx.h#includeProcess.h#includeProcessDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CProcessAppBEGIN_MESSAGE_MAP(CProcessApp,CWinApp)//{{AFX_MSG_MAP(CProcessApp)//NOTE-theClassWizardwilladdandremovemappingmacroshere.//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!//}}AFX_MSGON_COMMAND(ID_HELP,CWinApp::OnHelp)END_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CProcessAppconstructionCProcessApp::CProcessApp(){//TODO:addconstructioncodehere,//PlaceallsignificantinitializationinInitInstance}///////////////////////////////////////////////////////////////////////////////TheoneandonlyCProcessAppobjectCProcessApptheApp;///////////////////////////////////////////////////////////////////////////////CProcessAppinitializationBOOLCProcessApp::InitInstance(){AfxEnableControlContainer();//Standardinitialization//Ifyouarenotusingthesefeaturesandwishtoreducethesize//ofyourfinalexecutable,youshouldremovefromthefollowing//thespecificinitializationroutinesyoudonotneed.#ifdef_AFXDLLEnable3dControls();//CallthiswhenusingMFCinasharedDLL#elseEnable3dControlsStatic();//CallthiswhenlinkingtoMFCstatically#endifCProcessDlgdlg;m_pMainWnd=&dlg;intnResponse=dlg.DoModal();if(nResponse==IDOK){//TODO:Placecodeheretohandlewhenthedialogis//dismissedwithOK}elseif(nResponse==IDCANCEL){//TODO:Placecodeheretohandlewhenthedialogis//dismissedwithCancel}//Sincethedialoghasbeenclosed,returnFALSEsothatweexitthe//application,ratherthanstarttheapplication'smessagepump.returnFALSE;}主题框架类控制代码如下://ProcessDlg.cpp:implementationfile//#includestdafx.h#includeProcess.h#includeProcessDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public:CAboutDlg();//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//Nomessagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CProcessDlgdialogCProcessDlg::CProcessDlg(CWnd*pParent/*=NULL*/):CDialog(CProcessDlg::IDD,pParent){//{{AFX_DATA_INIT(CProcessDlg)//NOTE:theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);m_b1=FALSE;m_b2=FALSE;m_b3=FALSE;}voidCProcessDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CProcessDlg)DDX_Control(pDX,IDC_PROGRESS3,m_prop3);DDX_Control(pDX,IDC_PROGRESS2,m_prop2);DDX_Control(pDX,IDC_PROGRESS1,m_prop1);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CProcessDlg,CDialog)//{{AFX_MSG_MAP(CProcessDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1,OnButton1)ON_BN_CLICKED(IDC_BUTTON2,OnButton2)ON_BN_CLICKED(IDC_BUTTON3,OnButton3)ON_BN_CLICKED(IDC_BUTTON4,OnButton4)ON_BN_CLICKED(IDC_BUTTON5,OnButton5)ON_BN_CLICKED(IDC_BUTTON6,OnButton6)ON_WM_TIMER()//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CProcessDlgmessagehandlersBOOLCProcessDlg::OnInitDialog(){CDialog::OnInitDialog();//AddAbout...menuitemtosystemmenu.//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if(!strAboutMenu.IsEmpty()){pSysMenu-AppendMenu(MF_SEPAR
本文标题:计算机操作系统实验-进程与并发执行
链接地址:https://www.777doc.com/doc-5263255 .html