Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ОС: минимальный набор компонентов и сервисов
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Дон Амброзио
Допустим есть такая абстрактная задача: разработать RTOS для микроконтроллера с очень ограниченным объёмом памяти.

Как вы считаете, Господа, какой минимальный набор компонентов должна иметь программа, зашиваемая в этот микроконтроллер, чтобы её можно было назвать операционой системой?

Какой минимальный функционал должен обеспечиваться, чтобы то, что зашито в микроконтроллер, можно было назвать громким словом "ОПЕРАЦИОННАЯ СИСТЕМА".

Какой минимальный набор сервисов должно обеспечивать ядро ОС?

Какие сервисы Вы считаете самыми важными и необходимыми?
Razubaev
1. Специфика железа скрывается драйверами.
2. Ввод - вывод.
3. Файловая система.
4. Процессор командной строки для разбора команд пользователя
5. Загрузка и выполнение программ.
по желанию:
6. Поддержка сети.
MrYuran
Цитата(Razubaev @ May 19 2008, 14:08) *

Да... Типичное представление обывателя о функциях ОС...
Всё вышеперечисленное можно сделать в виде обычной программы с использованием различных библиотек.
sergeeff
scmRTOS - неплохой кандидат на звание минимальной RTOS
Дон Амброзио
Цитата(sergeeff @ May 19 2008, 15:00) *
scmRTOS - неплохой кандидат на звание минимальной RTOS

Почему?

Есть и более "минимальные". Мне как-то в инете попадалась ОСь для ATtiny

Я считаю минимально необходимой функцией операционной системы - это управление доступом к разделеляемым между приложениями ресурсами и наличие ядра.

Т.е. простейший переключатель, переключающий каждые 20мСек контекст процессора уже можно назвать операционной системой, т.к. в этом случае есть и shared-ресурс(процессорное время) и механизм управления доступом к этому ресурсу (в данном примере просто по истечении кванта времени) и есть "ядро"(в приведённом примере - переключатель контекста по таймеру ).
MrYuran
Цитата(Дон Амброзио @ May 19 2008, 15:22) *
Есть и более "минимальные". Мне как-то в инете попадалась ОСь для ATtiny

Я видал ещё более минимальные.
Правда, это не называлось "ОС", но все признаки налицо.
мэйн - простейший шедулер, анализирующий флаги процессов.
Флаги выставляются в прерываниях от таймера или устройств.
шедулер анализирует и запускает процесс обработки флага в соответствии с приоритетом.
После опроса всех флагов процессор засыпает до следующего прерывания.
Отличное решение для батарейных устройств.
Проц - МСП430.

В принципе, если в scmRTOS определить процесс idle как LPM и период системного таймера сделать побольше, то наверно то же самое получится...
Razubaev
Цитата(MrYuran @ May 19 2008, 14:22) *
Да... Типичное представление обывателя о функциях ОС...


Все давно изобрено. Попросили минимум - написал.

Но в результате: ОС должна дать обывателю возможность запустить любую программу в любое время без участия разработчика (компиляции, перепрошивки...).
Дон Амброзио
Цитата(Razubaev @ May 19 2008, 15:46) *
Все давно изобрено. Попросили минимум - написал.

Но в результате: ОС должна дать обывателю возможность запустить любую программу в любое время без участия разработчика (компиляции, перепрошивки...).

В теме речь идёт об ОС для микроконтроллера. Так что ни о каком запуске юзером на нём компиляции или программы речи не идёт
Razubaev
Упростим вопрос до "диспетчера процессов"?
http://ru.wikipedia.org/wiki/Диспетчер_(оп...ионные_системы)

Тогда это не об ОС.
MrYuran
Да... А вот scmRTOS вычеркнули из списка:
как не имеющую энциклопедической значимости
Дон Амброзио
Цитата(Razubaev @ May 19 2008, 16:44) *
Упростим вопрос до "диспетчера процессов"?
http://ru.wikipedia.org/wiki/Диспетчер_(оп...ионные_системы)

Тогда это не об ОС.


А что? ОС только для компьютера с монитором и давящим на кнопки юзверем впридачу бывают ? А?
zltigo
Цитата(MrYuran @ May 19 2008, 15:48) *
Да... А вот scmRTOS вычеркнули из списка:
как не имеющую энциклопедической значимости

Причем кто:
Цитата
Меня зовут Евгений Генкин, я всегда рад помочь новичкам. Обращаться можно по-русски; You can talk to me in English; Можете звертатися українською. ICQ: 262-460-828

Я здесь для участия в создании полноценной, точной энциклопедии на русском языке. Это значит ВП:ЧНЯВ и ВП:НТЗ, а не проталкивание политических, рекламных, националистических или религиозных ТЗ.

Я родился и живу в Харькове, в Украине. Но очень люблю путешествовать, был в 44 странах мира, в четырех из них прожил больше, чем по полгода, но Харьков мне пока нравится больше wink.gif.
Я интересуюсь историей Древнего мира, лингвистикой (дешифровкой древних письменностей), географией и немного астрономией.

Ну сразу видать шибко умного, блин, специалиста по операционным системам. Каких только M*даков не бывает.
Razubaev
ОС не только для компьютера с монитором и кнопками.
Компьютер(вычислительная машина) должен иметь устройства ввода и вывода.
Для примера:
калькулятор МК-52 (http://ru.wikipedia.org/wiki/МК-52).
учебный комплект УМК-80
нынешние PC-ки без мониторов и клавиатур, но с доступом через VNC/Radmin
Первые два примера странноваты, но пользователь мог, не выключая, загрузить новую программу,
запустить ее, ввести данные и получить ожидаемые (или неожидаемые) результаты.

scmRTOS как бы не хотелось разработчикам не является ОС.
Причина: нельзя запустить еще одну или более программу.
Это только набор, библиотека или заготовка для разработчика.
Nitrotoluol
мое мнение это:
TCP/IP стек
Поддержка файловых систем
Загрузчик образов
I/O
MrYuran
Цитата(Razubaev @ May 20 2008, 13:11) *

Не надо вот только опять тыкать в вики, во всеобъемлющей компетенции тамошних спецов уже убедились...

То есть, если калькулятор позволяет пользователю сохранить десяток инструкций в памяти, то он обладает ОС, а если scmRTOS позволяет создавать абстрактные приложения и за 5 минут переносить их из одного проекта в другой (причём независимо от железа), то это никакая не ОС...

Странная логика...
А если добавить туда библиотеку АПИ для работы с экранчиком, клавой и флешкой SD - то это уже будет ОС или ещё нет?
spf
Цитата(Razubaev @ May 20 2008, 16:11) *

Не стоит бросаться столь заносчивыми постами при отсутствии понимания сути.
Дон Амброзио
Отвечу что в моём понимании должна делать программа в микроконтроллере, чтобы её можно было назвать операционной системой:

1) Повышение уровня абстракции операций управления "железом" для потоков приложений посредством использования сервисов ядра (а значит в ОС должно быть ядро, которое абстрагирует приложения от "железа" предоставляя в распоряжение приложений набор унифицированных операций)
2) Обеспечение поддержки многозадачного/многопоточного программирования (поскольку использование операционной системы для однозадачного однопоточного приложения выглядит в наше время мягко говоря нонсенсом) : сохранение и переключение контекстов потоков, унифицированные средства взаимодействия/синхронизации потоков друг с другом, управления разделяемыми между разными потоками ресурсами.
3) Наличие диспетчера (планировщика, шедулера и т.п.), который отвечает за "справедливое" распределение процессорного времени отдельным потокам (в простейшем случае просто выделение всем потокам по очереди одинаковых квантов процессороного времени)

А на вопрос для чего нужна ОС (который очень многие задают и сами же отвечают: не нужна) отвечу так: ОС нужна для упрощения создания многопоточных приложений.
Razubaev
О вики: это первая ссылка гугла о МК-52.

Если МК-52 позволяет загружать программу пользователю, то это ОС.

о scmRTOS: цитата из его руководста (v2 rev83)
"Все процессы статические, т.е. их количество определяется на этапе сборки проекта, и они не могут
быть добавлены или удалены во время исполнения." (глава 2.1 "Обзор...")
Возможности загрузить новую программу для пользователя нет. Не ОС.

Добавление устройств к микропроцессору(микроконтроллеру) еще ничего не значит.
Если появится возможность загружать и запускать новые программы, то да это будет ОС.
Конечно должна быть еще поддержка файловой системы и командная строка.
Командная строка может быть реализована, как в Синклере, с жестокой проверкой при вводе.
aaarrr
Цитата(Razubaev @ May 20 2008, 17:06) *
Если появится возможность загружать и запускать новые программы, то да это будет ОС.
Конечно должна быть еще поддержка файловой системы и командная строка.
Командная строка может быть реализована, как в Синклере, с жестокой проверкой при вводе.

Бросте читать википедию, смешно просто.

Цитата
Основные функции (простейшие ОС):

Загрузка приложений в оперативную память и их выполнение;
Дон Амброзио
Цитата(Razubaev @ May 20 2008, 17:06) *
Если появится возможность загружать и запускать новые программы, то да это будет ОС.
Конечно должна быть еще поддержка файловой системы и командная строка.

Господь с Вами, какая командная строка в микроконтроллере? Ведь там и юзверя-то нет как такового. Кто будет набивать командную строку?

А насчёт загрузки программ? Делаю иногда - гружу во FLASH по сети нужный мне поток
MrYuran
Цитата(aaarrr @ May 20 2008, 17:22) *
Бросте читать википедию, смешно просто.

Ну почему же, вот например, аглицкая версия определения ОС: (наверняка не член клуба путешественников писал)
Цитата
An operating system is the software component of a computer system that is responsible for the management and coordination of activities and the sharing of the resources of the computer. The operating system (OS) acts as a host for application programs that are run on the machine. As a host, one of the purposes of an operating system is to handle the details of the operation of the hardware. This relieves application programs from having to manage these details and makes it easier to write applications


Как видим, ни слова о связи с пользователем, TCP/IP, 20-дюймовых мониторах и т.д.
Главный критерий - абстракция относительно архитектуры, а также управление и распределение ресурсов компьютера (контроллера).
Дон Амброзио
Цитата(MrYuran @ May 20 2008, 18:34) *
Ну почему же, вот например, аглицкая версия определения ОС: (наверняка не член клуба путешественников писал)
Как видим, ни слова о связи с пользователем, TCP/IP, 20-дюймовых мониторах и т.д.
Главный критерий - абстракция относительно архитектуры, а также управление и распределение ресурсов компьютера (контроллера).

ну а я что говорил выше? разве не то же самое?
MrYuran
Цитата(Razubaev @ May 20 2008, 17:06) *
Возможности загрузить новую программу для пользователя нет. Не ОС.

Конечно должна быть еще поддержка файловой системы и командная строка.
Командная строка может быть реализована, как в Синклере, с жестокой проверкой при вводе.

maniac.gif smile3009.gif maniac.gif twak.gif
ПОУБЫВАЛ БЫ!!!

То есть, если каждая моя железяка (включая макеты для собственных нужд) умеет общаться по УАРТ, то можно говорить о наличии ОС?
Я так не считаю.
Насчёт загрузки приложений пользователя - запросто можно реализовать, в ближайшее время займусь (надеюсь не без помощи местного коммунити)
aaarrr
Цитата(MrYuran @ May 20 2008, 18:34) *
Ну почему же, вот например, аглицкая версия определения ОС: (наверняка не член клуба путешественников писал)

В английской версии тоже есть фраза, которую можно превратно истолковать:
Цитата
An operating system's most basic function is to support the running of programs by the users.


Просто понятие "пользователь" нужно воспринимать не как "человек, запускающий свои приложения из командной строки", а несколько шире.
Дон Амброзио
Цитата(aaarrr @ May 20 2008, 18:48) *
В английской версии тоже есть фраза, которую можно превратно истолковать:
Просто понятие "пользователь" нужно воспринимать не как "человек, запускающий свои приложения из командной строки", а несколько шире.

Дык ЯДРО и загружает и выгружает приложения из процессора при диспетчеризации.. наверное это имеется в виду в английском определении
AlexandrY
Однако же вас сильно развели.
В MK-52 была не OS, а примитивный монитор. Жалкое подобие BIOS-а
Такие же мониторы были и в синкрерах и в других ранних микрокомпьтерах.
Подобные мониторы вшиты в современные микроконтроллеры уже при производстве.
Уже более как 10 лет эта фича в них присутствует.
Помню модули Dallas 500x 10-и летней давности на ядре 51-го, там грузилась программа пользователя с COM порта совершенно непринужденно и командная строка была. Но OC-ю там не пахло.
Так что загрузку давно проехали, она есть при любых обстоятельствах.

И scmRTOS не может не поддерживать загрузку, потому что загрузка в этой scmRTOS не нуждается.


Цитата(Razubaev @ May 20 2008, 16:36) *
О вики: это первая ссылка гугла о МК-52.

Если МК-52 позволяет загружать программу пользователю, то это ОС.

о scmRTOS: цитата из его руководста (v2 rev83)
"Все процессы статические, т.е. их количество определяется на этапе сборки проекта, и они не могут
быть добавлены или удалены во время исполнения." (глава 2.1 "Обзор...")
Возможности загрузить новую программу для пользователя нет. Не ОС.

Добавление устройств к микропроцессору(микроконтроллеру) еще ничего не значит.
Если появится возможность загружать и запускать новые программы, то да это будет ОС.
Конечно должна быть еще поддержка файловой системы и командная строка.
Командная строка может быть реализована, как в Синклере, с жестокой проверкой при вводе.
Razubaev
Попробую еще раз объяснить, что такое "операционная система" в моем понимании.

Это набор программ, которые
1. позволяют пользователю загружать и запускать любую программу.
2. предоставляют работу с файлами.
3. дадут пользователю возможность ввести команду.

Естественно ввод-вывод и скрытие особенностей железа.

Если одного из этого нет - то уже не ОС. Какой пункт для ОС лишний?
sergeeff
На мой взгляд - все три.
Razubaev
Цитата(sergeeff @ May 21 2008, 13:58) *
На мой взгляд - все три.


Тогда что же должен уметь набор программ, чтобы смело называться ОС
axle
Цитата(Razubaev @ May 21 2008, 16:44) *
Попробую еще раз объяснить, что такое "операционная система" в моем понимании.

Это набор программ, которые
1. позволяют пользователю загружать и запускать любую программу.
2. предоставляют работу с файлами.
3. дадут пользователю возможность ввести команду.

Естественно ввод-вывод и скрытие особенностей железа.

Если одного из этого нет - то уже не ОС. Какой пункт для ОС лишний?

Возьмем к примеру eCos, хотя и других примеров полно.

1. eCos линкуется вместе с программой и результат представляет из себя единое целое. Как пользователь может запустить другую программу?
2. могу и отключить пакеты работы с файлами, если не надо
3. уж никаких команд там вводить точно нельзя, если только это не команды твоей программе
smile.gif
MrYuran
Недавно по радио в маршрутке слышал.
Ну, типа розыгрыш призов, викторина, соревнуются парень и девушка.
Парень - технарь, ему значит задают вопросы про картины, литературу и проч.
Девка - гуманитарий. Ей ведущий задаёт вопрос:
- Какие операционные системы вы знаете?
- Ну, ... вёрд ...
Razubaev
Рискну представить реализацию трех компонентов ОС для следующей однопользовательской многозадачной системы:
железо: CPU, USART, энергонезависимое озу, некоторое количество входов и выходов. Процессор припаян намертво, с предварительно прошитой программой. Общая память программ 2000 машинных слов. ОС защита в первых 1000 словах, пользователю достаются верхние 1000. Программа пользователя №0 располагается в адресах 1000..1099, №1 : 1100..1199; №2: 1200..1299; ... №9: 1900..1999. Ограничение на длину программы пользователя - 100 слов. Максимальное количество программ пользователя - 10.
программа:
-файловая система. Используется энергонезависимое ОЗУ (например 1000 ячеек).
файл №0 (ячейки №1...99), №1(ячейки №101....199) и т.д.
ячейка №0,100,200,..900 - флаг существования соответствующего файла.
Каталоги для простоты не рассматриваю.
- командный процессор и загрузчик программ рассмотрю на примерных действиях пользователя.
Системный процесс слушает USART и все символы помещает в буфер для программы пользователя.
Но если приходит строка "++++++++", то последующие символы достаются командному процессору.
Затем по USART приходит "L 1 23" (загрузить в 1-ую страницу программу длиной 23 слова) и далее данные. Данные записываются начиная с адреса 1100. Затем, если все хорошо, в USART высылаем "ОК" и USART становится доступным для пользовательских программ.
Загрузчик подготовливает данные для первого запуска программы (начальные значения всех регистров CPU). В очереди процессов появляется "пользовательский процесс №1" и когда-нибудь CPU выполняет заветyые JMP/CALL 1100. Могу предположить еще команды "D 4" (удалить программу №4), "S 5" (остановить программу №5), "R 6" (запустить программу №6).

Чуть позже расскажу, что будет делать пользователь с этим изделием.
aaarrr
Цитата(Razubaev @ May 22 2008, 10:44) *
Чуть позже расскажу, что будет делать пользователь с этим изделием.

Очень интересно будет узнать, зачем ему все это нужно, хе-хе.
MrYuran
Да... 100 байт на программу пользователя... вы видимо действительно мыслите в категориях МК-51...
И упорно рассматриваете только один аспект применения ОС (причём необязательный) - это HMI (или хуман-машин интерфейс).
На самом деле функции загрузки и чтения программ отлично выполняет бутлодер, зашитый в большинство контроллеров. Можно загрузить хоть 1 байт, хоть 10, хоть всю флешь перешить.
Что ещё... Командный процессор - да без проблем, баловался поначалу, из терминала посылал на железку "set led 1 on" (утрирую, но что-то в этом роде) - очень быстро надоедает.
Файловая система - выбирай на вкус, куча библиотек.
TCP/IP - пожалуйста. (хватило бы памяти и мощи процессора)

И вот когда у вас есть вот это всё (см. выше), не считая основной программы, которая в общем-то нас и интересует, тогда и начинаются вопросы распределения ресурсов и облегчения сложности (извиняйте за каламбур).

И вот тогда встаёт вопрос - применять ОС или нет.
Под ОС опять же подразумевается не Explorer+IE+WMP+..., а прежде всего kernel (+API)

Например, если задача считать порт->перетасовать->выплюнуть в другой порт, то вряд ли.
А вот если нужно параллельно выполнять несколько задач, причём в реальном времени , то тут даже простейшая RTOS (типа scm, которую некоторые за ОС не считают), очень даже выручает.
Razubaev
Счастливый пользователь преобрел красивую коробку в магазине. Принес домой, вытащил плату, компакт-диск, толстую книгу... И решил из этого сделать охранную сигнализацию.

Каждая программа компилируется отдельно, загружается отдельно (на совести пользователя в кого куда). Запуск, останов, удаление программы по желанию.
Из того,что программа может находиться по любому адресу, компилятор должен использовать только относительную адресацию для переходов внутри программы. Для вызовов функций, реализованных в ОС - только абсолютная.

программа №1:
main()
{
char s[20];
time t;
_output(4,0); // Сирена
for(;;)
if( _input(1) && _input(3) ) // разбитое окно и в режиме охраны
{
_output(4,1);
t = _GetTime(); _TimeToString(t,s);
_fopen(2); _fprintf(2,s); _fclose(2);
_printf("%s Window die\n",s);
}
}
программа №2:
main()
{
char s[20];
time t;
_output(4,0);
for(;;)
if( _input(2) ) // открытая дверь
{
t0 = _GetTime();
_delay( 40 );
if( _input(3) == 0 ) // выключатель снятия с охраны
{
_output(4,1);
t = _GetTime(); _TimeToString(t,s);
_fopen(5); _fprintf(5,s); _fclose(5);
_printf("%s Door open\n",s);
}
}

}

программа №3: Обмен с вышестоящей системой
main()
{
char s[20];
int n;
for(;;)
{
gets(s);
if( _strcmp(s,"ask") )
{
_fopen(2); _fgets(2,s); _printf("%s\n",s); _fclose(2);
_fopen(5); _fgets(5,s); _printf("%s\n",s); _fclose(5);
}
}
}
Все функции с подчеркиванием - системные.
Для _fopen(5) при компиляции в код добавляются пара команд CPU: mov Rх,5 и CALL 0345.

В результате пользователь может не знаеть какой внутри процессор (жирная клякса на плате).
Перевод с исходника в машинные коды - проблемы компилятора.
Реализованы _fopen/_fclose, fprintf/fscanf... пожалуйста файловая система.
Команды устройству "почти в терминах пользователя"
Загрузка и выгрузка программ.

Если пользователь захочет поменять код ОС (первые 1000 слов), то назовет его хакером.

Цитата(MrYuran @ May 22 2008, 11:12) *
Да... 100 байт на программу пользователя... вы видимо действительно мыслите в категориях МК-51...
И упорно рассматриваете только один аспект применения ОС (причём необязательный) - это HMI (или хуман-машин интерфейс).


Количество взял с потолка. 100 слов (не байт). Процессор может быть любой разрядности.

Да и железо+программы изобретаются на благо человека, а не Шварцнегера со стеклянным глазом.
Через год-два пользователь придет к железяке, хоть пыль протереть.

Просто, хочу сказать, чтобы называться ОС, нужно реализовать все. Если чего нет, то это будет программа контроллера. Если требуется специальное устройство(программатор), то это тоже не ОС.
MrYuran
Цитата
Просто, хочу сказать, чтобы называться ОС, нужно реализовать все. Если чего нет, то это будет программа контроллера. Если требуется специальное устройство(программатор), то это тоже не ОС.

Любая ОС состоит из ядра (kernel) и обвески (сервисы, драйвера, библиотеки, приложения, утилиты и т.д.)
Так вот: большинство микро-ОС (ОС для МК) представляют собой именно ядро с минимальным набором АПИ и сервисов. Всё остальное предлагается разработать самому. И это оправдано, поскольку спектр применения мк очень широк и писать универсальное решение для всех затруднительно.

А то что предлагаете вы - это вообще никакая не ОС, а просто хитрожопый загрузчик, единственный смысл которого я вижу в том, чтобы скрыть от пользователя прошивку и наживаться на продаже программно-аппаратного комплекса мк_с_хитрым_загрузчиком+хитрый_компилятор_самопального_ЯВУ
Сергей Борщ
Цитата(MrYuran @ May 22 2008, 11:20) *
Любая ОС состоит из ядра (kernel) и обвески (сервисы, драйвера, библиотеки, приложения, утилиты и т.д.)
Вообще-то это вопрос не из области торсионных полей, а относится к науке, которая насчитывает больше сотни лет. И в этой области есть устоявшаяся терминология, есть конкретные определения. Доктору путь в библиотеку.
Пока эта дискуссия напоминает детский спор о женщинах - каждый понимает, что в них что-то есть особенное, но никто не знает, что это называется "первичные половые признаки".
IgorKossak
Цитата(Сергей Борщ @ May 22 2008, 11:49) *
Пока эта дискуссия напоминает детский спор...

Причём не о том как сделать, на чём сделать и т. д. , а КАК НАЗВАТЬ! И это длится уже три страницы.
Автор, на мой взгляд, и до сих пор отличавшийся не особой (а точнее - никакой) полезностью на форуме, упорно движется в сторону бана.
aal
Цитата(Razubaev @ May 21 2008, 16:44) *
Попробую еще раз объяснить, что такое "операционная система" в моем понимании.

Это набор программ, которые
1. позволяют пользователю загружать и запускать любую программу.


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

Цитата(Razubaev @ May 21 2008, 16:44) *
2. предоставляют работу с файлами.


Это для ДОС - Дсковой Операционной Системы, а не ОС

Цитата(Razubaev @ May 21 2008, 16:44) *
3. дадут пользователю возможность ввести команду.


Это может и обычная прога, а не ос.

ИМХО Мин. требования к программе, чтоб её можно было назвать ОС:

1. Управление доступом к ресурсам: етс. машинное время, память, ио.
2. Запуск задач по событиям и приоритетам.

всё. Это уже ОС.

Конечно, для переносимости, желателен уровень абстакции железа. (Драйвера устройсв.) А вот библиотеки могут являтся как отдельными задачами, так и расширителями функционала ядра и не более того.
Demeny
Не нужно бояться слова "библиотека". smile.gif
Любая операционная система - это действительно просто библиотека функций, предоставляющих определённый сервис пользователю или программисту.
Часть функций вызывается по запросу, часть периодически (например, по прерыванию таймера) - сути дела это не меняет.
Любой драйвер - это тоже множество функций, которые вызываются уже имеющимися функциями ОС в случаях, определённых разработчиками ОС (например, при загрузке драйвера в память, при открытии устройства, при выгрузке и т. п.) , расширяя или сокращая таким образом уровень сервиса, предоставляемого ОС.

А уж каким образом передаётся управление из пользовательского приложения функциям из ОС, путём линковки промежуточных библиотек или напрямую - дело десятое.
Razubaev
Модератору: намек понял. Последний раз на эту тему.

Какого размера будет иметь система (без внешних устройств и питания) со следующими характеристиками: разрядность процессора - 32; скорость - 1 млн. операций ( что за смесь Гибсона - не знаю ); ОЗУ 1-4 Мб .
Примерный образец: http://www.computer-museum.ru/histussr/2-45.htm
Если повторить в настоящее время это будет размером с кирпич? Наверное в сигаретную пачку влезет.

Файловая система нужна как средство общения программ(процессов,потоков). Существуют же бездисковые "тонкие клиенты". И там работают программы, в которых используются fopen, fprintf ...
и эти программы не вдаются в подробности FDD,HDD, SD.

мини-микро-ОС не самоцель, а инструмент. Инструмент должен быть востребован.
Поэтому к минимальному набору добавлю API и средства разработки (пусть реализованные не разработчиком ОС).
ddiimmaa
На мой взляд для определения ОС достаточно следушего:

Есть аппаратные ресурсы, а есть программные. ОС -- то что создаёт программные ресурсы и выполняет контроль доступа к аппаратным ресурсам ( контроль доступа по времени(диспечеризация) или контроль доступа по безопасности (права доступа) или контроль доступа по размеру (квотирование) ).
Пример 1.
Программный ресурс -- файл. Аппаратный -- дискета. ОС - MS-DOS
Пример 2.
Программный ресурс -- процессорное время. Аппаратный ресурс -- ядро CPU или MCU. OC -- любая многозадачная в том числе и scrmOS.

Вот стек TCP/IP -- можно отнести и к функции ОС (вот там есть такое программный ресурс socket)
а можно вынести в отдельную библиотеку, где будет не ресурс который ОS предоставляет а просто указатель на структуру.

Также и человеко-машинным интерфейсом. Если аппаратная часть его предоставляется в виде программного ресурса, одно дело. А если у вас функции для работы с ком портом написаны в вашей программе под МК то это совсем не ОС.
Serega Doc
Доброго дня. Вставлю и свои 5 коп.

Вопросы к автору топика - назначение и область применение ОС?

Существует микроконтроллер с малым объемом ОЗУ (ATTiny44) потому как во все более меньшие контроллеры ниче и так толковое не влезет не говоря уже о многопоточности. Имеется в виду как ОЗУ так и FLASH программ.
Поэтому и Деспетчиризацию в таком контроллере можно использовать круговую.
И отрабатывать события только необходимых аппаратных блоков.
И в силу малого объема ОЗУ синхронизации потоков и межпотоковое взаимодействие не реализовывать.

Ну а в контроллер по мощьнее (например: ATMega 128) нужно в зависимости от задачи применять необходимый набор опций.
Это могут быть и приоритеты у потоков и различные механизмы межпотокового взаимодействия (мьютексы, семафоры и др...)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.