Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
* мютексы и вся остальная динамика были в ОЗУ, а все программы — в ПЗУ, поэтому расход памяти надо считать отдельно.
* вся алхимия сводится к:
— все задачи _перед_ nop ставят себя в очередь, заказывая — когда их разбудить (в тиках)
— раз в 1/50s подрывается NMI и подрывает ядро
— которое декрементирует счетчик тиков, и те задачи, которым пора
— удаляет из очереди
— вызывает
Всё
Задачи сами между собой разбираются. Ядру же — пофик.
* мютексы… ну как — мютексы… Например задвинуть задвижку — это запуск четырех задач:
— одна — быстро запускает движок (если выставлен флаг «запустить движок»), выставляет флаг «движок пошел» — и тикает
— вторая — вешается на прерывание от датчика концевика (или вешается на таймер опросить датчик — случаи разные бывают), быстро считывает, записывает куда-то данные, выставляет флаг «готово» — и тикает.
— третья — обрабатывает данные (если они есть)
— четвертая — следит, чтобы из п.1 дошло до п.2 хотя бы. Или вызывает пожарных.
Ну и т.д.
Да, приходится рисовать state machine и подсчитывать такты процессора для каждой задачи (min и max). А что делать?
Сырцы попробую найти — они есть, но (ессно) не комментированы, и кто из них ху — надо разбираться.
многозадачность — все потоки заканчивались nop
Вытесняющая многозадачность на ассемблере Z80