Лекция 2 Microsoft Window NT

Лекция 1

Обзор операционных систем

· Операционная система (ОС) - это программа, которая распоряжается различными ресурсами вычислительной машины и предоставляет их пользователям. Она дает пользователем возможность запускать свои программы, управлять периферийными устройствами, обеспечивает работу файловой системы и т.д.

Microsoft Window NT - отказоустойчивая 32-разрядная ОС класса "high-end". По утверждению Рихтера Windows NT первая ОС от Microsoft не отягощенная наследством MS DOS, тем не менее, она позволяет выполнять 16-разрядные приложения, написанные для DOS при условии того, что эти программы не обращаются к оборудованию напрямую (например к портам ввода/вывода).

· Отказоустойчивость MS NT заключается в том, что некорректная программа не может обрушить ОС.

· 32 разрядная ОС

· переносимость (большая часть ОС написана на С).Для переноса на новую процессорную платформы переписываются два низкоуровневых компонента ядро и HAL(Hardware Abstraction Layer)-слой абстрагирования от оборудования

· поддержка многопроцессорных платформ

Window 95 - 32-разрядная ОС. Отличительная особенность - частичная реализация функций Windows NT. Причина - стремление заставить работать ОС на машинах с 386 процессором и 4 Мб памяти.

Window CE - 32-разрядная ОС, рассчитанная на применение в карманных вычислительных устройствах, которые не имеют ни жестких ни гибких магнитных дисков. Эта особенность делает невозможным использование виртуальной памяти, тем не менее Windows CE значительно мощнее DOS или Windows 3.1.

ОС Unix начала свой жизненный путь на "заброшенной" машине DEC PDP-7 Bell Laboratories в 1969 г. Начало было положено К.Томпсоном и Р.Канадеем, Д.Ритчи и др., которые написали небольшую систему разделения времени общего пользования. В 1970 г. Д.Ритчи разработал и написал компилятор с языка Си. В 1973 г. К.Томпсоном и Д.Ритчи переписали ядро Unix на Си. В 1974 г. Unix была передана университетам для образовательных целей, а через несколько лет она нашла коммерческое применение. Преимущества Unix:

· Переносимость, за счет того, что ядро написано на Си

· ОС поставляется с исходными текстами, что позволяет модифицировать ядро ОС

· многозадачность

· многопользовательская ОС

Архитектура и программирование под Windows(Win32 API)

Win32 API - библиотека функций, предназначенная для управления ОС.

Лекция 2

Объекты ядра

Существуют следующие объекты ядра ОС: процессы, потоки, каналы, мьютексы, проекции файлов, почтовые ящики, семафоры, события, файловые объекты. Они создаются функциями Win32. Структура этих объектов недоступна программам, поэтому работа с объектами ядра происходит посредством вызова функций Win32. С этой целью функции создания объекта возвращают так называемый описатель (handle) объекта. Например: function CreateThread (…): THandle;

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

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

TSecurityAttributes = record

nLength: DWORD;

lpSecurityDescriptor: Pointer;

bInheritHandle: BOOL;

end;

В Windows 95 lpSecurityDescriptor не поддерживается.

При создании дочернего процесса наследование описателей из родительского процессе выполняется, если установлен bInheritHandle.

Закрытие объекта производится вызовом функции function CloseHandle (hObject:Thandle):bool. После вызова CloseHandle Вы не сможете получить доступ к объекту, тем не менее, он может оставаться в памяти, если счетчик пользователей не обнулен. После завершения процесса ОС очищает таблицу описателей, освобождая ресурсы.

Существует функция, которая позволяет скопировать описатель объекта. Применяя данную функцию можно использовать один и тот же объект в разных процессах.

function DuplicateHandle (hSourceProcessHandle, hSourceHandle,

hTargetProcessHandle: THandle;

lpTargetHandle: PHandle; dwDesiredAccess: DWORD;

bInheritHandle: BOOL; dwOptions: DWORD): BOOL;

hSourceProcessHandle, hTargetProcessHandle - описатели процессов

hSourceHandle - описатель любого объекта ядра

lpTargetHandle - возвращается описатель скопированного объекта ядра

dwDesiredAccess - маска доступа к скопированному объекту

bInheritHandle - флаг наследования

dwOptions - DUPLICATE_CLOSE_SOURCE или DUPLICATE_SAME_ACCESS

DUPLICATE_SAME_ACCESS - игнорирует dwDesiredAccess и копирует условия доступа к объекту

DUPLICATE_CLOSE_SOURCE - после копирования закрывает описатель в процессе источнике.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: