Не могу разобраться что происходит в момент вызова fork(). Понятно что происходит развоение процеса в точке вызова. Но вот что под копотом непонятно. С памятью понятно там используется 'copy on write' механизм, но вот что с кодом? Откуда потомок берет код?
> Не могу разобраться что происходит в момент вызова fork(). Понятно что происходит
> развоение процеса в точке вызова. Но вот что под копотом непонятно.
> С памятью понятно там используется 'copy on write' механизм, но вот
> что с кодом? Откуда потомок берет код?А код он не в памяти?
>> Не могу разобраться что происходит в момент вызова fork(). Понятно что происходит
>> развоение процеса в точке вызова. Но вот что под копотом непонятно.
>> С памятью понятно там используется 'copy on write' механизм, но вот
>> что с кодом? Откуда потомок берет код?
> А код он не в памяти?В случае с интерпретаторами не уверен
>>> Не могу разобраться что происходит в момент вызова fork(). Понятно что происходит
>>> развоение процеса в точке вызова. Но вот что под копотом непонятно.
>>> С памятью понятно там используется 'copy on write' механизм, но вот
>>> что с кодом? Откуда потомок берет код?
>> А код он не в памяти?
> В случае с интерпретаторами не уверенНаверное зависит от компилятора, нужно скомпилить пробную программу в нужном компиляторе, и посмотреть код.
Или посмотреть в исходниках компилятора, как от это делает .....
> Или посмотреть в исходниках компилятора, как от это делает .....fork() это системный вызов (syscall), в компиляторе ты не найдешь код реализации этой функции, надо смотреть исходники ядра той ОС, в которой ты его запускаешь. В *BSD и Linux код fork() в ядре будет разный.
>> Или посмотреть в исходниках компилятора, как от это делает .....
> fork() это системный вызов (syscall), в компиляторе ты не найдешь код реализации
> этой функции, надо смотреть исходники ядра той ОС, в которой ты
> его запускаешь. В *BSD и Linux код fork() в ядре
> будет разный.Ок, полезная инфа,
>>> Или посмотреть в исходниках компилятора, как от это делает .....
>> fork() это системный вызов (syscall), в компиляторе ты не найдешь код реализации
>> этой функции, надо смотреть исходники ядра той ОС, в которой ты
>> его запускаешь. В *BSD и Linux код fork() в ядре
>> будет разный.
> Ок, полезная инфа,Происходит точное копирование процесса, создание копии.
И потомок и родитель содержат код и потомка и родителя. Только родитель идёт по своей ветке алгоритма, а потомок по своей.
>>>> Или посмотреть в исходниках компилятора, как от это делает .....
>>> fork() это системный вызов (syscall), в компиляторе ты не найдешь код реализации
>>> этой функции, надо смотреть исходники ядра той ОС, в которой ты
>>> его запускаешь. В *BSD и Linux код fork() в ядре
>>> будет разный.
>> Ок, полезная инфа,
> Происходит точное копирование процесса, создание копии.
> И потомок и родитель содержат код и потомка и родителя. Только родитель
> идёт по своей ветке алгоритма, а потомок по своей.Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0 к примеру. В потомке 1. Ты делаешь ифы и они дальше выполняют разное.
>[оверквотинг удален]
>>>> этой функции, надо смотреть исходники ядра той ОС, в которой ты
>>>> его запускаешь. В *BSD и Linux код fork() в ядре
>>>> будет разный.
>>> Ок, полезная инфа,
>> Происходит точное копирование процесса, создание копии.
>> И потомок и родитель содержат код и потомка и родителя. Только родитель
>> идёт по своей ветке алгоритма, а потомок по своей.
> Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0
> к примеру. В потомке 1. Ты делаешь ифы и они дальше
> выполняют разное.Про это читал, но вот все таки что происходит с кодом? Как сказано выше он берется так же из памяти?
>[оверквотинг удален]
>>>>> будет разный.
>>>> Ок, полезная инфа,
>>> Происходит точное копирование процесса, создание копии.
>>> И потомок и родитель содержат код и потомка и родителя. Только родитель
>>> идёт по своей ветке алгоритма, а потомок по своей.
>> Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0
>> к примеру. В потомке 1. Ты делаешь ифы и они дальше
>> выполняют разное.
> Про это читал, но вот все таки что происходит с кодом? Как
> сказано выше он берется так же из памяти?https://ru.wikipedia.org/wiki/Fork
https://www.opennet.ru/man.shtml?topic=fork
>[оверквотинг удален]
>>>>> будет разный.
>>>> Ок, полезная инфа,
>>> Происходит точное копирование процесса, создание копии.
>>> И потомок и родитель содержат код и потомка и родителя. Только родитель
>>> идёт по своей ветке алгоритма, а потомок по своей.
>> Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0
>> к примеру. В потомке 1. Ты делаешь ифы и они дальше
>> выполняют разное.
> Про это читал, но вот все таки что происходит с кодом? Как
> сказано выше он берется так же из памяти?тебе нужно начать - структура программы в памяти, старт программы что в этот момент происходит и т.п. процессе
>[оверквотинг удален]
>>>> Происходит точное копирование процесса, создание копии.
>>>> И потомок и родитель содержат код и потомка и родителя. Только родитель
>>>> идёт по своей ветке алгоритма, а потомок по своей.
>>> Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0
>>> к примеру. В потомке 1. Ты делаешь ифы и они дальше
>>> выполняют разное.
>> Про это читал, но вот все таки что происходит с кодом? Как
>> сказано выше он берется так же из памяти?
> тебе нужно начать - структура программы в памяти, старт программы что в
> этот момент происходит и т.п. процессеПонял, спасибо
>[оверквотинг удален]
>>>>> И потомок и родитель содержат код и потомка и родителя. Только родитель
>>>>> идёт по своей ветке алгоритма, а потомок по своей.
>>>> Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0
>>>> к примеру. В потомке 1. Ты делаешь ифы и они дальше
>>>> выполняют разное.
>>> Про это читал, но вот все таки что происходит с кодом? Как
>>> сказано выше он берется так же из памяти?
>> тебе нужно начать - структура программы в памяти, старт программы что в
>> этот момент происходит и т.п. процессе
> Понял, спасибоА я не понял, все это делает ядро, а вот как пока не ясно
>[оверквотинг удален]
>>>>> Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0
>>>>> к примеру. В потомке 1. Ты делаешь ифы и они дальше
>>>>> выполняют разное.
>>>> Про это читал, но вот все таки что происходит с кодом? Как
>>>> сказано выше он берется так же из памяти?
>>> тебе нужно начать - структура программы в памяти, старт программы что в
>>> этот момент происходит и т.п. процессе
>> Понял, спасибо
> А я не понял, все это делает ядро, а вот как пока
> не ясноТут нужно знать как ядро работает .....
>[оверквотинг удален]
>>>>>> к примеру. В потомке 1. Ты делаешь ифы и они дальше
>>>>>> выполняют разное.
>>>>> Про это читал, но вот все таки что происходит с кодом? Как
>>>>> сказано выше он берется так же из памяти?
>>>> тебе нужно начать - структура программы в памяти, старт программы что в
>>>> этот момент происходит и т.п. процессе
>>> Понял, спасибо
>> А я не понял, все это делает ядро, а вот как пока
>> не ясно
> Тут нужно знать как ядро работает .....Linus должен объяснить как правильно fork-нуться ......
>[оверквотинг удален]
>>>>> будет разный.
>>>> Ок, полезная инфа,
>>> Происходит точное копирование процесса, создание копии.
>>> И потомок и родитель содержат код и потомка и родителя. Только родитель
>>> идёт по своей ветке алгоритма, а потомок по своей.
>> Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0
>> к примеру. В потомке 1. Ты делаешь ифы и они дальше
>> выполняют разное.
> Про это читал, но вот все таки что происходит с кодом? Как
> сказано выше он берется так же из памяти?Программа дублируется в памяти. В ней и код родителя и потомка. Выполняются разные части.
>[оверквотинг удален]
>>>> Происходит точное копирование процесса, создание копии.
>>>> И потомок и родитель содержат код и потомка и родителя. Только родитель
>>>> идёт по своей ветке алгоритма, а потомок по своей.
>>> Если проще. Вот fork. Он сделал копию процесса. В родителей возвратился 0
>>> к примеру. В потомке 1. Ты делаешь ифы и они дальше
>>> выполняют разное.
>> Про это читал, но вот все таки что происходит с кодом? Как
>> сказано выше он берется так же из памяти?
> Программа дублируется в памяти. В ней и код родителя и потомка. Выполняются
> разные части.Да из памяти.
> Не могу1. Копируется окружение (память)
2. Создаётся пустой (чистый), спящий процесс (новый PID)
3. Скопированное окружение прописывается новому процессу.
4. Процесс будят (суют в конец очереди планировщика).
5. Отваливают.
6. Новый процесс доходит до очереди к процессору. Ура!!!
>> Не могу
> 1. Копируется окружение (память)
> 2. Создаётся пустой (чистый), спящий процесс (новый PID)
> 3. Скопированное окружение прописывается новому процессу.
> 4. Процесс будят (суют в конец очереди планировщика).
> 5. Отваливают.
> 6. Новый процесс доходит до очереди к процессору. Ура!!!павлинух друх ты мой, тока ты усе знаешь
павлинух, прикинь я вчера кардан от К-700 пропил,
> павлинух, прикинь я вчера кардан от К-700 пропил,передний
>> павлинух, прикинь я вчера кардан от К-700 пропил,
> переднийКто здесь?! o.O
>>> павлинух, прикинь я вчера кардан от К-700 пропил,
>> передний
> Кто здесь?! o.ORedD
>>> павлинух, прикинь я вчера кардан от К-700 пропил,
>> передний
> Кто здесь?! o.OНо как продвинутый, ты должен писать who