0

У меня возникли сомнения относительно управления памятью в операционных системах. Я знаю, что кеш - это временное хранилище, используемое для ускорения доступа к памяти, тогда как TLB используется для ускорения перевода с виртуального адреса на физический адрес.TLB translation vs cache

  1. Теперь, если сгенерирован виртуальный адрес памяти, что является первым шагом?
  2. Если первый шаг относится к TLB и генерирует физический адрес, каков второй шаг? (Относится ли это к кешу, чтобы увидеть, хранятся ли эти данные в кеше)?
  3. Используют ли современные компьютеры TLB?
  4. Как cpu знает, где находится таблица страниц?

ответ

1
  1. Это зависит от того, что вы подразумеваете под «сгенерированным». Если вы действительно имели в виду «читать», то первым шагом было бы либо заглянуть в TLB, если адрес уже был переведен, либо, если ваш кеш поддерживает виртуальные адреса, посмотреть в самом кэше, чтобы увидеть, есть ли запись, соответствующая этому виртуальному адресу (и если он принадлежит к соответствующему процессу, самого виртуального адреса недостаточно).
  2. Если первым шагом был виртуальный физический перевод, то кеш предназначен для физических адресов. Предполагая, что вы хотите читать, тогда действительно следующим шагом будет просмотр кеша.
  3. Да, они так делают. Большинство процессоров, использующих виртуальную память, используют TLB.
  4. Да, однако это зависит от вашей архитектуры. Например, на процессоре Intel (x86) указатель таблицы страниц хранится в регистре cr3.