Планувальник руху голівок

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

курсач.doc

— 253.00 Кб (Скачать)
 

2.3Опис  і обґрунтування методу організації  вхідних і вихідних даних 

2.3.1 Вхідні  дані

Вхідними  даними є кількість голівок на магнітному диску та запрос на номер голівки. 

-6-

КІТ 28б.06106 81 1-01 

2.3.2 Вихідні дані

Вихідними даними є послідовність руху голівок на магнітному диску за дисципліною планування FCFS. 

2.4 Опис  і обґрунтування складу технічних  і програмних засобів на основі  проведеного аналізу, розподіл  носіїв даних, що використовує  програма 

2.4.1 Для  функціонування програмного виробу  необхідна ПЕОЕМ (процесор Intel 80486 або краще) з таким мінімальним переліком периферійних пристроїв:

  • накопичувач на жорсткому магнітному диску
  • мікропроцесор з математичним співпроцесором
  • відеоадаптер класу VGA або краще
  • клавіатура
  • пристрій введення «миша»
  • тактова частота – не менше 100 мГц
  • ОЗП – не менше 32 мб
 

2.4.2 Програмні  засоби, які використовуються під  час написання, налагодження та  функціонування функції:

  • Пакет програмування
  • Операційна система Microsoft Windows XP
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ДЖЕРЕЛА, ВИКОРИСТАНІ ПРО РОЗРОБЦІ 

  1. Таненбаум Э. Современные операционные системы. – СПб.: Питер, 2010.
  2. Столлингс В. Операционные системы. – М.: Вильямс, 2004
  3. Деревяненко А.С., Солощук М.Н. Операционные системы. – Харьков НТУ «ХПИ», 2003
  4. Карпов В.Е., Коньков К.А. Основы операционных систем. – М: ИНТУИТ.РУ «Интернет – Университет Информационных Технологий». 2005
  5. Харт Д.М Системное програмирование в среде Windows. – М.: Вильямс, 2005
  6. Щупак Ю.А. WIN 32 AРІ. Эффективная разработка приложений. – СПб.: Питер, 2007.
  7. Ганеев Р.М. Проэктирование интерфейса пользователя средствами WIN 32 AРІ. – М.: Горячая Линия – Телеком, 2007
 
 
 
 
 
 
 
 
 
 
 

 

     
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

МІНІСТЕРСТВО  ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ  ТЕХНІЧНИЙ УНІВЕРСТИТЕТ

«ХАРКІВСЬКИЙ  ПОЛІТЕХНІЧНИЙ ІНСТИТУТ» 

КАФЕДРА «Обчислювальна техніка та програмування» 
 
 
 
 

                                           Затверджую:

                                                              Завідувач кафедри ОТП

                                                                       ______________ Домнін Ф.А

                                                                          «___» ________________2010р. 
 
 

Планувальних  руху голівок

Текст програми

ЛИСТ  ЗАТВЕРДЖЕННЯ

КІТ 28б.06106-10 12 1-01 ЛЗ 
 
 
 

                                          Керівник проекту:

                                                                      _______________ Главчев М.І.

                                                                 «___»________________2010р.

                                Виконавець:

                                                   Студент групи КІТ 28б

                                                                        _________________ Сахно Я.О.

                                                                  «___» ________________2010 р. 
 
 
 
 
 
 
 
 
 
 
 

            Харків 2010

ЗАТВЕРДЖЕНО

КІТ 28б.06106-10  12 1-01 ЛЗ 
 
 
 
 
 
 
 
 
 
 
 

Планувальник  руху голівок

Текст програми

КІТ 28б.06106-10  12 1-01

Листів  7 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Харків 2010

-2-

КІТ 28б.06106-10  12 1-01 

1 ТЕКСТ  ОСНОВНОГО МОДУЛЮ 

  1. Файл  motion_planner_heads.h
 

/*

============================================================================

Name        : motion_planner_heads.h

Author      : Петренко Аліна Сергіївна

Version     : 1.00.00

Description : CMotion_planner_heads implementation

============================================================================

*/ 

/**

* Захист від  багаторазового включення Header файлу

*/

#pragma once 

// CLASS DECLARATION

class CMotion_planner_heads

{

// Рівень доступа  до методів класу CMotion_planner_heads - public

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[];

}; 

  1. Файл motion_planner_heads.cpp
 

/*

============================================================================

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::SetHeads(int array[], unsigned int aNumberHeads)

* @Param array[] Масив кількості голівок

* @Param aNumberHead Кінцева кількість голівок

*/

void CMotion_planner_heads::SetHeads(int array[], unsigned int aNumberHeads)

{ 

-4-

КІТ 28б.06106-10  12 1-01 

      for (unsigned int counter = 1; counter <= aNumberHeads; counter++)

      {

            array[counter] = counter*10;

      

} 

/*

* Метод, що відображує висхідну послідовність розміщення голівок на екран монітора

* void CMotion_planner_heads::PrintHeads(int array[], unsigned int aNumberHeads)

* @Param array[] Масив кількості голівок

* @Param aNumberHead Кінцева кількість голівок

*/

void CMotion_planner_heads::PrintHeads(int array[], unsigned int aNumberHeads)

{

      for (unsigned int counter = 1; counter <= aNumberHeads; counter++)

      {

            cout << array[counter] << " -> ";

      }

      cout << "NULL" << endl;

      cout << endl;

} 

/*

* Метод, що виконує обхід голівок, починаючи з тої, яку вибрав користувач

* int CMotion_planner_heads::MovingHeads(int array[],unsigned int aNumberHeads)

* @Param array[] Масив кількості голівок

* @Param aNumberHead Кінцева кількість голівок

*/

int CMotion_planner_heads::MovingHeads(int array[],unsigned int aNumberHeads)

{

      /* Обьявление и инициализация переменных */

      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] << " -> ";

                        _getch();

                  }

                  if (array[counter1] = array[counter2])

Информация о работе Планувальник руху голівок