#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 ГБ).
Надеюсь, это поможет!