Реализация трехуровневого потока планирования - PullRequest
0 голосов
/ 27 декабря 2011

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

1 Ответ

0 голосов
/ 31 декабря 2011

Внутри ядра - любой поток или процесс - прерывается обычным вводом таймера или прерыванием во время вызова ввода-вывода.Это возвращает передачу управления в планировщик ядра.

Переключение потока выполняется планировщиком, который решает, какой поток будет следующим выполнимым.

Теперь, если вы хотите смоделировать почти это - вам нужно заставить поток выполнять некоторые конечные задачи и подключаться в ожидании некоторых семафоров / мьютексов.Существует некоторый главный поток, который держит эти мьютекс / семафоры под контролем.Главный поток каким-то образом запускает нужный алгоритм, чтобы решить, к какому потоку должен быть предоставлен доступ.

Единственное реальное отличие состоит в том, что поскольку ваш главный поток находится в пользовательском пространстве, а не внутри ядра, он не может на самом деле отменять и / или выгружать запущенные потоки.Он может контролировать только то, насколько эффективно может быть эффективно распределено задание (между потоками с хорошим поведением).

Это очень простой первый шаг к пониманию проблемы.Пожалуйста, добавьте больше деталей для работы над предметом.Изменить свой вопрос, чтобы развить свой ответ.

...