ВУЗ:
Составители:
Рубрика:
Каждый раз, когда процесс запрашивает память, происходит так
называемая страничная ошибка (page fault). Страничные ошибки делятся на три
типа:
Легкая страничная ошибка (minor page fault) - процесс попытался
получить доступ к странице, которая была изъята сканером страниц, но пока
еще не использована повторно другим процессом.
Значительная страничная ошибка (major page fault) - процесс
пытается получить доступ к странице, изъятой сканером страниц, которая
использована повторно и в данный момент уже отдана другому процессу.
Ошибка копирования при записи (copy-on-write fault) - процесс
пытается записать данные в страницу памяти, которая используется совместно
с другими процессами.
Сейчас нам важны некоторые основные моменты, связанные с
производительностью процессов.
После загрузки системы вся виртуальная память распределяется между
процессами постранично. Кроме того, в ядре инициализируется специальная
таблица, в которой хранятся состояния страниц. Несколько мегабайт памяти
ядро резервирует для себя, а оставшееся пространство отходит списку
свободных страниц. В какой-то момент, когда процесс запрашивает память, из
списка свободных страниц извлекается одна страница, которая и поступает в
распоряжение процесса. Такая схема, при которой память выдается по
принципу "когда потребуется", называется выделением страниц по запросу
(demand paging).
Если список свободных страниц уменьшается до размера lotsfree, ядро
запускает специальный поток внутри себя - сканер страниц. Он начинает искать
страницы, которые можно выгрузить на диск с тем, чтобы увеличить размер
свободной памяти и пополнить список свободных страниц. Дабы не выгрузить
страницы, к которым часто обращаются, сканер страниц работает по
двухшаговому алгориму. Просматривая оперативную память в порядке
возрастания адресов, он очищает бит MMU (бит "используемости") для каждой
Каждый раз, когда процесс запрашивает память, происходит так называемая страничная ошибка (page fault). Страничные ошибки делятся на три типа: Легкая страничная ошибка (minor page fault) - процесс попытался получить доступ к странице, которая была изъята сканером страниц, но пока еще не использована повторно другим процессом. Значительная страничная ошибка (major page fault) - процесс пытается получить доступ к странице, изъятой сканером страниц, которая использована повторно и в данный момент уже отдана другому процессу. Ошибка копирования при записи (copy-on-write fault) - процесс пытается записать данные в страницу памяти, которая используется совместно с другими процессами. Сейчас нам важны некоторые основные моменты, связанные с производительностью процессов. После загрузки системы вся виртуальная память распределяется между процессами постранично. Кроме того, в ядре инициализируется специальная таблица, в которой хранятся состояния страниц. Несколько мегабайт памяти ядро резервирует для себя, а оставшееся пространство отходит списку свободных страниц. В какой-то момент, когда процесс запрашивает память, из списка свободных страниц извлекается одна страница, которая и поступает в распоряжение процесса. Такая схема, при которой память выдается по принципу "когда потребуется", называется выделением страниц по запросу (demand paging). Если список свободных страниц уменьшается до размера lotsfree, ядро запускает специальный поток внутри себя - сканер страниц. Он начинает искать страницы, которые можно выгрузить на диск с тем, чтобы увеличить размер свободной памяти и пополнить список свободных страниц. Дабы не выгрузить страницы, к которым часто обращаются, сканер страниц работает по двухшаговому алгориму. Просматривая оперативную память в порядке возрастания адресов, он очищает бит MMU (бит "используемости") для каждой
Страницы
- « первая
- ‹ предыдущая
- …
- 37
- 38
- 39
- 40
- 41
- …
- следующая ›
- последняя »