В скольких экземплярах существуют в памяти функции winapi?

Тема в разделе "WASM.WIN32", создана пользователем mcbain, 13 окт 2008.

  1. mcbain

    mcbain New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2008
    Сообщения:
    18
    Я имею ввиду те функции которые входят в системные библиотеки, но которые лежат в юзермоде (ring3), те которые лежат в верхних гигах адресных пространств всех приложений.
    С одной стороны, мне кажется что система не станет выделать новую память для каждой копии скажем kernel32.dll, в каждом приложении (ведь код то один и тот же)
    Но как тогда работают перехваты системных функций? Ведь делая их мы переписываем первые байты перехвачиваемых нами функций. И ведь изменяются эти байты, насколько я понимаю, только в адресном пространстве текущего процесса. Тогда каждый процесс имеет свою копию системных библиотек? неужели памяти на всех хватает??

    проясните плиз\
     
  2. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    хватает. На то она и виртуальная!!
     
  3. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Copy-on-write.
    При изменении страницы общей памяти создается приватная копия такой страницы.
     
  4. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    Не совсем копию скорее проекцию, почитай статью http://www.wasm.ru/article.php?article=mem_management там описано про memory mapping и как оно работает.