вот мой вопрос: если процесс (отец) создает новый процесс (ребенок) с fork(), какая из этих структур данных не разделяет между отцом и сыном? -процесса ID -heap -кода -stackФункция Вилка в операционных системах
ответ
связь для процесса ID
После успешного завершения, вилка() возвращает значение 0, чтобы дочерний процесс и возвращает идентификатор процесса дочерний процесс для родителя процесс. В противном случае, значение -1 возвращается в родительском процесс, ни один процесс ребенка не создается, а глобальная переменная ERRNO устанавливаются на показываемые Cate ошибки
связи кучной памяти или пространство
Ребенок получает точную копию адресного пространства родителей, которое во многих случаях может быть выложено в том же формате, что и родительское адресное пространство. Я должен указать, что каждый из них будет иметь собственное виртуальное адресное пространство для своей памяти, так что каждый может иметь одни и те же данные по одному и тому же адресу, но в разных адресных пространствах. Кроме того, linux использует копию при записи при создании дочерних процессов. Это означает, что родительский и дочерний будут разделять родительское адресное пространство, пока один из них не напишет, и в этот момент память будет физически скопирована на дочерний. Это исключает ненужные копии при выполнении нового процесса. Так как вы просто перезаписываете память новым исполняемым файлом, зачем его копировать?
связь для кода
Там нет объектно-ориентированного Наследования в C.
Fork'ing в С в основном процессом остановкой во время его работы, и полная копия этого являющееся (эффективно) различного пространства памяти, то оба процесса говорят продолжать. Они оба продолжат с того места, где родитель был приостановлен. Единственный способ узнать, в каком процессе вы находитесь, - проверить возвращаемое значение вызова fork().
В такой ситуации ребенок на самом деле не наследует все от родительского процесса, это больше похоже на то, что он получает полную копию всего, что имел родитель.
Stack
дочерний процесс получает отдельный экземпляр глобальной переменной, объявленной в родительском процессе». Точка отдельных процессов для разделения памяти. Таким образом, вы не можете разделить переменные между родительским и дочерним процессом
это вопрос, который использовался в нашем экзамене по вступлению в университет в Иране, который я взял вчера, я думаю, что стек - правильный ответ, потому что, когда процесс создает новый по fork(), он дает ребенку новое пространство и весь отец переменная копия в ней до тех пор, пока мы не назовем exec(), это просто мое мнение –
@ user2668753 ok, По вашему мнению, правильный ответ только на стек? А что еще, неверно? если да, то скажите мне, каково ваше мнение об этом. Мне интересно узнать новое от вас :) –
Я думаю, что куча - это структура, в которой процессы могут получить от нее некоторую информацию о предках. например, p1-2 знают, что он является дочерним элементом p1, поэтому эта структура данных является долей между ними. основываясь на вопросе о том, что он говорит о том, чтобы делиться вещами не с тем, что является их атрибутом. PID - это всего лишь атрибут. когда отец создает ребенка с fork(), он создает процесс и копирует весь его код (отец) в пространство своего ребенка. после исполнения ребенок может быть независимым. Но я думаю, что стек - это единственная структура данных, которая принадлежит каждому процессу. –
- 1. Таймеры в операционных системах
- 2. Поиск файлов в операционных системах
- 3. вопросов с сигналами в операционных системах
- 4. Те же сайты в разных операционных системах
- 5. Сегментация памяти в современных операционных системах
- 6. О бесплатных задачах в операционных системах
- 7. PHP и атрибуты файлов в операционных системах
- 8. Программы на Python в разных операционных системах
- 9. Программисты и сегментация в операционных системах
- 10. База данных MySQL в нескольких операционных системах
- 11. роль командного интерпретатора в операционных системах
- 12. Повторное использование страниц в многопроцессорных операционных системах
- 13. Embedded шрифт Выпуск на различных операционных системах
- 14. вилка функция в С
- 15. Ремаршинг ключей в системном режиме в Unix-подобных операционных системах
- 16. Есть ли разница в рендеринг основных браузеров в операционных системах?
- 17. Загрузить разницу в пропускной способности в операционных системах?
- 18. Обработка файлов в C в разных операционных системах
- 19. Как работают процессы в операционных системах и в CPU
- 20. Java - пользовательский курсор отличается в различных операционных системах
- 21. Java Элементы позиционирования Swing по-разному в разных операционных системах
- 22. Логарифмируя относительно небольших количеств в различных языках/архитектурах/операционных системах
- 23. Код Подключение оборудования и программного обеспечения в современных операционных системах
- 24. Веб-страницы выглядят по-разному в разных операционных системах?
- 25. Почему процесс известен как абстракция в операционных системах?
- 26. Типичное время квантования времени в современных операционных системах
- 27. DNS не обновляется в операционных системах, которые уже просматривали сайт
- 28. Разница между задержкой и джиттером в операционных системах
- 29. Имеются ли в операционных системах средства для безопасного ввода текста?
- 30. Точность времени в программировании, приложениях и операционных системах
Похоже на вопрос о домашнем задании. Пожалуйста, разместите то, что вы считали, как вы думаете, ответ и т. д. – BroSlow
это вопрос, который использовался в нашем экзамене по университету в Иране, который я принял вчера , Я думаю, что стек правильный ответ, потому что когда процесс создает новый по fork(), он дает своему ребенку новое пространство и все переменные-копии отца, пока мы не назовем exec(), это просто мое мнение –
Извините, но вы получили ответ не так. Оглядываясь назад, это должно было быть очевидно. Почему (или как может) система имеет два процесса с одним и тем же идентификатором процесса? – Duck