нхронізації назівається «критична секція» (critical section). ВІН реалізує концепцію «критичних областей». У Windows ВІН схожий на м'ютекс, за вінятком того, что ВІН є локальним для адресного простору створюючого потоку. Оскількі Критичні секції НЕ є про «єктами режиму ядра, смороду НЕ мают явніх опісувачів або дескріпторів безпека й НЕ могут передаватіся между процесами. Блокування та розблокування віконується відповідно виклика EnterCriticalSection и LeaveCriticalSection. Оскількі ЦІ Функції API віконуються спочатку в просторі користувача и роблять Виклики ядра Тільки при необхідності в блокуванні, то смороду набагато швідші м'ютекс. Критичні секції оптімізовані для комбінованого Використання спін-блокувань (на багатопроцесорніх системах) i сінхронізації ядра (при необхідності). У багатьох додатках більшість критичних секцій так Рідко стають об »єктом суперніцтва або мают таке короткий годину утрімування, что необхідність у віділенні про« єкта сінхронізації ядра Ніколи НЕ вінікає. Це виробляти до Дуже істотної економії пам »яті ядра.
.3.2 Реалізація процесів и потоків в Windows Vista ??p>
Розглянемо, як у Windows Vista створюється процес (і початковий Потік). Процес створюється тоді, коли Інший процес Робить виклик CreateProcess інтерфейсу Win32. Цею виклик запускає процедуру (корістувальніцького режиму) з kernel.dll, яка створює:
. Перетворіться ім «я віконуваного файлу (завдань у вігляді параметра) Із маршрутом Win32 в маршрут NT. Если віконуваній файл має Тільки ім »я (без маршрутом у вігляді каталогів), то поиск на его ведеться в тихий каталогах, Які перераховані в якості каталогів за замовчуванням (смороду включаються и Ті, що містяться в змінній оточення PATH - альо НЕ Тільки їх).
. Збіраються ВСІ Параметри создания процеса и передаються (разом з ПОВНЕ маршрутом до віконуваній Програмі) Власний інтерфейсу NtCreateUserProcess. (Цею API БУВ Доданий в Windows Vista для того, щоб Подробиці создания процеса можна Було реалізовуваті в режімі ядра, дозволяючі використовуват Процеси як кордони безпеки. Попередні Власні API и раніше існують, альо викликом CreateProcess смороду больше не Використовують.)
. Працюючий в режімі ядра, NtCreateUserProcess обробляє параметрів, а потім відкріває образ програми и створює об'єкт сегмента, Який может використовуват для відображення програми на віртуальний адресності простір нового процеса.
. Диспетчер процесів віділяє и ініціалізує об'єкт процеса (структуру Даних ядра, что представляет процес, як для ядра, так и для виконавчого уровня).
. Диспетчер пам'яті створює адресно простір для нового процеса, віділяючі и ініціалізувавші каталоги сторінок и ДЕСКРИПТОР віртуальніх адресу, что опісують режим ядра (і в тому чіслі спеціфічні для процеса области, Такі як елемент каталогу сторінок self-map, Який Дає шкірному процеса доступ в режімі ядра до фізічніх сторінок всієї табліці сторінок помощью віртуальніх адресу ядра).
. Для нового процеса створюється таблиця опісувачів, в якові дублюються ВСІ ті опісувачі вікліканої боку, для якіх дозволяється спадкування.
. Віконується відображення спільно вікорістовуваної сторінки користувача, а диспетчер пам «яті ініціалізує структурованих Даних РОБОЧЕГО набору (вікорістовувані для того, щоб прійматі решение, Я...