|
вытясняющая многозадачность, чистый С без ОС |
|
|
|
 |
Ответов
|
Nov 30 2011, 15:36
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Да вы сначала реализуйте просто по очереди. Тут все просто как в зоопарке.
Есть одна ячейка памяти А. По прерыванию от таймера обработчик использует значение содержащееся в этой ячейке, как адрес, куда он будет сохранять текущий контекст. (По завершению обработки прерывания из этой же ячейки будет браться адрес для восстановления контекста). После чего этот обработчик вызывает сишную. процедуру. Назовите ее планировщиком, если хотите. Этот планировщик делает что хочет, но одно сделать обязан - подсунуть в эту ячейку А адрес контекста задачи, которую хочет возобновить. Если ничего не поменяет - просто продолжит работу текущая задача.
Подсунуть адрес из списка - по очереди, по какому-то принципу, по черту лысому - дело вкуса. Так же этот планировщик может заниматься по мелочи обработкой событий от клавиатуры, последовательного порта и прочей мелочи. (Типа, если зависнет планировщик - это однозначно все убивает, а если зависнет задача, то ввод-вывод останется живым).
Вот и вся ОС. Наращивать и усложнять алгоритм подсовывания нужного адреса - это развлечение на всю жизнь. Мой опыт говорит, что мегагерцы растут быстрее, чем разум разработчика, посему можно сильно не париться, а взять проц по-быстрее... Конечно, и быстрый можно затормозить...
--------------------
On the road again (Canned Heat)
|
|
|
|
Сообщений в этой теме
Zelepuk вытясняющая многозадачность Nov 29 2011, 08:56 dxp Цитата(Zelepuk @ Nov 29 2011, 15:56) Хоче... Nov 29 2011, 12:48 Zelepuk Цитата(dxp @ Nov 29 2011, 16:48) А чем, п... Nov 29 2011, 13:10 MrYuran Автомат на прерываниях с разрешением вложенности. Nov 29 2011, 13:47 Zelepuk Цитата(MrYuran @ Nov 29 2011, 17:47) Авто... Nov 29 2011, 13:55  MrYuran Цитата(Zelepuk @ Nov 29 2011, 17:55) спас... Nov 30 2011, 04:42   Dog Pawlowa Цитата(MrYuran @ Nov 30 2011, 08:42) Преи... Nov 30 2011, 05:25   Zelepuk Цитата(MrYuran @ Nov 30 2011, 07:42) Кажд... Nov 30 2011, 08:25    MrYuran Цитата(Zelepuk @ Nov 30 2011, 12:25) не п... Nov 30 2011, 08:52     Zelepuk Цитата(MrYuran @ Nov 30 2011, 11:52) 1. з... Nov 30 2011, 09:01    Warlockwolf Цитата(Zelepuk @ Nov 30 2011, 12:25) похо... Nov 30 2011, 10:02     Zelepuk Цитата(Warlockwolf @ Nov 30 2011, 14:02) ... Nov 30 2011, 13:12 AHTOXA Цитата(Zelepuk @ Nov 29 2011, 14:56) Хоче... Nov 29 2011, 14:22 DpInRock У меня работает сферический конь в вакууме.
Все, ... Nov 29 2011, 15:26 Сергей Борщ QUOTE (DpInRock @ Nov 29 2011, 18:26) У м... Nov 29 2011, 20:23 _Pasha Цитата(DpInRock @ Nov 29 2011, 19:26) Но ... Nov 29 2011, 22:18 Zelepuk А вообще, когда становится понятно, что нужно горо... Nov 29 2011, 17:40 kolobok0 Цитата(Zelepuk @ Nov 29 2011, 21:40) А во... Nov 30 2011, 07:53 AHTOXA Цитата(DpInRock @ Nov 29 2011, 21:26) У м... Nov 29 2011, 17:55 Zelepuk Цитата(AHTOXA @ Nov 29 2011, 21:55) Дык, ... Nov 29 2011, 17:59  toweroff Цитата(Zelepuk @ Nov 29 2011, 21:59) а ес... Nov 29 2011, 18:18  AHTOXA Цитата(Zelepuk @ Nov 29 2011, 23:59) а ес... Nov 29 2011, 18:43 DpInRock Вообще-то в большинстве случае проц в единственном... Nov 29 2011, 18:34 sigmaN Посмотрите AVR учебный курс на http://easyelectron... Nov 29 2011, 20:15 DpInRock ЦитатаИ где тут вытесняющая многозадачность?
Перек... Nov 30 2011, 02:23 Zelepuk система должна принимать данные от АЦП, обробатыва... Nov 30 2011, 04:27 DpInRock Суперлуп организовывать труднее. Так чтоб он работ... Nov 30 2011, 09:59 Rst7 QUOTE А как же setjmp/longjmp ?
Катит только для ... Nov 30 2011, 10:18 Warlockwolf хидер
Кодtypedef void (*pFunction)(v... Nov 30 2011, 17:47 Zelepuk Цитата(Warlockwolf @ Nov 30 2011, 21:47) ... Nov 30 2011, 19:23 Warlockwolf приоритет задается постановкой в очередь. либо в к... Nov 30 2011, 20:08 Zelepuk Цитата(Warlockwolf @ Dec 1 2011, 00:08) п... Dec 1 2011, 05:38 Warlockwolf Я ж писал, - реал тайм -при возникновении прерыван... Dec 1 2011, 08:03 Zelepuk понятно, вобщем кольцевая очередь низкоприоритетны... Dec 1 2011, 08:26 _Ivana Цитата(kolobok0 @ Nov 30 2011, 10:53) буд... Jan 10 2012, 17:56 Zelepuk Цитата(_Ivana @ Jan 10 2012, 20:56) Спаси... Jan 11 2012, 05:03  SyncLair Цитата(Zelepuk @ Jan 11 2012, 09:03) а ка... Jan 11 2012, 20:10   Zelepuk Цитата(SyncLair @ Jan 11 2012, 23:10) А к... Jan 12 2012, 05:15 kolobok0 Цитата(_Ivana @ Jan 10 2012, 21:56) ... б... Jan 11 2012, 09:08 SyncLair Цитата(Zelepuk @ Nov 29 2011, 12:56) Хоче... Jan 10 2012, 18:57 SpyBot Цитата(SyncLair @ Jan 10 2012, 22:57) В-т... Jan 12 2012, 06:25  demiurg_spb Цитата(SpyBot @ Jan 12 2012, 09:25) Сорри... Jan 12 2012, 06:49   SpyBot Цитата(demiurg_spb @ Jan 12 2012, 10:49) ... Jan 12 2012, 07:10    demiurg_spb Цитата(SpyBot @ Jan 12 2012, 10:10) Напри... Jan 12 2012, 07:39 _Pasha Да простит меня MrYuran, который забадался уже чит... Jan 11 2012, 10:15
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|