Comments 10
Очень интересная статья, спасибо!
Хотел бы уточнить один момент — у вас в тексте есть фраза "ОС решает выделить диапазон физических адресов от 4 до 20 Кб, то есть значение base равно 4 Кб, а значение bounds равно 4 + 16 = 20 Кб".
Разве в даной ситуации значение bounds не должно быть равно 16Кб, если оно отвечает за размер именно выделенной области в памяти?
Хотел бы уточнить один момент — у вас в тексте есть фраза "ОС решает выделить диапазон физических адресов от 4 до 20 Кб, то есть значение base равно 4 Кб, а значение bounds равно 4 + 16 = 20 Кб".
Разве в даной ситуации значение bounds не должно быть равно 16Кб, если оно отвечает за размер именно выделенной области в памяти?
Еще для тех у кого с англ. хорошо
http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/
Да и вообще этот парень очень крут и у него много там еще интересного есть.
http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/
Да и вообще этот парень очень крут и у него много там еще интересного есть.
Я правильно понимаю что она тут не может быть "Read" потому что инструкция обратилась к чужому участку памяти?
Учитывая что память каждого процесса виртуальна, к "чужому" участку она обратиться бы не смогла. Скорее инструкция обратилась к виртуальной странице, которая не указывает ни на один участок реальной памяти.
Более того, посмотрите на адрес: 0x4d0 — почти наверняка он был получен при попытке прочитать какое-то поле структуры через null-pointer. Чтобы такие ситуациее обнаруживать как можно раньше, ОС вполне может явно резервировать первые несколько страниц памяти, и запрещать к ним любой доступ.
Более того, посмотрите на адрес: 0x4d0 — почти наверняка он был получен при попытке прочитать какое-то поле структуры через null-pointer. Чтобы такие ситуациее обнаруживать как можно раньше, ОС вполне может явно резервировать первые несколько страниц памяти, и запрещать к ним любой доступ.
Из-за непомерной стоимости мало кто мог позволить себе приобрести сразу несколько компьютеров, чтобы обрабатывать одновременно несколько задач. Поэтому люди начали искать способы совместного доступа к вычислительным ресурсам одного компьютера. Так наступила эра многозадачности.Но теперь-то это неактуально :)
Простите, что не в личку, но нашел вот:
По тексту сначала код, потом куча, потом стек. Так же и адреса идут, а этот текст иначе говорит.
Как я и описывал, сначала идёт кодовый сегмент, затем стек, а затем куча.
По тексту сначала код, потом куча, потом стек. Так же и адреса идут, а этот текст иначе говорит.
Sign up to leave a comment.
Segmentation Fault (распределение памяти компьютера)