Курсовая работа: Мониторинг виртуальной памяти в ОС Linux
29305: anon page @b7ee1fa0 (R)
29305: fsync(0)
29305: anon page @b7f22d4e (R) – страничные отказы в сегменте кода libc.so
29305: anon page @b7ee2000 (R)
29305: anon page @b7e85180 (R)
29305: anon page @b7e86330 (R)
29305: anon page @b7f1f680 (R)
29305: anon page @b7ef6470 (R)
29305: anon page @b7e83140 (R)
29305: anon page @b7e82370 (R)
29305: anon page @b7e87de0 (R)
29305: brk(00000000)
29305: brk -> 134520832 (0804a000)
29305: brk(0806e000)
29305: brk -> 134668288 (0806e000) – malloc выделил 144 кб
29305: anon page @0804a004 (W) – здесь malloc заносит метки в начало и конец выделенного региона
29305: anon page @0804d00c (W)
29305: fsync(1)
29305: anon page @0804b000 (R) – сбои при обращении к страницам из цикла
29305: anon page @0804c000 (R)
29305: fsync(2)
29305: brk(0806b000) – free возвращает часть памяти
29305: brk -> 134656000 (0806b000)
29305: fsync(0) – `дальнейшие циклы уже не выделяют памяти
29305: fsync(1)
29305: fsync(2)
В приведенном примере видно, что при выделении 12К памяти malloc() выделяет изначально гораздо бОльший объем (144К), однако реально эти страницы из физической памяти не выделяеются, и при обращениях к ним происходят страничные отказы. В первую и последнюю страницу выделенной секции malloc заносит свои метки (сбой происходит на операции записи).
2) Выделяем подряд блоки по 4 страницы (не освобождая), обращаясь ко всем страницам:
21049: brk(00000000)