OSDev

для всех
Текущее время: 30 апр 2024, 10:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: помогите написать нано\пикоядро
СообщениеДобавлено: 01 сен 2011, 23:07 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
сабж.
нужно чтото типо алгоритма. что надо, какие функции.. если есть готовое будет вообще прекрасно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 01:42 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
А чего его писать? Там кода один цикл. И табличка переходов. И очередь задач. И процедура планирования - которая из списка задач поочерёдно берет задачи.

По ищи в интернете по РТОС они используются в микроконтроллерах. Статей много. Так как такая ОС занимает всего несколько строк кода, то весь код умещается в статье.

http://easyelectronics.ru/avr-uchebnyj- ... adach.html
http://habrahabr.ru/blogs/controllers/58366/
и тд.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 04:59 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
pavia писал(а):

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 10:15 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Это бы я у тебя хотел узнать. Но меньше уже некуда.

Есть понятие микроядра. В микроядро состоит из планировщика. А все остальное менеджер памяти, защита, виртуальная ФС и так далее вынесены из ядра. И общение происходит при помощи механизмов межзадачноо(межпроцессорного) взаимодействия. А да обязательное условие микроядерного, то что разные процессы имеют разные адресные пространства - тем самым обеспечивается минимальная защита.

Правда разные люди по разному обычно классифицируют ядра.

К примеру некоторые к микроядерным относят модульные ос. Где драйвера сервисы состоят из модулей. Но при этом эти модули находятся в едином адресном пространстве.
Другие заявляют что раз модули находятся в одном адресном пространстве, то это монолитное ядро, а не микроядерное.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 10:32 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
ну тема собственно возникла после того как я посмотрел в ядро L4..
насколько я понимаю там только такие функции:
Планировщик - управляет задачами и процеассами, раздает приоритеты, переключает.
Обработчик прерываний - получает и обробатывает аппаратные прерывания
IPC - обработка и передача сообщенгий между задачами
Управление сигналами между потоками
Управление потоками

вроде все..

вот я и подумал может есть ядра еще проще? а остальное все можно былобы сделать в виде подключаемых модулей...
вот и захотелось нарисовать такие маленькое, но достаточное ядро, а уже к нему прикручивать все остальное.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 10:33 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Термины давно уже употребляются как попало, больше с рекламными целями. Например, везде утверждается, что ARM -- это RISC-процессор, хотя от RISCа там, кроме названия, осталась лишь невозможность напрямую обрабатывать данные в памяти (их предварительно нужно загружать в регистры). То же касается и ядер. Везде заявляют, что QNX -- микроядерная ОС, хотя на самом деле это система с монолитным ядром, из которого вынесен только один компонент -- драйверы, а всё остальное находится в ядре.

Ну а изначально концепция микроядра предусматривала вынос из него в совершенно отдельные задачи (каждая из которых имеет собственное адресное пространство и выполняется в пользовательском режиме) всех возможных функций ОС. В частности, в настоящем микроядре нет даже планировщика как такового, есть только примитивные средства коммуникации между различными задачами, а также переключалка задач. Любая задача, желая что-то сообщить другой задаче, обращается стандартным образом к этому микроядру и говорит ему: передай-ка этот пакет информации задаче такой-то. Микроядро оформляло сообщение должным образом и цепляло к очереди сообщений указанной задачи, после чего активизировало её. Естественно, подобная схема на практике окажется крайне неэффективной из-за многочисленных переключений контекста и медленного выполнения даже простейших системных сервисов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 11:24 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
SII писал(а):
Естественно, подобная схема на практике окажется крайне неэффективной из-за многочисленных переключений контекста и медленного выполнения даже простейших системных сервисов.

а если это делать в одном адресном пространстве? ну соответственно сделать дополнительно соответствующую защиту от разрушения и пр.?

собственно и хочется такое минимальное ядро. ничего лишнего. что надо в нем обеспечить? какие функции должны быть в таком ядре?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 14:03 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Если адресное пространство одно -- это уже ОС с монолитным ядром. Ключевой особенностью микроядра как концепции является именно жёсткое разнесение различных подсистем по разным адресным пространствам с целью их 100% защиты друг от друга. Собственно, именно поэтому QNX на самом деле не является микроядерной системой: у них вынесены и имеют собственные адресные пространства только драйверы.

А необходимый набор функций определяется стоящими перед ОС задачами. И никто, кстати, не заставляет реализовать всё сразу. Что мешает идти постепенно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 14:10 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
SII писал(а):
Если адресное пространство одно -- это уже ОС с монолитным ядром. Ключевой особенностью микроядра как концепции является именно жёсткое разнесение различных подсистем по разным адресным пространствам с целью их 100% защиты друг от друга. Собственно, именно поэтому QNX на самом деле не является микроядерной системой: у них вынесены и имеют собственные адресные пространства только драйверы.

А необходимый набор функций определяется стоящими перед ОС задачами. И никто, кстати, не заставляет реализовать всё сразу. Что мешает идти постепенно?


и все же, какой набор функций кажется лично тебе достаточным для ядра? минимум


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 сен 2011, 14:26 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Вот список кодов системных сервисов в моей оси, в целом реализованных на данный момент. Порядок их следования, в общем-то, соответствует их важности для моих задач (хотя не на 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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB