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

Я запутался в некоторых темах, касающихся виртуальной памяти. Итак, я собираюсь точечно перечислить их и задать вопросы. Отвечая, я предпочту, если вы также перечислите какой-нибудь источник, где я могу устранить это сомнение. Я буду говорить со ссылкой на исполняемый файл linux elf.

Я слышал, что каждый процесс имеет адресное пространство 4 ГБ в 32-битной системе. Когда я проверил objdump одного из моих исполняемых перемещаемых файлов, я увидел, что он имеет ограничения от 00000000 до ffffffff. Также он содержал пространство ядра. Это адресное пространство файла.Это виртуальная память, о которой мы говорим? Если да, то я читал, что механизм виртуальной памяти позволяет запускать процессы очень больших размеров, и что размер процесса не ограничен размером основной памяти (мы можем вывести необходимые страницы в основную память при пейджинге по требованию).Тогда, если виртуальная память только 4 ГБ, нет ограничить максимальный размер программ до 4 ГБ? Также я проверил другой файлs objdump, и у него был один и тот же адрес (т. е. от 00000000 до ffffffff).Итак, что это значит? Означает ли это, что наш файл является каким-то перемещаемым файлом, к которому снова будут добавлены начальные адреса(хотя это кажется абсурдным, потому что это уже исполняемый перемещаемый объектный файл).

Я читал, что в памяти, где была реализована сегментация, процессор выдает виртуальный (логический) адрес. Этот адрес состоит из трех частей - сегмента, смещения внутри сегмента. Также здесь обсуждаются сегменты: код, данные, стек и т. Д.

В адресном пространстве процесса эти сегменты расположены, начиная с определенных местоположений. Итак, каково содержимое виртуального адреса процессора?Диапазон виртуальных адресов варьируется от 00000000 до ffffffff? Если да тоэто процесс доступа к контенту по виртуальному адресу, следующий:

The segment part is looked up in the segment descriptor table to find the segment's
starting address in linear address space. Then the offset is indexed within the segment and
the resulting address is the linear address. Then, we look up the page table and map the
address to physical address. If the page is not currently in the main memory, it is 
brought. 

Опять же возникает тот факт, что ни один процесс не может быть полностью в основной памяти в любое время, потому что тогда вся память будет занята только одним процессом(так как адресное пространство процесса само по себе 4gb).

Кроме того, если все процессы имеют адресное пространство от 00000000 до ffffffff и в основной памяти одновременно может существовать более одного процесса, товсе процессы должны иметь свою собственную таблицу дескрипторов сегментов, которая возвращает сегментадрес в линейном адресном пространстве

Я прочитал, что операционная система загружается в основную память при загрузке. затемВ чем разница между этой ОС и кодом ядра в пространстве ядра конкретного процесса? Кроме того, все ли процессы имеют свою собственную копию кода ядра в своем пространстве ядра?

Ответы на вопрос(1)

Ваш ответ на вопрос