Автор: Пользователь скрыл имя, 11 Января 2011 в 15:21, курсовая работа
Будь яка операційна система має в своєму складі планувальник руху голівок. Цей модуль обирає з висхідної черги голівкок, згідно зі своїм алгоритмом роботи, одну голівку для його виконання.Дослідження ефективності алгоритму планувальника руху голівок дозволяє вивчити поведінку дискових драйверів, їх ефективність і здатність до виконання певного класу задач. Імітаційне моделювання роботи планувальника руху голівок дозволяє визначити базові характеристики обраного алгоритму та зробити висновки щодо його ефективності.
1 ЗАГАЛЬНІ ВІДОМОСТІ…………………………………………………...4
2 ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ…………………………….……....4
3 ОПИС ЛОГІЧНОЇ СТРУКТУРИ………………………………………......4
3.1. Алгоритм програми……………………………………………………...4
3.2 Використані методи……………………………………...……………….4
3.3 Структура програми ……………………………………………………...5
3.4 Зв’язки програми з іншими програмами………………………………...5
4 ВИКОРИСТАНІ ТЕХНІЧНІ ЗАСОБИ…………………………………….5
5 ВИКЛИК ТА ЗАВАНТАЖЕННЯ………………………………………….5
6 ВХІДНІ ДАНІ……………………………………………………………….5
7 ВИХІДНІ ДАНІ……………………………………………………………..5
2.3Опис
і обґрунтування методу
2.3.1 Вхідні дані
Вхідними
даними є кількість голівок на магнітному
диску та запрос на номер голівки.
-6-
КІТ 28б.06106
81 1-01
2.3.2 Вихідні дані
Вихідними
даними є послідовність руху голівок
на магнітному диску за дисципліною планування
FCFS.
2.4 Опис
і обґрунтування складу
2.4.1 Для
функціонування програмного
2.4.2 Програмні
засоби, які використовуються під
час написання, налагодження
ДЖЕРЕЛА,
ВИКОРИСТАНІ ПРО РОЗРОБЦІ
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСТИТЕТ
«ХАРКІВСЬКИЙ
ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»
КАФЕДРА
«Обчислювальна техніка та програмування»
Планувальних руху голівок
Текст програми
ЛИСТ ЗАТВЕРДЖЕННЯ
КІТ 28б.06106-10
12 1-01 ЛЗ
Харків 2010
ЗАТВЕРДЖЕНО
КІТ 28б.06106-10
12 1-01 ЛЗ
Планувальник руху голівок
Текст програми
КІТ 28б.06106-10 12 1-01
Листів
7
Харків 2010
-2-
КІТ 28б.06106-10
12 1-01
1 ТЕКСТ
ОСНОВНОГО МОДУЛЮ
/*
==============================
Name : motion_planner_heads.h
Author : Петренко Аліна Сергіївна
Version : 1.00.00
Description : CMotion_planner_heads implementation
==============================
*/
/**
* Захист від
багаторазового включення
*/
#pragma once
// CLASS DECLARATION
class CMotion_planner_heads
{
// Рівень доступа
до методів класу CMotion_
public:
/*
* Метод, що встановлює поля об'єкту
* @Param array[] - масив кількості голівок магнітного диску
* @Param aNumberHead - кількість голівок магнітного диску
*/
void
SetHeads(int array[], unsigned int aNumberHeads);
/*
* Метод, що виводить поля об'єкту на екран монітору
* @Param array[] - масив кількості голівок магнітного диску
* @Param aNumberHead - кількість голівок магнітного диску
*/
void
PrintHeads(int array[], unsigned int aNumberHeads);
/*
* Метод, що додає номер голівки в список за алгоритмом FCFS
* @Param array[] - масив кількості голівок магнітного диску
* @Param aNumberHead - кількість голівок магнітного диску
*/
int
MovingHeads(int array[], unsigned int aNumberHead);
/*
-3-
КІТ 28б.06106-10
12 1-01
* Метод, що зберігає результат переміщення голівок магнітного диску
* @Param array[] - масив кількості голівок магнітного диску
*/
void SaveRezult(int array[]);
/*
* Закриті члени класу CMotion_planner_heads,
* Доступні тільки всередині класу
* Рівень доступу до полів класу - private
*/
private:
// Номер голівки магнітного диску
unsigned
int iNumberHead;
//
Масив кількості голівок
int array[];
};
/*
==============================
Name : Motion_planner_heads.cpp
Author : Петренко Аліна Сергіївна
Version : 1.00.00
Description : CMotion_planner_heads implementation
==============================
*/
#include "motion_planner_heads.h"
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
/*
* Метод, що встановлює висхідну послідовність розміщення голівок
* void CMotion_planner_heads::
* @Param array[] Масив кількості голівок
* @Param aNumberHead Кінцева кількість голівок
*/
void CMotion_planner_heads::
{
-4-
КІТ 28б.06106-10
12 1-01
for (unsigned int counter = 1; counter <= aNumberHeads; counter++)
{
array[counter] = counter*10;
}
}
/*
* Метод, що відображує висхідну послідовність розміщення голівок на екран монітора
* void CMotion_planner_heads::
* @Param array[] Масив кількості голівок
* @Param aNumberHead Кінцева кількість голівок
*/
void CMotion_planner_heads::
{
for (unsigned int counter = 1; counter <= aNumberHeads; counter++)
{
cout << array[counter] << " -> ";
}
cout << "NULL" << endl;
cout << endl;
}
/*
* Метод, що виконує обхід голівок, починаючи з тої, яку вибрав користувач
* int CMotion_planner_heads::
* @Param array[] Масив кількості голівок
* @Param aNumberHead Кінцева кількість голівок
*/
int CMotion_planner_heads::
{
/*
Обьявление и инициализация
unsigned int N = 21;
unsigned int counter1 = 0;
unsigned
int counter2 = 0;
array[N] = aNumberHeads;
/* пока не конец массива */
while (array[counter1] != aNumberHeads)
counter1++ ;
array[0]
= array[counter1];
for (counter2 = 0; counter2 <= N - 1; counter2++)
{
if (array[counter1] > array[counter2])
-5-
КІТ 28б.06106-10
12 1-01
{
return 0;
}
else
{
cout << array[counter2] << " -> ";
_
}
if (array[counter1] = array[counter2])