1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Сохранить/восстановить состояние процесса

Тема в разделе "WASM.NT.KERNEL", создана пользователем x64, 1 авг 2008.

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    spa
    Откуда приложение узнает что вдруг поменялся указатель? Оно писало по одному и вдруг надо по другому, неувязочка. Я имею ввиду именно в процессе юзания памяти, а не когда программа уже закончила работу с ней.
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Booster
    приведи пример программы которая по твоему не будет работать?

    Код (Text):
    1. char* p = new char[100];
    2. p[0] = rando_char();
    3. p[1] = from_user();
    4. output_chars(p,2);
    будет работать вполне, хотя и в p может быть разные значение, при записи и воспроизведении.
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Booster
    еще раз, мы ВОСПРОИЗВОДИМ приложение с начала, с самого начала.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Программа отработала запись по индексу ноль и тут её остановили и сохранили состояние. Что будет, после восстановления?
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    spa
    Интерпретатор что-ли? Это вообще не серьёзно - пошагово запоминать выполнение всех инструкций.
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Booster
    зачем каждую инструкцию? вот у вас есть алгоритм назовем его A он зависит от входных параметров x1,x2,x3,x4 и так далее, на выходе у него a,b,c ... Если мы дадим алгоритму одни и те же иксы, то без всякого интерпретатора на выходе у нас будут одни и те же a,b,c, те нам достаточно дать на входные параметры ( они при реальных условиях могут быть выходными значениями апишек) на алгоритм, чтобы он сам вернул те же выходные параметры, а программа это алгоритм.


    A(1,2,3) всегда = 5 допустим, а 3 параметр может меняться от запуска к запуску, значит нам надо подменить только третий параметр.
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    spa
    Мы же не знаем от чего именно зависит алгоритм и чтобы не потерять контроль всё равно придётся эмулировать каждую инструкцию. И вообще юзаемых ресурсов может быть очень много, главная проблема скорость восстановления, как выяснилось ещё и с помощью интерпретации. Хотя для нересурсоёмких приложений, если сохранить сразу после запуска...

    Проблему вижу в сохранении приложением во внешнем окружении. К примеру некоторые сохраняют признаки работы и промежуточные результаты в атомах или файлах, пиды разные и т.д.
     
  8. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Booster
    как не знаем? у системы много возможностей получить радом? насколько я знаю нет, все остальное детерминировано. траблы конечно еще с пользователем и его коммандами, но все решаемо, я кстати и не говорил что это на 5 минут делов, но возможно.
     
  9. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    это да, но решаемо, согласитесь, да и мы рассматриваем "среднестатисчтическое" приложение. А не семплы от клерка
     
  10. wild_cosine

    wild_cosine New Member

    Публикаций:
    0
    Регистрация:
    19 дек 2010
    Сообщения:
    11
    крипто-генератор псевдослучайных последовательностей в принципе детерминирован.
    но вы не уловили главного - "рандомна" в данном случае не какая-то функция, а поведение окружения программы, которое в целом может повлиять на результаты функции. воспроизводить вы можете только локальные процессы, а внешние вам неподконтрольны. прилетит, скажем, "лишний" пакет по сети, и какой-нибудь процесс отработает на такт меньше/больше, в этот момент кто-то успеет ухватить очередное значение RtlGenRandom и привет, вашей программе достанется уже другое значение.
     
  11. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    это поведение и надо эмулировать, поэтому я и говорил про свапшоты файлов и веток реестра.

    мы вернем нужное значение, тк эта функция будет очевидно перехвачена.

    PS для приложения которые работают с сетью естесно не о каком сохранение речи быть не может
     
  12. DMD

    DMD Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    56
    я все же повторю вопрос:
    как планируется определять/выбирать точки сохранения?
    (что делать при сохранении - где-то_как-то_примерно понятно,
    при восстановлении - аналогично, с учетом что ТС не писал о мультипотоках и пр. экзотике)
    что будет критерием квантования?
    время? выполнение каких-либо апи? что-то иное?
     
  13. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    DMD
    функции на которые может опираться само приложение для квантования. Я не уверен что остались еще программы поведение которых зависит от времени выполнения апи функций.

    А про точки сохранения, так они в моем варианте вообще не нужны, у нас непрерывная запись, захотел остановил.
     
  14. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    x64
    как прогресс?
     
  15. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Уже отвечал выше, #9.
     
  16. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    x64
    ну да в одиночку такое не сделать, у меня даже была мысля сделать ан гугл коде проект да потихоньку его силами васма пилить, может бы что и вышло, тем более для простейших приложений реализация моего варианта вообще тривиальна.
     
  17. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    spa
    Тривиальна? Вообще-то нужен эмулятор процессора.
    Сомневаюсь что это васм потянет, с его ассемблерщиками - любителями.
    Хотя тут можно задействовать и трейсер, но всё равно не просто.
     
  18. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Booster
    суть как раз в том что эмулятор процессора не понадобиться, верней он нужен для малого числа приложений которые синхронизируют по времени выполнения какого либо кода. Да и если не птянет, да и фиг с ним, просто фор фан. Вам разве было бы не интересно?
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    spa
    Только сейчас до конца понял идею. ^) Никакой эмулятор действительно не нужен, нужно просто установить первоначальное состояние окружения, запустить выполнение с самого начала и воспроизвести поведение окружения. Для простейших приложений действительно несложно.
     
  20. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Booster
    =) я же говрю, там проблемы будут именно с 3д да с 1000 потоков