Выполнение остановленного процесса в XV6

Я написал два новых системных вызова и добавил их в ядро ​​ОС xv6. Таким образом, используя один системный вызов, я могу сохранить состояние процесса, а используя другой, я могу перезагрузить предыдущее состояние и продолжить. проблема связана с разделом перезагрузки.


достаточно ли перезагрузить только контекст процесса? (я имею в виду struct context, который содержит некоторый регистр ЦП)


person Mohammad Mahdi KouchakYazdi    schedule 16.01.2016    source источник
comment
Вы тот, кто разрабатывает эту функцию, и я ничего не знаю о xv6, но вот некоторые вещи, о которых следует подумать: макет виртуальной памяти, содержимое памяти, открытые файлы, открытые сокеты.   -  person user253751    schedule 16.01.2016
comment
Если я будущий дизайнер, то я изменю всю архитектуру xv6, так как в ней недостаточно документа.   -  person Mohammad Mahdi KouchakYazdi    schedule 06.06.2016
comment
Вы делаете это, если хотите. Как много времени это займет?   -  person user253751    schedule 06.06.2016
comment
Думаю, двух-трёх часов хватит :)   -  person Mohammad Mahdi KouchakYazdi    schedule 06.06.2016


Ответы (1)


Нет

У процесса могут быть открытые файлы и пайпы в proc->ofile, которые вам нужно сохранить/загрузить.

Учтите также, что к тому времени, когда вы перезагрузите процесс, его parent может уже не существовать.
Вам действительно нужно убедиться, что ваш процесс не плавает без реального родителя, иначе вас ждет некоторые забавные ошибки.

person Yehuda Shapira    schedule 05.01.2017