Чем объяснить тормоза и ненадёжность платформы Windows CE?
Если в двух словах, то причина в том, что до сих пор не удалось достаточно надежно изолировать одно приложение от возможного влияния другого.
Теоретические подобные ситуации возможны и без графической оболочки (одно приложение захватило в монопольный доступ ресурс, необходимый другому приложению) но там эти проблемы упрощаются намного мЕньшей степенью взаимодейтсвия между процессами и отсутствием критически важных ресурсов, которые можно было бы захватить, заблокировав тем самым всю систему (все блокировки устанавливаемые процедурами ядра ими же и снимаются до выхода из режима супервизора).
Изза чего одна программа может заблокировать всю систему? Вариантов сотни и по мере совершенствования графических оболочек потенциальные "узкие места" последовательно убирались. Но поскольку, как уже было сказано, все графические программы разделяют доступ к ресурсам одной и той же оконной системы (и активно взаимодействуют между собой - чтобы одно приложение было вынуждено предпринимать какие-то действия изза операций с другим приложением, может оказать достаточным одного того, что окно первого окажется частично закрыто окном второго).
Давайте посмотрим на эволюцию оконных систем MS:
Возьмем самую первую реализацию графической оболочки управляемой событиями - ту windows, которая запускалась поверх MS-DOS (независимо от версии).
У неё была единственная очередь событий (в 16-разрядной подсистеме windows 9х сохранилась та же ситуация). Безотносительно к тому, как была бы реализована многозадачность в оболочке (кооперативная или истинная) одно повисшее приложение могло заблокировать все остальные, потому что блокировалась выборка событий из очереди.
В win95 сделали очереди приложений, куда можно было запихнуть событие из системной очереди, чтобы остальные приложения могли продолжать выборку. Но это проблему тоже не решило и плюс возникла еще проблема с глобальными блокировками - многие модули содержали нереентерабельный код (скажем, GDI или user), т.е. их могло одновременно использовать только одно приложение, поэтому повисшее 16-разрядное приложение вешало не тольку всю подсистему win16, но могло завесить и всю win32, которая не могла получить доступ....
Ну и т.д.
Продолжение:
Как можно понять, количество проблем было огромно, поэтому проще было написать новое ядро, чем латать дыры в старом.
Поэтому в Win NT указанные выше проблемы (за исключением проблем с очередями сообщений) были устранены: весь код стал реентерабельным, исполнение "унаследованных" 16-разрядных приложений производилось в обособленном адресном пространстве, ограничен доступ к разделяемой памяти процессов, полностью закрыт доступ к памяти системы со стороны процессов пользователя.
Тем не менее, множество проблем со стабильностью так и не было решено и причиной опять-таки стали очереди сообщений.... (потом допишу, если не лень будет)
Теоретические подобные ситуации возможны и без графической оболочки (одно приложение захватило в монопольный доступ ресурс, необходимый другому приложению) но там эти проблемы упрощаются намного мЕньшей степенью взаимодейтсвия между процессами и отсутствием критически важных ресурсов, которые можно было бы захватить, заблокировав тем самым всю систему (все блокировки устанавливаемые процедурами ядра ими же и снимаются до выхода из режима супервизора).
Изза чего одна программа может заблокировать всю систему? Вариантов сотни и по мере совершенствования графических оболочек потенциальные "узкие места" последовательно убирались. Но поскольку, как уже было сказано, все графические программы разделяют доступ к ресурсам одной и той же оконной системы (и активно взаимодействуют между собой - чтобы одно приложение было вынуждено предпринимать какие-то действия изза операций с другим приложением, может оказать достаточным одного того, что окно первого окажется частично закрыто окном второго).
Давайте посмотрим на эволюцию оконных систем MS:
Возьмем самую первую реализацию графической оболочки управляемой событиями - ту windows, которая запускалась поверх MS-DOS (независимо от версии).
У неё была единственная очередь событий (в 16-разрядной подсистеме windows 9х сохранилась та же ситуация). Безотносительно к тому, как была бы реализована многозадачность в оболочке (кооперативная или истинная) одно повисшее приложение могло заблокировать все остальные, потому что блокировалась выборка событий из очереди.
В win95 сделали очереди приложений, куда можно было запихнуть событие из системной очереди, чтобы остальные приложения могли продолжать выборку. Но это проблему тоже не решило и плюс возникла еще проблема с глобальными блокировками - многие модули содержали нереентерабельный код (скажем, GDI или user), т.е. их могло одновременно использовать только одно приложение, поэтому повисшее 16-разрядное приложение вешало не тольку всю подсистему win16, но могло завесить и всю win32, которая не могла получить доступ....
Ну и т.д.
Продолжение:
Как можно понять, количество проблем было огромно, поэтому проще было написать новое ядро, чем латать дыры в старом.
Поэтому в Win NT указанные выше проблемы (за исключением проблем с очередями сообщений) были устранены: весь код стал реентерабельным, исполнение "унаследованных" 16-разрядных приложений производилось в обособленном адресном пространстве, ограничен доступ к разделяемой памяти процессов, полностью закрыт доступ к памяти системы со стороны процессов пользователя.
Тем не менее, множество проблем со стабильностью так и не было решено и причиной опять-таки стали очереди сообщений.... (потом допишу, если не лень будет)
-
- Академик (6 lvl)
- Сообщения: 1297
- Зарегистрирован: Пт сен 23, 2005 18:17
ВадимП, очень познавательно. Если будете дописывать, X-Window помяните.
А касательно топика, значит WinCE оттого особенно глючная, что работает НЕ на новом движке WinXP, а на НЕдолатанном движке Win95.
Вопрос: А тот факт, что в WinMob окна частично НЕ перекрываются, но всегда полностью. Это, потенциально, серьёзное упрощение? В плане влияния на стабильность.
А касательно топика, значит WinCE оттого особенно глючная, что работает НЕ на новом движке WinXP, а на НЕдолатанном движке Win95.
Вопрос: А тот факт, что в WinMob окна частично НЕ перекрываются, но всегда полностью. Это, потенциально, серьёзное упрощение? В плане влияния на стабильность.
WinCE работает на "движке" WinCE, и не имеет никакого отношения к Win95const_mech писал(а):А касательно топика, значит WinCE оттого особенно глючная, что работает НЕ на новом движке WinXP, а на НЕдолатанном движке Win95
не всегда.const_mech писал(а):Вопрос: А тот факт, что в WinMob окна частично НЕ перекрываются, но всегда полностью
никто не запрещает создать неполноэкранное окно.
Samsung GT-S8500 + MicroSD 8Gb
Да ничего познавательного нет, а X-window ничуть не лучше (а в определенных отношениях даже хуже, чем оболочка windows).
Просто проблема в том, что как тут было справедливо замечено, более сложные системы менее надежны. Никакого закона природы запрещающего создавать стабильные графические оболочки мне неизвестно.
Поэтому как-то проиллюстрировать свои слова я могу единственным образом: взять эволюцию любой оболочки и начать приводить примеры, что как только затыкали одну дырку, тут же обнаружмвалась следующая....
И что эти дырки появлялись не вследствие случайных ошибок в программировании, а были изначально присущи данной архитектуре.
И опять получится, что для того чтобы проиллюстрировать нехитрую в общем-то мысль у меня уйдет две страницы печатного текста (как это было в "оффтопиках", где я спорил с уважаемым Дартом по вопросу о том, насколько быстро может развиться лекарственная зависимость - я даже не уверен, что хоть кто-то нашел в себе силы прочитать там мою аргументацию до конца).
Просто проблема в том, что как тут было справедливо замечено, более сложные системы менее надежны. Никакого закона природы запрещающего создавать стабильные графические оболочки мне неизвестно.
Поэтому как-то проиллюстрировать свои слова я могу единственным образом: взять эволюцию любой оболочки и начать приводить примеры, что как только затыкали одну дырку, тут же обнаружмвалась следующая....
И что эти дырки появлялись не вследствие случайных ошибок в программировании, а были изначально присущи данной архитектуре.
И опять получится, что для того чтобы проиллюстрировать нехитрую в общем-то мысль у меня уйдет две страницы печатного текста (как это было в "оффтопиках", где я спорил с уважаемым Дартом по вопросу о том, насколько быстро может развиться лекарственная зависимость - я даже не уверен, что хоть кто-то нашел в себе силы прочитать там мою аргументацию до конца).

-
- Академик (6 lvl)
- Сообщения: 1297
- Зарегистрирован: Пт сен 23, 2005 18:17
Да, точно, это они "внешне похожи", но НЕ совместимы.sshd писал(а):WinCE работает на "движке" WinCE, и не имеет никакого отношения к Win95
::::::::::::::::::::::::::::
ВадимП, тогда без доказательств и пояснений, только ваше мнение:
Возможно ли, используя подобные БЕЗоконные технологии, создать НЕ просто отдельную игру, а полнофункциональный пользовательский интерфейс к Системе и обычные пользовательские приложения? Веб-браузер с картинками, WYSIWYG редактор печатных документов, редактор таблиц, фото-вьювер, графический редактор, видео-плеер...В этом отношении гораздо надежнее вообще ее не иметь, а писать игру на манер игр под ms-dos при помощи, скажем, SDL (simple direct media layer). У этой библиотеки нет необходимости в графической среде - она может работать напрямую с кадровым буфером или вообще с ascii графикой. Но много ли Вы найдете готовых отказаться от графического интерфейса пользователя?
Трудозатраты на создание приложений при этом сильно увеличатся?
-
- Академик (6 lvl)
- Сообщения: 1297
- Зарегистрирован: Пт сен 23, 2005 18:17
http://offline.computerra.ru/1998/231/1028/sshd писал(а):хм....... а внешне чем похожи?
контролы вроде немного по-другому выглядят (даже в чистой CE, не говоря уже о WM).
Microsoft продвигает Windows CE под флагом установления единого стандарта для НРС, где до ее появления практически все производители использовали разные операционные системы (однако такие разработки, например, как GEOS компании Geoworks, повсеместного распространения не получили). Windows CE - это операционная система не только для карманных компьютеров: Microsoft хочет засунуть ее еще и в автомобили, и в smart phone, и в DVD-проигрыватели и т. д. и т. п. Правда, говоря о стандарте, Microsoft не упоминает о том, что Windows CE и любые другие Windows - "две большие разницы". Под Windows CE работают только приложения, написанные специально для нее. Windows CE, конечно, очень похожа на Windows 95 (представьте себе рабочий стол Windows 95, только меньшего размера и черно-белый), и поэтому пользователю, привыкшему к Windows 95, не нужно прикладывать добавочных усилий, чтобы научиться работать с Windows CE. Соответствующие карманные приложения Microsoft - Pocket Word, Pocket Excel, Pocket Internet Explorer - также внешне очень схожи со своими настольными собратьями. Для продвижения платформы, как, надо заметить, справедливо полагает Microsoft, такого сходства вполне достаточно, и несовместимость 3 с Windows 95 - помеха незначительная.
Завоевав рынок персональных компьютеров, Microsoft ожидает, что покупатели карманных компьютеров, в большинстве своем знакомые с Windows 95, "клюнут" на привычные им образы. Несомненно, в этих ожиданиях есть резон
const_mech
ну и зачем цитировать статью 98-го года?
особенно порадовало это: "представьте себе рабочий стол Windows 95, только меньшего размера и черно-белый"
зачем же обязательно меньшего размера? и зачем чёрно-белый?
в общем статья устаревшая.
но по крайней мере я понял, почему ты ссылаешься именно на Win95, а не скажем WinXP, которая выглядит точно так же, но более актуальна.
ну и зачем цитировать статью 98-го года?
особенно порадовало это: "представьте себе рабочий стол Windows 95, только меньшего размера и черно-белый"

зачем же обязательно меньшего размера? и зачем чёрно-белый?
в общем статья устаревшая.
но по крайней мере я понял, почему ты ссылаешься именно на Win95, а не скажем WinXP, которая выглядит точно так же, но более актуальна.
Samsung GT-S8500 + MicroSD 8Gb
-
- Академик (6 lvl)
- Сообщения: 1297
- Зарегистрирован: Пт сен 23, 2005 18:17
А почему WinXP тогда, а НЕ Vista?sshd писал(а):но по крайней мере я понял, почему ты ссылаешься именно на Win95, а не скажем WinXP, которая выглядит точно так же, но более актуальна.

Если мобильная и настольная Системы разошлись во времена Win95, то НЕ факт, что дальше они развивались паралельно. Могли развиваться и "перпендикулярно". И в современной WinCE может быть меньше сходства с настольными в новом (с WinXP), чем старом (с Win95).
я пока с ней не работал.const_mech писал(а):А почему WinXP тогда, а НЕ Vista?
WinXP и Win95 выглядят одинаково.const_mech писал(а):Если мобильная и настольная Системы разошлись во времена Win95, то НЕ факт, что дальше они развивались паралельно. Могли развиваться и "перпендикулярно". И в современной WinCE может быть меньше сходства с настольными в новом (с WinXP), чем старом (с Win95).
так что если сравнивать, то с тем что актуально, а не с тем, что было 12 лет назад.
концепция интерфейса с тех пор не изменилась. те же окошки, так же выглядят.
Samsung GT-S8500 + MicroSD 8Gb
помоему сравнение с десктопом- неккоректно. Как можно брать за основу ядро операционки, у которой совершенно другое назнпчение, совершенно другие условия работы, и расчитана на совершенно другое железо? вы себе представьте ноутбук, который постоянно работает, он разряжается- его опять заряжают, опять разряжается, и постоянно включен! Да он просто износится за полгода! и операционка тут будет совершенно непричём! А покеты используют именно так, всё время проц уходит в спящий режим, и ведь мы не ждём минуты для того чтобы он загрузился, выдернули из слипа и сразу юзать! я чтото не припомню такой фичи ни в 95, ни в Висте!
Идите в жопу. Вот вам трость и компас.
>>вы себе представьте ноутбук, который постоянно работает, он разряжается- его опять заряжают, опять разряжается, и постоянно включен! Да он просто износится за полгода! и операционка тут будет совершенно непричём!
Смотря какой ноут. Что в нем износится? HDD и кулер. Безвентиляторные ноуты есть, ноуты с SSD-дисками есть. Возможно есть и то и то "в одном флаконе", не интересовался.
Смотря какой ноут. Что в нем износится? HDD и кулер. Безвентиляторные ноуты есть, ноуты с SSD-дисками есть. Возможно есть и то и то "в одном флаконе", не интересовался.
Пятый укрепленный каземат для самых буйных. Не расковывать, с рук не кормить.
- Ar-Gen-Tum
- Академик (6 lvl)
- Сообщения: 1278
- Зарегистрирован: Чт ноя 30, 2006 00:48
Вообще-то между настольной Windows и мобильной сходстваkosolapiy писал(а):помоему сравнение с десктопом- неккоректно. Как можно брать за основу ядро операционки, у которой совершенно другое назнпчение, совершенно другие условия работы, и расчитана на совершенно другое железо?
больше чем различий.
И сходство заключается в практически одинаковом Win API, за небольшими
исключениями.
Я где-то видел, что API взято от Windows 2000(где-то так).
Простая программа, рисующая окно и использующая Win API,
выглядит почти одинаково, что для ББ, что для КПК на WM.
Acer n311 + Transcend SD 4GB(x150) + BT-359 + Nokia 6021
+ Pentax K110D + Eee PC 701( 4G-X) + Eee PC 904HD
+ Pentax K110D + Eee PC 701( 4G-X) + Eee PC 904HD