|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.01.2010, 14:18 | #1 |
Новичок
Джуниор
Регистрация: 07.01.2010
Сообщений: 1
|
Потоки и csrss
Коллеги, доброго времени суток !
У меня вопрос такой. Работа заставила заняться изучением Windows API (до того специализировался на UNIX/POSIX/Sys V системах), в ходе этого процесса запнулся об один вопрос, ответа на который не могу найти. Изучая подноготную метода CreateProcess обратил внимание вот на какую, с моей точки зрения, странность. (далее в соответствии с тем что написано у Руссиновича и Jeffrey Richter, Programming Applications for Microsoft Windows). На определенном этапе подготовки процесса к началу работы исполнительная система (Executive) отправляет процессу csrss сообщение (каким образом ? LPC ?) о новом процессе, csrss создает СВОЙ объект процесс (собственно и Executive и ядро уже создали к этому времени EPROCESS и KPROCESS, причем один является частью другого и это логично, потому как планировщик ядра , как я понял, интересует только PCB). Далее создается первичный тред процесса, в создании которого так же участвует Windows Environment Subsystem (насколько я понимаю в этом участвует именно csrss). Для чего такая сложная схема ? Каким образом userspace процесс csrss КОНКРЕТНО участвует в создании процесса и треда и почему создание "легковестной" структуры, которая по идее должна управляться ядром, настолько усложнено ? К сожалению из открытых источников (как и из вышеперчисленных книг) не могу найти ответа на этот вопрос, кроме общих фраз о том что csrss занимается управлением потоками в системе Windows, что , конечно, "ни о чем". Заранее спасибо за ответ. |
07.01.2010, 20:50 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
ничего не могу сказать по этому поводу, так как самому интересно. Но могу представить один факт.
в этой статье (параграф "Открытие процесса. (способы получения хэндлов)") описан альтернативный метод получения хендла процесса с полным доступом, к которому запрещён доступ (например, процессов антивирусов). Фишка в том что csrss имеет хендлы всех запущенных процессов, даже тех к которым запрещён доступ, таким образом с помощью функции DuplicateHandle мы можем получить хендл нужного нам процесса с полным доступом. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Потоки в С++ | BioS | Общие вопросы C/C++ | 2 | 09.01.2010 21:34 |
Потоки | AidarBik | Win Api | 2 | 04.08.2008 10:00 |
Потоки в С | Raptor | Помощь студентам | 1 | 07.01.2008 21:12 |