Почему ОС должна скопировать всю RAM в жесткий диск для спящего режима?

мой вопрос является теоретическим в компьютерных Ose, конкретно о спящем режиме.

Насколько я знаю, спящий режим (ACPI указывают S5, который является правильным?) включает запись в жесткий диск, все данные должны были восстановить RAM когда ОС OS, загруженная снова. Хорошо это звучит хорошим мне.

Но, я помню прежние времена класса Операционных систем, когда учитель объяснил различия в управлении памятью между Ose. Windows и ядро Linux обе виртуальных памяти использования: все страницы инициализируются в подкачку, затем загрузились в RAM при необходимости, таким образом, они могут быть перемещены в любое время.

Я также знаю, что страницы памяти сразу не сбрасываются для свопинга, но сохранены в памяти для определенного количества времени, или когда существует потребность загрузить страницу из подкачки, и все страницы памяти грязны

Мой вопрос: Почему Windows должен сохранить отдельное hiberfil.sys файл со всей RAM, выведенной внутри начиная со всех страниц, должен уже присутствовать в файле подкачки (и спящий режим просто означал бы сбрасывать кэши и останавливать компьютер), и почти все убирают после длительной неактивности?

То же, почему делает Linux explictly, говорит, что копирует страницы для свопинга раздела? Когда я просто приостанавливаю систему, требуется несколько секунд непрерывного доступа к диску перед остановом (возможно, кэши сбрасывания ядра), но когда я хочу быть в спящем режиме, требуется то же время, которое требуется для восстановления.

Я пропускаю что-то о ядрах?

7
задан 04.12.2010, 19:10

3 ответа

Часть из того, что Вы описываете, меньше походит на виртуальную память и больше как дисковый кэш, где операционная система сохраняет копии в оперативной памяти данных, это прочитывает диска, в случае, если приложение хочет считать его снова. В этом сценарии это может также задержать записывающие обратно "грязные" страницы к диску для увеличения эффективности путем записи набора страниц внезапно.

Виртуальная память наоборот - данные записаны в RAM сначала, и только в файл подкачки, если ядро должно освободить что RAM для некоторой другой цели. (Не каждый бит памяти обязательно имеет соответствующее пространство в файле подкачки; иначе у Вас не могло быть файла подкачки, меньшего, чем Ваш размер RAM.) Традиционные взгляды состоят в том, что это - способ, которым это должно быть; было бы слишком дорого продолжать копировать RAM в диск все время, когда Вы не должны. Думайте о том, как медленный Ваш компьютер работает, когда Вы запускаете много требующих много памяти программ, и он должен начать перегружать область подкачки.

Тем не менее существуют некоторые экспериментальные исследовательские операционные системы, которые работают больше как Вы, описывают, с некоторыми сложными правилами для копирования памяти назад к диску равномерно, и результат состоит в том, что нет никакой потребности в, в спящем режиме - можно махнуть рукой на компьютер и потерять, возможно, 30 секунд работы. Проверьте CoyotOS, CapROS или EROS, если Вам интересно теоретически. Я не знаю то, на что их производительность похожа, или что другие оборотные стороны, там мог бы быть к такой стратегии, но когда Вы включаете в сумасшедшие вещи как память, совместно использованная с Вашей видеокартой или другими устройствами, я предположил бы, что трудно получить его работающий правильно на все случаи. Насколько я знаю, никакая производственная операционная система не делает этот вид вещи.

2
ответ дан 07.12.2019, 14:57

Недоразумение здесь состоит в том, что не все содержание RAM выгружаемо к диску.

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

Файл спящего режима записан со всеми данными, которые требуются, чтобы копировать состояние системы. Это далеко от того, чтобы быть равным по размеру к RAM, поскольку только занятая память выписана.

Сохранение и восстановление берет в то же время, так как те же данные должны быть считаны, как был выписан. На дисках, где чтение намного быстрее, чем запись, таково как SSD, восстановление будет намного быстрее.

4
ответ дан 07.12.2019, 14:57

Ваш файл подкачки мог быть меньшим, больше, или тот же размер как Ваша RAM. Некоторые люди даже (по ошибке) выключают его. Таким образом, Microsoft решила создать отдельный файл, который, как гарантируют, будет тем же размером как RAM, и это может быть считано и записано в при запуске и быть в спящем режиме соответственно. Что касается Linux, я принял бы ту же логику.

Править:

И поскольку harrymc указывает в его ответе, он должен поддержать состояние системы.

2
ответ дан 07.12.2019, 14:57

Теги

Похожие вопросы