Обновление PTE на SMP системе

Тема в разделе "WASM.NT.KERNEL", создана пользователем gilg, 9 окт 2006.

  1. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Чтобы обновить PTE для активного процессора блокирую все остальные с помощью DPC (по рекомендации Intel manual), изменяю PTE, снимаю блокировку. Чтобы изменить PTE на других процессорах ставлю в очередь DPC, которая должна это сделать. Вопрос в том, как избежать Page Fault при доступе к таблице страниц?
     
  2. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Мысли вслух:

    #PF Ведь возникает в 4-х случаях?!:
    Шерлок Холмс, методом дедукции, отбросил-бы последние 3 как невозможные, и решил, что код выполняется не на том процессоре, в адресном пространстве которого нах-ся требуемый PTE. (ИМХО)

    П.С. Я бы в исходниках Linice`а порылся, там что-то за МР было.
     
  3. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    В том то и дело, что таблица страниц может находиться в подкачиваемой памяти. А так как код по модификации PTE должен быть выполнен на всех процессорах, я могу это сделать только в DPC-функции в произвольном контексте. Как быть?
     
  4. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Who is Linice?
     
  5. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Linice is:
    http://wasm.ru/baixado.php?mode=tool&id=307
     
  6. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Ok, спасибо, покопаю там
     
  7. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Уже самому интересно стало, а чем #PF мешает? Может стоит попытаться заранее прочитать память либо залочить регион памяти? Ведь это должно решить проблему?
     
  8. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Пожалуй действительно проблемы нет. Система держит всего одну копию PDT и таблиц страниц для всех процессоров. Получается, что и изменить эту таблицу достаточно всего один раз на одном процессоре, а на остальных просто перезагрузить кэш TLB. Почему-то представлял, что у системы несколько копий PDT для каждого процессора, отсюда и такие вопросы. Уррряяяя :))