iKapex
@iKapex

Как ОС определяет из какого устройства надо достать данные?

Вот работает процессов и нужны ему данные из адреса 0x01(например). Смотрит он в MMU и видит фактический адрес. А дальше куда? Как он определяет находится ли это в RAM или это в swap?

Спасибо за ответ.
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
@alexalexes
Давно не читал про архитектуру железа, но на пальцах могу объяснить.
Оперативная память разделена на страницы.
Страницы диспетчеризируются на предмет устаревания.
Если к странице памяти давно не обращались, то она становится кандидатом на вытеснение в своп.
Если процессам не хватает оперативной памяти для какого-то маневра, то страницы-кандидаты летят в своп, соответственно, они помечаются, как вытесненные.
Если какому-то процессу нужно достать данные из адреса, то вычисляется, к какой странице этот адрес относится.
Если страница вытеснена, то принимаются меры, чтобы ее вернуть в озу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@chromimon
Это уже давным давно реализовано аппаратно. Уж лет 40 наверное как.

Просто обращается к данным.
Если данных реально нет (страница памяти помечена как сброшенная на диск) - процессор автоматически возбуждает исключение и управление передается той части ОС, что отвечает за подкачку данных с диска в оперативную память.
Ответ написан
Комментировать
@Xilian
Программист 1С, сетевые технологии, SQL
Любой процесс в защищенном режиме процессора имеет свою адресацию и вообще знать не знает ни о каких MMU, в случае когда происходит PageFault - ос просто подгружает данные из свап в адресное пространство процесса. Подробнее сам процесс и его варианты описан у Таннебаума.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы