Цитата(LVII @ Oct 31 2009, 15:19)

До решения о написании собственной ОС, были изучены все доступные ОС, естественно и scmRTOS. Память у меня очень неплохая. Так, что ненароком повторил "цельнотянутые куски из документации к scmRTOS", но в документации это только общие слова(видно из вышеприведенных примеров). Но на всякий случай прошу прощения! Действительно важная, особенно техническая, часть документации - это эксклюзив. Это же касается идеи и кода.
Это не память хорошая и не ненароком. Брать чужое и выдавать за свое называется по-другому.
Документация к scmRTOS:
Цитата
Итак, в контексте текущего рассмотрения, операционная система – сово-
купность программного обеспечения (ПО), дающего возможность разбить поток
выполнения программы на несколько независимых, асинхронных по отношению
друг к другу процессов и организовать взаимодействие между ними. Т.е. внима-
ние обращено на базовые функции, оставляя в стороне такие вещи, присущие ОС
для больших машин, как файловые системы (т.к. и файлов-то никаких, обычно,
нет), драйверы устройств (которые вынесены на уровень пользовательского ПО) и
проч.
Документация к mRTOS:
Цитата
Итак, в контексте текущего рассмотрения, операционная система – совокупность
программного обеспечения (ПО), дающего возможность разбить поток выполнения
программы на несколько независимых, асинхронных по отношению друг к другу
процессов и организовать взаимодействие между ними. Т.е. внимание обращено на
базовые функции, оставляя в стороне такие вещи, присущие ОС для больших машин, как
файловые системы (т.к. и файлов-то никаких, обычно, нет), драйверы устройств (которые
вынесены на уровень пользовательского ПО) и прочее.
Документация к scmRTOS:
Цитата
Таким образом, исходя из того, что основная функция ОС – поддержка
параллельного асинхронного исполнения разных процессов и взаимодействия
между ними, встает вопрос о планировании (Scheduling) процессов, т.е. когда ка-
кой процесс должен получить управление, когда отдать управление другому про-
цессу и проч. Эта задача возлагается (хоть и не полностью) на часть ядра ОС, на-
зываемой планировщиком (Scheduler). По способу организации работы плани-
ровщики бывают:
Документация к mRTOS:
Цитата
Таким образом, исходя из того, что основная функция ОС – поддержка параллельного
асинхронного исполнения разных процессов и взаимодействия между ними, встает вопрос
о планировании (Scheduling) процессов, т.е. когда какой процесс должен получить
управление, когда отдать управление другому процессу и прочее. Эта задача возлагается,
хоть и не полностью, на часть ядра ОС, называемой планировщиком (Scheduler).
По способу организации работы планировщики бывают:
Ну и так далее.
В документация к mRTOS читаем следующее(стр.13):
Цитата
Data Stack используется для динамического хранения локальных
переменных, посредством его передаются параметры функций и сохраняются регистры во
время вызова функций обработки прерываний. В CodeVision для хранения адреса
вершины Data Stack используется Y-регистр (регистровая пара r28 и r29), в WinAVR
используется регистровая пара r24 и r25, а в ICCAVR регистровая пара r16 и r17.
У avr-gcc нет отдельного Data Stack, а есть единый стек для хранения адресов возврата и данных. Указатель на верхушку стека также хранится в регистровой паре Y. Через r24, r25 передаются параметры в функцию.
avr-libcЦитата
Call-saved registers (r2-r17, r28-r29):
May be allocated by gcc for local data. Calling C subroutines leaves them unchanged. Assembler subroutines are responsible for saving and restoring these registers, if changed. r29:r28 (Y pointer) is used as a frame pointer (points to local data on stack) if necessary. The requirement for the callee to save/preserve the contents of these registers even applies in situations where the compiler assigns them for argument passing.
Цитата
* Function call conventions:
Arguments - allocated left to right, r25 to r8. All arguments are aligned to start in even-numbered registers (odd-sized arguments, including char, have one free register above them). This allows making better use of the movw instruction on the enhanced core.
If too many, those that don't fit are passed on the stack.