Сколько битов в логическом адресе?

#hardware #memory-address #bits

#аппаратное обеспечение #память-адрес #бит

Вопрос:

Хорошо, итак, я немного поискал в Stack и не могу найти ответ на этот вопрос. Это то, что упоминалось в классе, но профессор конкретно не сказал, как это выяснить.

Если мы предположим, что система 64-разрядная и имеет физическую память 128 ГБ, но мы хотим, чтобы процессы выполнялись как 256 ГБ, как я могу вычислить бит, необходимый для логического адреса?

Все исследования, которые я провел до сих пор, касаются физической памяти объемом 2-4 ГБ, и я ни за что на свете не могу понять, как это рассчитать. Мне нужно знать это, чтобы понимать смещение и записи страниц…

Ответ №1:

Необходимое количество битов зависит не только от размера процесса, оно также зависит от количества байтов, на которые указывает каждый адрес.

Общая формула такова:

 num_of_bits = ceiling(log_2(size_of_process_in_bytes / bytes_pointed_by_an_address))
  

Комментарии:

1. Идеальный. намного проще, чем то, что я делал — большое спасибо!

2. Вообще никаких проблем. 🙂 Вы должны принять ответ, если это то, что вам было нужно, и это было полезно.

Ответ №2:

Возможно, это поможет. Учитывая 32-разрядность, мы имеем: 2 в 32-й степени = 4 294 967 296 => 4 ГБ максимального адресного пространства, доступного при 32-разрядной длине слова.

Для 64-разрядной системы мы имеем: 2 в 64-й степени = 18 446 744 073 709 551 616 => 16EB (EB = exbibytes) Максимальное адресное пространство, доступное для 64-битной длины слова, которое практически не ограничено, но мы ограничены аппаратным обеспечением (например, моя материнская плата поддерживает максимум 24 ГБ).

Надеюсь, это поможет!