QNX.ORG.RU

Общее => Общение => Тема начата: Komaro от Июня 25, 2015, 10:31:54 am



Название: ОСРВ QNX использует ли виртуальную память?
Отправлено: Komaro от Июня 25, 2015, 10:31:54 am
Добрый день, Форумчане! Подскажите пожалуйста.
Как работает QNX, в плане обращений к жесткому диску(HDD)? А именно, как часто она обращается к HDD? :(
Мне казалось, что при загрузке она подгружает с диска все что ей нужно, а все остальные операции происходят в ОЗУ. Так ли это? ;)
Пишет ли она часто на винт или нет? Если пишет часто, то есть возможно перенаправить все в ОЗУ.
Пример использования есть под виндовс эмедед, типа фильтр защиты от записи на уровне тома Enhanced Write Filter(EWF) (http://habrahabr.ru/company/pt/blog/155135/)
Пока интересует только сама ОС, без личных программ. ;D
Спасибо заранее. ;D


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: darkelf от Июня 25, 2015, 11:48:07 am
Как работает QNX, в плане обращений к жесткому диску(HDD)? А именно, как часто она обращается к HDD? :(
имхо, это зависит от работающих программ и драйвера жесткого диска (devb_eide в QNX 6.3.2).

Мне казалось, что при загрузке она подгружает с диска все что ей нужно, а все остальные операции происходят в ОЗУ. Так ли это? ;)
Не уверен, что понял Вас. Самому ядру ОС, имхо, практически ничего не нужно, не нужны ни диски, ни консоль с терминалами. Консоль и диски могут быть нужны другим программам, но не самому ядру.

Пишет ли она часто на винт или нет? Если пишет часто, то есть возможно перенаправить все в ОЗУ.
В QNX 6.3.2 был драйвер RAM-диска (devb_ram), если Вам надо писать в память как на диск. К сожалению не знаю, как сейчас в новых версиях.

Пример использования есть под виндовс эмедед, типа фильтр защиты от записи на уровне тома Enhanced Write Filter(EWF) (http://habrahabr.ru/company/pt/blog/155135/)
Вы сможете смонтировать диск только для чтения. Вы можете собрать образ ядра вообще без диска - соответственно защищать на запись не придётся.

Пока интересует только сама ОС, без личных программ. ;D
Что Вы понимаете под "сама ОС"?


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: Komaro от Июня 25, 2015, 01:01:41 pm
Пока интересует только сама ОС, без личных программ. ;D
Что Вы понимаете под "сама ОС"?

Спасибо большое за развернутые ответы. Под "сама ОС", я имел ввиду ОС QNX из коробки. ))

Еще маленький вопрос. ) А если недостаточно памяти ОЗУ, QNX создаст своп-файл для своих нужд?


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: darkelf от Июня 25, 2015, 02:02:03 pm
Что Вы понимаете под "сама ОС"?
Спасибо большое за развернутые ответы. Под "сама ОС", я имел ввиду ОС QNX из коробки. ))
Просто в контексте QNX ОС эта некоторое количество опционально запускаемых процессов. В принципе даже само ядро разбито на такие процессы. Соответственно, если Вам, например, не нужна сеть - Вы не запускаете сетевой менеджер, не нужна ФС - не запускаете дисковый менеджер.

Еще маленький вопрос. ) А если недостаточно памяти ОЗУ, QNX создаст своп-файл для своих нужд?
Насколько я знаю, swap-а в QNX нет.


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: gordeev_as от Июня 26, 2015, 06:05:07 am
В 6.5 точно есть devb-ram сам пользуюсь, именно для случаев когда нужны файлы на время работы, до перезапуска.
Можно еще в /dev/shmem это делать, но там вся свободная память и можно просто её всю занять.
А так devb-ram задаем сколько нам секторов надо и все.
У QNX нет своих типов файловой системы аналога swap линуксового.
Я не представляю систему реального времени со swap памятью, какая может быть гарантия выполнения задачи если она будет в swap памяти или её данные, и сразу же надежность всей системы падает.


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: Dark от Июня 26, 2015, 10:54:15 am
Я не представляю систему реального времени со swap памятью, какая может быть гарантия выполнения задачи если она будет в swap памяти или её данные, и сразу же надежность всей системы падает.

Представить это можно запросто. На практике характеристиками РВ обладать должны далеко не все задачи. Низкоприоритетный не привелегированный код можно снабжать функционалом заземления в своп. Если бы было на то желание разработчиков, есесна.


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: AG от Июня 26, 2015, 11:10:20 am
Представить это можно запросто. На практике характеристиками РВ обладать должны далеко не все задачи. Низкоприоритетный не привелегированный код можно снабжать функционалом заземления в своп. Если бы было на то желание разработчиков, есесна.

Там есть одна сложность, которую решить можно, но сложно: свопирование низкоприоритетных задач не должно вызывать инверсии приоритетов и блокирования ключевых компонентов. Представить можно это можно, но учитываю природу процесса свопирования это сложно осуществить. Посему все (насколько я знаю) ОСРВ не используют данную возможность


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: Dark от Июня 26, 2015, 01:15:40 pm
Там есть одна сложность, которую решить можно, но сложно: свопирование низкоприоритетных задач не должно вызывать инверсии приоритетов и блокирования ключевых компонентов. Представить можно это можно, но учитываю природу процесса свопирования это сложно осуществить.

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


Посему все (насколько я знаю) ОСРВ не используют данную возможность

Линь с rt-патчем динамит своп?


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: gordeev_as от Июня 28, 2015, 09:01:32 am
Представить это можно запросто. На практике характеристиками РВ обладать должны далеко не все задачи. Низкоприоритетный не привелегированный код можно снабжать функционалом заземления в своп. Если бы было на то желание разработчиков, есесна.
Автор топика написал именно про ОС, а не задачи пользователя, поэтому я не стал переключаться на задачи пользователя. С вами соглашусь, делаем нечто подобное в QNX но это все равно не swap в классическом понимании. И там возникают другие проблемы, но это уже тема другого топика.

Автору топика хочу привести пример когда после загрузки ОС(здась мы говорим о QNX6) с карты памяти её извлекали (кто то не известный, неизвестно в какой момент времени без отключения питания, видимо для телефона, там microSD стоит) и система работала (то что было загружено в ОЗУ) без проблем пока не возникала необходимость перезагрузить контроллер, а после перезагрузки само собой уже ничего не запускалось. Другие задачи могли пробовать обратиться к диску но никаких "падений" не происходило, все работало.

Бывало и диски "на лету отваливались", система работает (ping идет, внешние признаки работы есть), а вот попасть на неё внешними службами (ftp, telnet и т.п.) уже нельзя (демоны на диске лежали).


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: deadarcher от Июня 28, 2015, 10:48:33 am
Скажу за QNX 4.25 - если специальным образом "заморочиться" (собрать "хитрый"  8) .boot), то можно создать рам-диск, скопировать на него минимально необходимое дерево файлов ОС, а затем отвязать корень от носителя и переназначить корень (через префикс) на рам-диск. Получаем полностью автономную систему в ОЗУ.


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: A_O от Июня 28, 2015, 12:09:31 pm
Скажу за QNX 4.25 - если специальным образом "заморочиться" (собрать "хитрый"  8) .boot), то можно создать рам-диск, скопировать на него минимально необходимое дерево файлов ОС, а затем отвязать корень от носителя и переназначить корень (через префикс) на рам-диск. Получаем полностью автономную систему в ОЗУ.
В qnx 6 можно вообще всю целевую систему вместе с прикладными задачами запихать в загрузочный образ, грузить этот образ откуда угодно (хоть с usb flash, хоть по сети) и работать без всяких фокусов вроде ram диска (хотя и это можно).


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: PoP от Июня 28, 2015, 11:58:05 pm
Не совсем. В 4.XX - размер образа <= ~640kb (получается загрузить немного болше), ну а в 6.XX - чють меньше 4Mb (ну, плюс компрессия) просто загрузочный (ну и стартовый) адрес, выставленный в IDE (build файле) далеко не всегда срабатывает почемуто. Дальше -только методом тыка, с перебором значения и загрузчиков.


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: Dark от Июня 29, 2015, 12:02:43 am
размер образа <= 4Mb

Это что еще за фантастика? Грузили и грузим образы порой под 70 метров. На разных платформах - и арм и ппц и х86.


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: PoP от Июня 29, 2015, 10:30:53 am
Я не сказал, что нельзя. Я сказал, что могут быть проблемы.


Название: Re: ОСРВ QNX использует ли виртуальную память?
Отправлено: Dark от Июня 29, 2015, 11:03:26 am
Я не сказал, что нельзя. Я сказал, что могут быть проблемы.

Это не следовало с очевидностью. Странно выглядят эти проблемы, статистика у нас достаточно большая, но о таком слышу впервые. Разве что у вас bsp с заведомо некорректными адресами или железо с фичами.