- •Общие сведения, ос 90-х годов.
- •Рабочие станции
- •Цели проекта Windows nt: расширяемость и переносимость.
- •Расширяемость
- •Переносимость
- •Цели проекта Windows nt: надежность, совместимость и производительность.
- •Совместимость
- •Производительность
- •Модели Windows nt: клиент-сервер.
- •Объектная модель. Симметричная мультипроцессорная обработка.
- •Защищенные подсистемы. Исполнительная система.
- •Исполнительная система
- •Основные понятия: сессия регистрации, подсистемы среды.
- •Сессия регистрации
- •Подсистемы среды
- •Базовые сервисы: объекты, объекты в памяти.
- •Объекты
- •Объекты размещаются в памяти ос.
- •Ввод-вывод и файловые системы
- •Интернационализация, регионы, Unicode.
- •Интернационализация
- •Регионы
- •Структурная обработка исключений.
- •Удержание объектов
- •Учет использования ресурсов
- •Методы объектов.
- •Защита объектов. Маркеры доступа.
- •Маркеры доступа
- •Списки контроля доступа. Общий принцип работы.
- •Как все это работает вместе
Интернационализация, регионы, Unicode.
Интернационализация
Международные рынки начинают играть все более важную роль для компьютерной промышленности. Продажи программ за рубежом составляют большую, чем когда-либо, долю рынка приложений. Перед Windows NT стоит задача сделаться многоязычной ОС, дающей солидную основу для разработки и применения интернациональных приложений.
Видимая для пользователя часть поддержки интернационализации находится в Панели Управления (Control Panel) Windows NT, как показано на рис. 2-15.
Само диалоговое окно выглядит так же, как и в Windows 3.0. Однако, то, что скрыто за пользовательским интерфейсом, сильно изменилось. Поддержка интернационализации в Windows NT значительно более рациональна и обеспечивает модульные средства как для приложений, так и для важных системных компонентов, таких как подсистема Win32. В следующих версиях пользовательский интерфейс средств интернационализации будет развиваться дальше.
Рис. 2-15. Диалоговое окно установок интернационализации.
В Windows NT 4.0 национальная поддержка получила дальнейшее развитие. В Control Panel можно указать такие параметры, как регион системы, устанавливаемый по умолчанию, регион текущего пользователя, зарегистрировавшегося локально, а также раскладки клавиатуры.
Регионы
Рынки с различными национальными и культурными особенностями, называемые регионами (locales), предъявляют к программному обеспечению разные требования. Основное требование — возможность для пользователя работать с программами на своем родном языке, используя привычные соглашения о типе представления данных.
Регион — это совокупность таких параметров, как язык, страна и кодовый набор, т. е. двоичные коды, используемые для представления символов данного языка. (Одним из таких кодовых наборов является Windows ANSI.) При установке Windows NT пользователь задает язык, и с ним связывается регион по умолчанию. Регион по умолчанию предоставляет пользователю соответствующие местной культуре начальные установки для раскладки клавиатуры, порядка сортировки, вида валюты и форматов записи времени и даты. Любую из этих установок по умолчанию пользователь может переопределить.
Тем не менее, желательна еще большая гибкость. В многоязычных странах, таких как Канада, Швейцария и Бельгия, пользователям необходимо регулярно переключаться между двумя или несколькими языками. Более того, некоторые компании, в том числе и Microsoft, имеют подразделения, в которых пользуются несколькими рабочими языками. В идеале каждый пользователь должен иметь возможность в любое время переключаться или пересылать данные между регионами без потери информации. Чтобы обеспечить эту возможность, приложения (в данном случае Windows) необходимо разделить на две части:
• Код, который может быть использован во всех регионах.
• Данные, которые для каждого региона должны преобразовываться.
В Windows к категории данных относятся ресурсы, такие как меню и сообщения. Эти ресурсы отделены от основного кода, и их можно подключить к Windows или отключить от нее. Если пользователь переключает регион, набор ресурсов изменяется так, чтобы соответствовать новому региону. Поскольку набор ресурсов Windows существенно меньше ее самой, во время установки системы можно выбрать несколько наборов ресурсов, что позволит пользователю легко переключаться между регионами, не загружая новые файлы с гибких дисков. Более того, один и тот же вариант Windows может продаваться во всех странах с уже встроенной поддержкой локализации. Остается только перевести файлы ресурсов и документацию.
Для поддержки локализации подсистема Win32 содержит API поддержки национальных языков (national language support, NLS), которые предоставляют приложениям (и Windows NT) корректные с точки зрения национальной культуры: сравнение строк; таблицы сортировки символов разных языков; процедуры форматирования даты, времени и денежных сумм; процедуры для определения текущего региона и других регионов, представленных в системе. Кроме того, NLS API содержат функции преобразования международного кодового набора, используемого Windows NT, в другие распространенные кодовые наборы. И подсистема Win32, и библиотека времени выполнения С содержат свои собственные API, использующие NLS. Все эти средства позволяют приложениям поддерживать локализацию, не дублируя требуемый для этого значительный объем информации (таблицы, кодовые наборы и т.д.).
Unicode
Самый низкий уровень поддержки локализации — это представление отдельных символов, кодовые наборы. В США для представления информации традиционно используется стандарт ASCII (American Standard Code for Information Interchange — Американский стандартный код для обмена информацией). Однако, для европейских и других стран этот код не является адекватным, так как в нем нет многих символов и знаков. Например, там нет знака британского фунта, а также диакритических символов, используемых во французском, немецком, датском и испанском языках.
Международная организация по стандартизации ISO (International Standards Organization) установила стандартный кодовый набор, называемый Latin 1 (стандарт ISO 8859-1) и определяющий коды для всех европейских символов, которых нет в ASCII. В Microsoft Windows используется несколько измененный вариант Latin 1, который называется кодовым набором Windows ANSI. Windows ANSI является однобайтовой схемой кодирования (single-byte coding scheme), так как для представления каждого символа в нем используется 8 бит. Максимальное число символов, которое можно представить с использованием 8 бит, равно 256 (28).
Алфавит (script) — это набор литер, необходимых для записи текста на некотором языке. Часто один и тот же алфавит используется несколькими языками: например, кириллица применяется как в русском, так и в украинском. Windows ANSI и другие однобайтовые схемы могут закодировать количество символов, достаточное для представления букв любого западного алфавита. Однако восточные алфавиты, такие как японский или китайский, в которых используются тысячи разных символов, не удается закодировать при помощи однобайтовой схемы. В таких случаях используют двухбайтовую схему кодирования, когда для каждого символа требуется 16 бит, либо многобайтовую, в которой одни символы представляются 8 битами, а другие 1б, 24 или 32 битами. Последняя схема требует применения сложных алгоритмов разбора для определения длины данного символа. Более того, большое число кодовых наборов означает, что данному коду могут соответствовать совершенно разные символы на разных компьютерах, в зависимости от используемых на этих компьютерах кодовых наборов.
Для решения проблем множественности схем кодирования и для поддержки более широкого набора алфавитов Windows NT использует для представления данных новый стандарт Unicode. Unicode - это 16-разрядная схема кодирования символов, в которой можно представить 65536 (216) символов. Этого достаточно для всех современных, а также нескольких старых или мертвых языков, имеющих ограниченное применение (например, санскрита и, может быть, египетских иероглифов). Unicode также включает знаки препинания, математические символы и набор графических символов, называемых дингбатами (dingbats), после чего еще остается много места для расширений.
В Unicode "суть" символа отделена от информации о шрифте или форматировании, используемой для его отображения. Каждому коду соответствует один (и только один) символ; для отображения символов Unicode в различных стилях и формах к ним применяется информация о шрифте. Раскладка алфавитов и символов в Unicode показана на рис. 2-16 .
Рис. 2-16. Раскладка Unicode.
Хотя подсистема Win32 предоставляет варианты функций API как для строк ANSI, так и для строк Unicode, последний является "родным" кодовым набором Windows NT. Все строки в системе, включая имена объектов, имена путей, имена файлов и каталогов, представляются 16-разрядными символами Unicode. Даже подсистема Win32 преобразует передаваемые ей символы ANSI в символы Unicode, прежде чем обрабатывать их; перед возвратом управления она, при необходимости, преобразует строки обратно из Unicode в ANSI.
Применение Unicode позволяет устранить все ограничения на набор символов, которые могут быть представлены в Windows NT. Так как Unicode обеспечивает уникальный код для каждого символа любого алфавита, Windows NT может гарантировать, что преобразование символов как на выходе, так и на входе в систему будет всегда правильным.
