Цитата:
Надёжность микроядра -- это лапша на уши, точно так же как ненадёжность монолитного.
От архитектуры она никоим образом не зависит, а зависит исключительно от тщательности проектирования всей системы (в первую очередь ядра, но не только его) и реализации.
Тут речь идет о вероятности наличия ошибок, микроядро маленькое, монолитное ядро большое
Цитата:
Те же проблемы с драйверами видюх вызваны просто их плохим качеством: стремятся выпустить как можно быстрее, впихнуть туда особую поддержку разных игр и т.п. -- вот и получается, что код драйвера разбухает, а качество падает.
Вот я про это и говорю, что я за стабильность системы в целом и я не готов потерять свои данные которые к примеру не касаются видео из-за проблем с драйвером видеокарты
Цитата:
Но это проблема не того, что он внутриядерный, а того, что он плохо сделан.
Согласитесь, что плохонаписанный драйвер находящийся за пределами ядра это лучше чем плохонаписанный драйвер, который является частью этого ядра?
Цитата:
В то же время вынос всех драйверов за пределы ядра отнюдь не даёт возможность "просто перезагрузить драйвер" -- далеко не во всяком случае можно перезапустить некий компонент системы без последствий.
Я и не говорю что без последствий, я просто пытаюсь до вас донести мысль о том что эти последствия можно и необходимо минимизировать. Или накроется часть системы и полетит часть данных или накроется полностью вся система, что лучше?
Цитата:
Да, кстати говоря, вот прямо сейчас занимаюсь тестами производительности интеловского шестиядерника, ну и попробовал сначала в качестве видюхи использовать Радеон 4870Х2 -- и получил облом, потому что при попытке прогона тестов в Лайтвэйве (эта такая прога для трёхмерного моделирования и анимации -- конкурент 3ДС Маха и Майи) постоянно падал драйвер видюхи. Никакого БСОДа при этом не происходило, просто из трэя выползал плакат: драйвер видюхи сдох и будет перезапущен.
Но какая мне от этого польза, если валится не только драйвер, но и тест?
Вот это наглядный пример, что такое хорошо и что такое плохо. Вы хорошо отделались, я думаю если бы система зависла (BSOD) и у вас бы был не сохранен очень важный документ к примеру, вам бы это понравилось намного меньше. Вот в этом то и польза.
Цитата:
Возвращаясь к теме. Проблема Винды или там Линуха не в монолитности ядра (это системы с монолитными ядрами, тут Вы не правы -- просто они модульные, а не "цельносварные", но от этого не перестают быть монолитами), а в плохом качестве проектирования и реализации.
[url]http://ru.wikipedia.org/wiki/Ядро_операционной_системы[/url]
Ядро линукса было изначально чисто монолитное, сейчас же в нем есть возможность динамической подгрузки драйверов и будут они работать в нулевом кольце процессора.
Ядро Windows NT изначально было микроядро, но из-за низкой скорости работы системы(переключение контекстов частое) перешли на модульное ядро. Вся соль в том чтобы вынести из нулевого кольца процессора неблагонадежный код, а оставить там только выверенный минималистичный код, который обеспечит работу компьютера в самом минималистичном режиме. И при любой нештатной ситуации компьютер не зависнет, а продолжит функционировать и сможет( в крайнем случае попытается) восстановить сбоившую его часть, как дефибрилятор встроенный в сердце человека.
Цитата:
В частности, в ядро там набито всё подряд -- поэтому оно такое жирное.
Вот мы плавно подошли еще к одному очень важному приемуществу экзоядра - его минималистичности. Что она нам дает кроме сравнительно легкого его переписывания при портировании на другие платформы, а дает оно нам то что оно будет полностью помещаться в кэш процессора, а это огромное преимущество которое трудно переоценить.
Цитата:
С теми же драйверами МС пришла-таки к пониманию, что не надо всё пихать в ядро: теперь часть дров работает в режиме ядра, а часть -- в режиме пользователя. Этот подход мне представляется наиболее правильным, поскольку обеспечивает наибольшую гибкость.
Из двух зол выбирают меньшее, из гибкости и стабильности я выбираю стабильность. Гибкость должна быть не в ущерб стабильности.
Цитата:
Если драйвер нуждается к прямом доступе к аппаратуре (дёргать регистры устройств, обрабатывать прерывания и т.п.), то ему место в ядре, иначе будут либо жуткое падение производительности, либо придётся изрядно заморачиваться с обеспечением прав доступа, либо и то, и другое в одном флаконе.
Я это в курсе, это не проблема ОС, это проблема самой архитектуры x86 на железном уровне(честно не знаю как обстоят дела в других архитектурах по этому поводу), но мы же говорим про ОС не именно под x86, а про мультиархитектурную ОС. Если говорить именно про архитетктуру x86, то я думаю софтово можно если не обойти, то хотя бы минимизировать этот недостаток.
Цитата:
Если же драйверу прямой доступ к железу не нужен (это, например, все УСБ-устройства: к железу там лезут только драйверы самих УСБ-контроллеров, все остальные дрова выполняются над ними; сюда же идут файловые системы и сетевые протоколы -- в отличие от драйверов контроллеров дисков и сети), то его вполне можно оформить задачей пользователя. Правда, чуть пострадает производительность (лишние переключения контекста), но обычно время выполнения собственно операций ввода-вывода многократно превышает потери на такие переключения, а поэтому и нет смысла этот момент оптимизировать.
Опять же это недостаток x86, а не ОС на экзоядре
Цитата:
Не помню, но, когда читал, возникли баальшие сомнения. Надо б перечитать, но сейчас лениво, да и делом занят (тестами вышеуказанными).
Могу сказать что экзоядро уже работает и его пока изучают в американском по моему массачусетском университете
Цитата:
Экзоядро пока оставим, поскольку надо его подробно обсуждать, а для этого мне нужно опять перечитать про него.
Да его нужно обсуждать подробно, хотя там практически и обсуждать то нечего помоему - просто оно очень маленькое и выполняет минимум функций, а вот архитектуру ОС на экзо ядре это можно обсудить
Цитата:
Что же касается того, что микроядерность не мешает быть системой реального времени -- совершенно верно, ведь там требование -- достаточно малое и при этом абсолютно гарантированное время реакции, а это можно обеспечить и в монолите, и в микроядре.
Я полностью с вами согласен, я просто привел пример именно с QNX(микроядро), потому что микроядро из-за большого количества переключений контекста в процессоре - самое медленное по сравнению с модульным, монолитным, экзо и комбинированным ядром, но тем не менее оно обеспечивает скорость необходимую для ОСРВ.
Цитата:
Другое дело, что у микроядра теоретически большее время реакции из-за более высоких накладных расходов -- но тут уже в игру вступают такие факторы, как качество проектирования и реализации, и по факту микроядерная QNX оказывается быстрее монолитных Винды и Линуха.
Сложно сравнивать скорость QNX и (Windows или Linux), поскольку эти ОС писались под разные задачи. Но если всетаки сравнить, то экзоядро априори быстрее микроядра, а значит если удалось ускорить микроядро, то и экзоядро тоже можно еще ускорить, точно также как ядра Windows и Linux, НО отличие состоит в том что с микроядром, а тем более с экзоядром это сделать гораздо легче, потому что они меньше.
Цитата:
Кстати говоря, я вообще считаю, что "идеальной" (ну, близкой к таковой -- идеал недостижим в принципе) может быть (но не обязательно будет!) именно ОСРВ: из хорошей системы реального времени можно сделать хороший десктоп или сервер, но наоборот -- никогда.
С этим я полностью согласен, только добавлю что можно пойти дальше и создать универсальную ОС, которая бы в себе сочетала достоинства QNX для ограниченной группы приложений, а для всех остальных приложений достоинства windows(linux)
Цитата:
Даже маленькое полнофункциональное ядро -- это десятки тысяч строк.
Почитайте пожалуйста чем занимается экзоядро - оно выполняет минимум функций необходимых для того чтобы работал процессор и оперативная память, а остальное все экзоядро отдает на откуп сторонним программам(экспортирует на непривилегированный уровень)
Цитата:
Лично я сторонник как раз такой кроссплатформенности: система должна обеспечивать одинаковый базовый АПИ (и по возможности одинаковые расширения, "завязанные" на аппаратные особенности платформы), но сама по себе -- переписываться под конкретную платформу.
Здесь мы с вами едины :)
Цитата:
Насчёт трансляции понимаете неверно: трансляция любого кода в жабе выполняется один раз, в дальнейшем выполняется сразу скомпилированный код, поэтому скорость отнюдь не так низка (содержащая циклы жаба-программа обгонит скомпилированную плохим транслятором программу на традиционных компилируемых ЯВУ).
Скажите мне, при трансляции(компиляции) явамашина оптимизирует получившийся код под конкретную платформу, она знает все ее закоулки? Вообще здесь накладывается 2 тормоза друг на друга, это ОС и виртуальная машина, - получается слишком длинная цепочка до аппаратного обеспечения, я за то чтобы ее сократить, вы за или против?
Цитата:
Что запустить можно, это понятно, но с ограничениями и не во всех направлениях (с КПК на десктопе -- можно, наоборот -- фигвам, у КПК ресурсов не хватит банально).
Я это и имел ввиду
Цитата:
Можно. Но в любом случае приходим к тому, что и прикладное ПО не является "автоматически переносимым", а нуждается в серьёзных переделках. Кстати, качественный гуй "просто дизайнер" не сделает, да и "ядром прикладной программы" здесь не обойтись. Кто будет управлять, например, всякими списками и полосами прокрутки, если на них надо влиять из самой программы? А правила этого влияния могут различаться, если есть серьёзные различия в гуе. В общем, всё намного сложней, чем Вам представляется.
Я это прекрасно понимаю, я знаю что все сложнее, но это уже детали разработки протокола и это все выполнимо. Насчет "просто дизайнера", это в любом случае будет не просто дизайнер, в любом случае человеку придется осваивать инструментарий разработки GUI где нужно будет писать/составлять алгоритмы работы GUI, но это будет не сложнее чем работа с GUI в Delphi, я так себе это представляю
Цитата:
Самой программе -- да, но её гуй от этого зависит весьма серьёзно.
Объясните мне разницу в выходящей информации от драйвера клавиатуры(реальной, ирутальной) и от драйвера рукописной системы ввода? И там и там передаются символы
Цитата:
Фактически -- приходим к Жабе. Там ведь тоже компиляция исходников в промежуточный байт-код, а потом уже его компиляция по мере надобности (а не интерпретация, как многие думают; по сути, JVM и является этим вторым компилятором плюс библиотекой поддержки) в код конкретного процессора. Можно сделать и компиляцию всего сразу -- т.е. применить технически несколько иной подход, однако идеологически он будет близок к уже имеющимя жабе и дотНЕТу.
Идеологически да, практически нет. Об этом я написал выше
Цитата:
Потому что Винда -- коммерческая система, там деньги делают, а не самовыражопываются.
Но линукс тоже деньги приносит, ему не хватает более жесткой координации
Цитата:
Кстати говоря, не надо смешивать открытость и бесплатность. Например, та же QNX открыта, но не бесплатна (для коммерческого использования, естественно). А QIP вроде бы закрытый, но бесплатный, если не ошибаюсь (сам им не пользуюсь).
Да я вроде и не смешивал