处理机调度算法的实现

上传人:第*** 文档编号:33605287 上传时间:2018-02-16 格式:DOC 页数:14 大小:504.55KB
返回 下载 相关 举报
处理机调度算法的实现_第1页
第1页 / 共14页
处理机调度算法的实现_第2页
第2页 / 共14页
处理机调度算法的实现_第3页
第3页 / 共14页
处理机调度算法的实现_第4页
第4页 / 共14页
处理机调度算法的实现_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《处理机调度算法的实现》由会员分享,可在线阅读,更多相关《处理机调度算法的实现(14页珍藏版)》请在金锄头文库上搜索。

1、第 1 页 共 13 页实验报告学院(系)名称:计算机与通信工程学院姓名 学号 专业班级 实验项目 实验一:处理机调度算法的实现课程名称 操作系统 课程代码 0668036实验时间2011 年 10 月 25 日 2011 年 10 月 28 日 2011 年 11 月 01 日 实验地点 软件实验室 7-215批改意见 成绩教师签字: 【实验环境】Windows 操作系统环境下的个人微机【实验目的】通过编写程序实现进程高优先权优先调度算法,使学生进一步掌握进程调度的概念和算法,加深对处理机分配的理解。【实验要求】1 详细描述实验设计思想、程序结构及各模块设计思路;2 详细描述程序所用数据结构

2、及算法;3 明确给出测试用例和实验结果;4 为增加程序可读性,在程序中进行适当注释说明;5 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6 实验报告撰写要求结构清晰、描述准确逻辑性强;7 实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。【实验内容】1 设定系统中有五个进程,每一个进程用一个进程控制块表示。2 输入每个进程的“优先数”和“要求运行时间” 。3 为了调度方便,将五个进程按给定的优先数从大到小连成就绪队列。用一单元指出队列首进程,用指针指出队列的连接情况。4 处理机调度总是选队首进程运行。采用动态优先数算法,进程每运行一次优先数就减“1” ,同时将运行时间减

3、“1” 。5 若某进程运行时间为零,则将其状态置为“结束”,且退出队列。6 运行所设计程序,显示或打印逐次被选中进程的进程名,以及进程控制块的动态变化过程。第 2 页 共 13 页【实验步骤、过程】1、程序流程图2、程序代码/ Deal_ProcessDlg.cpp : implementation file/#include stdafx.h#include Deal_Process.h#include Deal_ProcessDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FIL

4、E_;#endif/ CAboutDlg dialog used for App About第 3 页 共 13 页#define N 5/定义进程控制块typedef struct PCBint num;int prior;int request_time;char state;PCB;/定义全局变量PCB *pcb=new PCB5;int count=0,_count=0;class CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;

5、/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA

6、_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)第 4 页 共 13 页/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDeal_ProcessDlg dialogCDeal_Pro

7、cessDlg:CDeal_ProcessDlg(CWnd* pParent /*=NULL*/): CDialog(CDeal_ProcessDlg:IDD, pParent)/AFX_DATA_INIT(CDeal_ProcessDlg)m_count1 = _T();m_prior1 = 0;m_count2 = _T();m_request_time1 = 0;m_prior2 = _T();m_request_time2 = _T();/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIco

8、n in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CDeal_ProcessDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CDeal_ProcessDlg)DDX_Control(pDX, IDC_Start, m_Start);DDX_Control(pDX, IDC_Confirm, m_Confirm);DDX_Control(pDX, IDC_Request_Time1, m_Edit2);DDX_Co

9、ntrol(pDX, IDC_Prior1, m_Edit1);DDX_Control(pDX, IDC_LIST_F, m_list_f);DDX_Control(pDX, IDC_LIST_W, m_list_w);DDX_Text(pDX, IDC_Count1, m_count1);DDX_Text(pDX, IDC_Prior1, m_prior1);DDX_Text(pDX, IDC_Count2, m_count2);DDX_Text(pDX, IDC_Request_Time1, m_request_time1);DDV_MinMaxInt(pDX, m_request_tim

10、e1, 0, 100);DDX_Text(pDX, IDC_Prior2, m_prior2);DDX_Text(pDX, IDC_Request_Time2, m_request_time2);/AFX_DATA_MAP第 5 页 共 13 页BEGIN_MESSAGE_MAP(CDeal_ProcessDlg, CDialog)/AFX_MSG_MAP(CDeal_ProcessDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_Confirm, OnConfirm)ON_BN_CLICKED(

11、IDC_Start, OnStart)ON_BN_CLICKED(IDC_Exit, OnExit)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CDeal_ProcessDlg message handlersBOOL CDeal_ProcessDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX ASSERT(IDM_ABOUTBO

12、X AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small icon/ TODO: Add ext

13、ra initialization here第 6 页 共 13 页/添加自己的代码m_Edit1.ShowWindow(SW_SHOW);m_Edit2.ShowWindow(SW_SHOW);m_Confirm.ShowWindow(SW_SHOW);m_Start.ShowWindow(SW_SHOW);UpdateWindow();/提示用户进行初始化m_count1.Format(%d,1);UpdateData(false);/首先设定列表控件风格可以整行选中,并具有作业线DWORD style=m_list_w.GetExtendedStyle();m_list_w.SetExt

14、endedStyle(style|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);DWORD style_1=m_list_f.GetExtendedStyle();m_list_f.SetExtendedStyle(style_1|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);/以下为插入几个列的列标题CRect rect;m_list_w.GetClientRect(int nColInterval=rect.Width()/7;m_list_w.InsertColumn(0,进程编号,LVCFMT_LEFT,nColInter

15、val*2);m_list_w.InsertColumn(1,优先数,LVCFMT_LEFT,nColInterval*2);m_list_w.InsertColumn(2,要求运行时间,LVCFMT_LEFT,nColInterval*2);m_list_w.InsertColumn(3,状态,LVCFMT_LEFT,rect.Width()-nColInterval*6);m_list_f.InsertColumn(0,进程编号,LVCFMT_LEFT,nColInterval*2);m_list_f.InsertColumn(1,优先数,LVCFMT_LEFT,nColInterval*2);m_list_f.InsertColumn(2,要求运行时间,LVCFMT_LEFT,nColInterva

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号