Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Fortran > [General] Сохранение данных приостановленной


Автор: popovda 11.1.2007, 17:55
Доброго времени. 
Требуется решить следующую задачку.
Есть программа на Ф95, выполняющая маршевый счет очень больших объемов.
Задачка считается несколько дней. Промежуточные результаты для конкретных значений
параметров выводятся в файл, но возникает необходимость ПРИостановить программу
 (поставить текущее вычисление на паузу) и начать считать другой набор прараметров.
Вопрос: как сохранить все данные программы в отдельный бинарный файл, чтобы можно было 
возобновить ее работу со всеми данными в любой момент и на любой машине, где стоит
 эта программа? Я так понимаю, что нужно что-то типа "снимка памяти". Может быть все решается просто,
 и это я торможу, а может и нет? smile  Если кто-то решал подобную задачу - помогите. smile 
В принципе, язык реализации значения не имеет, лишь бы описание рецепта было.Конечно желательно,
 чтобы эта программа решалась средствами стандарта Ф90/95. Если это возможно - подскажите. Спасибо!  

Автор: Sartorius 11.1.2007, 18:02
 Я бы посоветовал залезть в исходник и добавить возможность  остановки счета, гораздо проще и быстрее ИМХО

Автор: popovda 12.1.2007, 11:50
Остановить счет я могу. Это не проблема. Вопрос в другом - есть ли какие-либо отработанные средства/методики для сохранения состояния программы и возобновления этого состояния где и когда будет удобно пользователю?

Автор: Sartorius 12.1.2007, 16:30
 Я имел в виду останувку счета с сохранением конечно дописать  smile 

Автор: popovda 14.1.2007, 19:16
Т.е просто сохранить все переменные в некий файл? А разве это то же самое, что и сохранение состояния программы.

Автор: Sartorius 14.1.2007, 21:18
Ну если вы все данные, которые используются в вычислении скините на диск в некоторой точке программы а потом восстановив их вернете управление в ту же точку, то все норм.. А вообще по исходнику нада посмотреть, что действительно достаточно  скидывать.

Добавлено @ 21:25 

Да , кстати я немного туплю... smile  В отладчике ее пустите и брейкпоинт поставьте там ... Это на одной машине позволит остановку делать. Возможно Вы найдете отладчик, который позволяет сохранять состояние на момент брейкпоинта

 Вот Вам пара ссылок все-таки.. если захотите исходник править..
http://gazette.linux.ru.net/lg90/raghu.html
http://www.unix.org.ua/bach/glava_60.htm

Автор: Cr@$h 17.1.2009, 11:29
Цитата(popovda @  11.1.2007,  18:55 Найти цитируемый пост)
Промежуточные результаты для конкретных значений
параметров выводятся в файл, но возникает необходимость ПРИостановить программу
 (поставить текущее вычисление на паузу) и начать считать другой набор прараметров.

Если это отдельное приложение, то предлагаю изящное решение. Допустим приложение работает и скидывает промежуточные результаты в файл. Приостанавливаем это приложение, устанавливая ему низший приоритет (в Линухе это наибольшее число, кажется). Запускаем приложение в другом месте и даём её возможность скидывать результаты в другой файл. Ставим приоритет Высокий, например. После можем и его приостановить также, можем дождаться конца, а можем поменять их местами по приоритетам. Реально так будет сделать? Полной приостановки не будет, т.к. даже голодающим потокам Винда даёт кушать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)