哈尔滨工业大学计算机科学与技术学院实验报告课程名称:操作系统课程类型:必修实验项目名称:进程管理实验题目:程序标注、优先数法和简单轮转法班级:实验学院一班学号:6040310110姓名:张元竞设计成绩报告成绩指导老师一、实验目的进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实验要求学生独立的用高级语言编写和调试一个简单的进程调度程序。算法要求使用简单轮转法和优先数法。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和时间片轮转调度算法的具体实施办法。二、实验要求及实验环境(1)设计一个有n个进程(可假定系统有五个进程)共行的进程调度程序。每一个进程用一个进程控制块PCB来代表。PCB中应包含下列信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间及进程的状态等,且可按调度算法的不同而增减。各进程的优先数或轮转时间片数,以及进程运行需要地时间片数,均由伪随机数发生器产生。(2)调度程序应包含2~3种不同的调度算法,运行时可任选一种。(3)每个进程处于运行R、就绪W和完成F三种状态之一,假定初始状态都为就绪状态W。(4)系统能显示或打印各进程状态和参数的变化情况。三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)1.程序流程图开始输入调度算法AlgoAlgo=priority?生成并按优先数大小排列进程控制块链链首进程投入运行时间片到,进程时间片数减1,优先数减3进程时间片=0?优先数大于链首进程?取链首进程运行进程队列空?结束生成并按进入次序排列进程控制块链链首进程投入运行时间片到,进程时间片数减1,CPU时间加1进程时间片=0?CPU时间已到轮转时间?取链首进程运行进程队列空?priorityroundrobinyyyyyynnnnnn2.逻辑设计使用链表表示就绪链(队列),每个元素包括进程名、进程优先数、进程需要运行的时间、占用CPU的时间及进程的状态等信息。该结构需支持以下操作:取头节点,在任意位置插入节点,删除头节点,判断表空。为此,引入2个指针变量:头指针HEAD和尾指针TAIL。3、物理设计structpcbtype//进程控制块结构{longid,priority,runtime,totaltime;charstatus;//R,W,F-运行,就绪,完成}PCB[n+1];longlink[n+1];//链表结构longRUN,HEAD,TAIL;按照优先数大小设置就绪链:for(i=1;i=n;i++){for(j=n;ji;j--){if(PCB[sort[j]].priorityPCB[sort[j-1]].priority){k=sort[j];sort[j]=sort[j-1];sort[j-1]=k;}}}HEAD=sort[1];for(i=1;in;i++){link[sort[i]]=sort[i+1];}TAIL=sort[n];link[TAIL]=-1;RUN=-1;四、测试结果以下是优先数法的运行结果:PleasetypetheAlgorithm(Priority\RoundRobin):Priority=====================================================ID12345PRIORITY//TURNTIME22233CPUTIME00000ALLTIME22546STATUS=====================================================RUNNINGPROCESS:4WAITINGQUEUE:5123=====================================================ID12345PRIORITY//TURNTIME22203CPUTIME00010ALLTIME22536STATUS=====================================================RUNNINGPROCESS:5WAITINGQUEUE:1234=====================================================ID12345PRIORITY//TURNTIME22200CPUTIME00011ALLTIME22535STATUSR=====================================================RUNNINGPROCESS:1WAITINGQUEUE:2354=====================================================ID12345PRIORITY//TURNTIME-12200CPUTIME10011ALLTIME12535STATUSWR=====================================================RUNNINGPROCESS:2WAITINGQUEUE:3541=====================================================ID12345PRIORITY//TURNTIME-1-1200CPUTIME11011ALLTIME11535STATUSWWRWW=====================================================RUNNINGPROCESS:3WAITINGQUEUE:5421=====================================================ID12345PRIORITY//TURNTIME-1-1-100CPUTIME11111ALLTIME11435STATUS=====================================================RUNNINGPROCESS:5WAITINGQUEUE:4321=====================================================ID12345PRIORITY//TURNTIME-1-1-10-3CPUTIME11112ALLTIME11434STATUS=====================================================RUNNINGPROCESS:4WAITINGQUEUE:3215=====================================================ID12345PRIORITY//TURNTIME-1-1-1-3-3CPUTIME11122ALLTIME11424STATUSWWRWW=====================================================RUNNINGPROCESS:3WAITINGQUEUE:2145=====================================================ID12345PRIORITY//TURNTIME-1-1-4-3-3CPUTIME11222ALLTIME11324STATUSWR=====================================================RUNNINGPROCESS:2WAITINGQUEUE:1453=====================================================ID12345PRIORITY//TURNTIME-1-4-4-3-3CPUTIME12222ALLTIME10324STATUSRF=====================================================RUNNINGPROCESS:1WAITINGQUEUE:453=====================================================ID12345PRIORITY//TURNTIME-4-4-4-3-3CPUTIME22222ALLTIME00324STATUSFFWRW=====================================================RUNNINGPROCESS:4WAITINGQUEUE:53=====================================================ID12345PRIORITY//TURNTIME-4-4-4-6-3CPUTIME22232ALLTIME00314STATUSFFWWR=====================================================RUNNINGPROCESS:5WAITINGQUEUE:34=====================================================ID12345PRIORITY//TURNTIME-4-4-4-6-6CPUTIME22233ALLTIME00313STATUSFFRWW=====================================================RUNNINGPROCESS:3WAITINGQUEUE:54=====================================================ID12345PRIORITY//TURNTIME-4-4-7-6-6CPUTIME22333ALLTIME00213STATUSFFWWR=====================================================RUNNINGPROCESS:5WAITINGQUEUE:43=====================================================ID12345PRIORITY//TURNTIME-4-4-7-6-9CPUTIME22334ALLTIME00212STATUSFFWRW=====================================================RUNNINGPROCESS:4WAITINGQUEUE:35=====================================================ID12345PRIORITY//TURNTIME-4-4-7-9-9CPUTIME22344ALLTIME00202STATUSFFRFW=====================================================RUNNINGPROCESS:3WAITINGQUEUE:5=====================================================ID12345PRIORITY//TURNTIME-4-4-10-9-9CPUTIME22444ALLTIME00102STATUSFFWFR=====================================================RUNNINGPROCESS:5WAITINGQUEUE:3=====================================================ID12345PRIORITY//TURNTIME-4-4-10-9-12CPUTIME22445ALLTIME00101STATUSFFRFW================