OSDev http://osdev.su/ |
|
помогите написать нано\пикоядро http://osdev.su/viewtopic.php?f=5&t=442 |
Страница 1 из 3 |
Автор: | qeos [ 01 сен 2011, 23:07 ] |
Заголовок сообщения: | помогите написать нано\пикоядро |
сабж. нужно чтото типо алгоритма. что надо, какие функции.. если есть готовое будет вообще прекрасно. |
Автор: | pavia [ 02 сен 2011, 01:42 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
А чего его писать? Там кода один цикл. И табличка переходов. И очередь задач. И процедура планирования - которая из списка задач поочерёдно берет задачи. По ищи в интернете по РТОС они используются в микроконтроллерах. Статей много. Так как такая ОС занимает всего несколько строк кода, то весь код умещается в статье. http://easyelectronics.ru/avr-uchebnyj- ... adach.html http://habrahabr.ru/blogs/controllers/58366/ и тд. |
Автор: | qeos [ 02 сен 2011, 04:59 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
pavia писал(а): http://easyelectronics.ru/avr-uchebnyj- ... adach.html http://habrahabr.ru/blogs/controllers/58366/ и тд. по ссылкам это просто диспечеры задач... это и есть нано ядро? |
Автор: | pavia [ 02 сен 2011, 10:15 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
Это бы я у тебя хотел узнать. Но меньше уже некуда. Есть понятие микроядра. В микроядро состоит из планировщика. А все остальное менеджер памяти, защита, виртуальная ФС и так далее вынесены из ядра. И общение происходит при помощи механизмов межзадачноо(межпроцессорного) взаимодействия. А да обязательное условие микроядерного, то что разные процессы имеют разные адресные пространства - тем самым обеспечивается минимальная защита. Правда разные люди по разному обычно классифицируют ядра. К примеру некоторые к микроядерным относят модульные ос. Где драйвера сервисы состоят из модулей. Но при этом эти модули находятся в едином адресном пространстве. Другие заявляют что раз модули находятся в одном адресном пространстве, то это монолитное ядро, а не микроядерное. |
Автор: | qeos [ 02 сен 2011, 10:32 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
ну тема собственно возникла после того как я посмотрел в ядро L4.. насколько я понимаю там только такие функции: Планировщик - управляет задачами и процеассами, раздает приоритеты, переключает. Обработчик прерываний - получает и обробатывает аппаратные прерывания IPC - обработка и передача сообщенгий между задачами Управление сигналами между потоками Управление потоками вроде все.. вот я и подумал может есть ядра еще проще? а остальное все можно былобы сделать в виде подключаемых модулей... вот и захотелось нарисовать такие маленькое, но достаточное ядро, а уже к нему прикручивать все остальное. |
Автор: | SII [ 02 сен 2011, 10:33 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
Термины давно уже употребляются как попало, больше с рекламными целями. Например, везде утверждается, что ARM -- это RISC-процессор, хотя от RISCа там, кроме названия, осталась лишь невозможность напрямую обрабатывать данные в памяти (их предварительно нужно загружать в регистры). То же касается и ядер. Везде заявляют, что QNX -- микроядерная ОС, хотя на самом деле это система с монолитным ядром, из которого вынесен только один компонент -- драйверы, а всё остальное находится в ядре. Ну а изначально концепция микроядра предусматривала вынос из него в совершенно отдельные задачи (каждая из которых имеет собственное адресное пространство и выполняется в пользовательском режиме) всех возможных функций ОС. В частности, в настоящем микроядре нет даже планировщика как такового, есть только примитивные средства коммуникации между различными задачами, а также переключалка задач. Любая задача, желая что-то сообщить другой задаче, обращается стандартным образом к этому микроядру и говорит ему: передай-ка этот пакет информации задаче такой-то. Микроядро оформляло сообщение должным образом и цепляло к очереди сообщений указанной задачи, после чего активизировало её. Естественно, подобная схема на практике окажется крайне неэффективной из-за многочисленных переключений контекста и медленного выполнения даже простейших системных сервисов. |
Автор: | qeos [ 02 сен 2011, 11:24 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
SII писал(а): Естественно, подобная схема на практике окажется крайне неэффективной из-за многочисленных переключений контекста и медленного выполнения даже простейших системных сервисов. а если это делать в одном адресном пространстве? ну соответственно сделать дополнительно соответствующую защиту от разрушения и пр.? собственно и хочется такое минимальное ядро. ничего лишнего. что надо в нем обеспечить? какие функции должны быть в таком ядре? |
Автор: | SII [ 02 сен 2011, 14:03 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
Если адресное пространство одно -- это уже ОС с монолитным ядром. Ключевой особенностью микроядра как концепции является именно жёсткое разнесение различных подсистем по разным адресным пространствам с целью их 100% защиты друг от друга. Собственно, именно поэтому QNX на самом деле не является микроядерной системой: у них вынесены и имеют собственные адресные пространства только драйверы. А необходимый набор функций определяется стоящими перед ОС задачами. И никто, кстати, не заставляет реализовать всё сразу. Что мешает идти постепенно? |
Автор: | qeos [ 02 сен 2011, 14:10 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
SII писал(а): Если адресное пространство одно -- это уже ОС с монолитным ядром. Ключевой особенностью микроядра как концепции является именно жёсткое разнесение различных подсистем по разным адресным пространствам с целью их 100% защиты друг от друга. Собственно, именно поэтому QNX на самом деле не является микроядерной системой: у них вынесены и имеют собственные адресные пространства только драйверы. А необходимый набор функций определяется стоящими перед ОС задачами. И никто, кстати, не заставляет реализовать всё сразу. Что мешает идти постепенно? и все же, какой набор функций кажется лично тебе достаточным для ядра? минимум |
Автор: | SII [ 02 сен 2011, 14:26 ] |
Заголовок сообщения: | Re: помогите написать нано\пикоядро |
Вот список кодов системных сервисов в моей оси, в целом реализованных на данный момент. Порядок их следования, в общем-то, соответствует их важности для моих задач (хотя не на 100%): Код: SS_Open_File EQU 0
SS_Close_File EQU 1 SS_Start_IO EQU 2 SS_Cancel_IO EQU 3 SS_Open_Event EQU 4 SS_Close_Event EQU 5 SS_Get_Event_State EQU 6 SS_Set_Event_State EQU 7 SS_Wait_Object EQU 8 SS_Wait_Any_Object EQU 9 SS_Wait_All_Objects EQU 10 SS_Exit_ASS_Handler EQU 11 SS_Enable_ASS EQU 12 SS_Disable_ASS EQU 13 SS_Wait_ASS EQU 14 SS_Open_Mutex EQU 15 SS_Close_Mutex EQU 16 SS_Release_Mutex EQU 17 SS_Open_Semaphore EQU 18 SS_Close_Semaphore EQU 19 SS_Up_Semaphore EQU 20 SS_Yield EQU 21 SS_Get_MS_Counter EQU 22 SS_Set_Timer EQU 23 SS_Cancel_Timer EQU 24 |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |