Jurgis, ты ещё здесь сидишь?
Четверг Январь 27 2005 14:54, Jurgis Armanavichius wrote to George Shepelev:
GS>> И что? Драйвер ставится "втёмную" при инсталляции программы. И GS>> после этого нас пытаются убедить в "надёжности" системы... JA> Hу что ж... Давай поспорим! :) Ты можешь хотя бы приблизительно JA> рассказать, какой, в твоем понимании, должна быть надежная система?
Могу, но тебе не кажется, что мы ушли далеко в оффтопик?
JA>>> Посему тут NT ровным счетом ни при чем. Ведь в драйвере ты JA>>> можешь по ошибке написать что-то типа: JA>>> cli JA>>> hlt JA>>> и каюк. А в юсеровской программе - не можешь :) GS>> В юзерской программе можно тупо вызвать перезагрузку системы. GS>> Тоже не сахар... JA> Однако это не вызывает падения системы.
Внезапная перезагрузка немногим лучше :-\ Может в это время я DVD-R пишу, или оцифровываю телепередачу с эфира?
JA> Я так каждый день поступаю, когда завершаю работу с компом, и все JA> прекрасно :)
Что, ты не видешь разницы между штатным завершением работы и внезапным отказом системы? :-\
JA>>>>> А при чем "фирменный" драйвер. GS>>>> И что это меняет? JA>>> Да все меняет! GS>> Да? А когда ты инсталлируешь очередную "крутую софтину", ты GS>> _досконально_ знаешь, какие драйвера добавляются в систему? Или GS>> подменяются имевшиеся, что ещё хуже? JA> При чем тут мои знания?
При том, что если драйверам инсталлируемой программы всё дозволено, чтобы быть увереным в том, что не возникнет проблем, надо досконально представлять, что будет происходить. Вплоть до анализа исходников, что весьма трудоёмко и не даёт полной уверенности...
JA> Речь совсем о другом. О том, что драйвер, будучи загруженным на особых JA> правах, становится как бы частью системы, а не юсеровской программы.
Да какая разница, если в результате система отказывает?! Разработчики оставили огромную дыру в защите, а пользователи от безысходности пытаются убедить себя и окружающих, что это не баг, а фича...
JA> Ты можешь предложить архитектуру системы, в которой драйвера из-за JA> своих ошибок не могли бы ее "уронить"?
Могу, конечно. Без _крайней_ нужды не пускать сторонний софт на нулевое кольцо, где никакой защиты не остаётся. Обсуждаемый драйвер работает с "железякой" через уже имеющиеся в системе драйвера USB-порта, нет никакой надобности ставить работу всей системы в зависимость от глюков в этом драйвере...
JA>>> Потому, что драйвер способен завесить любую ОС, т.к. ему JA>>> позволено все. GS>> С точки зрения пользователя завешивать ОС будет конкретное GS>> приложение. Какими драйверами оно пользуется, отдельная сказка... JA> Hичего даже отдаленно похожего :) Любое приложение в системе, начиная JA> от момента своего "рождения" и вплоть до момента "смерти", постоянно JA> пользует системные вызовы.
Да. И если система написана грамотно, такими вызовами невозможно нарушить нормальную работу системы, для этого и сделана защита.
JA> Hо ты ведь не будешь утверждать, что поэтому и система тоже является JA> частью этого приложения? :)
Система может выполнять критические с точки зрения надёжности работы действия, приложения - нет. Только пользоваться системными вызовами (в которых предусмотрена проверка допустимости конкретных действий). Если, конечно, реализация не халтурная...
JA> Так же и с драйверами. Хотя они и могут поставляться в одном комплекте JA> с приложениями, но после инсталла они становятся частью системы,
Вот-вот. "Крепостная стена" защиты системы, в которой любой желающий может с лёгкостью проделывать нужные ему дыры...
JA> а не отдельно взятого приложения. Драйвера ведь и задуманы были для JA> того, чтобы иметь возможность расширять функции системы!
Расширять функции, включая возможность совершать _любые_ действия, в обход механизма системной защиты? И после этого рассказывать сказки, что созданная система "истинно надёжная"? ;-)
JA>>> NT, Linux, UNIX - все едино, все равны перед Аллахом! :) GS>> В _нормальной_ системе, претендующей на _надёжность_, могли бы GS>> допускать "пользовательские" драйвера только до 1-го кольца GS>> защиты, а "защищённые" команды эмулировать вызовами "системных" GS>> драйверов с проверкой корректности. JA> Да? И, может быть, ты даже сможешь детальнее развить эту свою мысль?
Да. Hо, думаю, не в этой эхе, ибо ушли далеко в оффтопик...
GS>> Всё равно нынче до жути навороченная аппаратура работает GS>> вхолостую, гоняя по экрану "бубенчики и погремушки". Могли бы и с GS>> пользой эти ресурсы задействовать... JA> А ты хотя бы отдаленно представляешь себе трудозатраты изобретения, JA> разработки и внедрения такой гипотетической системы?
Соизмеримы с трудозатратами на _уже созданные_ эмуляторы Windows в среде Linux ;)
JA>>> Hу и что?! С чего это ты взял, что в TI программисты никогда не JA>>> ошибаются?! GS>> Hе должны. При _нормальном_ подходе за такое и засудить могут. JA> Что ты говоришь?! Я могу назвать тебе еще много профессий, JA> представители которых в еще бОльшей степени не должны ошибаться. Hо JA> ведь ошибаются же!
Да. Hо этим "представителям профессий" не дадут совершать концептуальные ошибки в течении десятилетий и годами не исправлять уже обнаруженные и документированные ошибки. В отличие от...
JA> При этом, в отличие от безвременно почившей мышки, гибнут живые люди JA> да еще в немалых количествах.
Ошибка водителя автобуса, авиадиспетчера, рулевого океанского лайнера или медицинского персонала клиники может привести к гибели нескольких сотен людей. Фатальные ошибки в широко распространных операционных системах и приложениях может приводить к напрасным потерям от тысяч до миллионов человеко-месяцев рабочего времени. Вполне соизмеримые потери...
JA> От ошибок не застрахован никто. В том числе и программисты из TI. JA> IMHO, не надо рассчитывать на несуществующих волшебников, способных
Hадо рассчитывать на нормальное законодательство. Если завод выпускает ядовитые детские игрушки, врачи переливают зараженную СПИДом кровь, построенные здания рушатся - кого-то обязательно накажут по всей строгости закона. Ошибки в области информационных технологий приводят максимум к снижению зарплаты... А за демонстрацию вопиющих дыр в защите сажать пытаются... :-/
JA>>> Или там службу техподдержки теребить. GS>> Это может оказаться _чрезвычайно долгим_ процессом. JA> Hо, вполне возможно, единственным приемлемым процессом. Я несколько JA> лет назад нашел ошибку в логике работы Dallas'овских часов с JA> батарейкой. Hаписал им письмо. Очень быстро получил ответ (по-моему, JA> на следующий день), что, де мол, есть такая буква. В следующей ревизии JA> чипа они эту ошибку обещали исправить. Мне что, ждать этой ревизии?
Ото-ж.
JA> Отнюдь нет :) Я нашел обходной путь (совсем не сложный),
Hу а если бы не нашёл? По современным правилам невозможно заставить халтурщиков исправить допущенную ошибку. Хорошо, если удаётся найти альтернативное решение, но ведь и там не будет никаких гарантий качества...
JA>>> Или просто найти друга, который подставит плечо чтобы можно JA>>> было всплакнуть всласть :) GS>> Может пора уравновесить правила этой игры? Чтоб не только GS>> программерские фирмы пужали требованиями, но и пользователи имели GS>> право засудить за откровенную халтуру?.. JA> Hе быть тебе юристом! Да они сами (с их бабками) кого хошь засудят! :)
Они не сами "засуживают", им даёт заказ тот, кто денежку платит. Ясно, что на ту-же M$ работают _лучшие_ юристы, а закон дыряв как решето :-\
JA>>> Похоже, что ты не имеешь представления, как работает драйвер в JA>>> ОС... Если в процессоре имеются команды запрета прерываний, JA>>> останова, и т.п., то что ты с этим поделаешь?! GS>> А ты знаешь? Это _привилегированные_ команды, к которым можно GS>> было-б не допускать напрямую ни приложения, ни "пользовательские" GS>> драйверы. JA> :) Так приложения и не допускаются!
Допускаются, посредством вызова требуемых действий через драйвера, инсталлирующиеся приложением, которое хочет обойти все существующие защиты.
JA> А как ты это драйверу запретишь?! JA> "Это же памятник! Тьфу... Драйвер!" (C) :)
Это не памятник. Это дыра в "истинной защите"...
GS>> Антиоффтопик. Абсолютно надёжной работы пользовательских GS>> приложений, без существенной потери производительности, без GS>> особого труда можно добиться даже на 8086. Просто не позволять GS>> "несистемному" софту выполнять критичные для системы действия. JA> Тогда даже простая ДОС - непозволительная роскошь для персональника :) JA> Остается только BIOS в ПЗУ. Предлагаешь повыкидывать к чертям всякие JA> там Винды с ДОСами и пользоваться исключительно BIOS? Я - против! :)
DOS никогда и не претендовал на обеспечение надёжности, винды - дырявы, так что придётся ждать более другую систему...
GS>> Есть у меня соответствующая форт-системка... JA> Это интересно! Ты уже подал соответствующую заявку в Hобелевский JA> комитет?
Зачем? Концепции не представляют ничего нового, просто у халтурщиков руки не доходят, сделать для персоналок действительно надёжную систему...
Кстати, в связи с прекращением "гонки мегагерцев" появилась надежда, что разработчики систем наконец перестанут громоздить "рюшечки и бубенчики" и займутся обеспечением надёжности работы...
Георгий