Страниц: [1]
  Печать  
Автор Тема: ОСРВ QNX использует ли виртуальную память?  (Прочитано 5733 раз)
Komaro
Участник
*
Offline Offline

Сообщений: 35



Просмотр профиля
« : Июня 25, 2015, 10:31:54 am »

Добрый день, Форумчане! Подскажите пожалуйста.
Как работает QNX, в плане обращений к жесткому диску(HDD)? А именно, как часто она обращается к HDD? Sad
Мне казалось, что при загрузке она подгружает с диска все что ей нужно, а все остальные операции происходят в ОЗУ. Так ли это? Wink
Пишет ли она часто на винт или нет? Если пишет часто, то есть возможно перенаправить все в ОЗУ.
Пример использования есть под виндовс эмедед, типа фильтр защиты от записи на уровне тома Enhanced Write Filter(EWF)
Пока интересует только сама ОС, без личных программ. Grin
Спасибо заранее. Grin
« Последнее редактирование: Июня 25, 2015, 11:14:41 am от Komaro » Записан
darkelf
QOR.Moderator
*****
Offline Offline

Сообщений: 256


Просмотр профиля
« Ответ #1 : Июня 25, 2015, 11:48:07 am »

Как работает QNX, в плане обращений к жесткому диску(HDD)? А именно, как часто она обращается к HDD? Sad
имхо, это зависит от работающих программ и драйвера жесткого диска (devb_eide в QNX 6.3.2).

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

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

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

Пока интересует только сама ОС, без личных программ. Grin
Что Вы понимаете под "сама ОС"?
Записан
Komaro
Участник
*
Offline Offline

Сообщений: 35



Просмотр профиля
« Ответ #2 : Июня 25, 2015, 01:01:41 pm »

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

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

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

Сообщений: 256


Просмотр профиля
« Ответ #3 : Июня 25, 2015, 02:02:03 pm »

Что Вы понимаете под "сама ОС"?
Спасибо большое за развернутые ответы. Под "сама ОС", я имел ввиду ОС QNX из коробки. ))
Просто в контексте QNX ОС эта некоторое количество опционально запускаемых процессов. В принципе даже само ядро разбито на такие процессы. Соответственно, если Вам, например, не нужна сеть - Вы не запускаете сетевой менеджер, не нужна ФС - не запускаете дисковый менеджер.

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

Сообщений: 2


Просмотр профиля
« Ответ #4 : Июня 26, 2015, 06:05:07 am »

В 6.5 точно есть devb-ram сам пользуюсь, именно для случаев когда нужны файлы на время работы, до перезапуска.
Можно еще в /dev/shmem это делать, но там вся свободная память и можно просто её всю занять.
А так devb-ram задаем сколько нам секторов надо и все.
У QNX нет своих типов файловой системы аналога swap линуксового.
Я не представляю систему реального времени со swap памятью, какая может быть гарантия выполнения задачи если она будет в swap памяти или её данные, и сразу же надежность всей системы падает.
Записан
Dark
Sr. Member
****
Offline Offline

Сообщений: 343


Просмотр профиля
« Ответ #5 : Июня 26, 2015, 10:54:15 am »

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

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

Сообщений: 872



Просмотр профиля WWW
« Ответ #6 : Июня 26, 2015, 11:10:20 am »

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

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

Dark
Sr. Member
****
Offline Offline

Сообщений: 343


Просмотр профиля
« Ответ #7 : Июня 26, 2015, 01:15:40 pm »

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

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


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

Линь с rt-патчем динамит своп?
Записан
gordeev_as
Участник
*
Offline Offline

Сообщений: 2


Просмотр профиля
« Ответ #8 : Июня 28, 2015, 09:01:32 am »

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

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

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

Сообщений: 70



Просмотр профиля
« Ответ #9 : Июня 28, 2015, 10:48:33 am »

Скажу за QNX 4.25 - если специальным образом "заморочиться" (собрать "хитрый"  Cool .boot), то можно создать рам-диск, скопировать на него минимально необходимое дерево файлов ОС, а затем отвязать корень от носителя и переназначить корень (через префикс) на рам-диск. Получаем полностью автономную систему в ОЗУ.
Записан
A_O
Full Member
***
Offline Offline

Сообщений: 205


Просмотр профиля
« Ответ #10 : Июня 28, 2015, 12:09:31 pm »

Скажу за QNX 4.25 - если специальным образом "заморочиться" (собрать "хитрый"  Cool .boot), то можно создать рам-диск, скопировать на него минимально необходимое дерево файлов ОС, а затем отвязать корень от носителя и переназначить корень (через префикс) на рам-диск. Получаем полностью автономную систему в ОЗУ.
В qnx 6 можно вообще всю целевую систему вместе с прикладными задачами запихать в загрузочный образ, грузить этот образ откуда угодно (хоть с usb flash, хоть по сети) и работать без всяких фокусов вроде ram диска (хотя и это можно).
Записан
PoP
Sr. Member
****
Offline Offline

Сообщений: 336


Просмотр профиля
« Ответ #11 : Июня 28, 2015, 11:58:05 pm »

Не совсем. В 4.XX - размер образа <= ~640kb (получается загрузить немного болше), ну а в 6.XX - чють меньше 4Mb (ну, плюс компрессия) просто загрузочный (ну и стартовый) адрес, выставленный в IDE (build файле) далеко не всегда срабатывает почемуто. Дальше -только методом тыка, с перебором значения и загрузчиков.
Записан
Dark
Sr. Member
****
Offline Offline

Сообщений: 343


Просмотр профиля
« Ответ #12 : Июня 29, 2015, 12:02:43 am »

размер образа <= 4Mb

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

Сообщений: 336


Просмотр профиля
« Ответ #13 : Июня 29, 2015, 10:30:53 am »

Я не сказал, что нельзя. Я сказал, что могут быть проблемы.
Записан
Dark
Sr. Member
****
Offline Offline

Сообщений: 343


Просмотр профиля
« Ответ #14 : Июня 29, 2015, 11:03:26 am »

Я не сказал, что нельзя. Я сказал, что могут быть проблемы.

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