Операционные системы - статьи


Что показалось плохим


Многие аспекты Win32 показались автору плохими. Первым среди них была сложность интерфейса. Похоже, что сложная модель защиты является причиной проблем с безопасностью, поскольку, вероятно, только эксперты в состоянии применить эту модель корректно.

Список экспортируемых имен показывает, что библиотека kernel32 включает около 675 функций; библиотека advapi32, определяющая интерфейс безопасности, содержит приблизительно 400 функций; библиотека users32, обеспечивающая интерфейс пользователя, содержит примерно 600 функций. Набор средств разработки включает более 225K строк включаемых файлов и поставляется вместе с 400 дополнительными динамически компонуемыми библиотеками.

Одним из примеров чрезмерной сложности является интерфейс CreateFile(). Этот интерфейс обеспечивает функциональность функции ОС UNIX open(). У функции CreateFile семь аргументов:

  1. pathname;
  2. access - битовая маска из трех или более бит;
  3. share - битовая маска чтения, записи, удаления;
  4. security - дескриптор безопасности + наследование;
  5. mode - пять режимов;
  6. flags_attr - восемь флагов + 11 атрибутов;
  7. template - хендл файла.

Имеется по меньшей мере 33,554,432 возможных комбинаций опций для данного путевого имени, не считая дескриптора безопасности и хендла файла.

Функция CreateProcess(), которая заменяет семейство функций fork() и exec() ОС UNIX, принимает десять аргументов; некоторые из них являются структурами, содержащими много полей. При наличии большого числа возможных комбинаций флагов отсутствует установка флага, которая обеспечивала бы функциональность семейства функций exec. Эти функции заменяют текущий процесс некоторым новым процессом. Реализация семейства exec ОС UNIX была одной из наиболее хитроумных задач.

Другим примером сложности может служить реестр (registry). Реестр служит для сбора в одном месте параметров конфигурирования и обеспечения к ним быстрого доступа. Реестр структурирован подобно файловой системе, но доступ обеспечивается оотдельным набором функций API. Реестр обладает бесчисленным количеством ключей, и их организацию часто трудно предсказать, тем более, что она различна для Windows 95 и Windows NT.




Начало  Назад  Вперед



Книжный магазин