| 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/ | |