Захватываем ring 0 в Linux


         

Рисунок1 состояние виртуальной памяти на момент вызова page fault handler'а двумя потоками


Если поток 2 опередит поток 1 и первым выделит свою страницу PAGE 1, поток 1 вызовет серьезное нарушение в работе менеджера виртуальной памяти, поскольку нижняя граница стека теперь находится выше fault 2 и потому страница PAGE 2 реально не выделяется, но становится доступной на чтение/запись обоим потокам, причем после завершения процесса она не будет удалена!

[   PAGE2     ] [PAGE1               VMA     ]




Содержание  Назад  Вперед