Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как восстановить работу процесса из дампа? / 20 сообщений из 20, страница 1 из 1
23.07.2008, 02:13:08
    #35445951
Feniksa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Часто возникает вот такая задача:
---------------------------
1) остановить процесс: посылаем просто сигнал SIGSTOP
2) сделать дамп памяти в файл
3) убить процесс
-------------------------
4) востановить из файла процесс
5) послать сигнал SIGCONT
6) процесс продолжает свою работу
...
Рейтинг: 0 / 0
23.07.2008, 13:31:39
    #35447009
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Имхо, такое невозможно отдельно от всей ОС. Ибо что делать с открытыми сокетами, файлами, межпроцессным взаимодействием и т.п ?
...
Рейтинг: 0 / 0
23.07.2008, 22:38:11
    #35448335
Feniksa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Если возможно востановить структуры ядра, которые отвечают за сокеты, файлы и т.д., то возможно
...
Рейтинг: 0 / 0
23.07.2008, 22:46:26
    #35448342
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
FeniksaЕсли возможно востановить структуры ядра, которые отвечают за сокеты, файлы и т.д., то возможноа что толку их восстанавливать, если остальные процессы уже закрыли свои сокеты, стерли файлы, отмонтировали сетевые диски?
...
Рейтинг: 0 / 0
24.07.2008, 00:10:09
    #35448411
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Может, вам подойдет какая-либо из виртуальных машин, например, vmware?
Тогда можно будет под ваш процесс выделить отдельный экземпляр ОС и останавливать/запускать вместе с этим экземпляром ОС.
...
Рейтинг: 0 / 0
24.07.2008, 00:16:58
    #35448416
Белый Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
ИМХО, проще в само приложение добавить возможность сохранять свое состояние, а потом его восстанавливать.
...
Рейтинг: 0 / 0
24.07.2008, 03:41:08
    #35448507
Feniksa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
miksoftа что толку их восстанавливать, если остальные процессы уже закрыли свои сокеты, стерли файлы, отмонтировали сетевые диски?
В данном вопросе я с вами не согласен. Да, есть вероятность, что процесс или ресурс могут быть либо заняты либо вообще недоступны. Но межпроцессное взаимодействие отлично умеет обрабатывать такого рода ошибки. С другой стороны, если файл, к которому был открыт дескриптор, был удалён, то наш процесс коректно (как правило), обработает данную ошибку. Но это все крайности, так как изначально задача была в том, что все ресурсы будут доступны для правильного продолжения процесса.
miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware?
нет, это не рационально и глупо
Белый КотИМХО, проще в само приложение добавить возможность сохранять свое состояние, а потом его восстанавливать.
если бы была возможность переписать ВЕСЬ софт, то можно так сделать :-)
...
Рейтинг: 0 / 0
24.07.2008, 09:16:53
    #35448623
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
взять gdb, открыть им корку и посмотреть стек вызовов
...
Рейтинг: 0 / 0
24.07.2008, 09:34:27
    #35448645
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Feniksa miksoftа что толку их восстанавливать, если остальные процессы уже закрыли свои сокеты, стерли файлы, отмонтировали сетевые диски?
В данном вопросе я с вами не согласен. Да, есть вероятность, что процесс или ресурс могут быть либо заняты либо вообще недоступны. Но межпроцессное взаимодействие отлично умеет обрабатывать такого рода ошибки. С другой стороны, если файл, к которому был открыт дескриптор, был удалён, то наш процесс коректно (как правило), обработает данную ошибку. Но это все крайности, так как изначально задача была в том, что все ресурсы будут доступны для правильного продолжения процесса.Так дело не только в потенциальном исчезновении файлов или закрытии сокетов. Дело в том, что вы не сможете гарантировать неизменность всего окружения процесса в течение времени.
Например, к моменту возобновления работы вашего процесса другим процессам могут быть выданы ресурсы (те же сокеты) под теми номерами, которые использовались в вашем процессе. Как вы предполагаете разрешать такую коллизию?

Шанс, что не изменится ничего критичного, наверное, есть. Но гарантии-то нет.
...
Рейтинг: 0 / 0
24.07.2008, 09:37:06
    #35448651
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware?нет, это не рационально и глупоИзложите всю задачу целиком, а не то, каким способом вы хотите ее решить. Тогда, возможно, у кого-то найдется решение, которое не покажется вам глупым. А пока мне кажется глупой постановка задачи.
...
Рейтинг: 0 / 0
24.07.2008, 11:53:52
    #35449081
Белый Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware?
нет, это не рационально и глупо
Вот как раз вариант с виртуальной машиной - самый рациональный из предложенных. Запускаете на виртуалке всю Вашу инфраструктуру, а по необходимости "приостанавливаете" работу виртуальной машины.
...
Рейтинг: 0 / 0
24.07.2008, 11:56:04
    #35449089
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Белый Кот Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware?
нет, это не рационально и глупо
Вот как раз вариант с виртуальной машиной - самый рациональный из предложенных. Запускаете на виртуалке всю Вашу инфраструктуру, а по необходимости "приостанавливаете" работу виртуальной машины.

гениально! и че с ней делать после остановки?
...
Рейтинг: 0 / 0
24.07.2008, 12:51:34
    #35449292
nik_x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Умаксуман Белый Кот Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware?
нет, это не рационально и глупо
Вот как раз вариант с виртуальной машиной - самый рациональный из предложенных. Запускаете на виртуалке всю Вашу инфраструктуру, а по необходимости "приостанавливаете" работу виртуальной машины.

гениально! и че с ней делать после остановки?

Продолжить выполнение с места остановки.
Мало того, VirtualBox допустим, позволяет делать снапшоты по ходу работы:)
...
Рейтинг: 0 / 0
24.07.2008, 12:58:49
    #35449323
Scott Tiger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
miksoft Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware?нет, это не рационально и глупоИзложите всю задачу целиком, а не то, каким способом вы хотите ее решить. Тогда, возможно, у кого-то найдется решение, которое не покажется вам глупым. А пока мне кажется глупой постановка задачи.

+1
...
Рейтинг: 0 / 0
24.07.2008, 13:04:42
    #35449347
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
nik_x
Продолжить выполнение с места остановки.
Мало того, VirtualBox допустим, позволяет делать снапшоты по ходу работы:)

Да это ежу понятно, что продолжить. а что за снапшоты?
...
Рейтинг: 0 / 0
24.07.2008, 16:38:27
    #35450067
nik_x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Умаксуман nik_x
Продолжить выполнение с места остановки.
Мало того, VirtualBox допустим, позволяет делать снапшоты по ходу работы:)

Да это ежу понятно, что продолжить. а что за снапшоты?

With VirtualBox’s snapshots, you can save a particular state of a virtual machine for
later use. At any later time, you can revert to that state, even though you may have
changed the VM considerably since then.
...
Рейтинг: 0 / 0
25.07.2008, 09:26:50
    #35451120
Умаксуман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
nik_x Умаксуман nik_x
Продолжить выполнение с места остановки.
Мало того, VirtualBox допустим, позволяет делать снапшоты по ходу работы:)

Да это ежу понятно, что продолжить. а что за снапшоты?

With VirtualBox’s snapshots, you can save a particular state of a virtual machine for
later use. At any later time, you can revert to that state, even though you may have
changed the VM considerably since then.

А конкретнее? Он может показать стек вызовов? Или просто дает распечатку регистров?
...
Рейтинг: 0 / 0
25.07.2008, 18:47:17
    #35453084
Proger89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
У вас тут возникает такой страшный сырбор из-за простого вопроса.
Чтобы ответить на данный вопрос нужно сначала разобратся что из себя представляет процесс в ОС. Итак это:
1) Виртуальное адрестное пространство (таблица страниц и указатель на нее) + сами страницы, как храняшиеся в памяти, так и в свопе.
2) Структуры ядра такие как "структура пользователя" и структура в таблице ядра.
3) То что хранится описанных выше структурах машинные регистры, таблица дескрипторов файлов, параметры планирования и прочее.
В обшем из этого должно стать понятно, что не имея доступа к структурам ядра не возможно остановить процесс, а затем заново его запустить.
Кроме того даже если такое возможно необходимо что б и состояние системы оставалось прежним (иначе на данный способ будут наложены сушественные ограничения), например если данному процессу нужно взаимдействовать с породившим его процессом, то сушествует вероятность что когда процесс будет запушен заново, то породившего процесса уже может и не быть. Да и вообше сложно будет востановить (обновить) все таблицы ядра.
В обшем ИМХО я считаю, что то что хочет сделать Feniksa возможно, но очень уж геморойно как по мне. Хотя если разсматривается чисто теоретическая возможность, то это возможно.
Однако если нужно это реализовать на практике, то придется столкнутся с сильными ограничениями. Возможно (если процесс будет запускатся заново в ходе одного сеанса ОС), проше приостановить все потоки процесса и отправить все страничные блоки в своп.
...
Рейтинг: 0 / 0
25.07.2008, 19:00:23
    #35453107
Feniksa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
Proger89проше приостановить все потоки процесса и отправить все страничные блоки в своп.
Скорее всего я попробую реализовать данную функциональность. Хоть и существует вероятность того "что админ цепанёт ногой шнур сервака". Но предложеная вами идея решения данной проблемы мне кажеться самой оптимальной
...
Рейтинг: 0 / 0
25.07.2008, 19:52:01
    #35453150
BISquid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как восстановить работу процесса из дампа?
^Z
fg
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Как восстановить работу процесса из дампа? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]