Перейти к содержанию
    

ОС: минимальный набор компонентов и сервисов

Недавно по радио в маршрутке слышал.

Ну, типа розыгрыш призов, викторина, соревнуются парень и девушка.

Парень - технарь, ему значит задают вопросы про картины, литературу и проч.

Девка - гуманитарий. Ей ведущий задаёт вопрос:

- Какие операционные системы вы знаете?

- Ну, ... вёрд ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рискну представить реализацию трех компонентов ОС для следующей однопользовательской многозадачной системы:

железо: 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).

 

Чуть позже расскажу, что будет делать пользователь с этим изделием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чуть позже расскажу, что будет делать пользователь с этим изделием.

Очень интересно будет узнать, зачем ему все это нужно, хе-хе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да... 100 байт на программу пользователя... вы видимо действительно мыслите в категориях МК-51...

И упорно рассматриваете только один аспект применения ОС (причём необязательный) - это HMI (или хуман-машин интерфейс).

На самом деле функции загрузки и чтения программ отлично выполняет бутлодер, зашитый в большинство контроллеров. Можно загрузить хоть 1 байт, хоть 10, хоть всю флешь перешить.

Что ещё... Командный процессор - да без проблем, баловался поначалу, из терминала посылал на железку "set led 1 on" (утрирую, но что-то в этом роде) - очень быстро надоедает.

Файловая система - выбирай на вкус, куча библиотек.

TCP/IP - пожалуйста. (хватило бы памяти и мощи процессора)

 

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

 

И вот тогда встаёт вопрос - применять ОС или нет.

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

 

Например, если задача считать порт->перетасовать->выплюнуть в другой порт, то вряд ли.

А вот если нужно параллельно выполнять несколько задач, причём в реальном времени , то тут даже простейшая RTOS (типа scm, которую некоторые за ОС не считают), очень даже выручает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Счастливый пользователь преобрел красивую коробку в магазине. Принес домой, вытащил плату, компакт-диск, толстую книгу... И решил из этого сделать охранную сигнализацию.

 

Каждая программа компилируется отдельно, загружается отдельно (на совести пользователя в кого куда). Запуск, останов, удаление программы по желанию.

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

 

программа №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 слов), то назовет его хакером.

 

Да... 100 байт на программу пользователя... вы видимо действительно мыслите в категориях МК-51...

И упорно рассматриваете только один аспект применения ОС (причём необязательный) - это HMI (или хуман-машин интерфейс).

 

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

 

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

Через год-два пользователь придет к железяке, хоть пыль протереть.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Любая ОС состоит из ядра (kernel) и обвески (сервисы, драйвера, библиотеки, приложения, утилиты и т.д.)

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

 

А то что предлагаете вы - это вообще никакая не ОС, а просто хитрожопый загрузчик, единственный смысл которого я вижу в том, чтобы скрыть от пользователя прошивку и наживаться на продаже программно-аппаратного комплекса мк_с_хитрым_загрузчиком+хитрый_компилятор_самопального_ЯВУ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока эта дискуссия напоминает детский спор...

Причём не о том как сделать, на чём сделать и т. д. , а КАК НАЗВАТЬ! И это длится уже три страницы.

Автор, на мой взгляд, и до сих пор отличавшийся не особой (а точнее - никакой) полезностью на форуме, упорно движется в сторону бана.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую еще раз объяснить, что такое "операционная система" в моем понимании.

 

Это набор программ, которые

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

 

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

 

2. предоставляют работу с файлами.

 

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

 

3. дадут пользователю возможность ввести команду.

 

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

 

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

 

1. Управление доступом к ресурсам: етс. машинное время, память, ио.

2. Запуск задач по событиям и приоритетам.

 

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

 

Конечно, для переносимости, желателен уровень абстакции железа. (Драйвера устройсв.) А вот библиотеки могут являтся как отдельными задачами, так и расширителями функционала ядра и не более того.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не нужно бояться слова "библиотека". :)

Любая операционная система - это действительно просто библиотека функций, предоставляющих определённый сервис пользователю или программисту.

Часть функций вызывается по запросу, часть периодически (например, по прерыванию таймера) - сути дела это не меняет.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Модератору: намек понял. Последний раз на эту тему.

 

Какого размера будет иметь система (без внешних устройств и питания) со следующими характеристиками: разрядность процессора - 32; скорость - 1 млн. операций ( что за смесь Гибсона - не знаю ); ОЗУ 1-4 Мб .

Примерный образец: http://www.computer-museum.ru/histussr/2-45.htm

Если повторить в настоящее время это будет размером с кирпич? Наверное в сигаретную пачку влезет.

 

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

и эти программы не вдаются в подробности FDD,HDD, SD.

 

мини-микро-ОС не самоцель, а инструмент. Инструмент должен быть востребован.

Поэтому к минимальному набору добавлю API и средства разработки (пусть реализованные не разработчиком ОС).

Изменено пользователем Razubaev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На мой взляд для определения ОС достаточно следушего:

 

Есть аппаратные ресурсы, а есть программные. ОС -- то что создаёт программные ресурсы и выполняет контроль доступа к аппаратным ресурсам ( контроль доступа по времени(диспечеризация) или контроль доступа по безопасности (права доступа) или контроль доступа по размеру (квотирование) ).

Пример 1.

Программный ресурс -- файл. Аппаратный -- дискета. ОС - MS-DOS

Пример 2.

Программный ресурс -- процессорное время. Аппаратный ресурс -- ядро CPU или MCU. OC -- любая многозадачная в том числе и scrmOS.

 

Вот стек TCP/IP -- можно отнести и к функции ОС (вот там есть такое программный ресурс socket)

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго дня. Вставлю и свои 5 коп.

 

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

 

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

Поэтому и Деспетчиризацию в таком контроллере можно использовать круговую.

И отрабатывать события только необходимых аппаратных блоков.

И в силу малого объема ОЗУ синхронизации потоков и межпотоковое взаимодействие не реализовывать.

 

Ну а в контроллер по мощьнее (например: ATMega 128) нужно в зависимости от задачи применять необходимый набор опций.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...