Что такое виртуальная память | Одноминутная серия

Операционная система

Ярлыки: Статьи официального аккаунта


Память представляет собой массив байтов для пользователя, мы можем получить доступ к определенному байту или определенным байтам в соответствии с адресом10⁴:

image_1dkcslk471u4p1ske15ul15f1no9.png-14.1kB

воспоминание из далекого прошлого

Давным-давно на машину помещалась только одна программа, а операционная система существовала только как библиотека функций. Для памяти, кроме некоторого места, занятого кодом и данными операционной системы, остальное место отводится работающей программе.Вот как нарисовать картинку:

image_1dkcucmbomuv1atf1vn516ge14kim.png-29.3kB

Советы: Мы называем запущенную программу процессом.

Память для запуска нескольких программ одновременно

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

image_1dkcukdebh3m1qo21o0u1vp1g5713.png-27.4kB

С этим тоже есть некоторые проблемы:

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

  • Если негодяй намеренно читает память, используемую чужими программами, разве это не будет раскрыто? Что еще серьезнее, этот плохой парень напрямую обновляет некоторые байты памяти, используемой чужими программами. , это провал~

  • Пространство памяти, которое можно использовать, оговорено, его слишком мало и нет~

Виртуальная память

Операционная система — старый добрый человек, и ее миссия — решать проблемы всех пользователей. Дядя, разработавший операционную систему, считал, что если бы пользователь напрямую манипулировал памятью, он бы не знал, какие байты памяти используют другие люди, а какие байты может использовать он.Иногда нам приходится собираться вместе, чтобы провести собрание, и указать, какую память должен использовать каждый человек.Даже если это предусмотрено, пользователи должны быть осторожны, чтобы не использовать часть памяти, которая им не принадлежит. Просто не позволяйте пользователю напрямую манипулировать памятью и позволяйте пользователю при программировании напрямую представлять себе память как очень, очень большой массив байтов.Этот очень большой массив байтов называется虚拟内存, операционная система завершает отображение виртуального адреса виртуальной памяти на реальный адрес реальной памяти. Нарисуйте такой график:

image_1dkd0mfcifvl19ruvdr176s1c8v1t.png-91.1kB

Проблемы все еще есть.Пользователей становится все больше.Даже если каждый пользователь использует очень мало места в памяти,то общий занимаемый объем памяти может превышать реальный объем памяти,не говоря уже о программах,написанных какими-то сумасшедшими программистами.Что делать,если он использует больше места, чем сам реальный объем памяти. Это не составило труда дядькам, разработавшим операционную систему, и они тактично втянули жесткий диск.

image_1dkd1c1gq1edotve5ea1eean9n4a.png-125.5kB

Операционная система выполняет отображение адресов виртуальной памяти в адреса реальной памяти или адреса дисков, так что адресное пространство виртуальной памяти, предоставляемое пользователям, может быть очень большим, а пространство памяти, которое долгое время не использовалось в пользовательских программах может быть Он хранится на диске операционной системой. Когда это необходимо, он загружается с диска в реальную память. Важно то, что весь этот процесс выполняется операционной системой автоматически. Для нас, фермеров, занимающихся кодом, написание программ Например, перемещение данных из одного места в другое в большом байтовом массиве жареной курицы или помещение данных из определенного места в определенное место байтового массива после некоторой обработки ЦП, весь процесс такой легко, вам не нужно беспокоиться о чтении/перезаписи области памяти, которую используют другие.

Советы: Для операционной системы Windows дисковое пространство, необходимое для виртуальной памяти, выделяется на системном диске, обычно на диске C. Когда на вашем диске C очень мало свободного места, это может привести к зависанию ~

структура виртуальной памяти

Мы говорим, что для кодеров, которые печатают код,虚拟内存Это сверхбольшой массив байтов, но этот массив байтов разделен на множество частей, не каждый локальный пользователь может получить доступ к общей структуре виртуальной памяти издалека:

image_1dkd28hgakg41obad4a13ag19mj5k.png-66.2kB

Когда пользователь должен вызывать функцию, функция вызывается栈帧структуру, в результате чего栈空间увеличивать.

Когда пользователю нужно подать заявку на пространство памяти отдельно, оно будет выделено из пространства кучи, что приведет к堆空间увеличивать.

Здесь необходимо подчеркнуть, что то, что мы обычно называем операционной системой内核Не процесс, а код операционной системы.

Неосознанно, я думаю более чем минуту, увидимся в следующий раз ~

Советы: Чтобы быть прогнозом, о реализации виртуальной памяти, то есть о том, как операционная система сопоставляет адреса виртуальной памяти с реальными адресами памяти и адресами дисков, это требует долгого обсуждения, ха-ха, пожалуйста, с нетерпением ждите «Как работает компьютер работа?» из».

Не по теме

Написание статей очень утомительно, и иногда вы чувствуете, что чтение идет очень гладко, что на самом деле является результатом бесчисленных правок за ним. Если вы думаете, что это хорошо, пожалуйста, помогите переслать его.Большое спасибо~ Вот мой публичный аккаунт "Мы все маленькие лягушки".