Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Dec 06, 2019 4:32 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 15 posts ] 
Author Message
PostPosted: Thu Apr 10, 2014 11:10 am 
Offline

Joined: Tue Dec 03, 2013 1:33 pm
Posts: 41
Я на днях наткнулся на занятную статейку одного амстердамского товарища, который занимается проектированием ос(автор Minix). Так вот, он весьма убедительно доказывал, что для надежной работы ос необходимо, чтобы все драйвера были вынесены из ядра и выполнялись в пространстве пользователя, типа в таком случае ошибка в коде драйверов не будет приводить к краху всей системы, при этом от честно отметил, что при таком подходе общая производительность системы уменьшается на 5-10 процентов. Что вы обо этом думаете?))


Top
   
PostPosted: Thu Apr 10, 2014 11:27 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1357
На производительность системы это не сильно влияет: в некоторых случаях Ring3-драйверы крутятся даже быстрее, чем в Ring0.

Проблема в другом: свободный доступ к критичным системным ресурсам (порты, MMIO, физ.память, прерывания) из юзерспейса - это фатальная дыра в системной защите. Злонамеренные юзеры из Ring3 смогут делать с ядром (буквально) всё, что им заблагорассудится.

_________________
Узкий специалист подобен флюсу: полнота его - односторонняя.
Козьма Прутков


Top
   
PostPosted: Thu Apr 10, 2014 12:25 pm 
Offline

Joined: Tue Dec 03, 2013 1:33 pm
Posts: 41
вот здесь та статейка, если кому интересно http://www.iakovlev.org/index.html?p=886
Там в общих чертах расписана конструкция его оси ну и много всякого прочего написано, может, я чего-то недопонял, вы лучше поймете все тонкости, не мог же такой пожилой и умный дядька так по-детски лохануться, там наверняка есть какие-то моменты, которые я не понял)


Top
   
PostPosted: Thu Apr 10, 2014 12:54 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1357
Хитромудрые выверты Танненбаума оказались ненамного эффективнее тупого нагромождения ядерных модулей а-ля-Торвальдс.
Ни по скорости, ни по размеру, ни по общей надежности кода.

Не надо всё многообразие системных решений сводить к двум (уже всем надоевшим) академическим подходам.
Существуют и другие пути.

И один из них - наш.

P.S. "...полная сборка системы, требующая более 120 компиляций, укладывается в 10 секунд" - вах! :mrgreen:


Last edited by art_zh on Thu Apr 10, 2014 1:07 pm, edited 1 time in total.

Top
   
PostPosted: Thu Apr 10, 2014 1:06 pm 
Offline

Joined: Tue Dec 03, 2013 1:33 pm
Posts: 41
Ну вам виднее, я не спец в этом деле, поэтому и спросил))
просто стало любопытно)
Мне вообще все эти юниксы и прочие оси не очень нравятся - в них не встроен гуй :D При этом весят ого-го - больше винды.
Я, конечно, понимаю, что единственный интуитивно-понятный интерфейс — это женская грудь, но если сравнивать между гуем и командной строкой, то первое проще в освоении))


Top
   
PostPosted: Thu Apr 10, 2014 1:53 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
На каждый плюс микроядра найдётся свой минус.
Падение драйвера сделает систему неработоспособной в любом случае, микроядро это или монолит.
Танненбаум сделал reincarnation manager - специальное приложение которое пингует критические сервисы и перезапускает их в случае падения. Приложения должны учитывать это и восстанавливать ресурсы после восстановления сервисов. Программисты конечно в восторге, вместо abort() им предлагают сделать вид, что ничего страшного не случилось.
Теперь представте что у вас 100 раз в секунду падает сетевой стек или usb. Ещё веселее если видеодрайвер.


Top
   
PostPosted: Thu Apr 10, 2014 2:13 pm 
Offline

Joined: Tue Dec 03, 2013 1:33 pm
Posts: 41
Дак я и не спорю, я понял, что нет простого решения, которое позволило бы разом увеличить надежность и ничего при этом не потерять) Ось - это слишком сложная система, в ней любая задача может быть достигнута только с помощью комплексных мер))


Top
   
PostPosted: Thu Oct 09, 2014 7:42 pm 
Offline

Joined: Wed Sep 24, 2014 5:47 pm
Posts: 34
art_zh wrote:
Проблема в другом: свободный доступ к критичным системным ресурсам (порты, MMIO, физ.память, прерывания) из юзерспейса - это фатальная дыра в системной защите.

А кто говорит о свободном доступе? Несколько предопределенных системных процессов, каждый в аппаратно защищенной области памяти, выполняют предопределенные функции. Все.
Serge wrote:
На каждый плюс микроядра найдётся свой минус.
Падение драйвера сделает систему неработоспособной в любом случае, микроядро это или монолит.
Вообще-то падение драйвера принтера не должно приводить ни к чему, кроме невозможности отправить документ на печать.
Serge wrote:
Теперь представьте что у вас 100 раз в секунду падает сетевой стек или usb. Ещё веселее если видеодрайвер.
Зачем они это делают? :) И почему сервер после n падений не может отказаться от затеи с поднятием такого драйвера? :)

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


Top
   
PostPosted: Fri Oct 10, 2014 9:40 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1357
irkant

Драйверы Ring-3 в Колибри есть, и уже давно. Работают на прямую с железом, причем (в отличие от Ring-0 драйверов) будучи полноценными пользовательскими приложениями, они могут иметь свое окно (со всеми API-печеньками) и тестироваться в отладчике.

Что вообще нужно полноценному драйверу устройства? чаще всего - порты, прерывания (выделенные или расшаренные - непринципиально), сервисы для работы с конфигурационным пространством PCI и чтение из MSR. Это все есть.

Часто нужен доступ к MMIO : он тоже есть. Только у одной программы и только к одному PCI-устройству. Чайникам такую бритву в руки давать нельзя, поэтому MMIO-доступ по умолчанию не активизирован (надо раскомментировать одну строчку и перекомпилировать ядро).

Реже требуется DMA, причем у каждой железяки он свой, нестандартный. Еще реже - расширенный конфигспейс PCIe, APIC и MSI-прерывания.
Это все тоже есть, в Колибри-А.


Top
   
PostPosted: Fri Oct 10, 2014 10:42 am 
Offline

Joined: Wed Sep 24, 2014 5:47 pm
Posts: 34
art_zh, спасибо за подробности, буду углубляться.


Top
   
PostPosted: Fri Oct 10, 2014 10:57 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Quote:
Вообще-то падение драйвера принтера не должно приводить ни к чему, кроме невозможности отправить документ на печать.
А падение usb оставит без клавиатуры и мыши.
Btw, 3D драйверы в Линуксе и Колибри работают в user-mode.


Top
   
PostPosted: Sat Oct 11, 2014 7:57 am 
Offline

Joined: Wed Sep 24, 2014 5:47 pm
Posts: 34
Serge wrote:
А падение usb оставит без клавиатуры и мыши.
Но не мешает, скажем, запущенной дефрагментации. Не могу согласиться, что падение драйвера должно быть равно BSOD. Без клавиатуры и мыши система могла бы спокойно доделать не требующие участия пользователя дела, вывести инфу и штатно перезагрузиться.
Serge wrote:
Btw, 3D драйверы в Линуксе и Колибри работают в user-mode.
Уже уяснил. Справочной информации остро не хватает. Все-таки, что по поводу viewtopic.php?f=1&t=677&start=645#p58603? Разумно ведь сначала обсудить и описать как все "должно быть в идеальной вселенной", тогда видно направление и есть где с чувством выполненного долга ставить галочки :)


Top
   
PostPosted: Sat Oct 11, 2014 8:27 am 
Offline

Joined: Wed Sep 24, 2014 5:47 pm
Posts: 34
План такой:
1. Готовлю опросник на тему как я провел лето как чего фунциклирует (сейчас, и что нужно доделать / как должно быть на самом деле).
2. Люди в теме и прочие праздношатающиеся качают txt файлик, набивают в него ответы и присылают мне обратно. Свои общие соображения (ибо никакой конкретики от меня на данном этапе ждать не стоит) выложу в первую очередь, чтобы особо ленивые могли просто написать "сделать все наоборот" ;)
3. Делаю из ответов компиляцию.
4. Обсуждение компиляции. На этом этапе надо понимать, что любая критика будет критикой одного человека против обобщенного мнения "всех". Принимаются расширения, дополнения, конкретизация, но не смена парадигмы.
5. По результатам обсуждения пишу справку и SDK.
6. Выясняется, что получившееся никого не устраивает и никому не нужно ; )

П.С. Да, на пункт 1 нужны будут консультации / правки.


Top
   
PostPosted: Sat Oct 11, 2014 1:27 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
irkant wrote:
5. По результатам обсуждения пишу справку и SDK.
6. Выясняется, что получившееся никого не устраивает и никому не нужно ; )

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

З.Ы. Ничего личного - только по делу и если я ошибусь в своих подозрениях, то я буду только рад.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Sat Oct 11, 2014 3:29 pm 
Offline

Joined: Wed Sep 24, 2014 5:47 pm
Posts: 34
Mario_r4 Я надеюсь как на самоценность полученного (если) документа, так и на участие в его реализации.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 15 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited