Дескриптор - процес - велика енциклопедія нафти і газу, стаття, сторінка 1
Зауважимо: дескриптор процесу залишається коректним навіть після закінчення процесу. Коли програма завершиться з використанням дескриптора, вона може закрити його, передаючи дескриптор в функцію Win32 API. CloseHandle. Якщо програма не закрила дескриптор, то він закриється автоматично при завершенні програми. Коли все дескриптори даного процесу будуть закриті, Windows звільняє пам'ять від інформації, яка підтримувала процес. [4]
Програма може передавати дескриптор дочірнього процесу інших функцій Win32 API, призначеним для управління ним, наприклад, в функцію. SetPriorityClass для зміни пріоритету процесу або в функцію. TerminateProcess для його негайного припинення. [5]
Якщо рр - покажчик на дескриптор процесу. то це поле є як елемент структури рр - - р - pri. [6]
Функція. CreateProcess надає дескриптор дочірнього процесу. Батьківський процес передає його однією з декількох функцій Win32 API: функції. GetExitCodeProcess для отримання коду повернення процесу, функції. WaitForSingleObject для очікування завершення процесу, функції. SetPriorityClass для зміни пріоритету процесу або. TerminateProcess для його зупинки. [7]
Це відноситься не тільки до дескрипторів процесів. але і до всіх інших системним структурам даних в ядрі. Їх кількість можна варіювати при генерації; під час роботи системи перевищення заданих при генерації граничних чисел неприпустимо. [8]
Як тільки дескриптор об'єкта поміщений в таблицю дескрипторів процесу. будь-який потік процесу може його використовувати. [10]
Програма передає в функцію Win32 API. WaitForSingleObject дескриптор дочірнього процесу. щоб почекати його завершення (див. гл. [11]
Параметр binheritHandles визначає, чи зможе дочірній процес успадковувати дескриптори батьківського процесу (ще одна міра безпеки), і в нашому випадку повинен мати значення True. Параметр dwcreationFiags дозволяє вказати прапорці, що впливають на створення процесу. Прапорці DETACHED PROCESS і CREATE NEW CONSOLE пов'язані зі спадкуванням. За замовчуванням дочірній процес успадковує консоль батьківського процесу. Якщо ми встановлюємо прапор DETACHED PROCESS, процес не буде наслідувати консоль, і в цьому випадку він може виконуватися, взагалі не маючи консолі, якщо така не буде створена, наприклад, за допомогою функції Aiiocconsole. Якщо ми встановлюємо прапор CREATE NEW CONSOLE, дочірній процес автоматично отримує нову консоль. Процесу з графічним інтерфейсом консоль, природно, не потрібна. [12]
Пріоритет користувацького процесу обчислюється більш складним чином. В обчисленні беруть участь значення двох полів дескриптора процесу. р - nice і р єрі. Перше з них формується користувачем і може бути названо користувальницької складової пріоритету процесу, друге - формується системою і називається системної складової. [14]
Для кожного процесу система веде підрахунок часу його безперервного перебування на даному рівні пам'яті. Підрахована час зберігається в поле р time дескриптора процесу. [15]
Сторінки: 1 2