![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
simple |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 25.10.2011 Репутация: нет Всего: нет |
Доброго времени суток! Есть такая задачка, над которой я уже очень долго бьюсь, плохо понимая как вообще можно это реализовать.
Вот суть: Система состоит из процессора P, трёх очередей F0, F1, F2 и стека S. В систему поступают запросы на выполнение задач. Задачи считывать из файла. В файле например может быть такая таблица: имя задачи длительность выполнения момент поступления приоритет qw 3 7 0 we 5 8 2 jh 15 10 0 и тд... Поступающие запросы ставятся в соответствующие приоритетам очере-ди. Сначала обрабатываются задачи из очереди F0. Если она пуста, можно обрабатывать задачи из очереди F1. Если и она пуста, то можно обрабаты-вать задачи из очереди F2. Если все очереди пусты, то система находится в ожидании поступающих задач (процессор свободен), либо в режиме обработ-ки предыдущей задачи (процессор занят). Если поступает задача с более вы-соким приоритетом, чем обрабатываемая в данный момент, то обрабатывае-мая помещается в стек и может обрабатываться тогда и только тогда, когда все задачи с более высоким приоритетом уже обработаны. Вот мои наработки, но помоему полный бред:
![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
1. почему у тебя в структуре все поля строковые? Логично было оставить строковым только первое, а остальные - числовыми
2. Очереди удобнее поместить в массив. В итоге приоритет будет выступать индексом для выбора очереди 3. Почему у тебя везде используется слово "стек"? По идее, в данном случае более уместна очередь (queue), причем, с возможностью вставлять данные в ее начало сначала читаешь все задачи в простой массив, затем по мере истечения времени (итерация цикла) вставляешь в нужную очередь задачу, время которой подошло... |
|||
|
||||
simple |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 25.10.2011 Репутация: нет Всего: нет |
1.Возникла проблема считывания из файла информации разного типа.
2. очередь и стек нужно реализовать динамически в виде списков. 3.да,вы правы, там нужно переименовать стек на очередь. моя загвоздка заключается в том, что я не понимаю как реализовать в целом заданную систему, как соединить все части вместе. полная каша ![]() |
|||
|
||||
sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
Непонятно что с этим нужно сделать?
Тоесть, если сразу дается время поступления задачи и ее длительность, то разумеется ничего делать не нужно (в плане работы самой задачи). Это задание должно показать либо ваше знание языка, либо просчитать допустим суммарное время выполнение, либо что-то еще. Просто от постановки задачи зависит описание наиболее оптимизированного алгоритма, который в наипростейшем случае сводится к парочке математических манипуляций. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Если не секрет, какая проблема? cin >> s.run_time >> s.arrival_time >> s.priority; Я тебе про другое:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |