LINUX.ORG.RU

Управление памятью (несколько одинаковых процессов)


0

0

Если в системе запущено несколько одинаковых процессов, то код этих процессов в памяти будет совместно используемым или на каждый экземпляр процесса будет по своей копии кода? Если будет совместное использование памяти, то то, что процессы будут щапущены от разных пользователей не будет играть роли?
Всё естественно в linux (в частности ветка 2.6).

anonymous

>Если в системе запущено несколько одинаковых процессов, то код этих процессов в памяти будет совместно используемым или на каждый экземпляр процесса будет по своей копии кода?

Мало того, это будет два экземпляра процесса с отдельными адресными пространствами, делить они будут разве только внешние разделяемые библиотеки, а о существовании друг друга даже не будут догадываться.

SatanClaus ★★★
()

Код используется один и uid не играет роли.

Более того, код не свопится в файл/раздел подкачки.

sergej ★★★★★
()
Ответ на: комментарий от sergej

отлично =)
а то я тут ltsp собираюсь поднять и вот думаю, что случится, если 15 клиентов одновременно запустят OpenOffice допустим :)
А винда таким может похваститься? Это так, для общего развития и аргументов?

anonymous
()
Ответ на: комментарий от anonymous

Винда не может

В винде код идет в своп если что.

Copy on write отсутствует

==> виндовый CreateProcess тяжелее чем никсовый fork+exec.

sergej ★★★★★
()
Ответ на: комментарий от sergej

Вот и отлично, так и запишем =)

anonymous
()
Ответ на: комментарий от sergej

Но при copy on write ядро передает параметры нужных страниц памяти только чайлду. В деманд лоадинг сегмент кода лежит в файле и подгружается кусками по необходимости, только сейчас узнал. Но как могут делить области памяти, пусть даже доступной только для чтения два разных процесса, даже пусть одинаковых, но никак между собой не связанных?

SatanClaus ★★★
()
Ответ на: комментарий от SatanClaus

Ну а в чем проблема?

Страница памяти расшарена между процессами. Аналогично обычной shared memory.

man shmget man shmat

sergej ★★★★★
()
Ответ на: комментарий от sergej

ЗЫ

если сильно хочется разобраться - ключевые слова "каталог таблиц страниц, таблица страниц, memory management unit (MMU)"

sergej ★★★★★
()
Ответ на: комментарий от sergej

>Ну а в чем проблема?

Книжку надо нормальную, в моей это было только по поводу форка. Достаточно просто.

>Страница памяти расшарена между процессами. Аналогично обычной shared memory.

Она расшарена один раз и известно где и кем. А что произойтет после exec в какомто левом процессе? Как будут найдены соответствия, кроме того еще и в случае demand loading, когда неизвестно какие части текстового сегмента лежат в памяти а какие на диске? В случае форка это очевидно, в случае exec становится довольно нетривиальной задачей.

SatanClaus ★★★
()
Ответ на: комментарий от SatanClaus

>> когда неизвестно какие части текстового сегмента лежат в памяти а к...

в системе нет ничего неизвестного. ядро все знает :)

sergej ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.