Таким образом, у одного процесса будет 2 ^ 32-байтовое адресное пространство, не слишком ли много?

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

Я читаю Концепции операционной системы, 9-е изд., Silberschatz, Page379.

4G?

2 ответа2

1

В конце 32-битной эры ограничение памяти в 4 ГБ стало ощущаться. Возьмем, к примеру, тот факт, что многие компьютеры с начала 2000-х годов поставлялись с 512 МБ или 1 ГБ системной памяти, что уже приближалось к пределу, установленному 32-разрядным пространством. Мало того, что 32-разрядные приложения ограничены объемом памяти в 4 ГБ, вся система была, что в сочетании с одноядерным процессором убило бы многозадачность. В настоящее время компьютеры работают как 64-битные системы, что позволяет получить теоретические 18,4 эксабайт оперативной памяти. Многие, если не все обычные программы сегодня (за исключением приложений для рабочих станций) используют около или менее 4 ГБ ОЗУ (многие из них являются 32-битными приложениями, совместимыми для работы в 64-битном пространстве. ) Таким образом, в то время как 4 ГБ ОЗУ может показаться большим для программы (а в случае вашей машины VAX теоретический предел наложен на дизайн, в то время как на самом деле доступная память для каждой программы была намного меньше), а в некоторых случаях все еще Адвент многозадачности, компьютерной графики и дизайна ускорил потребность в 64-битных компьютерах. (Надеюсь, что это отвечает на ваш вопрос, который, как я полагаю, говорит о том, что размер 32-битного адреса очень большой и ненужный, а не невозможный). Процесс может иметь до 4 ГБ ОЗУ, а не всегда

1

Разве это не будет стоить слишком много времени для обмена между основной памятью и резервным хранилищем?

Нет, потому что память для процессов вытесняется на диск в виде "страниц", размер которых обычно составляет 4 КБ. Мы не выталкиваем все адресное пространство процесса за один раз. Вы правы, полагая, что это будет громоздко и быстро приведет к записи огромных объемов данных на диск.

Большинство процессов не выделяют все свое выделенное 4 ГБ адресное пространство, они запрашивают только небольшие объемы памяти по мере необходимости. Снова выписывание всего адресного пространства будет пустой тратой, так как большая его часть будет пустой.

если одному процессу выделено 4 ГБ адресного пространства, сколько пространства может иметь другой процесс?

Каждый процесс имеет свое собственное адресное пространство, отдельное от любого другого процесса. ОС разделяет процессы в их собственное адресное пространство и переводит виртуальные адреса в адреса физической памяти с помощью центрального процессора. Фактически каждый процесс представляет собой новое "виртуальное" адресное пространство с выделенной памятью, поддерживаемой физической ОЗУ.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .