Вопрос о виртуальной памяти процесса

Всем привет!

Никак не могу найти ответ на вопрос, может подскажите...
При создании процесса ядро создает виртуальное адресное пространство в 4 Гб (для 32-х разрядных x86 систем). Эта виртуальная память разделена, по большому счету, на 2 области — User Space и Kernel Space. Так вот меня интересует, из каких соображений сделано разделение только 2:2 и 3:1? Почему нет 3.5:0.5, например? Хочу понять принципы, но нигде ничего подробно не написано на эту тему...

Буду благодарен за подробное объяснение или за ссылки.

Ну основной

Ну основной принцип - чтобы и приложению и ядру было достаточно. Кроме того на x86 системах оперативной памяти как правило сильно меньше, чем виртуальной. Да и приложения (обычные для x86, не жесткие научные пакеты) обычно не требуют гигабайты памяти на одной машине.
А те, которые требуют, обычно распаралеливают, у каждого процесса будет свое ядресное пространство, свои 3 гига памяти.
В ядерном пространстве же еще всякие кэши хранятся. Если оставишь ядру мало памяти, то общее использовании оперативки получится неэффективным. Она, например пустая будет, я ядро не сможет её под кэши захапать.
Так что 3.5:0.5 - это уже ты маловато ядру оставляешь, на многих машинах больше полгига оперативки.

Это все пустые

Это все пустые разглагольствования, меня не интересующие. Вы уж извините, но мне интересны исключительно точные принципы, точная теория, а не личные мнения...

Какая точная

Какая точная теория? Мегаформула которая выдает наилучшее разделение? Её нет. Сделаешь много памяти приложениям - ядро не сомжет организовать кэширование и все будет тормозить, сделаешь много памяти ядру - приложения не смогут обрабатывать большие объемы данных.
У тебя много памяти (скажем все 4 гигабайта) и очень обильные операции ввода-вывода - деление памяти пополам будет более результативным, а если ввод-вывод маленькие но есть приложение в один поток обсчитывающее очень большой кусок данных - большая производительность окажется при меньшем объеме памяти у ядра.
А если у тебя меньше 2х гигов памяти, то разницы в разбиении скорее всего не заметишь. Если много мелких приложений и нет сильного ввода-вывода, тоже разницы не будет.
Ясно только, что наибольшая производительность будет достигаться где-то в середине, поэтому и предлагаются варианты, близкие к середине.

Меня

Меня интересует не этот наколенный детсадовский бред, извини. Есть очень хорошая книга: "Разработка ядра Linux", автор Роберт Лав, издатель Novell Press. Эта книга дает ответы почти на все вопросы функционирования узлов ядра на достаточно высоком уровне. Но вопрос, заданный мной изначально, подробно не освещен. Так вот меня интересует не детский бред, а профессиональное изложение или ссылки на такую информацию.

Если такой

Если такой умный, то тогда скажи, зачем иное разделение памяти, что ты можешь выиграть за счет иного разделения памяти?

видимо челу не

видимо челу не нужно твоё мнение, ему нужно дать ссылку на мифического Гуру, который скажет тоже самое - НО он Гуру, а мы можем и дальше лаптем щи хлебать...

+1:(

+1:(

Я не хочу

Я не хочу делить иначе, я хочу понять, почему именно так разделено. Но ответы из разряда "Если сделать крылья самолету короткими - он не полетит, а если длинными - они отвалятся" мне не нужны, потому что такие ответы не объясняют, какие все-таки точно делать крылья.

так народ

так народ давайте без наездов друг на друга!
ЗЫ есть софт который свободно отжирает гигов 30-40 оперы и я им пользуюсь...
ЗЗЫ про точную теорию поговорим после того как ты представишь точное квантовомеханическое решение для чего нибудь сложнее атома водорода... Возьми гелий например и посторайся точно решить... А потом и поговорим если желание останеться...

_________________
Gentoo GNU/Linux 2.6.20 GCC 4.1.2 Dual Xeon
Working on Gentoo for iPAQ hx4700 :-)

найди книгу

найди книгу Мела Гормана (Mel Gorman) Understanding The Linux Virtual Memory Manager в ней дается более-менее ясное представление по интересующему тебя вопросу..
явно там не написано почему используются такие соотношения, но как говорится, между строк, .. в общем прочитав ты поймешь на что и сколько выделяется памяти и соответственно почему 3.5 на 0.5 не есть гуд :)
_________________
acer aprire 3002 (sempron 3000, 2Gb, sis, 80Gb)

Спасибо за

Спасибо за ссылку на книгу! Обязательно ее посмотрю.

Кстати, как

Кстати, как найдёшь из каких соображений, гуру, отпишись, интересно будет узнать. )

memory separation

что бы понять принцЫп поробуй кушать суп чайной ложкой и сравни скорость поглощения супа, если будешь кушать столовой ложкой.
Ваш gUrU_gUrU :D

+1 _________________ Linux

+1
_________________
Linux ns 2.6.18-suspend2-r1 #2 SMP Sat Feb 3 13:56:55 KRAT 2007 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz GenuineIntel GNU/Linux

Как я и думал,

Как я и думал, детишки, на этом форуме мне никто ответа дать не сможет... Жаль, я думал, что здесь есть профессионалы.

Есть и профессионалы.

Есть и профессионалы. Просто ответа на поставленый тобой вопрос никто не знает. Скорее всего, отношение 2 к 2 было выбрано, что называется, от балды, хотя так делать и нельзя. И зачем сделано именно так, опять же, скорее всего никто детально не прорабатывал. Но если найдешь первоисточник такого разделения памяти - сообщи народу.
---
Одного не понимаю. Какой в этом интерес, кроме праздного?
И зачем открыто оскорблять ответившего тебе?
Нужны точные сведения - вперед читать архив kernel-maillist с самого начала. Народ такими вещами не задумывается, нам работать надо, что называется, ехать, а не шашечки.

С уважением. И не ругайся больше. Хочешь общаться с профессионалами - учись общаться со всеми.

Я никого не

Я никого не оскорблял. Просто я совсем не люблю порывов многих пионеров писать только ради того, чтобы писать, не разбираясь в ситуации.

Re: Как я и думал,

Мальчик, сначала научись не хамить людям, которые искренне пытаются тебе помочь - а потом уже можешь попробовать начать вопросы задавать. Тихим и вежливым тоном.

Усвоил? Подотри сопельки и выполняй.

Re: Как я и думал,

Ingirami написал(а):
Мальчик, сначала научись не хамить людям, которые искренне пытаются тебе помочь - а потом уже можешь попробовать начать вопросы задавать. Тихим и вежливым тоном.

Усвоил? Подотри сопельки и выполняй.

Приказывать будешь папочке с мамочкой сидя на горшочке. А я сам разберусь кто искренне хочет помочь, а кому лишь бы потрындеть неважно где. Вот ты как раз из второй категории.

Это штука чисто

Это штука чисто эмпирическая и вот по какой прчине:
ты, как разработчик ядра ОС общего назначения, которое расчитанно на то, чтобы работать на 10и разных платформах и решать х*х разных задач, не в состоянии сделать 100% эффетивного разделения. Но, какое-то разделение ты должен сделать. И у тебя есть два пути: 1) потестировать на разных настройках; 2) подвести научную базу и вычислить точно, для всех целей платформ и приложений.
Очевидно первый путь дешевле. Очевидно, что он выявил, что эти две настройки имеют смысл, а остальные дают проигрыш.
_________________
Вот такие пироги

Может это не

Может это не полностью объясняет принцип, но дает некоторую информацию:

http://www.citforum.ru/operating_systems/winntadm/winntadm_01.shtml написал(а):
Процессор MIPS R4000 требует, чтобы 2 Гб адресного пространства были зарезервированы для системы.

http://www.developing.ru/com/virtual_memory_04.html написал(а):
Почему сделано так? Давайте представим себе, а можно ли было сделать иначе... Представим себе, что при старте процесса система это отображение делает сама и прозрачно для программы пользователя. Поскольку заранее система ничего не знает о том сколько и где программе понадобится памяти она будет вынуждена "отмаппировать" всё. Программа может обратиться к двум гигабайтам? Может. Вот два гигабайта система и будет предварительно размещать. Как мы видели из предыдущего раздела – размещать эти два гигабайта она будет в файле подкачки, т.е. его минимальный размер для запуска одного процесса должен быть не менее 2 Гб.

PS: ничё что статьи про вражескую ось :D
PS: в исходниках ядра можно изменить это распределение
PS: а вообще чисто научно такое разделение сделано из соображения симмертии +) кстати, это не шутка

Про MIPS пример

Про MIPS пример не совсем корректный, ибо данный процессор заточен под линух. Не очевидно, кто явился инициатором такого разбиемния :)

Вторая статья тянет на глупость какую-то. Если работа с памятью действительно так в NT реализованна, то мир на грани катастрофы :)

_________________
Вот такие пироги

Помоему, афтару

Помоему, афтару топика полезно будет почитать документацию к ядру, ага, и для подробностей - сами исходники, благо там камментов навалом :D
Какой прок отдельно освещать вопрос прекрасно раскрытый в исходниках?

PS
Да, я написал молинформативную мыслю чисто прикола ради, в ответ на выпендрёжь афтара, которому важней посраца с кем-нить, а не находить нужную инфу, ага :D

Всем, кто

Всем, кто действительно по делу что-то пытается сказать - большое спасибо. Пустобрехам просьба не засорять топик сообщениями, не соответствующими теме (не знаешь, что сказать по делу - лучше промолчать).

Был вопрос вида: "А зачем ему это нужно?". Отвечаю - информация требуется для практического применения.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".