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 писал(а):

по ссылкам это просто диспечеры задач... это и есть нано ядро?

Автор:  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/