Page 1 of 1

Hibernate

Posted: Sun May 29, 2005 5:00 pm
by Vlad G. Maslakov
Реально ли вообще сделать в ядре meos функцию входа в спящий режим с записью содержимого памяти на винт?

Posted: Sun May 29, 2005 5:08 pm
by mike.dld
Если не секрет, зачем???

Posted: Sun May 29, 2005 5:19 pm
by DoomEd Archangel
Vlad G. Maslakov
такая функция вроде есть в VMware - типа save state... ИМХО сохранить содержимое памяти не проблема - проблема загрузить это всё как полагается ;)

Posted: Tue May 31, 2005 10:39 pm
by Vlad G. Maslakov
Если не секрет, зачем???
Как зачем? Чтобы можно было работать с того момента, на котором закончил. Вроде как полезная вещь.
проблема загрузить это всё как полагается
Можно, допустим, сразу перед загрузкой оболочки MeOS (т.е. всяких таскбаров, иконок и т.д.) загрузить образ. Теоретически ;)

Re: Hibernate

Posted: Tue Feb 21, 2012 2:31 am
by Mario
А откопаю-ка я занесенную песком, илом и землей тему... (да-да, такая нездоровая некрофилия)

Если я несу бред сивой кобылы, то по почкам не бить, но критика приветствуется.

Итак одна из вещей которая смызывает красоту возможной реализации - программное выключение питания работает не во всех случаях. Однако при большом желании можно вывести надпись "Теперь можно сделать выкл." и пользователь будет тем самым костылем. Неприятно, но не смертельно - хотя разумеется наши любимые критики могут начать откладывать кирпичи от изобретения очередного костыля, ну да бог с ними.

Теперь как я вижу реализацию.

Выключение: идея зародившаяся в межушном узле, заставляет тентаклю нажать клавишу или кликнуть манипулятором. Ядро последовательно тормозит все процессы, кроме себя любимого разумеется. Возможно не за один обход - вероятно придется подождать приложения производящие запись на дисковые носители. Хотя опять вопрос интересный - запись на флопик процесс не быстрый. Далее тормозится планировщик и в работе остается только тот кусок кода, который отвечает за запись содержимого ОЗУ в файл-хранилище. Поскольку кроме Fat32 нам пока реально рассчитывать не на что, то запись всех 4 Гб будет производится в 2 файла по 2 Гб, можно и в 4 по 1 Гб, чтобы уж наверняка исключить накладки. После сохранения содержимого помечаем каким либо образом (загрузочный сектор, ini файл и т.д.), что система была усыплена в спящий режим Разумеется если сохранение прошло корректно - к примеру если есть ошибки в файловой системе, то такую сохраненную сессию придется отвергнуть с потерей данных содержащихся в оперативке.

Восстановление: идея зародившаяся в межушном узле, заставляет тентаклю нажать клавишу Выкл (отдельные несознательные индивиды обзывают ее Power). Ядро при старте прочухивает что система была успылена. Все физические устройства сбрасываются в исходное состояние (потому что это хоть и не полнокровная, но все же такая же с точки зрения железа загрузка системы). Активируется кусок кода, который считывает и заменяет всю память кроме себя любимого соответственно. Далее все процессы оживляются (раньше еще в Menuet была установка процессу "зомби" статуса, не смотрел в код Колибри как оно есть сейчас) и включается планировщик. Главный вирус нетерпеливо елозит манипулятором по столу...

Вот как-то так.

Знаю что сумбурно и неполно, но это всего лишь идейная часть с руководством к действиям. Сами действия собственно придется продумывать.

Re: Hibernate

Posted: Tue Feb 21, 2012 1:19 pm
by popovpa
Слишком накладно на диск записывать весь объём ОЗУ...4 Гб записать на винчестер ...сколько это минут займёт?...а потом их же считать придётся...сколько займёт времени загрузка?...тут нужен более хитрый способ...

Re: Hibernate

Posted: Tue Feb 21, 2012 1:28 pm
by SII
Надо писать лишь области памяти, реально занятые чем-то полезным (ядром системы, приложениями и т.п.). В том случае, если занята вся память, придётся писать всё -- от этого не уйдёшь.

Re: Hibernate

Posted: Tue Feb 21, 2012 4:57 pm
by Mario
Не знаю - Виндовс файл почти во всю память создает, за исключением того куска который восстановлением потом занимается. Сколько при этом записывается данных неизвестно, но размер выделен всегда под максимальный объем.

А насчет скорости записи - даже если скорость будет 30 Мб/с, то запись будет не более 2,5 минут. Надо понимать, что монопольная работа с дисковым устройством - это достаточно быстрая и эффективная операция. Хотя разумеется записывать только используемые области памяти более эффективно и быстро.

Re: Hibernate

Posted: Tue Feb 21, 2012 5:31 pm
by Serge
Mario
Суспендить дрова, а потом восстанавливать их состояние то ещё удовольствие.

Re: Hibernate

Posted: Tue Feb 21, 2012 5:36 pm
by Mario
А никто не обещал, что будет легко.

Re: Hibernate

Posted: Wed Feb 22, 2012 9:31 am
by popovpa
Что бы не сливать всю память надо придумать способ её архивировать...похожие данные помечать и писать только 1 раз...ну это как будущее суспендиьния..:)

Re: Hibernate

Posted: Wed Feb 22, 2012 10:09 am
by SoUrcerer
popovpa, отправь свою винду в спящий режим и загрузись из Колибри. Увидишь в корне диска с виндой красивенький файлик, размером точно с твою оперативную память. Такие дела...

Re: Hibernate

Posted: Wed Feb 22, 2012 11:35 am
by Mario
Вообще-то он там виден и без перезагрузки. Надо только отображение скрытых и системных файлов включить в проводнике.

Re: Hibernate

Posted: Thu Feb 23, 2012 7:30 pm
by popovpa
Я знаю про этот файл...но ведь идея про сжатие просто отличная...применять например 7zip...ну или что-то своё...но первая реализация должна конечно же быть самой простой...зато я про такой способ что-то ни разу не слышал...

Хотя тут просто сжатие не очень подойдёт...тут надо реализовывать алгоритм под конкретную задачу...нам ведь не надо фото или музыку сжимать...у нас на сколько я понимаю только числа?

Re: Hibernate

Posted: Thu Feb 23, 2012 7:54 pm
by Mario
Слишком большой расход времени.