首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 范文大全
  • 古典文学
  • 职场知识
  • 中国文学
  • 公文书信
  • 外国名著
  • 寓言童话
  • 百家讲坛
  • 散文/诗歌
  • 美文欣赏
  • 礼仪知识
  • 民俗风情
  • 谜语大全
  • 名言警句
  • 实验报告操作系统实验一进程调度

    时间:2020-11-22 11:36:49 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:实验 调度 进程

     外 脚 手 架 搭 设 方 案 已 批 准 外 脚 手 架 搭 设 方 案 已 批 准 , 并 由 有 关 管 理 人 员 向 作 业 人 员 作 了 详 细 交 底 。

     材 质 符 合 第 七 项 的 要 求 并 由 有 关 管 理 人 员 向 作 业 人 员 作 了 详 细 交 底 。

     材 质 符 合 第 七 项 的 要 求 , 按 品 种 、 规 格 分 类 按 品 种 、 规 格 分 类 , 堆 放 整 齐 平 稳 。

     搭 设 的 位 置 场 地 已 清 理 和 平 整 堆 放 整 齐 平 稳 。

     搭 设 的 位 置 场 地 已 清 理 和 平 整 , 地 基 已 进 行 了 处 理 并 经 过 有 关 人 员 验 收 签 字 地 基 已 进 行 了 处 理 并 经 过 有 关 人 员 验 收 签 字 , 符 合 要 求 。

     符 合 要 求 。计算机电子信息工程学院实验报告 成绩________ 课程名称 操作系统

     指导教师

     杨秀华 实验日期 2011年9月15、22、29,10月12 院(系)计算机学院

      专业班级 09计算机应用

     实验地点

     B-4009

     学生姓名

     学号

      实验项目名称

     实验一 模拟设计进程调度

      一、实验目的和要求 用 C 或 C++语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 二、实验原理 进程调度 算法:

     采用最高优 先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算 法。

     每个进程有 一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、 到达时间、需要运行时间、已用 CPU 时间、进程状态等等。

     进程的优先 数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达 时间为进程输入的时间。

     进程的运行时间以时间片为单位进行计算。每个进程 的状态可以是就绪 W(Wait)、运行 R(Run)状态之一。

     就绪进程获 得 CPU 后都只能运行一个时间片。用已占用 CPU 时间加 1 来表示。如果运行一 个时间片后,进程的已占用 CPU 时间已达到所需要的运行时间,则撤消该进程, 如果运行一个时间片后进程的已占用 CPU 时间还未达所需要的运行时间,也就 是进程还需要继续运行,此时应将进程的优先数减 1(即降低一级),然后把它插 入就绪队列等待 CPU。

     每进行一次 调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。

     重复以上过程,直到 所要进程都完成为止。

     三、主要仪器设 备或材料

     PC机,C++环 境 四、实验方法与 步骤(可加附页)

     1 1 、主要数据结构:

     struct pcb {

     /* 定义进程控制块 PCB */

     char name[10];

     //进程名字 char state;

      //进程状态 int super;

      //进程的优先级 int ntime;

      //进程需要运行的时间 int rtime;

      //进程已经运行的时间 struct pcb* link; } 2 2 、调度算法的流程图如上图

     : :

     五、实验数据记录、处理及结果分析

      六、讨论、心得

     外 脚 手 架 搭 设 方 案 已 批 准 外 脚 手 架 搭 设 方 案 已 批 准 , 并 由 有 关 管 理 人 员 向 作 业 人 员 作 了 详 细 交 底 。

     材 质 符 合 第 七 项 的 要 求 并 由 有 关 管 理 人 员 向 作 业 人 员 作 了 详 细 交 底 。

     材 质 符 合 第 七 项 的 要 求 , 按 品 种 、 规 格 分 类 按 品 种 、 规 格 分 类 , 堆 放 整 齐 平 稳 。

     搭 设 的 位 置 场 地 已 清 理 和 平 整 堆 放 整 齐 平 稳 。

     搭 设 的 位 置 场 地 已 清 理 和 平 整 , 地 基 已 进 行 了 处 理 并 经 过 有 关 人 员 验 收 签 字 地 基 已 进 行 了 处 理 并 经 过 有 关 人 员 验 收 签 字 , 符 合 要 求 。

     符 合 要 求 。

     计算机电子信息工程学院实验报告(附页)

     程序参考代码:

     参考代码:

     #include "stdio.h"

     #include <stdlib.h>

     #include <conio.h>

     #define getpch(type) (type*)malloc(sizeof(type))

     #define NULL 0

      struct pcb

     {

      /* 定义进程控制块 PCB */

     char name[10];

     char state;

     int super;

     int ntime;

     int rtime;

     struct pcb* link;

     }*ready=NULL,*p;

      typedef struct pcb PCB;

      void sort()

     /* 建立对进程进行优先级排列函数*/

     {

     PCB *first, *second;

     int insert=0;

     if((ready==NULL)||((p->super)>(ready->super)))

     /*优先级最大者,插入队首*/

     {

     p->link=ready;

     ready=p;

     }

     else

      /* 进程比较优先级,插入适当的位置中*/

     {

     first=ready;

     second=first->link;

     while(second!=NULL)

     {

     if((p->super)>(second->super)) /*若插入进程比当前进程优先数大,*/

     {

     /*插入到当前进程前面*/

     p->link=second;

     first->link=p;

     second=NULL;

     insert=1;

     }

     else /* 插入进程优先数最低,则插入到队尾*/

     {

     first=first->link;

     second=second->link;

     }

     }

     if(insert==0) first->link=p;

     }

     }

     void

     input() /* 建立进程控制块函数*/

     {

     int i,num;

     printf("\n 请输入进程号?");

     scanf("%d",&num);

     for(i=0;i<num;i++)

     {

     printf("\n 进程号 No.%d:\n",i);

     p=getpch(PCB);

     printf("\n 输入进程名:");

     scanf("%s",p->name);

     printf("\n 输入进程优先数:");

     scanf("%d",&p->super);

     printf("\n 输入进程运行时间:");

     scanf("%d",&p->ntime);

     printf("\n");

     p->rtime=0;p->state="w";

     p->link=NULL;

     sort(); /* 调用 sort 函数*/

     }

     }

      int space()

      {

     int l=0; PCB* pr=ready;

     while(pr!=NULL)

     {

     l++;

     pr=pr->link;

     }

     return(l);

     }

      V V oid disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/

     {

     printf("\n qname \t state \t super \t ndtime \t runtime \n");

     printf("|%s\t",pr->name);

     printf("|%c\t",pr->state);

     printf("|%d\t",pr->super);

     printf("|%d\t",pr->ntime);

     printf("|%d\t",pr->rtime);

     printf("\n");

     }

      V V oid check() /* 建立进程查看函数 */

     {

     PCB* pr;

     printf("\n **** 当前正在运行的进程是:%s",p->name); /*显示当前运行进程*/

     disp(p);

     pr=ready;

     printf("\n ****当前就绪队列状态为:\n"); /*显示就绪队列状态*/

     while(pr!=NULL)

     {

     disp(pr);

     pr=pr->link;

     }

     }

      V V oid destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/

     外 脚 手 架 搭 设 方 案 已 批 准 外 脚 手 架 搭 设 方 案 已 批 准 , 并 由 有 关 管 理 人 员 向 作 业 人 员 作 了 详 细 交 底 。

     材 质 符 合 第 七 项 的 要 求 并 由 有 关 管 理 人 员 向 作 业 人 员 作 了 详 细 交 底 。

     材 质 符 合 第 七 项 的 要 求 , 按 品 种 、 规 格 分 类 按 品 种 、 规 格 分 类 , 堆 放 整 齐 平 稳 。

     搭 设 的 位 置 场 地 已 清 理 和 平 整 堆 放 整 齐 平 稳 。

     搭 设 的 位 置 场 地 已 清 理 和 平 整 , 地 基 已 进 行 了 处 理 并 经 过 有 关 人 员 验 收 签 字 地 基 已 进 行 了 处 理 并 经 过 有 关 人 员 验 收 签 字 , 符 合 要 求 。

     符 合 要 求 。{

     printf("\n 进程 [%s] 已完成.\n",p->name);

     free(p);

     }

      V V oid running() /* 建立进程就绪函数(进程运行时间到,置就绪状态*/

     {

     (p->rtime)++;

     if(p->rtime==p->ntime)

     destroy(); /* 调用 destroy 函数*/

     else

     {

     (p->super)--;

     p->state="w";

     sort(); /*调用 sort 函数*/

     }

     }

      V V oid main() /*主函数*/

     {

     int len,h=0;

     char ch;

     input();

     len=space();

     while((len!=0)&&(ready!=NULL))

     {

     ch=getchar();

     h++;

     printf("\n The execute number:%d \n",h);

     p=ready;

     ready=p->link;

     p->link=NULL;

     p->state="R";

     check();

     running();

     printf("\n 按任一键继续......");

     ch=getchar();

     }

     printf("\n\n 进程已经完成.\n");

     ch=getchar();

     } 知识改变命运

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识