Смекни!
smekni.com

Методические указания к лабораторным работам по дисциплине "автоматизированные системы управления реального времени" (стр. 5 из 5)

Методика решения

Методика решения включает в себя общую структуру программы и словесное описание условий блокировки и активизации процессов-пассажиров и процесса-лифта.

Структура программы выглядит следующим образом.

Program Lab7;

Uses MultiObj;

Type

PMonitor = ^TMonitor;

TMonitor = Object

D_U_List, {Очередь, ждущих внизу}

U_D_List, {Очередь, ждущих вверху}

MoveList, {Очередь перевозимых}

LiftList : TList; {Очередь лифта}

Constructor Init(...);

Destructor Done; Virtual;

Procedure Request_D_U;

Procedure Request_U_D;

Procedure Waiting;

End {TMonitor};

{--Методы монитора разрабатываются учащимися--}

Var

Monitor : PMonitor;

- 31 -

Procedure Client_D_U;

Begin

{Движение на нижнем этаже}

Monitor^.Request_D_U;

{Движение на верхнем этаже}

{Самоуничтожение}

End {Client_D_U};

Procedure Client_U_D;

Begin

{Движение на верхнем этаже}

Monitor^.Request_U_D;

{Движение на нижнем этаже}

{Самоуничтожение}

End {Client_U_D};

Procedure Lift;

Begin

While True Do Begin

Monitor^.Waiting;

{Движение}

End {While};

End {Lift};

Procedure KeyManager;

Begin

While True Do Begin

If Клавиша нажата Then Begin

Чтение клавиши;

Case Клавиша Of

'Esc' : Остановить работу ядра;

'U','u' : Создать процесс из процедуры Client_U_D;

'D','d' : Создать процесс из процедуры Client_D_U;

Else

End {Case};

End {If};

End {While};

End {KeyManager};

Begin

Monitor := New(PMonitor, Init);

Создать процесс из процедуры KeyManager;

Создать процесс из процедуры Lift;

- 32 -

Начать работу ядра;

Dispose(Monitor, Done);

End {Lab7}.

Словестное описание запроса пассажира на пользование лифтом

может выглядеть следующим образом:

If Лифт свободен Then Begin

Активизировать лифт;

End {If};

Встать в очередь ожидания;

Передать управление;

Условия функционирования лифта как процесса-сервера могут

выглядеть следующим образом:

If Перевез пассажиров Then Begin

Перевод перевезенных пассажиров из очереди перевозимых в

очередь готовых процессов;

End {If};

If Нет заявок на обслуживание ни на текущем этаже ни на другом

Then Begin

Блокирование;

Передача управления;

End {If};

If Заявка с текущего этажа Then Begin

Перевод не более, чем N процессов, из очереди ждущих в

очередь перевозимых процессов;

End {If};

Учащемуся предстоит формализовать условия блокировки и

активизации лифта и пассажиров для реализации программы.

Задача 8. МОДЕЛЬ ПАРИКМАХЕРСКОЙ

План парикмахерской может быть представлен следующей схемой:

Зал ожидания Салон

--------------T--------¬

--> --> -->

L-------------+---------

Клиенты проходят через зал ожидания в салон, стригутся там и выходят. Если парикмахер занят обслуживанием клиента, то другие клиенты становятся в очередь в зале ожидания, но размер очереди

ожидания не должен превосходить N. Если в зале ожидания N клиентов стоят в очереди, то создается очередь на улице. Если размер очереди на улице равен M, то новый желающий постричься

обходит парикмахерскую и остается необслуженным.

Каждый выходящий из салона клиент позволяет войти к парикмахеру одному клиенту, ждущему в зале ожидания, а тот, в свою очередь, позволяет войти в зал ожидания одному клиенту, ждущему на улице.

Требуется запрограммировать задачу, написав монитор "Парикмахер", регламентирующий доступ клиентов в зал ожидания и в салон. Парикмахер представляет собой процесс-сервер.

Методика решения

Структура программы, реализующей задачу, может иметь

следующий вид.

Program Lab8;

Uses MultiObj;

Type

PMonitor = ^TMonitor;

TMonitor = Object

ServList, {Очередь, в которой парикмахер ждет

активизации}

HallList, {Очередь клиентов в зале ожидания}

StrList, {Очередь клиентов на улице}

ClList : TList; {Очередь, в которой клиент находится,

пока его стригут}

Nh, {Количество клиентов в очереди зала ожидания}

Ns : Integer; {Количество клиентов в очереди на улице}

Constructor Init(...);

Destructor Done; Virtual;

Function InStreet : Boolean;

Procedure InHall;

Procedure Waiting;

End {TMonitor};

{--Методы монитора разрабатываются учащимися--}

Var

Monitor : PMonitor;

Procedure Client;

Begin

- 34 -

{Движение к залу ожидания}

If Monitor^.InStreet Then Begin

{Движение к салону}

Monitor^.InHall;

{Движение из салона}

End Else Begin

{Движение по обходу парикмахерской}

End {If};

{Самоуничтожение}

End {Client};

Procedure Server;

Begin

While True Do Begin

Monitor^.Waiting;

{Случайное время обслуживания клиента}

End {While};

End {Server};

Procedure KeyManager;

Begin

While True Do Begin

If Клавиша нажата Then Begin

Чтение клавиши;

Case Клавиша Of

'Esc' : Остановить работу ядра;

'C','c' : Создать процесс из процедуры Client;

Else

End {Case};

End {If};

End {While};

End {KeyManager};

Begin

Monitor := New(PMonitor, Init);

Создать процесс из процедуры KeyManager;

Создать процесс из процедуры Server;

Начать работу ядра;

Dispose(Monitor, Done);

End {Lab8}.

Словестное описание метода монитора, моделирующего действия

парикмехера (процесса-сервера), может выглядеть следующим

- 35 -

образом:

If Обслужил клиента Then Begin

Активизация этого клиента;

End {If};

If Нет клиентов Then Begin

Блокирование в очереди парикмахера;

Передача управления;

End {If};

Перевод клиента из очереди ожидания в салоне в очередь

обслуживаемых;

Словестное описание метода TMonitor.InStreet выглядит

следующим образом:

If Количество клиентов, ждущих в очереде на улице, больше, чем М

Then Begin

InStreet := False;

End Else Begin

If Количество клиентов, ждущих на улице, больше, чем 0 ИЛИ

Количество клиентов, ждущих в зале ожидания, равно N

Then Begin

Блокирование в очереди клиентов на улице;

Передача управления;

End {If};

InStreet := True;

End {If};

Словестное описание метода TMonitor.InHall выглядит

следующим образом:

If Парикмахер свободен Then Begin

Активизация парикмахера;

End {If};

Блокирование в очереди клиентов в зале ожидания;

Активизация клиента, первого в очереди на улице;

Учащемуся необходимо реализовать представленные описательные условия в программе, а затем дополнить программу вторым процессом-парикмахером и убедиться в повышении скорости обслуживания клиентов.

Содержание

ОБЩАЯ ХАРАКТЕРИСТИКА ЗАДАНИЙ...............................3

Задача 1. МОДЕЛЬ ЖЕЛЕЗНОДОРОЖНОГО ПЕРЕГОНА.................5

Задача 2. МОДЕЛЬ ДОРОЖНОГО ПЕРЕКРЕСТКА ...................11

Задача 3. МОДЕЛЬ ЧИТАТЕЛЕЙ И РЕДАКТОРОВ...................15

Задача 4. МОДЕЛЬ НАЗНАЧЕНИЯ ОДНОРОДНЫХ РЕСУРСОВ...........20

Задача 5. МОДЕЛЬ ОБЕДАЮЩИХ ФИЛОСОФОВ......................23

Задача 6. МОДЕЛЬ КЛИЕНТ-СЕРВЕР............................27

Задача 7. МОДЕЛЬ ФУНКЦИОНИРОВАНИЯ ЛИФТА...................30

Задача 8. МОДЕЛЬ ПАРИКМАХЕРСКОЙ...........................32