Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АОПИ. Старое / Презентация. Механизмы ядра. Часть 1.pptx
Скачиваний:
77
Добавлен:
20.09.2019
Размер:
6.57 Mб
Скачать

Объекты ядра

Дескриптор объекта ядра — идентификатор объекта, при помощи которого осуществляется работа с этим объектом.

Создание объекта осуществляется следующим образом:

1.Ядро ОС выделяет память под объект ядра и инициализирует его;

2.Ядро ОС добавляет в таблицу дескрипторов процесса

дескриптор нового объекта.

Далее этот процесс работает с объектом ядра через его дескриптор.

Дескриптор может представлять целое число.

Объекты ядра: Создание

Process A создает объект ядра и получает его

дескрип

Пространство пользователя

Пространство ядра

 

(пользовательские программы)

Ядро

Библиотек

1. Создать объект

ядра*

ОС

а или API

2.

 

 

 

ObjectHandle

 

 

либо NULL Process A

 

 

(ошибка)

* — CreateProcess, CreateThread, CreateEvent,

CreateSemaphore, CreateMutex, CreatePipe,

CreateWaitableTimer…

Объекты ядра

Дескрипторы любого приложения можно увидеть в программе Process Explorer (freeware).

Вверху выделяем любой запущенный процесс. Внизу смотрим список дескрипторов.

Как видим, в приложении main.exe (выделен) работают 20 потоков.

Объекты ядра: Закрытие дескриптора

После работы с объектом ядра следует закрыть его дескриптор при помощи функции CloseHandle().

Пространство ядра

Пространство пользователя

 

(пользовательские программы)

Ядро

Библиотек

1.

CloseHandle()

ОС

а или API

2. Результат:

 

 

 

True : удача Process A

 

 

False: неудача

Объект “разрушится” только тогда, когда все процессы, использующие этот объект, завершат работу с ним (тоже вызвав CloseHandle).

Объекты ядра: Закрытие дескриптора

А что будет, если приложение не вызвало CloseHandle?

Будет ли утечка памяти?

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

Объекты ядра: Именованные объекты

Некоторые объекты ядра могут иметь имена. Таким

образом, процессы могут получать доступ к объектам друг

друга. Для этого они используют Open-функции.

Пространство ядра

Пространство пользователя

 

(пользовательские программы)

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

(

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

Process A

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ядро

Библиотек

 

 

 

t

 

 

 

 

 

”)

 

 

 

 

 

 

 

 

Crea

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОС

а или API

 

 

2.

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

wAc

 

 

pen

O

bjec

 

 

 

 

 

 

 

 

 

cess,

t(

 

 

 

 

 

Д

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

а

л

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ь

ш

е

 

 

 

 

I

n

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

oр

 

 

 

 

 

 

 

 

 

 

r

i

t

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

об

ъ

е

 

 

б)

от

а

 

с

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ктом

 

 

 

 

 

 

 

Process B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Объекты ядра: Именованные объекты

Если два процесса попытались создать объект с одинаковым

именем, то в одном процессе будет создан объект, а в другом

открыт. Оба процесса получат один и тот же дескриптор (права

доступа должны быть идентичны).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пространство ядра

Пространство пользователя

 

(пользовательские программы)

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

(

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

2

 

 

ndlProcess A

 

 

 

 

 

e

 

 

 

 

 

 

 

Ядро

 

t

 

 

 

 

 

 

”)

 

 

Библиотек

Crea

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ctHa

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОС

а или API

C

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

O

 

 

 

 

 

 

3.

 

 

 

 

 

 

 

 

 

 

 

 

reat

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

eNam

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

e

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

т

 

 

 

O

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Obj

 

 

 

 

 

от

 

же

j

ec

 

 

 

 

 

 

 

 

 

 

 

 

)

 

 

 

t

 

 

 

 

 

 

 

 

 

 

e

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

л

иб

 

 

 

t

Ha

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

dl

 

 

 

 

 

 

 

 

 

(

 

 

 

 

 

NUL

 

e

 

 

 

 

 

 

 

 

ош

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ибка

L

 

 

 

 

Process B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

 

 

 

Объекты ядра: Именованные объекты

Именованные объекты

Объекты ядра: Наследование

Дочерние процессы могут унаследовать некоторые

объекты процесса-родителя (если наследование разрешено).

Пространство ядра

Пространство пользователя

 

(пользовательские программы)

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

O

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

Process A

 

 

 

e

 

 

 

 

 

 

 

 

 

 

Ядро

Библиотек

r

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

ОС

а или API

 

 

 

 

 

 

 

 

 

2. Запуск

 

 

3.

 

 

 

 

 

 

 

 

(аргумент

 

 

 

Раб

 

 

 

 

 

 

ы)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

та

с

 

 

 

 

 

б

ъ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

екто

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

м

 

 

 

Process B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Объекты ядра: Наследование

main.exe — процесс-родитель notepad.exe — дочерний процесс со своим

потоком