|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 27, 2004 10:34:44 Как в Винде происходит переключение процесов? Насколько я понимаю висит процес, который переключает выполнение других процесов. Он по идее находится в кеше, но когда он переключает другой процес, то в кеш должен загружаться он. Не слишком ли медленно? Насколько помню руководить загрукой кеша програмно - невозможно. Или может здесь есть что-то чего я не знаю? :((. |
|
|
Дата: Сен 27, 2004 12:31:20 Переключение адресных пространств процессов происходит как часть переключения контекстов потоков и, как это ни странно, для этого достаточно всего двух инструкций :) mov eax, KPROCESS.DirectoryTableBase ; get new directory base mov cr3, eax ; set new directory base DirectoryTableBase - это физический адрес каталога страниц процесса. По значению в cr3 процессор добирается до физических адресов. При этом специально из кэша ничего не грузится. Вся система (логически) поделена на кучку диспетчеров: Диспетчер памяти, Дипетчер объектов и т.п. Каждый отвечает за своё хозяйство. После переключения контекста, поток продолжает выполнение. Если он обращается к отсутствующей странице, происходит исключение и его обработчик вызывает диспетчер памяти, который и достает из кэша (имеется ввиду файл подкачки) страницу (есили она конечно была туда перемещена). Подробнее в книжках умных написано. |
|
|
Дата: Сен 29, 2004 12:26:03 В каких умных книжках, если можно названия и адреса в нете? |
|
|
Дата: Сен 29, 2004 13:18:23 Есть, по-крайней мере, одна умная книжка: "Inside Microsof Windows 2000" y David A. Solomon and Mark E. Russinovich. У нас не приняты ссылки на книги выложенные в ущерб авторам, но где-то оно лежит ;) |
|
|
Дата: Сен 29, 2004 22:09:11 достаточно созранить все регистры в стек, сохранить где нить в структуре процесса esp, затем -меняем cr3, из структуры нового процесса загружаем esp и из стека читаем содеримое регистров. я во всяком случае так делал. без замены esp потоки в пространстве ядра не возможны. |
|
|
Дата: Сен 30, 2004 02:53:23 хорошо бы уже PM реализовать, что так долго никак :( если что, с книжкой могу помочь |
|
|
Дата: Сен 30, 2004 10:48:46 А что с книжкой сложного? Я просто написал название в гугле и нажал кнопку "мне повезет". Сразу предложили выбрать путь для сохранения 19метров. Правда, я искал английскую, с русской, возможно, проблемы будут.. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043 |