实验三:作业调度 作业调度算法模拟 谢世娜:394202453@qq.com.

Slides:



Advertisements
Similar presentations
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
计算机操作系统 期末复习二.
Chapter Two Process Management.
第三章 处理机调度与死锁 3.1 处理机调度的基本概念 3.2 调度算法 3.3 实时调度 3.4 多处理机系统中的调度
第三章 处理机调度与死锁.
第三章 作业管理 3.1 作业管理的基本功能 3.2 作业调度 3.3 作业控制.
进程调度(Scheduling) 进程(Linux中称任务)定义:是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。 描述进程的三个方面: 程序的一次运行活动; 进程的运行活动是建立在某个数据集合之上的; 进程在获得资源的基础上从事自己的运行活动。
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
複習 struct score_Type{ int chinese,english; }; struct my_Type{
Linked List Operations
單向鏈結串列 Singly Linked Lists.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
佇列 (Queue).
資料結構 第5章 佇列.
计算概论 第二十一讲 文件操作 北京大学信息学院.
第二章 行程管理 朱肇明 資管系 講師 大華技術學院.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
第10章 文件操作.
第十一章 文件 文件概述 文件操作 文件操作实例 本章小结 作业: 练习:
第12章 樹狀搜尋結構 (Search Trees)
第10章 文件操作.
SOA – Experiment 3: Web Services Composition Challenge
中国科学技术大学计算机系 陈香兰 Fall 2013 第四讲 CPU调度(part II) 中国科学技术大学计算机系 陈香兰 Fall 2013.
CPU调度(Scheduling) 主讲教师:夏莹杰
实践演练 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第2章 线性表 线性表抽象数据类型 顺序表 主要知识点 单链表 循环单链表 循环双向链表 静态链表 设计举例.
操作系统原理 Operating System Principles
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第十二章 文件 12.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件分类 按文件的逻辑结构: 按存储介质:
进程操作.
第3章 堆栈和队列 堆栈 堆栈应用 队列 队列应用 优先级队列 主要知识点.
fp=fopen("CD2.dat","wb"); fwrite(&min,8,1,fp); fclose(fp);
程式設計 博碩文化出版發行.
File(檔案處理) 學習目標:開檔、讀檔、更新檔與關閉檔案.
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
THE C PROGRAMMING LANGUAGE
如何生成设备节点 广州创龙电子科技有限公司
第10章 檔案與資料夾處理 10-1 C語言的檔案輸入與輸出 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫
第9章 文件操作 文件 使用文件的目的 操作系统管理数据的基本单位 存储在外存储器上的数据的集合
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
SOA – Experiment 2: Query Classification Web Service
自我參考結構 (self-reference – 1)
7.1 广义表的概念 广义表是n(n≥0)个数据元素组成的序列,其中每个数据元素或是单个数据元素(简称原子),或仍然是一个广义表 。
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
一、文件的基本概念 第十三章 文 件 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
姚金宇 MIT SCHEME 使用说明 姚金宇
中国科学技术大学计算机系 陈香兰 Fall 2013 第四讲 CPU调度 中国科学技术大学计算机系 陈香兰 Fall 2013.
实验七 安全FTP服务器实验 2019/4/28.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
信号量(Semaphore).
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
本节内容 文件读写 视频提供:昆山爱达人信息技术有限公司.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第七、八次实验要求.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
第13章 文 件.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
_08文件操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
結構、檔案處理(Structure, File)
李元金 计算机与信息工程学院 第7讲 处理机调度与死锁(1) 李元金 计算机与信息工程学院 1/
进程调度算法和作业调度算法。 (1) 先来先服务(FCFS)调度算法
第三章 处理机的调度和死锁.
第七章 文件 7.1 文件的基本概念 7.2 文件类型指针 7.3 文件的打开与关闭 7.4 文件的读/写 7.5 文件的随机读/写
第五章 处理机管理 CPU Scheduling
Chapter 2 Entity-Relationship Model
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Presentation transcript:

实验三:作业调度 作业调度算法模拟 谢世娜:394202453@qq.com

提纲 实验目的 实验内容 实验算法 实验示例

提纲 实验目的 实验内容 实验算法 实验示例

实验目的 理解操作系统中作业调度的概念和调度算法; 了解操作系统中程序,作业,进程的区别与联系; 理解在操作系统中作业是如何被调度的,如何协调和控制各个作业对CPU的使用; 提高动手能力;

提纲 实验目的 实验内容 实验算法 实验示例

实验内容 作业调度 作业调度又称高级调度,不涉及处理机的分配,主要任务是按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业调入主存,为其分配内存、I/O设备等必要的资源,并建立相应的进程,安排在就绪队列上,以使进程获得竞争处理机的权利。

实验内容 调度队列模型

实验内容 编写并调试作业调度模拟程序; 实现三种作业调度算法,短作业优先(SJF),高响应比优先(HRRF),时间片轮转法(RR); 对每种算法要求打印平均周转时间、平均带权周转时间、平均等待时间; 每次作业切换时打印作业相关信息(提示开始运行,结束运行\暂停运行;一个作业完成打印其等待时间、周转时间、带权周转时间)。

提纲 实验目的 实验内容 实验算法 实验示例

实验算法 算法一:先来先服务(FCFS) 基本思想 特点 遵循先进入后备队列的作业,先进行调度的原则。 非抢占式算法 简单,易于编码实现 优先考虑作业的等待时间,没有考虑作业的执行时间长短、作业的运行特性和作业对资源的要求

实验算法 算法二:短作业优先(SJF) 基本思想 根据作业控制块中作业申请时指出的执行时间,选取执行时间最短的作业优先调度;可有抢占或非抢占方式。 短作业优先调度算法考虑了作业的运行时间而忽略了作业的等待时间。

实验算法 算法三:高响应比优先(HRRF) 初衷 FCFS调度算法只片面地考虑了作业的进入时间,短作业优先调度算法考虑了作业的运行时间而忽略了作业的等待时间。 响应比高者优先调度算法为这两种算法的折中,使长作业不会长时间等待,但每次调度前都要进行响应比计算。

实验算法 算法四:时间片轮转(RR) 基本思想 优点 系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片结束之后,将该进程加到就绪队列队尾;然后再把处理机分配给就绪队列中新的首进程。 优点 系统能在给定的时间内响应所有用户请求。

提纲 实验目的 实验内容 实验算法 实验示例

实验示例 作业信息结构 typedef struct node { int number; //作业号 int reach_time; //作业抵达时间 int need_time; //作业的执行时间 double excellent; //响应比 int start_time; //作业开始时间 int wait_time; //等待时间 int tr_time; //周转时间 double wtr_time; //带权周转时间 int run_time; //作业累计已执行时间 } job;

实验示例 使用的测试数据 使用读文件的形式读入测试数据 作业ID 到达时间 执行时间 1 700 10 2 800 50 3 810 5 4 815 30 830 25 6 835 35 7 845 15

实验示例 读文件 void read_jobdata();//读取数据文件; 用到的函数有: fopen(文件名,使用文件方式);//打开文件 fscanf(文件指针,格式字符串,输入列表);//格式化读入; fclose(文件指针);//关闭文件

实验示例 常用的打开文件方法: if((fp = fopen(fname, "r")) == NULL) { printf("error, open file failed, please check filename:\n"); } else {…} fclose(fp);

实验示例 void FCFS() { int time = 0; //当前时间 printf("\nFCFS算法作业流\n"); while (cur_count > 0) { int loc = 0; if (time < jobs[loc].reach_time) time = jobs[loc].reach_time; jobs[loc].start_time = time; jobs[loc].wait_time = time - jobs[loc].reach_time; printf("time:%-4d job:%-4d 开始运行 等待时间:%-4d\n", time, jobs[loc].number, jobs[loc].wait_time); time += jobs[loc].need_time; jobs[loc].tr_time = time - jobs[loc].reach_time; jobs[loc].wtr_time = (double)jobs[loc].tr_time / jobs[loc].need_time; printf("time:%-4d job:%-4d 结束运行 周转时间;%-4d 服务时间:%-4d 带权周转时间:%-5.2f\n", time, jobs[loc].number, jobs[loc].tr_time, jobs[loc].need_time, jobs[loc].wtr_time); total_wtime += jobs[loc].wait_time; total_trtime += jobs[loc].tr_time; total_wtrtime += jobs[loc].wtr_time; remove_job(loc); } printf("\n平均等待时间:%.2f\n", total_wtime / count); printf("平均周转时间:%.2f\n", total_trtime / count); printf("平均带权周转时间:%.2f\n", total_wtrtime / count);

实验示例 FCFS

作业要求 实现短作业优先调度算法(SJF非抢占); 实现高响应比调度算法(HRRF非抢占); 对每种算法要求打印平均周转时间、平均带权周转时间、平均等待时间; 每次作业切换时打印作业相关信息(提示开始运行,结束运行\暂停运行;一个作业完成打印其等待时间、周转时间、带权周转时间)。 学号末2位模5所得结果+1为该生所需测试数据文件尾编号如:所得结果为3则测试数据为job3.txt ;

实验示例 定义队列 typedef struct { job job_queue[MAX_QUEUE_SIZE]; int head; int tail; int size; } queue;

实验示例 初始化队列 void init_queue(queue *q) { q->head = 0; q->tail = 0; q->size = 0; }

实验示例 判断队列是否为空/已满 int is_empty_queue(queue *q) { return q->size == 0; } int is_full_queue(queue *q) return q->size == MAX_QUEUE_SIZE;

实验示例 其他基本队列操作 //进入队列 void enqueue(queue *q, job j){} //出队 job dequeue(queue *q){} //打印队列内容 void print_queue(queue *q){}

作业要求 根据以上提示信息实现时间片轮转调度算法(RR) 对每种算法要求打印平均周转时间、平均带权周转时间、平均等待时间; 每次作业切换时打印作业相关信息(提示开始运行,结束运行\暂停运行;一个作业完成打印其等待时间、周转时间、带权周转时间)。 学号末2位模5所得结果+1为该生所需测试数据文件尾编号如:所得结果为3则测试数据为job3.txt;

实验示例 RR