|
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 16
|
|
Программная реализация простого бесприоритетного планировщика потоков01.09.2017, 00:13. Показов 5105. Ответов 48
Метки нет (Все метки)
Программная реализация простого бесприоритетного планировщика потоков.
Исходные данные: - возможные состояния потоков: выполнение, ожидание, блокировка - отрабатываемые события: создание нового потока, завершение активного потока, завершение кванта времени у активного потока, блокирование потока, разблокирование потока - основная структура данных: массив дескрипторов потоков с двумя полями - идентификатор потока, состояние потока - массив реализует простейшую очередь со сдвигом элементов при удалении - язык реализации - любой по выбору: C/C++, C#, Java, Pascal/Delphi Я прислал преподу код: с реальным созданием потоков. Вот что ответил перепод: "Нет, это совсем не то что требуется. Реальные потоки создавать не надо, достаточно продемонстрировать работу основной структуры - очереди потоков на основе массива. Программа должна отрабатывать с помощью простейшего меню все 5 событий, показывая состояние очереди после отработки каждого события. " Помогите, я так понимаю, что нужно создать меню с созданием эмулятора таких потоков. Возможно есть готовое решением. Выручайте. Заранее спасибо.
0
|
|
| 01.09.2017, 00:13 | |
|
Ответы с готовыми решениями:
48
Программная реализация простого бесприоритетного планировщика потоков Программная реализация очереди Программная реализация I2C. |
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 01.09.2017, 21:09 | ||
|
0
|
||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
||
| 01.09.2017, 21:14 | ||
|
Чую все равно перпод найдет что то что ему не нравиться. Сдам преподу и потому отпишусь потом.
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 01.09.2017, 21:20 | ||
|
0
|
||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
||
| 02.09.2017, 17:16 | ||
|
Добавлено через 12 минут В крайнем случае можно сделать что бы прыгало через блокированный на след поток. Добавлено через 18 часов 57 минут Комментарии препода Кликните здесь для просмотра всего текста
Массив увеличить до 20 элементов. Начальное состояние массива пустое (потоков нет). Потоки можно нумеровать по порядку их создания. При завершении кванта, завершении выполнения потока или его блокировании должен меняться статус следующего за ним потока, это имитация запуска потока на выполнение. Непонятен выбор разблокируемого потока. Добавьте больше комментариев. Число глобальных переменных можно уменьшить. Вместе с исправленным текстом пришлите исполняемый файл. Использование турбопаскаля как то прошлым веком отдает. Консоль можно делать на более современных платформах, например на бесплатном Лазарусе, если уж вам паскаль так дорог... Renji, по моему это то о чем ты говорил? Выделил черным Добавлено через 14 минут Добавлено через 25 минут Хорошо, изначально поток пуста. Когда создаем поток и добавляем этот поток в очередь она автоматический должна брать управление, иначе никак не получается если это не так. Может ли этот поток сама себя завершит, получается нет? Опять запутался уже.
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 02.09.2017, 20:53 | |||
|
0
|
|||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
|||
| 02.09.2017, 20:57 | |||
|
Сегодня ничего не буду делать, завтра утром постараюсь что то сделать.
0
|
|||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 02.09.2017, 21:29 | ||
|
Когда управление у текущего потока по каким-то причинам отбирают (кончился квант/заблокировали/прибили), это самое управление передается следующему в очереди не заблокированному потоку. И статус этого самого следующего меняется на "активный". Если вообще все потоки в очереди заблокированы - поздравляем, вы познакомились с дедлоком. Пишем что программист этих потоков - криворукий идиот. Все это никак не мешает потоку прибить самого себя. Было бы вообще очень странно, если бы поток этого сделать не мог.
0
|
||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
||
| 02.09.2017, 23:36 | ||
Сообщение было отмечено Runinterface как решение
РешениеЗапустите программу, создайте например 4 потока и попробуйте закончить квант(команда 3). Я не знаю что преподу тут не понравилось, может он не пробовал его запустить потому что я наделялся что он его скомпилирует. А отправил я ему только исходный код. Это не какой ни вирус как подумал тут один из форумчанина, зачем мне это вообще, я здесь за помощью так то. Проверьте пожалуйста.
0
|
||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
|
| 03.09.2017, 10:21 | |
|
Потестил функции "Блокировка" и "Разблокировка" работают как я задумал, теперь проверьте пожалуйста логическую часть всех 5 функции.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 03.09.2017, 14:42 | ||
|
0
|
||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
|||||||
| 03.09.2017, 14:45 | |||||||
|
Кликните здесь для просмотра всего текста
0
|
|||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 03.09.2017, 14:51 | ||
|
0
|
||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
||
| 03.09.2017, 15:14 | ||
|
0
|
||
|
1121 / 992 / 153
Регистрация: 10.08.2015
Сообщений: 5,448
|
|
| 03.09.2017, 17:03 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 16
|
||||||
| 03.09.2017, 22:41 [ТС] | ||||||
|
Добавлено через 8 минут
EpicSR,
0
|
||||||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
|
| 04.09.2017, 08:16 | |
|
0
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||||||
| 05.09.2017, 12:37 | ||||||
|
Странное представление у препода о работе ОСи.
ОСь создает процессы, которые создают потоки, один или несколько, к примеру у Photoshop их 4(было в 2000 году, сейчас не знаю, может больше). Сами процессы ведут себя, несколько иначе, количество статусов больше. Подобный эмулятор проще делать на списках, а не массивах.
1
|
||||||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
|
| 05.09.2017, 13:19 | |
|
Спасибо за код.
В данном заданий потоки существует только в очереди, вне очереди(вне массива их не существует) что ж поделать такая задача. И по этому процессы здесь не рассматриваются. Количество статусов может быть сколько угодно, главное что бы вразумительное количество, ни больше ни меньше. На счет списка то да, ты прав. К сожалению это условия задачи, мягко говоря бредовые. Это если как бы : сделать танк из дерева пользуясь только ложкой. Пока читать твой код не буду но заметил сразу несколько ошибок и за одно обнаружил у себя ошибку с присвоением одного и того же id разным потокам. Идентификатор не должен быть рандомным на то он и идентификатор. Например в моей проге она принимает значения от 0 до 19.
0
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||
| 05.09.2017, 13:59 | ||
|
В некоторой системной области при запуске процесса, выделяется свободная память под описание процесса, в которой хранится вся информация о самом процессе. Обычно ОСь в PID записывает адрес начала этой области, хотя некоторые ОСи в PID пишут индекс таблицы процессов.
0
|
||
|
10 / 4 / 3
Регистрация: 29.01.2016
Сообщений: 131
|
||
| 06.09.2017, 16:33 | ||
|
Значит препод принял работу и поставил 3-ку(как и ожидалось) со следующими комментариями :
Ответ : потому что нет понятия на какой уровень абстракции рассчитывал преподаватель, то есть какие элементы можно опускать какие нет. Я на разных форумах спрашивал и везде отвечали по разному как это делать. Мои комментарии(только на форуме, естественно я ему не писал) к комментариям преподавателя. Вообще то мне кажется для заблоченного потока только есть одно событие - это быть разблокированным. Вообщем программа(то что я написал ) нашла свою задачу по уровню : ). Всем огромное спасибо за помощь.Особенно Renji, Constantin Cat.
0
|
||
| 06.09.2017, 16:33 | |
|
CRC32, программная реализация Программная реализация процессора Программная реализация номограммы Программная реализация getchar Программная реализация дека Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|