Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к экзамену СМО(ответы. Еличева).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
8.96 Mб
Скачать
  1. Базовые сервисы: объекты, объекты в памяти.

Подсистемы среды реализуют свои API, обращаясь к базовым сервисом (native services) — системным сервисам, предоставляемым компонентами исполнитель­ной системы NT. Например, диспетчер виртуальной памяти обеспечивает серви­сы выделения и освобождения памяти, а диспетчер процессов — сервисы созда­ния и завершения процессов и потоков. Как показано на рис. 2-11, когда подси­стема вызывает базовый сервис NT, аппаратура детектирует этот вызов и переда­ет управление исполнительной системе NT. После этого выполнение сервиса осуществляется в режиме ядра.

Так как базовые сервисы используются различными подсистемами среды, то они должны быть универсальными — и даже примитивными. Они должны быть гибкими и не иметь лишних ограничений. Наконец, базовые сервисы не должны вызывать побочных эффектов, которые могут конфликтовать с разно­образными потребностями подсистем среды.

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

Основными пользователями базовых сервисов являются защищенные под­системы DLL и компоненты исполнительной системы NT. Приложения, испол­няемые под Windows NT, написаны для одного из программных интерфейсов — Win32, MS-DOS, 16-разрядной Windows, POSIX или OS/2, — которые реализу­ются подсистемами среды.

Объекты

Многие из базовых сервисов NT — это объектные сер­висы. Иными словами, они выполняют некоторое действие над объектом в ис­полнительной системе NT. Поток открывает описатель объекта и затем исполь­зует этот описатель при вызове сервисов, работающих с объектом.

Рис. 2-11. Вызов базового системного сервиса.

Ресурсы, поддерживающие совместное использование, включая процессы, потоки, файлы и распределяемую память, реализованы в исполнительной систе­ме NT как объекты. Таким образом, ОС может воспользоваться сходством свойств ресурсов и использовать общий код для работы с разными типами ре­сурсов, где только возможно. Объектная система NT — это центральная точка выполнения различных задач управления ресурсами, таких как именование ре­сурсов; установка пределов, так называемых квот (quotas) объема ресурсов, ис­пользуемых процессом; совместное использование ресурса двумя процессами и защита ресурсов от несанкционированного доступа.

Подсистемы среды часто вызывают объектные сервисы для создания, от­крытия описателя, манипулирования или удаления объектов. Так, при запуске пользователем какого-либо приложения Win32, например Microsoft Excel, под­система Win32 вызывает диспетчер процессов NT для создания процесса (в ко­тором будет исполняться Excel) и получения его описателя. В свою очередь, диспетчер процессов вызывает диспетчер объектов, чтобы создать объект-про­цесс и объект-поток. Аналогично, при сохранении пользователем новой табли­цы Excel подсистема Win32 обращается к диспетчеру ввода—вывода NT, чтобы создать файловый объект, представляющий файл, в котором хранится электронная таблица, и открыть описатель этого объекта. Диспетчер ввода-вывода обра­щается для выполнения этой задачи к диспетчеру объектов. Данный процесс ил­люстрируется рис. 2-12.

Основной объем обработки, связанной с управлением ресурсами, осуществ­ляется в NT тогда, когда некоторый процесс создает объект и/или открывает опи­сатель объекта. Например, когда процесс (в нашем случае подсистема Win32) создает объект, он может (но необязательно) задать имя объекта. Присвоение объекту имени делает возможным совместное использование этого объекта не­сколькими процессами. Процесс, желающий использовать распределяемый объект, просто выбирает его имя, обращаясь к диспетчеру объектов NT, и затем открывает описатель объекта.