计算机操作系统实用教程教学课件作者王旭启8

上传人:w****i 文档编号:102917264 上传时间:2019-10-05 格式:PPT 页数:134 大小:1.61MB
返回 下载 相关 举报
计算机操作系统实用教程教学课件作者王旭启8_第1页
第1页 / 共134页
计算机操作系统实用教程教学课件作者王旭启8_第2页
第2页 / 共134页
计算机操作系统实用教程教学课件作者王旭启8_第3页
第3页 / 共134页
计算机操作系统实用教程教学课件作者王旭启8_第4页
第4页 / 共134页
计算机操作系统实用教程教学课件作者王旭启8_第5页
第5页 / 共134页
点击查看更多>>
资源描述

《计算机操作系统实用教程教学课件作者王旭启8》由会员分享,可在线阅读,更多相关《计算机操作系统实用教程教学课件作者王旭启8(134页珍藏版)》请在金锄头文库上搜索。

1、第8章操作系统实验及课程设计,8.1进程调度 8.2进程通信 8.3存储器管理 8.4磁盘调度 8.5文件管理 8.6进程同步之经典问题 8.7Linux操作系统的使用实验 8.8课程设计1-生产者和消费者问题 8.9课程设计2-银行家算法,8.1进程调度,8.1.1 实验目的和要求 用高级语言编写和调试进程调度的模拟程序,以加深对进程调度算法的理解。 实验要求如下: (1)上机前做好充分准备,先做方案设计,并预先做一些情况分析。 (2)方案设计、程序编写和上机调试要求独立完成。 (3)仔细观察并记录上机时出现的各种现象,记录并详细分析运行的结果。,下一页 返回,8.1进程调度,(4)认真书写

2、综合实验报告。报告内容中主要包括实验目的与意义、问题模型描述、方案设计、算法描述及框图、开发编程环境说明、调试记录及其分析、程序清单(源代码要带注释)、运行记录及其分析、实验总结、程序的不足之处及修改预案等几个部分。 (5)实验报告要求条理清晰,层次分明,图文并茂,要符合科技文献的一般要求。 8.1.2 实验内容 (1)自定义进程相关的数据结构。 (2)利用MFC类库中的栈,链表、向量等模板模拟进程控制块队列、进程控制块优先级队列、统计信息链表及其指令集合。,上一页 下一页 返回,8.1进程调度,(3)利用MSDN和MFC API编程实现常见的进程控制和调度策略(先来先服务算法、时间片轮转算法

3、、最高优先权优先调度算法、最短进程优先调度算法)。 (4)测试以上进程调度策略的周转时间、带权周转时间、平均周转时间和平均带权周转时间,并定性评价它们的性能。 8.1.3预备知识 1信号相关的系统调用 (1) Set Console Ctrl Handler:定义或取消本进程的信号处理例程列表中的用户定义例程。 (2) Generate Console Ctrl Event:发送信号到与本进程共享同一控制台的控制台进程组。,上一页 下一页 返回,8.1进程调度,2临界区有关的系统调用 ( l)InitializeCriticalSection:初始化临界区对象。 (2) EnterCritic

4、alSection:等待占用临界区的使用权。 (3) TryEnterCriticalSection:非等待方式申请临界区的使用权。 (4) LeaveCriticalSection:释放临界区的使用权。 (5) DeleteCriticalSection:释放与临界区对象相关的所有系统资源。 3线程相关的系统调用 (1) CreateThread:创建一个线程内核对象,线程执行指定的ThreadProc例程。,上一页 下一页 返回,8.1进程调度,(2) ThreadProc:线程执行例程。 (3) ExitThread:终止线程的运行,同时操作系统清除该线程使用的所有操作系统资源。 (4)

5、 TerminateThread:撤消任何线程,线程的内核对象的使用计数也递减,但系统不撤消该线程的堆栈。 线程函数返回是确保所有线程资源被正确地清除的唯一办法。 以上的系统调用详细资料参考MSDN网站或光盘。 4进程调度常用算法 进程调度常用算法的相关知识参考前文。,上一页 下一页 返回,8.1进程调度,5相关概念 MFC栈(queue)、链表(list)、向量(vector)的相关知识参考MSDN网站或光盘 8.1.4实验指导 1进程相关的数据结构 /进程状态 enum PROCSTATUS Ready, 就绪 Block, 阻塞 Run, 运行 );,上一页 下一页 返回,8.1进程调度

6、,进程优先级 enum PROCPRIORITY Low, 低 LowStandard, 低于标准 Standard, 标准 HighStandard, 高于标准 High, 高 RealTime, 实时 ); 调度算法 enum SCHEDULEALGORITHM,上一页 下一页 返回,8.1进程调度, FCFS, 先来先服务 SPF, 短进程优先 FPF_Reaved, 抢占式高优先级 TimePiece, 时间片轮转 ); 进程标识符 struct PROCID ,上一页 下一页 返回,8.1进程调度,int nInID; 内部标识符 int nOutID; 外部标识符 ); 处理机状态

7、 struct PROCESSORSTATUS int nIP; 指令指针 );,上一页 下一页 返回,8.1进程调度,进程调度信息 struct PROCSCHINFO PROCSTATUS status Proc; 进程状态 PR()CPRI()RITY proc Priority; 进程优先级 ; 进程控制信息 struct PROCCONINFO PCB *pNextPCB; 下- PCB,上一页 下一页 返回,8.1进程调度,程序 struct PROGRAM int nProgl.en; 程序大小 int nIP; 指令指针 SYSTEMTIME timeSystem; 程序请求运

8、行时间 INSTRUCTI()NSET instructionSet; 指令集合 ;,上一页 下一页 返回,8.1进程调度,统计信息 struct STATINFO int nRequestTime; 进程请求运行时间 int nGetCPUTime; 系统为之提供服务时间 ); 进程控制块 struct PCB ,上一页 下一页 返回,8.1进程调度,STATINFO infoStat; 统计信息 PROCID idProc; 进程标识符 PROGRAM program; 该进程对应的程序 PROCESSORSTATUS statusProcessor; 处理机状态 PR()CSCHINF(

9、) infoProcSch; 进程调度信息 PROCCONINFO infoProcCon; 进程控制信息 ,上一页 下一页 返回,8.1进程调度,统计信息:程序长度 struct STATINFO PROGLEN int nProgLen; 程序长度 int nProcID; 进程ID int nPeriod; 周转时间 int nWeightPeriod; 带权周转时间 bool operator STATINFO_PROGLEN infoStat) return nProgLen infoStat. nProgLen;,上一页 下一页 返回,8.1进程调度,统计信息:进程优先级 stru

10、ct STATINFO PRIORITY PR()CPRI()RITY procPriority; 进程优先级 int nProcID; 进程ID int nPeriod; 周转时间 int nWeightPeriod;带权周转时间 bool operator STATINFO_PRIORITY infoStat) return procPriorityinfoStat. procPriority; ) );,上一页 下一页 返回,8.1进程调度,2进程调度算法和性能测试程序的主要模块 DWORD WINAPI GetRandProc (LPVOID lpParam); 产生随机进程并插入就绪

11、队列 void Schedule_FCFS();FCFS调度 void Schedule_SPF(); 短作业优先 void Schedule_FPF_Reaved ( ); 高优先权调度 void Schedule_TimePiece(); 时间片调度 void Schedule(); 调度程序 BOOL RunProc(PCB*pPcb); 运行进程 void Exit(); 退出系统 void PressAnyKey(); 按任意键继续,上一页 下一页 返回,8.1进程调度,void CoolBeep( UINT uiCbSort); 蜂鸣声 void Reset(SCHEDULEALG

12、ORITHM algo);重新设置初值 void PrintPriority( PROCPRIORITY p); 以文字方式打印优先级 BOOL CtrlHandler(DWORD dwCtrlType); 处理控制台事件 void Clean(); 事后清理 void PrintAlgorithm(SCHEDULEALGORITHM algo);打印算法 打印统计信息:程序长度,上一页 下一页 返回,8.1进程调度,void PrintStatInfo_ProgLen( STATINFOL_PROGLEN l, SCHEDULEALGORITHM algo); 打印统计信息:进程优先级 vo

13、id PrintStatInfo_Priority( STATINFOL_PRIORITY l, SCHEDULEALGORITHM algo); void SortInsProgLenQ(PCBPQUEUE8- pcbQ,PCB pcb); ,按程序大小入队列 void SortInsPriorityQ(PCBPQUEUE 按优先级入队列,上一页 下一页 返回,8.1进程调度,3全局变量 int g_nCloseTime; 模拟时间 int g_nMaxRunTime; 程序最大运行时间 int g_nMaxlnterval; 最大间隔 int g_nMaxTimePiece; 最大时间片

14、int g_nCurProcID=0; 当前进程ID PCB g_CurRunningProc; 当前正在运行的进程 int g_nFinishedTime一0; 模拟已完成的时间 BOOL g_bIsEndFALSE; 结束标志,上一页 下一页 返回,8.1进程调度,BOOL g_bProgIsRun; 是否有程序正在运行 BOOL g_bIsPrioritierReach= FALSE; 是否有优先级更高的进程到达 PCB g_pcbPrioritier; 更高优先级的进程 PCBQUEUE g_pcbReadyQueue; 就绪队列 PCBPQUEUE g_pcbReadyPriorit

15、yQueue; 就绪优先级队列 SCHEDULEALGORITHM g_ScheduleAlgorithm; 调度算法 CRITICAL_SECTION g_CriticalSection; 临界区,上一页 下一页 返回,8.1进程调度,STATINF()L PR()GLEN g_listStatInfoProgLen3; 统计信息链表:程序长度 STATINF()L_PRIORITY g_listStatInfoProcPriority; 统计信息链表:进程优先级 HANDLE g_hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);标准输出(控制台句柄),上一页 下一页 返回,8.1进程调度,4自定义宏 颜色 # define CLR_GREEN 10 绿 # define CLR_RED 12 红 # define CLR_SECRED 13 次红 # define CLR YELL

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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