Назначение списка активных процессов в Windows? - PullRequest
1 голос
/ 22 марта 2011

Я заметил, что все объекты _EPROCESS связаны друг с другом через ссылку ActiveProcessList.
Какова цель этого списка.
Для чего ОС использует этот список активных процессов?

1 Ответ

2 голосов
/ 05 мая 2011

В Windows NT планируемым блоком является поток. Процессы служат контейнером потоков, а также абстракцией, определяющей, какая карта виртуальной памяти активна (и некоторые другие вещи).

Все операционные системы должны сохранять эту информацию доступной. В разное время разные компоненты операционной системы могут нуждаться в поиске процесса, который соответствует определенной характеристике, или должны оценивать все активные процессы.

Итак, как мы храним эту информацию? Почему не гигантский массив в памяти? Ну, а насколько большим будет этот массив? Удобно ли нам ограничивать количество активных процессов размером этого массива? Что произойдет, если мы не сможем увеличить массив? Готовы ли мы зарезервировать всю эту память заранее, чтобы отслеживать процессы? В случае использования с низким процессом не так ли много потраченной памяти?

Так что мы можем держать их в связанном списке.

В NT бывают случаи, когда мы заботимся о контексте процесса, а не о контексте потока. Одним из них является завершение ввода / вывода. Когда операционная система асинхронно обрабатывает операцию ввода-вывода, возможное завершение этого ввода-вывода может происходить в контексте процесса, который отличается от контекста запрашивающего процесса. Итак, нам нужны некоторые записи и информация о исходном процессе, чтобы мы могли «присоединиться» к этому процессу. «Присоединение» к процессу переключает нас в соответствующий контекст с доступной памятью соответствующего пользовательского режима. Мы не заботимся о контексте потока, мы заботимся о контексте процесса, так что это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...