реклама на сайте
подробности

 
 
> Технология динамической загрузки модулей для RTOS, Какие есть методы и инструменты.
AlexandrY
сообщение Dec 29 2012, 21:48
Сообщение #1


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Как-то тут проскочила мысль, что настоящая операционная система должна грузить сторонние приложения и выполнять их.

Очевидно, что это реализовать для небольших проектов и даже не с ОС совершенно элементарно.
Для этого при компиляции основного ядра делают symbol definition file и потом этот файл и файлы хидеров передают третьей стороне чтобы те могли правильно скомпилировать и слинковать свои приложения для ядра.

Но когда в ядре количество функций переваливает за тысячу, то сделать переносимые хидеры в ручную представляется проблемой.
Также желательно сделать отдельный модуль с так называемой jump table чтобы уменьшить зависимость от мелких изменений и перекомпиляций ядра. Как-то подумать о фильтрации, чтобы не все подряд сущности из ядра попадали в symbol definition file и т.д.

И тогда вопрос - заморачивается ли кто-нибудь с этим и известны ли инструменты автоматизации всего этого процесса.


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vshemm
сообщение Jan 2 2013, 20:42
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



Цитата
Как-то тут проскочила мысль, что настоящая операционная система должна грузить сторонние приложения и выполнять их.

Мысль не очень, динамическая загрузка приложений ортогональна понятию ОС.
Практика показывает, чем более эмдеддед ОС, тем проще и технологичнее использовать статическое связываение,
в виде либ + хидеров, например.

Про загрузку dll - там связывание может происходить по ординалам, т.е. тупо по номерам. Есть еще связывание по хешу,
тот же CRC32 подойдет, причем все делается на этапе компиляции (включая проверку на коллизии). Где смотреть
примеры реализации - тот же линух и сорцы прочих ос. Так что 300КБ можно уменьшить в разы. Грубо говоря, при экспорте
символа он оборачивается в макрос, строится отдельная секция, которую потом обрабатывает линкер в ld-скрипте.
Ну а загрузчик уже юзает данную секцию в своих целях.

Про загрузку кода по произвольным адресам - гуглите relocation и fixup. Классическая дока по эльфам (собственно,
виндовый PE формат это упрощенный эльф) - http://www.becbapatla.ac.in/cse/naveenv/docs/LL1.pdf
Там есть все - разные архитектуры, разный эндианнес, вопросы MMU...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AlexandrY   Технология динамической загрузки модулей для RTOS   Dec 29 2012, 21:48
- - a9d   Для начала ЦитатаОперационная система (Operating ...   Dec 29 2012, 22:03
|- - AlexandrY   Цитата(a9d @ Dec 30 2012, 00:03) Как видн...   Dec 30 2012, 13:41
- - haker_fox   QUOTE (AlexandrY @ Dec 30 2012, 06:48) И ...   Dec 30 2012, 13:09
- - a9d   Насколько я помню в винде адреса API функций прогр...   Dec 30 2012, 14:31
|- - AlexandrY   Цитата(a9d @ Dec 30 2012, 16:31) Наскольк...   Dec 31 2012, 12:09
- - haker_fox   Гм... чувствую благовейный ветерок) Как когда-то д...   Dec 31 2012, 06:04
- - a9d   А как планируете решать проблему с MMU ? Также как...   Dec 31 2012, 14:59
|- - AlexandrY   Цитата(a9d @ Dec 31 2012, 16:59) А как пл...   Dec 31 2012, 15:31
- - a9d   Вот об отсутствии и идет речь. Вот простой пример...   Dec 31 2012, 15:37
|- - AlexandrY   Цитата(a9d @ Dec 31 2012, 17:37) Вот об о...   Dec 31 2012, 16:50
|- - haker_fox   QUOTE (AlexandrY @ Jan 1 2013, 01:50) Сущ...   Jan 2 2013, 09:39
|- - AlexandrY   Цитата(vshemm @ Jan 2 2013, 22:42) Про за...   Jan 3 2013, 07:51
|- - vshemm   Цитата(AlexandrY @ Jan 3 2013, 11:51) Нас...   Jan 8 2013, 16:07
|- - AlexandrY   Цитата(vshemm @ Jan 8 2013, 18:07) Боюсь,...   Jan 16 2013, 12:07
- - desh   Контики от А. Дункельса и компании поддерживает за...   Jan 13 2013, 07:56
|- - SyncLair   Цитата(desh @ Jan 13 2013, 11:56) Контики...   Jan 18 2013, 19:30
|- - haker_fox   QUOTE (SyncLair @ Jan 19 2013, 04:30) То ...   Jan 19 2013, 05:36
|- - AlexandrY   Цитата(haker_fox @ Jan 19 2013, 07:36) Эт...   Jan 19 2013, 11:08
||- - haker_fox   QUOTE (AlexandrY @ Jan 19 2013, 20:08) Вы...   Jan 20 2013, 08:54
|- - kolobok0   Цитата(haker_fox @ Jan 19 2013, 09:36) .....   Jan 20 2013, 01:28
|- - AlexandrY   Цитата(kolobok0 @ Jan 20 2013, 03:28) под...   Jan 20 2013, 10:29
|- - kolobok0   Цитата(AlexandrY @ Jan 20 2013, 14:29) .....   Jan 20 2013, 16:25
||- - AlexandrY   Цитата(kolobok0 @ Jan 20 2013, 18:25) вос...   Jan 20 2013, 19:24
||- - haker_fox   QUOTE (AlexandrY @ Jan 21 2013, 03:24) Т....   Jan 21 2013, 00:58
||- - kolobok0   Цитата(AlexandrY @ Jan 20 2013, 23:24) .....   Jan 21 2013, 08:47
|- - SyncLair   Цитата(AlexandrY @ Jan 20 2013, 14:29) Дл...   Jan 22 2013, 14:30
|- - AlexandrY   Цитата(SyncLair @ Jan 22 2013, 16:30) Есл...   Jan 22 2013, 15:10
|- - SyncLair   Цитата(AlexandrY @ Jan 22 2013, 19:10) Чт...   Jan 22 2013, 18:05
- - neiver   Насчёт взаимодействия загружаемого модуля и ядра, ...   Jan 16 2013, 15:01
- - _Pasha   Цитата(neiver @ Jan 16 2013, 19:01) SVC -...   Jan 16 2013, 15:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 18:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.0144 секунд с 7
ELECTRONIX ©2004-2016