Как стать автором
Обновить

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

Очень интересная статья, спасибо!
Хотел бы уточнить один момент — у вас в тексте есть фраза "ОС решает выделить диапазон физических адресов от 4 до 20 Кб, то есть значение base равно 4 Кб, а значение bounds равно 4 + 16 = 20 Кб".
Разве в даной ситуации значение bounds не должно быть равно 16Кб, если оно отвечает за размер именно выделенной области в памяти?
Еще для тех у кого с англ. хорошо
http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/

Да и вообще этот парень очень крут и у него много там еще интересного есть.
Я правильно понимаю что она тут не может быть "Read" потому что инструкция обратилась к чужому участку памяти?
Учитывая что память каждого процесса виртуальна, к "чужому" участку она обратиться бы не смогла. Скорее инструкция обратилась к виртуальной странице, которая не указывает ни на один участок реальной памяти.

Более того, посмотрите на адрес: 0x4d0 — почти наверняка он был получен при попытке прочитать какое-то поле структуры через null-pointer. Чтобы такие ситуациее обнаруживать как можно раньше, ОС вполне может явно резервировать первые несколько страниц памяти, и запрещать к ним любой доступ.
Из-за непомерной стоимости мало кто мог позволить себе приобрести сразу несколько компьютеров, чтобы обрабатывать одновременно несколько задач. Поэтому люди начали искать способы совместного доступа к вычислительным ресурсам одного компьютера. Так наступила эра многозадачности.
Но теперь-то это неактуально :)
Простите, что не в личку, но нашел вот:

Как я и описывал, сначала идёт кодовый сегмент, затем стек, а затем куча.

По тексту сначала код, потом куча, потом стек. Так же и адреса идут, а этот текст иначе говорит.
значит нам нужно 4 Кб (16/4), чтобы выбрать нужную страницу

Я думаю, нужно 4 бита, чтобы выбрать нужную страницу.

И общее впечатление — отличная статья, читается легко и интересно! Вопрос возник — а все ли ОС рассчитывают на TLB? Он сейчас на всех основных платформах есть?
или 2 бита?
Да, все же 2-х достаточно, я ошибся из-за двух факторов: рассчитывал количество бит для хранения числа 16, а так же бессознательно предположил, что автор всего лишь ошибся в единицах измерения.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий