2004-gre-cs-practice-book.pdf/Q56 — различия между версиями

Материал из DISCOPAL
Перейти к: навигация, поиск
(Новая страница: « == Вопрос: Q56-4c9f66 == <i>Тут вставьте перевод вопроса. Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80…»)
 
Строка 1: Строка 1:
 
 
== Вопрос: Q56-4c9f66 ==
 
== Вопрос: Q56-4c9f66 ==
  
<i>Тут вставьте перевод вопроса.
+
* Предположим, что отладчик устанавливает точку останова на инструкции загрузки по виртуальному адресу 0x77E81234 в отлаживаемом процессе ''P''.
Используйте [https://wiki.4intra.net/Help:%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 возможности разметки],
+
* Если текстовый сегмент ''P'' начинается по адресу с 0x77E80000 в виртуальном адресном пространстве ''P'' и если отладчик сопоставил этот же текстовый сегмент на 0x010000000 в своем виртуальном адресном пространстве
включая формулы и т.п, если будут графы — посмотрите как задать их текстом https://wiki.4intra.net/Graphviz .
+
 
Потом конечно сотрите инструкции, которые тут курсивом.</i>
+
Какой из следующих виртуальных адресов используется отладчиком в операции '''ЗАПИСИ''', а также описание того, как отладчик сопоставил страницу виртуальной памяти, содержащую этот адрес?
  
 
=== Ответы ===
 
=== Ответы ===
<i>Если ответы простые, однострочные, используйте простой способ задания ответов списком, типа так
+
* Правильный ответ: 0x01001234; страница памяти мапится с доступом READ/WRITE
(префикс «Правильный ответ:» — это дословно, для правильного ответа)</i>
+
* 0x01001234; страница памяти мапится с доступом COPY-ON-WRITE
 +
* 0x76E81234; страница памяти мапится с доступом READ/WRITE
 +
* 0x76E81234; страница памяти мапится с доступом COPY-ON-WRITE
 +
* 0x77E81234; страница памяти мапится с доступом READ/WRITE
  
* Правильный ответ: тут реально правильный ответ
+
=== Объяснение ===
* неправильный ответ
+
{{cstest-source|2004-gre-cs-practice-book.pdf|38|56}}
* еще какой-то неправильный ответ
+
* еще какой-то неправильный ответ
+
* еще какой-то неправильный ответ
+
  
<i>Если ответы длинные, многострочные, или там графы, используйте
 
[https://wiki.4intra.net/MediawikiQuizzer/ru#.D0.9E.D1.82.D0.B2.D0.B5.D1.82.D1.8B способ задания ответов разделами],
 
Но такое очень редко встречается. </i>
 
  
 +
Step 1: Calculate the Offset of the Breakpoint Address
  
=== Объяснение ===
+
* Так, оффсет бряки 0x77E81234−0x77E80000=0x1234
<i>Сначала заполните номер страницы с этим вопросом
+
** в пространстве отладчика оно в 0x01000000+0x1234=0x01001234
{{cstest-source|2004-gre-cs-practice-book.pdf|тут-номер-страницы-с-вопросом-56|56}}
+
* Вот дальше, по моему опыту отладчиков (gdb, ddd, SoftICE, Ghidra…) нормальный READ/WRITE доступ есть (хоть код на ходу правь).
 +
 
 +
Но! Очевидно в каких-то случаях дебаггер маппит COPY-ON-WRITE, и если вы разбираетесь в теме и напишите обьяснение, когда и как оно мапиится — велком!
  
Ну и наконец, вики-разметкой напишите ваше понимание, почему правильный ответ — правильный.</i>
+
{{question-ok|[[Участник:StasFomin|StasFomin]] 23:39, 15 декабря 2024 (UTC)}}
  
{{question-ok|}}
+
[[Категория:Виртуальная память]]
 +
[[Категория:Разобраться]]

Версия 23:39, 15 декабря 2024

Вопрос: Q56-4c9f66

  • Предположим, что отладчик устанавливает точку останова на инструкции загрузки по виртуальному адресу 0x77E81234 в отлаживаемом процессе P.
  • Если текстовый сегмент P начинается по адресу с 0x77E80000 в виртуальном адресном пространстве P и если отладчик сопоставил этот же текстовый сегмент на 0x010000000 в своем виртуальном адресном пространстве

Какой из следующих виртуальных адресов используется отладчиком в операции ЗАПИСИ, а также описание того, как отладчик сопоставил страницу виртуальной памяти, содержащую этот адрес?

Ответы

  • Правильный ответ: 0x01001234; страница памяти мапится с доступом READ/WRITE
  • 0x01001234; страница памяти мапится с доступом COPY-ON-WRITE
  • 0x76E81234; страница памяти мапится с доступом READ/WRITE
  • 0x76E81234; страница памяти мапится с доступом COPY-ON-WRITE
  • 0x77E81234; страница памяти мапится с доступом READ/WRITE

Объяснение

Исходники — вопрос 56 на 38 странице книги «2004-gre-cs-practice-book.pdf»


Step 1: Calculate the Offset of the Breakpoint Address

  • Так, оффсет бряки 0x77E81234−0x77E80000=0x1234
    • в пространстве отладчика оно в 0x01000000+0x1234=0x01001234
  • Вот дальше, по моему опыту отладчиков (gdb, ddd, SoftICE, Ghidra…) нормальный READ/WRITE доступ есть (хоть код на ходу правь).

Но! Очевидно в каких-то случаях дебаггер маппит COPY-ON-WRITE, и если вы разбираетесь в теме и напишите обьяснение, когда и как оно мапиится — велком!