Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория практ1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
684 Кб
Скачать
☆

Объекты и дескрипторы

В операционной системе Windows объект ядра является единственным экземпляром типа объекта времени выполнения, определенного в статическом режиме.

Тип объекта состоит из определяемого системой типа данных, функций (методов), работающих с экземплярами типа объекта и набора свойств объекта. При написании Windows-приложений могут встретиться объекты процессов, потоков, файлов и событий (и это лишь несколько примеров). Эти объекты основаны на низкоуровневых объектах, создаваемых и управляемых операционной системой Windows, в которой процесс является экземпляром типа объекта process, файл является экземпляром типа объекта file и т. д.

Свойство объекта является находящимся в объекте полем данных, которое в той или иной степени определяет состояние объекта. К примеру, у объекта типа process будут свойства, включающие идентификатор процесса (process ID), основной приоритет, учитываемый при планировании запуска процесса, и указатель на объект маркера доступа. Методы объекта, то есть средства манипуляции объектами, обычно считывают или изменяют свойства объекта. Например, методу open объекта process в качестве входных данных будет передаваться идентификатор процесса, а на выходе он будет возвращать указатель на объект.

ПРИМЕЧАНИЕ

Хотя при создании объекта с использованием API диспетчера объектов ядра вызывающий код предоставляет аргумент ObjectAttributes (свойства объекта), этот аргумент не нужно путать с более общим значением термина «свойства объекта».

Наиболее существенным отличием объекта от обычной структуры данных является недоступность внутренней структуры объекта за его пределами. Для извлечения данных из объекта или для помещения данных в объект нужно вызвать службу объекта. Напрямую прочитать или изменить данные внутри объекта просто невозможно. Это отличие отделяет базовую реализацию объекта от того кода, который его просто использует. Благодаря такой технологии реализацию объектов впоследствии будет нетрудно изменить.

Объекты с помощью компонента ядра под названием «диспетчер объектов» предоставляют удобные средства для выполнения следующих четырех важных задач операционной системы:

‰‰- Предоставление легких для человеческого восприятия имен системных ресурсов.

‰‰- Распределение ресурсов и данных среди процессов.

‰‰- Защита ресурсов от неавторизованного доступа.

‰‰- Отслеживание ссылок, позволяющее системе узнать, когда объект больше не используется, чтобы можно было автоматически освободить выделенные под него ресурсы.

Но в операционной системе Windows объектами являются не все структуры данных. В объекты помещаются только те данные, которые нужно использовать совместно, защитить, снабдить именами или сделать видимыми (через системные службы) для программ, выполняемых в пользовательском режиме. Структуры, используемые только одним компонентом операционной системы для реализации внутренних функций, объектами не являются.

Безопасность

С самого начала Windows разрабатывалась с прицелом на безопасность и на соответствие различным официальным правительственным и промышленным требованиям к безопасности, таким как спецификация под названием «Общие критерии оценки безопасности информационных систем» — Common Criteria for Information Technology Security Evaluation (CCITSE). Достижение уровней безопасности, утвержденных правительством, позволяет операционной системе быть конкурентоспособной в сфере правительственных закупок. Разумеется, многие из соответствующих этим требованиям возможностей являются предпочтительными свойствами для любой многопользовательской системы.

Основные возможности в сфере обеспечения безопасности Windows включают в себя:

‰‰- защиту, предоставляемую на усмотрение (узкого круга лиц), а также обязательную защиту целостности для всех общих системных объектов (файлов,каталогов, процессов, потоков и т. д.);

‰‰- контроль безопасности (для возможности идентификации субъектов, или пользователей, и инициированных ими действий);

‰‰- аутентификацию пользователей при входе в систему и предотвращение доступа одного пользователя к неинициализированным ресурсам (таким как свободное пространство памяти или дисковое пространство), освобожденным другим пользователем.

В Windows имеются три формы управления доступом к объектам. Первая форма — управление избирательным доступом (discretionary access control) — представляет собой защитный механизм, который многими и воспринимается в качестве системы безопасности операционной системы. Этот метод позволяет владельцам объектов (таких как файлы и принтеры) предоставлять доступ или отказывать в доступе всем остальным пользователям. При входе пользователей в систему им дается набор прав доступа, или контекст безопасности. При попытке доступа к объектам их контекст безопасности сравнивается со списком управления доступом (access control list) объекта, к которому осуществляется попытка доступа, чтобы определить, есть ли у того или иного пользователя права на осуществление запрошенной операции.

Когда управления избирательным доступом недостаточно, необходимо управление привилегированным доступом (privileged access control). Оно представляет собой метод, гарантирующий чей-либо доступ к защищенным объектам в отсутствие их владельца. Например, если работник уходит из компании, администратору нужен способ получения доступа к файлам, которые могут быть доступны только этому работнику. В случае когда работа ведется под управлением Windows, администратор может стать владельцем файла и, если это необходимо, распорядиться правами доступа к этому файлу.

И наконец, когда требуется дополнительный уровень безопасности для защиты тех объектов, которые доступны в пределах прав одной и той же учетной записи пользователя, нужен обязательный контроль целостности. Он используется как для изоляции браузера Internet Explorer, работающего в защищенном режиме, от пользовательской конфигурации, так и для защиты объектов, созданных при работе с правами учетной записи администратора с расширенными привилегиями, от доступа к ним со стороны пользователей, работающих с правами учетной записи администратора, не имеющего расширенных привилегий.

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

При первой попытке приложения получить доступ к общему объекту подсистема Windows проверяет наличие у приложения прав на подобное действие.

Если проверка безопасности проходит успешно, подсистема Windows позволяет приложению продолжить свое действие.

Реестр

Если вам приходилось работать с операционными системами Windows, вы, наверное, уже слышали о реестре или даже видели его. Нельзя говорить о внутреннем устройстве Windows, не упоминая при этом реестр, поскольку он представляет собой системную базу данных. В реестре содержится информация, необходимая для загрузки и настройки системы, общесистемных программных настроек, управляющих работой Windows, настроек базы данных безопасности и настроек конфигурации конкретного пользователя (например, какую заставку использовать).

Кроме того, реестр является своеобразным окном в запомненные непостоянные данные — например, данные, касающиеся текущего состояния оборудования системы (какие драйверы устройств загружены, каковы используемые ими ресурсы и т. д.), а также в счетчики производительности Windows. Эти счетчики, которые на самом деле находятся не в реестре, доступны через функции реестра.

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

Unicode

Windows отличается от других операционных систем тем, что большинство внутренних текстовых строк в ней хранится и обрабатывается в виде расширенных 16-разрядных символьных кодов Unicode. По своей сути Unicode является стандартом международных наборов символов, определяющим 16-разрядные значения для наиболее известных во всем мире наборов символов.

Поскольку многие приложения работают со строками, состоящими из 8-разрядных (однобайтовых) ANSI-символов, многие Windows-функции, которым передаются строковые параметры, имеют две точки входа: в версии Unicode (расширенной, 16-разрядной) и в версии ANSI (узкой, 8-разрядной). При вызове узкой версии Windows-функции происходит небольшое снижение производительности, поскольку входящие строковые аргументы перед обработкой преобразуются в Unicode, а после обработки, при возвращении приложению, проходят обратное преобразование из Unicode в ANSI. Поэтому если у вас есть старая служба или старый фрагмент кода, который нужно запустить под управлением Windows, но этот фрагмент создан и с использованием текстовых строк, состоящих из ANSI-символов, Windows для своего собственного использования преобразует ANSI-символы в Unicode. Но Windows никогда не станет конвертировать данные внутри файлов: решение о том, в какой кодировки хранить данные: в Unicode или в ANSI, принимается самим приложением.

Независимо от языка, во всех версиях Windows содержатся одни и те же функции. Вместо использования отдельных версий для каждого языка, в Windows используется единый универсальный двоичный код, поэтому отдельно взятая установка может поддерживать несколько языков (путем добавления различных языковых пакетов). Приложения могут также воспользоваться Windows-функциями, предоставляющими возможность во всем мире использовать одни и те же исполняемые файлы приложений, поддерживающие сразу несколько языков.

Дополнительную информацию о Unicode можно найти на сайте www.unicode.org, а также в документации по программированию в библиотеке MSDN.