2013-07-08 5 views
0

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

Предположим, что логическое адресное пространство составляет 1 КБ, а размер страницы - 16 байт. Предположим, что в основной памяти для этого процесса вначале не используется страница, и используется пейджинг чистого спроса. Текущий свободный список кадров - {2,5,8,1,...}. Первый кадр в списке свободных кадров будет использоваться по мере необходимости. Предположим, что TLB имеет две записи. И TLB, и таблица страниц сначала пустые. FIFO используется как алгоритм замены TLB. Предположим, что к логическому адресу обращаются: 0x3d, 0x30, 0xe5, 0x7d, 0x33, 0xef. Для каждого из следующих адресов:

  1. указать физический адрес, который отображается на него.
  2. Предположим, что для доступа к памяти TLB требуется 10 нс, а для доступа к памяти - 100 нс, а для обработки ошибки страницы - 8 мс. Сколько времени требуется для доступа к этому адресу?

ответ

1

Когда процесс начинается, процессору необходимо получить доступ к адресу. Таким образом, cpu ищет адрес внутри записей TLB, если ему не удается найти эту запись, тогда это промах TLB, иначе это будет TLB. Если это промах TLB, тогда он ищет адрес в основной памяти и обновляет TLB с записью TLB для этого адреса. Чтобы записать, где каждая виртуальная страница операционной системы помещается в физическую память, операционная система сохраняет структуру данных для каждого процесса, известную как таблица страниц.

Основная память разделена на страницы размером 16 байт. Общий размер памяти = 1 КБ. Таким образом, количество страниц составляет 1 КБ/16 = 2^10/2^4 = 2^6 = 64 страницы. Чтобы перевести логический адрес на физический адрес, вы должны разделить его на два компонента VPN (номер виртуальной страницы) и смещение. Поскольку адресное пространство составляет 1 КБ, для виртуального адреса вам нужно всего 10 бит. Поскольку размер страницы составляет 16 байт, вы можете разделить виртуальный адрес следующим образом: более высокие 6 бит для VPN и более низкие 4 бит для смещения.

Первоначально в основной памяти нет страницы. Для доступа к 0x3d. Он смотрит в TLB. Поскольку кеш изначально пуст. Это промах TLB, переход в основную память. Бинарная форма 0x3d - 0000111101. offset (4 бит) = 1101 и VPN = 000011. Так что смещение составляет 13 байт на странице 3. Поскольку таблица страниц пуста. Так что это ошибка страницы. Принесите физическую страницу в свободный кадр 2 и попробуйте снова получить доступ к этой памяти и обновить таблицу страниц. Теперь переведите виртуальный адрес в физический адрес. Физический адрес - 13-й байт страницы 2 (так как виртуальная страница 3 отображается на физический кадр 2), то есть 0010 (кадр нет) и 1101 (смещение), 0x2d (в шестнадцатеричном формате). Во второй раз, когда он пытается получить доступ, выполните ту же процедуру, и, как вы можете, не будет ошибки страницы для 0x30.

Смежные вопросы