Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Технологии > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 05.04.2016, 11:23   #1
Exxodus
Новичок
 
Регистрация: 05.04.2016
Сообщений: 1
Репутация: 10
Вопрос Стек и очередь. Задачи никогда не попадают в стек - Delphi

Условие:
Система состоит из двух процессоров P1 и P2 и двух очередей F1, F2 и стека S. В систему могут поступать запросы на выполнение задач двух типов - Т1 и Т2. Задача типа Т1 может выполняться только процессором P1. Задача типа Т2 может выполняться любым процессором.

Поступающие запросы ставятся в соответствующие типам задач очереди. Если очередь F1 не пуста и процессор P1 свободен, то задача из очереди F1 поступает на обработку в процессор P1. Если процессор Р1 обрабатывает задачу типа Т2, а процессор Р2 свободен, то задача из процессора Р1 поступает в процессор Р2, а задача из очереди F1 в процессор Р1, если же процессор Р2 занят, то задача из процессора Р1 помещается в стек.
Если очередь F2 не пуста и процессор P2 свободен, то задача из очереди F2 поступает на обработку в процессор P2. Если процессор Р2 занят, а процессор Р1 свободен и очередь F1 пуста, то задача из очереди F2 поступает в процессор Р1, а задача из стека поступает на обработку в свободный процессор Р2, если F2 пуста, или в свободный процессор Р1, если очередь F1 пуста и задачу нельзя поместить в процессор Р2.



Дело в том, что ни одна задача никогда не попадает в стек. Настораживает последний абзац условия, может там косяк? Или я ошибаюсь? Прошу помочь по мере возможностей. сам проект на прикрепленке.
Вложения
Тип файла: zip Проект.zip (916.8 Кб, 8 просмотров)
Exxodus вне форума   Ответить с цитированием
Старый 05.04.2016, 15:12   #2
eoln
Профессионал
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,691
Репутация: 2251

icq: 421277094
По умолчанию

Ошибки в переписывании условий. Например, здесь
Код:
//Если очередь F1 не пуста, процессор P1 обрабатывает задачу второго типа, а Р2 свободен, то из P1 задачу перебрасываем в P2, и на P1 добавляем задачу из очереди F1
   if ((not F1.IsEmpty) and (P1.Data.T=2) and (P2.IsFree)) then
Или здесь:
Код:
//Если очередь F1 пуста, P2 занят и стек не пуст, то из стека задача идет на процессор P1
     if ((F1.IsEmpty) and (P1.IsFree) and (not P2.IsFree) and (not S.IsEmpty)) then
       P1.AddRequest(S.Take);
поступает из стека в занятый процессор
Название: 0.jpg
Просмотров: 38

Размер: 50.6 Кб

Ещё время выполнения задач можно увеличить
Код:
Request.Name:='Task_'+IntToStr(i);
      Request.Time:=10+Random(10);
      Request.T:=1+Random(2);
иначе редко в стек что-то попадает

Возможно, это не все ошибки (только то, что попалось на глаза)
eoln вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стек и очередь в Delphi Yustinka Помощь студентам 2 08.06.2015 16:00
Стек и очередь Кротяка Общие вопросы C/C++ 1 12.08.2014 18:51
Стек и очередь SsAn Паскаль 1 05.01.2014 13:24
Стек и очередь. (Delphi) Olgasato Помощь студентам 8 02.04.2010 08:08
Очередь, стек, дек в Delphi Katen'ka Помощь студентам 1 12.06.2009 22:23


07:09.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.