[Unix] Как большой программе запустить маленькую утилитку?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

[Unix] Как большой программе запустить маленькую утилитку?

Сообщение _ae_ » 11.11.2006 (Сб) 12:58

Мне недавно стало интересно. А если процесс использующий 256 Мб ОЗУ захочет запустить маленькую коснольную утилитку, ему придется вызвать fork и ОСь будет копировать в ОЗУ все эти 256 Мб? С тем, что бы потом, после вызова exec сразу же их освободить? Или он как-то по хитрому сделает?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.11.2006 (Сб) 13:47

При форке память не копируется, а перепроецируется в новый процесс.
Там copy-on-write.
Изображение

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 11.11.2006 (Сб) 15:46

То есть "разделение" каждой страницы происходит только тогда, когда один из процессов что-то записывает в эту страницу?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.11.2006 (Сб) 16:37

Ага.
Изображение


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 110

    TopList