Как работает VirtualAlloc?

Тема в разделе "WASM.WIN32", создана пользователем Deader, 1 авг 2011.

  1. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Для каждого фрейма физической памяти должен быть описатель в PTE. Иначе при трансляции будет #PF.
     
  2. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    Почитаю как-нибудь(сейчас времени в обрез). А вообще пост можно понять, как книга "Внутреннее устройство Windows" за авторством Соломона, Руссиновича и Deader'a :))))))) спс за комплимент :)))))))

    где хранятся индексы описателелей PTE для выделенного участка памяти?
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Да одну непрерывную область виртуальной памяти (линейных адресов). А индекс это просто часть виртуального (линейного) адреса.
    Размер выделенного блока хранится в ядерных структурах ОС (в частности в VAD - virtual address descriptor) и нужен он только ОС (а не процессору) для дальнейших операций с VirtualAlloc\Free. А процессору, как уже было сказано, незачем знать размеры блоков - ему достаточно для каждой команды чтения\записи быстро перетранслировать линейный адрес в физический и все. Поэтому он просто бъет лин.адрес на части ("индексы") и лезет по ним за физ. адресами в PDE и PTE - если находит, значит ОК, если же запись PDE или PTE оказывается невалидной, то проц просто выбрасывает исключение #PF (page fault - отказ страницы), которое перехватывается ОС и она уже смотрит в чем дело. В частности на этих #PF полностью основана подкачка страниц при свопинге и файл-маппинге (т.е. вирт.память выделена, но данные в физ.память не загружены, поэтому ОС в ответ на такой #PF выделяет физ.память и корректирует записи PDE\PTE, делая их валидными)
     
  4. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    В каталогах описателей страниц.
     
  5. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    Deader

    Большинство ваших вопросов отражено в заголовках параграфов данной главы... так что - очень советую...
     
  6. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    В PDE? Там же хранятся адреса таблиц PTE, а не их индесы.
     
  7. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    Все, стало понятно. Спасибо всем откликнувшимся за терпение и разъяснения.