Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NewОтветыОС_1.doc
Скачиваний:
37
Добавлен:
07.02.2015
Размер:
2.67 Mб
Скачать
  1. Блокиpование стpаниц в памяти. Хpанение стpаничной памяти на диске.

Блокирование страниц в памяти

Процесс только что сделал системный вызов, чтобы считать информацию из некоторого файла или устройства в буфер внутри своего адресного пространства. Пока процесс ожидает завершения операции ввода-вывода, он приостанавливается, предоставляя возможность работы другому процессу. Этот другой процесс вызывает страничное прерывание.

Если алгоритм подкачки страниц - глобальный есть шанс что страница, содержащая буфер вв/выв, будет выбрана для удаления из памяти. Если устройство вв/выв передет данные в эту страницу, ее удаление станет причиной записи части данных в буфер, которому они принадлежат, а часть данных запишется в заново загруженную страницу. Решение: 1) блокировать страницы, занятые вв/выв, чтобы они не удалялись из памяти (пришпиливание). 2) сначала выполнить весь ввод-вывод в буферы ядра, а затем копировать данные в пользовательские страницы.

Хранение страничной памяти на диске

1) Простейший алгоритм для распределения страничного пространства на диске заключается в поддержке специальной области подкачки (свопинга) на диске. При загрузке системы эта область является пустой и представляется в памяти единой записью, имеющей свой начальный адрес и размер. При запуске новых процессов, им предоставляются участки области подкачки, равные по размеру их образам памяти. Как только они завершаются, их дисковое пространство освобождается. Область подкачки управляется как список свободных участков. С каждым процессом связывается адрес его области подкачки на диске, который хранится в таблице процесса. Вычисление адреса записи страницы: прибавляется смещение страницы внутри виртуального адресного пространства к адресу начала области подкачки. Перед тем, как процесс может начать работу, область подкачки должна быть инициализирована. Это можно сделать, копируя полный образ процесса в область подкачки так, чтобы его по необходимости можно было переносить в память. Второй способ: загрузить весь процесс в память и позволить ему постранично выгружаться на диск, также когда это требуется. Проблема: процессы могут увеличиваться в размере после запуска. Хотя текст программы обычно фиксирован, иногда может расти область данных и всегда может увеличиваться стек.

2) ничего не размещать заранее; предоставлять пространство на диске для каждой страницы, когда она выгружается на диск, и освобождать это место, когда она подкачивается обратно в память. При таком подходе процессы в памяти не привязаны к какому-либо пространству подкачки на диске. «−» адрес на диске, необходимый в памяти, отслеживается для каждой страницы на диске. Другими словами, для каждого процесса должна поддерживаться таблица, содержащая местоположение каждой страницы на диске.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]