Объекты. Многие из базовых сервисов NT — это объектные сервисыМногие из базовых сервисов NT — это объектные сервисы. Иными словами, они выполняют некоторое действие над объектом в исполнительной системе NT. Поток открывает описатель объекта и затем использует этот описатель при вызове сервисов, работающих с объектом. Рис. 2-11. Вызов базового системного сервиса. Ресурсы, поддерживающие совместное использование, включая процессы, потоки, файлы и распределяемую память, реализованы в исполнительной системе NT как объекты. Таким образом, ОС может воспользоваться сходством свойств ресурсов и использовать общий код для работы с разными типами ресурсов, где только возможно. Объектная система NT — это центральная точка выполнения различных задач управления ресурсами, таких как именование ресурсов; установка пределов, так называемых квот (quotas) объема ресурсов, используемых процессом; совместное использование ресурса двумя процессами и защита ресурсов от несанкционированного доступа. Подсистемы среды часто вызывают объектные сервисы для создания, открытия описателя, манипулирования или удаления объектов. Так, при запуске пользователем какого-либо приложения Win32, например Microsoft Excel, подсистема Win32 вызывает диспетчер процессов NT для создания процесса (в котором будет исполняться Excel) и получения его описателя. В свою очередь, диспетчер процессов вызывает диспетчер объектов, чтобы создать объект-процесс и объект-поток. Аналогично, при сохранении пользователем новой таблицы Excel подсистема Win32 обращается к диспетчеру ввода—вывода NT, чтобы создать файловый объект, представляющий файл, в котором хранится электронная таблица, и открыть описатель этого объекта. Диспетчер ввода-вывода обращается для выполнения этой задачи к диспетчеру объектов. Данный процесс иллюстрируется рис. 2-12. Основной объем обработки, связанной с управлением ресурсами, осуществляется в NT тогда, когда некоторый процесс создает объект и/или открывает описатель объекта. Например, когда процесс (в нашем случае подсистема Win32) создает объект, он может (но необязательно) задать имя объекта. Присвоение объекту имени делает возможным совместное использование этого объекта несколькими процессами. Процесс, желающий использовать распределяемый объект, просто выбирает его имя, обращаясь к диспетчеру объектов NT, и затем открывает описатель объекта.
|