Как ОС определяет из какого устройства надо достать данные?
Это уже давным давно реализовано аппаратно. Уж лет 40 наверное как.
Просто обращается к данным.
Если данных реально нет (страница памяти помечена как сброшенная на диск) - процессор автоматически возбуждает исключение и управление передается той части ОС, что отвечает за подкачку данных с диска в оперативную память.
Давно не читал про архитектуру железа, но на пальцах могу объяснить.
Оперативная память разделена на страницы.
Страницы диспетчеризируются на предмет устаревания.
Если к странице памяти давно не обращались, то она становится кандидатом на вытеснение в своп.
Если процессам не хватает оперативной памяти для какого-то маневра, то страницы-кандидаты летят в своп, соответственно, они помечаются, как вытесненные.
Если какому-то процессу нужно достать данные из адреса, то вычисляется, к какой странице этот адрес относится.
Если страница вытеснена, то принимаются меры, чтобы ее вернуть в озу.