Эмулятор планирования задач ОС

Я пытаюсь найти библиотеку c или c ++, которая могла бы работать с задачами (или потоками) упреждающим способом. Мне нужен механизм, который мог бы управлять задачами один за другим, как в RTOS. Создание задач (функция в качестве точки входа в задачу), временная привязка, переключение и т. Д.

Можно ли написать это в пространстве пользователя?

2

Решение

Самое простое решение — это запустить реальный ОСРВ в виртуальной машине или эмулятор процессора. Любую ОСРВ с портом x86 можно убедить запустить на виртуальной машине ПК, но вы также можете использовать QEMU.

Например, вы можете запустить RTEMS на QUEMU, и сам QUEMU может эмулировать цели ARM — хотя это может не иметь значения, и эмуляция i386 может удовлетворить ваши потребности и будет быстрее.

2

Другие решения

Планирование / диспетчеризация RTOS для эффективной обработки потоков требует аппаратных прерываний для эффективной связи с периферийным оборудованием (КБ, мышь, диск, NIC, таймер и т. Д.). Стандарт C не имеет средств обработки прерываний, поэтому вы не можете этого сделать.

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

Вы должны знать, что вытесняющие планировщики не предназначены в первую очередь для переключения между задачами, для которых требуется ЦП при прерывании по таймеру, — они спроектированы в первую очередь для обеспечения эффективного высокопроизводительного ввода-вывода, удаляя ЦП из задач, которые не нуждаются в этом, потому что их Запросы ввода / вывода не могут быть выполнены немедленно.

1

По вопросам рекламы [email protected]