Окна в кармане
АрхивПримерно год назад Microsoft выпустила новую операционную систему Windows CE 1.0, а в конце сентября анонсировала выпуск Windows CE 2.0. Эта операционная система предназначена для ручных электронных устройств (типа handheld-компьютеров - H/PC), игровых автоматов, телефонов следующего поколения, компьютеров типа NC, телевизионных Интернет-приставок, проигрывателей DVD-дисков и т. п. Кроме того, Microsoft делает упор на возможность использовать Windows CE в качестве операционной системы реального времени в автоматизированных комплексах для контроля и управления производственными процессами, офисным оборудованием, в банковских системах и системах связи. Таким образом, продвигая Windows CE, Microsoft выходит сразу на два новых рынка: на рынок операционных систем реального времени и рынок операционных систем для устройств типа H/PC.
Особенно эффектным и даже долгожданным оказалось появление Windows CE на рынке H/PC. Долгое время для ручных компьютеров не было операционной системы, претендовавшей на стандарт, - каждый производитель взращивал для своих моделей собственный огород из операционной системы, средств разработки и прикладных программ. Это тормозило создание программного обеспечения и широкое распространение handheld-компьютеров. А Windows CE уже сейчас существует в вариантах для процессоров Hitachi SH3, MIPS 4000, Intel x86, а впереди ARM и Power PC, ее использует большинство фирм, производящих H/PC: Hewlett-Packard, Casio, Hitachi, Philips, NEC и LG.
Разрабатывая новую операционную систему, Microsoft использовала как основу хорошо знакомый программистам интерфейс Win32 API и хорошо знакомый пользователям графический интерфейс Windows 95, которые были довольно сильно упрощены. Причиной такого упрощения являются более чем скромные, по меркам Microsoft, характеристики компьютеров, для которых разрабатывалась эта операционная система:
- процессор с тактовой частотой около 40 мегагерц;
- оперативная память (RAM) от 1 до 8 мегабайт;
- несколько мегабайт постоянной памяти (ROM);
- монитор с разрешением 480x320 точек.
Итак, штрихи к портрету Windows CE.
Ядро
Основа операционной системы, ядро, было написано программистами Microsoft с нуля. В результате получилось компактное и быстрое ядро, которое поддерживает подмножество (примерно 500 из 1000) вызовов интерфейса Win32 и, кроме того, обладает набором интерфейсов, разработанных специально для handheld-компьютеров и встроенных систем управления.
Одно из нововведений - встроенная база данных, для работы с которой в ядро Windows CE включена поддержка database API. Аналогов этому интерфейсу в других версиях Windows пока нет. Через database API разработчики программного обеспечения без лишних хлопот получат в свое распоряжение готовую к использованию систему управления реляционными базами данных.
Процессы и потоки
Разработчики с самого начала проектировали Windows CE как многозадачную и многопоточную операционную систему с вытесняющей многозадачностью. Но, несмотря на это, ядро поддерживает работу не более 32 процессов одновременно. Количество же потоков в каждом процессе ограничено только объемом доступной системе памяти.
Планировщик процессов поддерживает дискретные значения приоритетов потоков - от 0 (максимальный) до 7 (минимальный). На потоки с максимальным приоритетом не распространяется "вытесняющая многозадачность": получив управление, поток с приоритетом 0 выполняется до тех пор, пока он сам не вернет управление операционной системе.
Для синхронизации потоков используются стандартные методы: критические секции1, мьютексы2, очереди сообщений и т. д. Не реализованы только семафоры3 - разработчикам предлагается заменять их с помощью критических секций.
Организация памяти
Организация памяти в handheld-компьютерах несколько отличается от привычной организации памяти в desktop-компьютерах. Операционная система и набор предустановленных программ записаны в постоянной памяти (ROM). Память произвольного доступа (RAM) поделена на дисковую и оперативную.
Дисковая память предназначена для хранения встроенной базы данных, системного реестра, файлов и дополнительно устанавливаемых программ.
В оперативной памяти размещаются выполняемые программы, их стеки и кучи, а также данные операционной системы.
Как и полагается многозадачной операционной системе, Windows CE поддерживает виртуальную память, однако делает это довольно своеобразно. В отличие от остальных ОС, в Windows CE существует единое 4-гигабайтное адресное пространство для операционной системы и приложений. Каждому приложению выделяется по 32 мегабайта виртуальной памяти из общего адресного пространства (в большинстве других 32-битных операционных систем каждому приложению выделяется по 4 гигабайта виртуального адресного пространства). Проблема защиты данных приложений и операционной системы решается установкой прав доступа на физические страницы памяти.
Real-Time
По расчетам Microsoft, одно из основных приложений Windows CE - это автоматизированные системы управления. Предлагается использовать Windows CE даже в системах управления реального времени. Для этого внедрены решения, которые должны обеспечивать лучшую реакцию на внешние прерывания и возможность достаточно точно предсказывать задержки, возникающие при обработке прерываний. Кроме того, Microsoft опубликовала верхние оценки для времени работы различных системных вызовов, для времени переключения контекстов потоков и т. п.
Обработка прерываний в Windows CE делится на два этапа: ISR (Interrupt Service Routing) и IST (Interrupt Service Thread), что, соответственно, на русский переводится как "процедура обработки прерывания" и "поток обработки прерывания". Разделение обработки на два этапа позволяет более эффективно распределять ресурсы процессора.
При таком разделении обработка прерываний происходит следующим образом: для каждой линии запроса прерывания IRQ в ядре существует свой поток IST, который обычно имеет максимальный приоритет. При поступлении запроса на прерывание, управление передается в процедуру ISR, вся работа которой состоит в активизации соответствующего потока IST.
После выхода из процедуры обработки прерывания система готова для реакции на следующее прерывание. Основная же работа по обработке прерываний происходит, когда планировщик задач предоставляет время потокам IST.
Модульность
Одной из особенностей конструкции Windows CE является модульность. Операционная система поделена на модули, а модули, в свою очередь, поделены на компоненты. С помощью Microsoft Windows CE Embedded Toolkit for Visual C++ разработчики систем типа H/PC и автоматизированных систем управления могут создавать для своих продуктов специальные версии Windows CE. Сущность подобных специализированных версий состоит в том, что из всех компонентов выбираются лишь те, которые реально необходимы в конструируемой системе (ссылка на таблицу).
Конфигурация | Входящие модули | ROM (Kb) | RAM (Kb) | Стек (Kb) |
Минимальная | модуль ядра, модуль файловой системы, модуль поддержки реестра, поддержка ввода с клавиатуры, поддержка ввода с чувствительного экрана, поддержка звука, модуль управления аккумуляторами | 352 | 20 | 8 |
Минимальная графическая поддержка | Минимальная конфигурация + поддержка контекста графического устройства и базовые графические примитивы | 670 | 711 | 9 |
Минимальные коммуникационные возможности | Минимальная конфигурация + коммуникационный модуль (TCP/IP, PPP, TAPI, Serial, NDIS, ARDA) | 1203 | 119 | 14 |
Пользовательский интерфейс Windows | Минимальная + модуль поддержки функций графического интерфейса Windows | 1504 | 857 | 25 |
Локализация
Windows CE, как и Windows NT, работает со строками, представленными в формате Unicode. Это также нашло свое отражение в API и, по мнению Microsoft, облегчит локализацию как самой операционной системы, так и прикладных программ. Несмотря на это, к сожалению, ни в Windows CE 1.0, ни в Windows CE 2.0 не предусмотрена встроенная поддержка русского языка. Но эта проблема решается установкой пакетов русификации, разработанных российскими фирмами, например, с помощью ParaWin CE.
Windows CE довольно быстро идет по пути усложнения и становится полнофункциональной системой, поддерживающей наиболее распространенные стандарты. Подтверждающим это примером служат заявления Microsoft о том, что в Windows CE 2.0 включены поддержка ActiveX (правда, не полностью) и Java Virtual Machine 1.1 (очевидно, тоже не полностью).
Что касается будущего, то благодаря использованию привычных интерфейсов, привычных программ, неплохой реализации, своевременности появления на рынке, а так же благодаря авторитету Microsoft и широкой поддержке со стороны производителей аппаратного и программного обеспечения, можно сделать достаточно состоятельный прогноз: Windows CE уверено займет свое место на рынке. А для нее этот рынок находится у нас в карманах, в наших телевизорах, в автомобилях и цехах предприятий.
С автором можно связаться по адресу:
1 Критическая секция - выделенная часть программы, которая может исполняться не более чем одним потоком данного процесса одновременно.
2 Мьютекс (mutex) - объект операционной системы, который может быть захвачен только одним потоком одновременно. Мьютекс является частным случаем семафора.
3 Семафор - объект операционной системы, который может быть захвачен ограниченным числом потоков одновременно. Число, ограничивающие количество захватов, задается при создании семафора.