OSDev
http://osdev.ru/

Создание нового процесса в пользовательском режиме
http://osdev.ru/viewtopic.php?f=6&t=3811
Страница 1 из 1

Автор:  Sebt [ 21 июл 2019, 17:43 ]
Заголовок сообщения:  Создание нового процесса в пользовательском режиме

Добрый день.

Дописываю мультизадачность. Функция создания нового процесса кажется работает верно. Я пробовал создавать процессы, проверял директории страниц, переключаются ли и защищены ли. Вроде все работает. Но возникла трудность после. Я скомпилировал парочку elf программ, в которых просто циклично вызывается системный вызов печати на экран. Работает верно. Добавил системный вызов fork, вызвал из одной скомпилированной программы и получил какую то ерунду. Родительский процесс из которого собственно и был вызван fork продолжает работу. Форк создал новый процесс и почему то вернул ноль два раза. Это крайне странно. В добавок условие после форка вызова форка, которое проверяет родительский или дочерний процесс, не выполняется в теле условия с дочерним процессом, а с родительским - выполняется. Следовательно после вызова форка он туда вовсе не вернулся. Даже примерно не могу предположить что пошло не так.

Автор:  Himik [ 21 июл 2019, 19:37 ]
Заголовок сообщения:  Re: Создание нового процесса в пользовательском режиме

Так и должно быть, потому что родительскому и дочернему процессу возвращаются разные значения. Родительскому - номер дочернего процесса, а дочернему процессу только 0. Поэтому и условие по результату функции отрабатывает по-разному.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/