PracticU

Механизм отображения виртуальных адресов в физические

Без субтитровС субтитрами
PracticU › Курс хакинга - Hacking - Взлом серверов и сетей - Пентест OSCP › Механизм отображения виртуальных адресов в физические
Словарь терминов:
виртуальный - Созданный программно и имитирующий реальный объект, например виртуальная машина вместо физического компьютера.
память - Быстрое энергозависимое устройство, где компьютер держит данные и программы во время их работы. Очищается при выключении.
операционная система - Базовая программа, которая управляет оборудованием компьютера и ресурсами и запускает остальные программы, например Windows или Linux.
процесс - Запущенный в памяти экземпляр программы со своим кодом, данными и выделенными ресурсами.
файл - Именованный набор данных, сохранённый на диске: документ, программа, изображение и т. п.
компьютер - Электронное устройство, которое обрабатывает данные и выполняет программы.
гигабайт - Единица объёма данных, примерно миллиард байт.
права доступа - Правила, определяющие, кто может читать, изменять или выполнять файл, папку или другой ресурс.

Механизм отображения виртуальных адресов в физические
Каждая программа видит память так, будто она принадлежит только ей, хотя физическая RAM одна на всех. Лекция объясняет, как операционная система переводит виртуальные адреса в физические и почему часть данных оказывается на жестком диске.
Основные идеи
1. Скорость RAM: память работает во много раз быстрее жесткого диска, поэтому процессор исполняет код только из памяти. Перед запуском программы ее код копируется с диска в RAM. Содержимое RAM при выключении питания стирается, поэтому документы нужно сохранять на диск.
2. Виртуальные адреса: у каждого процесса есть своя таблица страниц (Page Table), которая связывает виртуальную страницу с ячейкой физической памяти, или frame.
3. Present bit: флаг показывает, есть ли страница в физической памяти. Если ее там нет, возникает page fault: система переносит страницу с диска обратно, а программа в это время ждет.
4. Файл подкачки: редко используемые страницы выгружаются на диск в файл pagefile.sys, и программа об этом не знает. На компьютере лектора этот файл занимает около 10 ГБ.
5. Dirty bit: при записи в страницу процессор ставит отметку, что ее копия на диске устарела и перед выгрузкой ее нужно обновить.
6. Права доступа: для каждой страницы задаются права чтения, записи и исполнения.
Обратите внимание
Частые page faults видны в диспетчере задач (колонка PageFaults) и означают нехватку памяти: система замедляется, потому что процесс ждет диск.
Студент понимает, почему программа не замечает, где на самом деле лежат ее данные.
Следующий урок курса: Секции оперативной памяти

Содержание лекции: Механизм отображения виртуальных адресов в физические

  1. 00:00

    Введение: оперативная память компьютера

  2. 01:45

    Скорость оперативной памяти и диска

  3. 03:31

    Сохранение документов и данные в памяти

  4. 04:06

    Виртуальные адреса для каждого процесса

  5. 04:41

    Почему адреса памяти виртуальные

  6. 05:48

    Адресное пространство 64-битного процесса

  7. 07:29

    Таблица страниц процесса (Page Table)

  8. 08:41

    Ошибка page fault и загрузка с диска

Расшифровка лекции: Механизм отображения виртуальных адресов в физические

Полный текст первых минут лекции «Механизм отображения виртуальных адресов в физические» из видеокурса PracticU – субтитры с временной меткой для каждого абзаца. Так можно прочитать и найти нужные темы ещё до начала обучения.

  1. 00:02

    Добро пожаловать на лекцию про память. Давайте начнем с того, что в этой памяти, которая очень-очень быстрая, сидит тайная информация иногда. И проблема в том, что когда мы выключаем электричество, вся информация стирается.

  2. 00:16

    Поэтому у нас есть жесткий диск, который очень медленный. Но вот эта вот память, она очень быстрая. И, кстати, можно всю систему безопасности взломать, например, взломать BitLocker, С помощью того, что мы возьмем и заморозим эту память физическую, заморозим с помощью специального газа в рабочем компьютере.

  3. 00:36

    И во время его работы, когда у него битлокер открыт, когда засчитан весь жесткий диск открытый и ключ тайный только в этой памяти, мы можем взять, заморозить компьютер с помощью газа, вытащить электричество, быстро вытащить эту память, вставить ее в другой компьютер и успеть сфотографировать,

  4. 00:58

    снять снимок всей информации в этой памяти. Именно так взламывается BitLocker. То есть я вам хочу рассказать то, что вы думаете, что когда выключается электричество, вся информация стирается, это правда, но это занимает несколько секунд.

  5. 01:13

    Если взять газ и заморозить эту память с помощью специального газа, то у нас будет еще несколько десятков секунд, и в эти десятки секунд мы успеем все скопировать с этой памяти, то есть переставить ее в мой компьютер, все скопировать, вытащить тайные ключи шифрования,

  6. 01:32

    например, битлокера. Это единственный способ взломать очень такие секьюрные системы, просто вытащить из этой памяти прямо тайные ключи. Но для этого, конечно, надо быть физически рядом с компьютером, и, конечно, надо прийти там с газом и уметь это все делать.

  7. 01:48

    Давайте вернемся к нашим делам. Короче, мы поняли, что эта память очень-очень быстрая, в отличие от жесткого диска, и она работает со скоростью, чтобы вы понимали, 30 гигабайт в секунду.

  8. 01:59

    Когда мы делаем дабл-клик, запускаем какую-то программу, какое-то приложение, операционная система сначала выделяет память для нашего нового процесса и копирует туда весь код в эту память.

  9. 02:13

    То есть операционка сначала копирует код программы в память, а только потом запускает эту программу из памяти. Именно поэтому мы долго ожидаем, когда мы нажимаем на Photoshop, когда мы запускаем Photoshop или какую-то тяжелую программу, мы ждем чего? Того, чтобы он скопировался с жесткого диска в память.

  10. 02:34

    Поэтому игра долго грузится, поэтому программа долго загружается. Это все, потому что с жесткого диска копируется код в память, а только потом начинает исполняться.

  11. 02:44

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

  12. 03:01

    То есть вот это вот все, что вы видите выше, вот эти все цветные квадратики, это все разные регионы памяти с разными данными, но это все данное.

  13. 03:10

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

  14. 03:26

    А все, что выше, это разные данные. Из-за того, что данные сохраняются в памяти, то нам надо обязательно делать сейв на игру, сейв на документ Word.

  15. 03:37

    То есть нам надо сохранять документы. Почему? Потому что они сидят все в памяти. Если выключится электричество, выбьет у нас электричество в квартире, то у нас все полетит, потому что там за несколько секунд вся память сотрется.

  16. 03:50

    А если мы сделаем сейв, мы переложим вот эту информацию на жесткий диск. Теперь я вам покажу что-то более интересное. Заметьте адреса. Какие здесь адреса? Видите, справа есть адреса.

  17. 04:01

    И мы видим, что одна программа думает, что все адреса памяти только ее. Что вся память RAM принадлежит только ей. Видите, от 00000, 48000, это 16-ти речная система исчисления, и FFFFF.

  18. 04:17

    Все-все адреса только ее. И в этом прелесть, что программа не чувствует себя ограниченной. У нее есть сколько хочешь адресов, без всякой связи с реальным физическим миром.

  19. 04:28

    И таких программ в моем компьютере работает параллельно десятки штук. Если вы зайдете в Task Manager, вы увидите в диспетчере задачи, что таких десятки, и каждая думает, что у нее вся память принадлежит ей.

  20. 04:41

    Почему это происходит? Потому что это виртуальные адреса памяти. Программа думает, что это ее, процесс думает, что это ее, Но по факту операционка обманывает и говорит, твои адреса, я тебе скажу по правде, это виртуальные адреса, ты думаешь,

  21. 04:57

    что это все в памяти, но это не в памяти. Иногда я возьму и положу что-то в память физическую, вот эту вот красную, а иногда я это положу на жесткий диск и тебе об этом не буду говорить, ты даже не узнаешь.

  22. 05:09

    Для тебя это все находится в памяти. Почему на жесткий диск, почему на физическую память? Потому что у меня ее недостаточно для всех, у меня много программ параллельно.

  23. 05:19

    Поэтому те программы, которыми пользователи сейчас не пользуются, давайте положим на жесткий диск и ничего ей не скажем.

  24. 05:26

    И когда надо будет подойти к какой-то памяти, мы ее с жесткого диска обратно вернем в физическую память. Мы это сейчас прямо увидим, как это все происходит, весь этот менеджмент за кулисами, как операционная система всем этим руководит и как с этим связана security.

  25. 05:43

    Кстати, заметьте, что таких процессов много в компьютере, то есть это для каждого процесса это происходит. Вот мы можем увидеть на сайте Microsoft, что Notepad работает, и у него, смотрите, сколько адресов, потому что это 64-битная система.

  26. 05:57

    И MyApp тоже, у него столько же адресов. Это вообще какие-то сумасшедшие цифры. Если вы это переведете в 10-ричную систему, вы увидите, что это какие-то сумасшедшие миллиарды.

  27. 06:07

    Поэтому каждая программа думает, что у нас миллиарды гигабайт памяти, и они могут пользоваться любыми адресами. И физически это находится часть здесь, часть там, и часть вообще на жестком диске.

  28. 06:20

    Видите, мы ее как бы не очень ограничиваем, чтобы каждая программа чувствовала, что у нее нет напряга с памятью. Я хочу вам показать, что даже на сайте Microsoft, ну если вы мне не доверяете, прямо написано черным по белым, что в userspace, то есть не в операционной системе, операционка это kernel space, а это userspace, то есть процессы обычного

  29. 06:40

    пользователя. All physical memory pages can be page out. То есть все физические пейджи, страницы памяти могут быть page out, могут быть выгружены на диск.

  30. 06:52

    Вот видите, здесь прямо есть рисунок, что часть пейджов в памяти, а часть пейджов ушло на диск. Кстати, важно понять, что с точки зрения электроники, память это простые адреса, просто адреса, и в каждом адресе есть какое-то значение, то есть адрес, значение, адрес, значение.

  31. 07:08

    Все, что я вам рассказываю, это сложности, которые мы сами себе придумали, чтобы сделать безопасность, чтобы раздавать больше памяти.

  32. 07:15

    Но с точки зрения электроники, это все адрес в памяти и его значение, не более того. А мы хотим управлять этими адресами умно, так, чтобы кто не чувствовал, что у нас не хватает памяти.

  33. 07:27

    Максимум немножечко подождали, пока мы принесли бы что-то жесткого диска. Но все программы могли работать параллельно, быстрее, медленно, но все бы у нас работало.

  34. 07:37

    А теперь я вам показываю таблицу, которая используется операционной системой для управления всей этой памятью. Здесь есть левая колонка, это Virtual Page.

  35. 07:48

    Virtual Page это вот и есть та страница памяти, которая у процесса, у нашей программы. То есть наша программа говорит, дайте мне адрес номер 2, у меня есть адрес номер 2, дайте мой адрес номер 2.

  36. 08:01

    Операционная система с помощью этой таблицы, это называется Page Table или Process Page Table. И она существует в каждом процессе, то есть для каждой программы, запущенной в вашем компьютере, есть такая таблица, с помощью которой операционная система смотрит на то, что у нее попросили, смотрит,

  37. 08:18

    где это находится в этой таблице на физическом уровне, то есть на физической памяти, где это находится, например, в ячейке номер 9, и идет в физическую ячейку номер 9 и дает нам ее значение.

  38. 08:31

    Вот эта вот единичка present bit говорит то, что это действительно находится в памяти. А если у нас попросит наш процесс, наша программа скажет, дай мне страничку номер один, то он увидит, что present bit 0, то есть этой странички в памяти нет, операционка втихаря взяла и выкинула ее на жесткий диск, и тогда сработает такой interrupt

  39. 08:55

    page fold, то есть сработает прерывание события page fold в операционной системе. Вы его, кстати, можете видеть в Task Manager, вы можете увидеть, сколько раз такое происходит.

  40. 09:05

    И это значит, что мы все останавливаем, идем на жесткий диск, приносим вот эту ячейку памяти, которую он попросил, кладем обратно в память и говорим, что все ок.

  41. 09:16

    Но пока это все происходит, мы сидим и ожидаем, чтобы это все произошло, и у нас компьютер как бы висит. Поэтому, когда у нас не хватает памяти, у нас часто происходят такие Page Faults, и мы это можем увидеть в Task Manager.

  42. 09:30

    Рядом с каждым процессом там есть колонки, которые можно добавить, и одна из колонок это PageFolds. И увидеть, сколько таких событий происходит для конкретной программы.

  43. 09:39

    Давайте посмотрим, как это происходит. Вот наша память, наши виртуальные пейджи. Вот таблица, которая говорит, где это находится в физическом мире. Вот эта вот таблица ProcessTable или PageTable.

Полный курс: Курс этичного хакинга онлайн

Предыдущая лекция: Повышение привилегий в линуксе - уязвимости в системных файлах

Следующая лекция: Секции оперативной памяти

Похожие лекции из других курсов

  • Механизм репликации между DC
  • Двуичная арифметика адресов IP
  • Port Security - Ограничение количества MAC адресов на порту

Другие курсы этого направления

  • Курс хакинга - Hacking - Взлом Active Directory - OSCP
  • Курс хакинга - Hacking - Тестирования сайтов на уязвимость
  • Курс хакинга - Hacking - Взлом Android приложений