Управление памятью операционной системы, все, кто доел, потрясающе! ! !

задняя часть Операционная система
Управление памятью операционной системы, все, кто доел, потрясающе! ! !

«Эта статья участвовала в мероприятии Haowen Convocation Order, щелкните, чтобы просмотреть:Двойные заявки на внутреннюю и внешнюю стороны, призовой фонд в 20 000 юаней ждет вас, чтобы бросить вызов!"

Основы памяти

Что такое память?

手机内存,电脑内存,内存条

Самое интуитивное, что когда мы покупаем мобильные телефоны, компьютеры и карты памяти, мы указываем объем памяти.Например, 8G, 16G и 128G в пути относятся к объему памяти.Кроме того, отечественные продукты поддерживаются, и Huawei поддерживается.

Мы все должны были слышать об оперативной памяти, которая представляет собой полупроводниковое запоминающее устройство. RAM — это сокращение от английского слова Random, что означает «случайный». Поэтому оперативную память также называют «оперативной памятью».

Итак, какое отношение оперативная память имеет к памяти? Память — это совокупность множества RAM-памяти, печатная плата, объединяющая вместе множество RAM-памяти. Плюсы оперативной памяти в быстрой скорости доступа и удобном чтении и записи, поэтому скорость памяти конечно быстрее.

Как это работает?

История развития операционной системы

Любой, кто немного разбирается в истории операционных систем, знает процесс разработки «голого железа» без операционной системы -> одноканальная система пакетной обработки, которая может одновременно запускать только одну программу -> многоканальная система пакетной обработки -> время -система обмена.

Эра голого металла

В основном ручная работа, программист загружает перфорированную бумажную ленту (или карту) приложения и данных в машину ввода, затем запускает машину ввода для ввода программы и данных в память компьютера, а затем запускает программу через консоль переключиться на работу с данными ; после расчета принтер выводит результат расчета; после того, как пользователь берет результат и удаляет бумажную ленту (или карту), следующий пользователь может перейти к компьютеру.

人工操作

人机矛盾:Существует резкое противоречие между низкой скоростью ручной работы и высокой скоростью работы компьютера.Ручной режим работы серьезно навредил коэффициенту использования системных ресурсов (снижает коэффициент использования ресурсов до нескольких процентов или даже ниже), что не может быть терпимым. Единственное решение состоит в том, чтобы избавиться от ручного управления человеком и реализовать автоматический переход операций. Так происходит пакетная обработка.

Одноканальная пакетная система

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

CPU操作物理地址

矛盾:Одновременно в памяти хоста хранится только одно задание.Всякий раз, когда во время его работы выдается запрос ввода/вывода (I/O), высокоскоростной ЦП находится в состоянии ожидания низкоскоростного ввода/вывода. завершается, что приводит к бездействию ЦП.

Многоканальная пакетная система

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

Вопрос в том, что делать, если процессов так много, а памяти не хватает, и что делать, если адреса памяти каждого процесса работают одновременно друг над другом?

На этот раз возникает проблема, компоновщик ссылается в исполняемый файл, по умолчанию всегда начальный адрес программы для 0x0, но только в физической памяти адрес 0x0 Ага? Возможно, вы скажете: «Ничего, мы можем динамически изменить адрес при загрузке программы в память еще раз». Но если у меня размер физической памяти всего 1Гб, а теперь одна программа требует больше 1Гб места, как это сделать? Вы можете просто использовать это предложение, чтобы объяснить это?

Развитие операционной системы, включая последующую систему разделения времени, фактически решает противоречие несоответствия скоростей различных каналов связи.

ЦП намного быстрее, чем диск

存储器层次关系

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

各存储器的速度对比

内存速度比硬盘速度快的原理:Причина, по которой память работает быстрее жесткого диска (не немного быстрее, а намного быстрее), заключается в том, что они по-разному хранятся и считываются.

  • Жесткий диск — это механическая структура, которая считывает данные посредством вращения магнитной головки. Обычно жесткие диски для настольных ПК работают со скоростью 7200 об/мин, а жесткие диски для ноутбуков — со скоростью 5400 об/мин.
  • Память не имеет механической структуры, и память получает доступ к данным через электричество.

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

Резюме: прежде чем программа будет выполнена, ее необходимо поместить в память, прежде чем она сможет быть обработана процессором.因此内存的主要作用就是缓和CPU与硬盘之间的速度矛盾.

процесс выполнения программы

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

Решение: обратитесь к ячейке памяти.

内存编址

Программа работает следующим образом:

程序运行过程

Компиляция: перевод языка высокого уровня на машинный язык;

Связывание: Набор объектных модулей, сформированный после компиляции, и требуемые библиотечные функции связываются вместе компоновщиком для формирования полного загрузочного модуля;

Загрузка (loading): Модуль загрузки загружается в память загрузчиком для запуска;

Три способа связать

  1. 静态链接

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

静态链接

  1. 装入时动态链接

Метод связывания загрузки боковой ссылки перед запуском.

装入时动态链接

  1. 运行时动态链接

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

运行时动态链接

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

Три способа загрузки

1.绝对装入

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

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

  1. 静态重定位装入

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

Особенность статического перемещения заключается в том, что при загрузке задания в память должен быть выделен весь требуемый объем памяти.Если памяти недостаточно, задание не может быть загружено. Как только задание попадает в память, его нельзя переместить или применить к памяти во время работы.

  1. 动态重定位装入

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

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

动态重定位装入

动态重定位装入

Обязанности по управлению памятью

内存管理

Обязанности управления памятью - выделение и переработка памяти - управление непрерывным выделением

内存空间的分配与回收

内存空间分配 -连续分配管理方式

непрерывное распределение

单道批处理-连续分配方式

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

Преимущества: простота реализации, отсутствие внешней фрагментации;

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

Исправленное назначение раздела

多道批处理系统-固定分区分配

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

Операционная система должна установить структуру данных, таблицу описания разделов, чтобы реализовать распределение и восстановление каждого раздела. Каждая запись соответствует разделу, обычно упорядоченному по размеру раздела. Каждая запись включает размер, начальный адрес и состояние (выделено или нет) соответствующего раздела, как показано на рисунке ниже.

分区说明表

Когда пользовательская программа должна быть загружена в память, программа ядра операционной системы извлекает таблицу в соответствии с размером пользовательской программы, находит незанятый раздел, который может соответствовать размеру, назначает его программе, а затем изменяет статус на «выделено»».

Преимущества: простая реализация, отсутствие внешней фрагментации.

Недостатки: происходит внутренняя фрагментация и низкое использование памяти.

Динамическое назначение разделов

Динамическое выделение разделов также известно как переменное выделение разделов. Этот метод распределения не разделяет раздел памяти заранее, а динамически устанавливает раздел в соответствии с размером процесса, когда процесс загружается в память, и делает размер раздела просто соответствующим потребностям процесса. Поэтому размер и количество системных разделов являются переменными. (например: предположим, что размер памяти компьютера составляет 64 МБ, системная область — 8 МБ, а пользовательская — 56 МБ...)

动态分区分配

Возникают три вопроса:

  • Какую структуру данных использует система для записи использования памяти?

image-20210321004130599

  • Когда спрос может удовлетворить множество свободных разделов, какой раздел следует выбрать для выделения?
  • Как выделить и восстановить разделы?

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

Недостаток: динамическое выделение разделов не имеет внутренней фрагментации, но есть внешняя фрагментация.

内部碎片:Некоторые части области памяти, выделенной процессу, не используются.

外部碎片:Относится к некоторым свободным разделам в памяти, которые слишком малы для использования.

Если сумма свободного места в памяти может удовлетворить требования процесса, но поскольку процессу требуется все непрерывное пространство памяти, эти «фрагменты» не могут удовлетворить требования процесса. Внешняя фрагментация может быть решена с помощью методов уплотнения.

连续分配管理

Алгоритм динамического выделения разделов

动态分区分配算法

  1. Алгоритм первого подбора: каждый раз начинайте поиск с младшего адреса и находите первый свободный раздел, соответствующий размеру.

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

  3. Худшее адаптационное алгоритм: решить проблему наилучшего приспособленного алгоритма - то, что уходит слишком много небольших фрагментов, трудно использовать, приоритетный доступ к самой большой непрерывной свободной зоне во время каждого распределения, распределение оставшейся свободной зоны, так что это будет Не слишком мало, удобнее использовать.

  4. Алгоритм адаптации близости: первый алгоритм адаптации каждый раз выполняет поиск в начале цепочки. Это может привести к множеству небольших свободных разделов в части с низким адресом, и каждый поиск распределения должен проходить через эти разделы, что увеличивает стоимость поиска. Эту проблему можно решить, начиная поиск каждый раз с того места, где заканчивался последний поиск.

动态分区分配算法比较

Обязанности по управлению памятью — выделение и высвобождение пространства памяти — управление прерывистым выделением

连续分配: пользовательскому процессу должно быть выделено непрерывное пространство памяти.

非连续分配: пользовательскому процессу может быть выделено некоторое разрозненное пространство памяти.

非连续分配管理方式

Пейджинг — что такое основное хранилище подкачки

Разделите пространство памяти на разделы одинакового размера (например: каждый раздел имеет размер 4 КБ), и каждый раздел представляет собой «фрейм страницы».(页框=页帧=内存块=物理块=物理页面). Каждый фрейм страницы имеет номер, «номер фрейма страницы».(页框号=页帧号=内存块号=物理块号=物理页号), номер страничного фрейма начинается с 0.

分页存储-分区

Логическое адресное пространство процесса также делится на секции, равные размеру страничного фрейма, каждая секция называется «страницей» или «страницей». Каждая страница также имеет номер, «номер страницы», который также начинается с 0.

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

注:Последняя страница процесса может быть не такой большой, как страничный фрейм. То есть память 16K-1, хранилище подкачки может привести к внутренней фрагментации, поэтому кадр страницы не должен быть слишком большим, в противном случае это может привести к чрезмерной внутренней фрагментации и стать причиной потерь.

пагинация - таблица страниц

Чтобы знать, где в памяти хранится каждая страница процесса, операционной системе необходимо создать таблицу страниц для каждого процесса, а таблица страниц обычно хранится в печатной плате (блоке управления процессом).

数据结构-页表

пейджинг - трансляция адреса после пейджинга

地址转换

номер страницы = логический адрес/длина страницы (целая часть деления)

Внутристраничное смещение = логический адрес % длины страницы (остаток от деления)

地址转换

基本地址变换:

Базовый механизм преобразования адресов может преобразовывать логические адреса в физические с помощью таблицы страниц процесса. Обычно в системе устанавливается регистр таблицы страниц (PTR) для хранения в памяти начального адреса F и длины M таблицы страниц. Когда процесс не выполняется, начальный адрес таблицы страниц и длина таблицы страниц помещаются в блок управления процессом (PCB), а когда процесс запланирован, ядро ​​операционной системы помещает их в таблицу страниц. регистр.

地址转换

引入快表地址变换:

快表TLB-联想寄存器

Быстрая таблица, также известная как регистр ассоциации (TLB, резервный буфер перевода), представляет собой кеш с гораздо более высокой скоростью доступа, чем память (TLB — это не память!), используется для хранения копий недавно использованных записей таблицы страниц, что может ускорить увеличить скорость трансляции адресов. Соответственно, таблицы страниц в памяти часто называют медленными таблицами.

注:Отличие TLB от обычного Cache - в TLB находятся только копии записей таблицы страниц, в то время как у обычного Cache могут быть копии различных других данных

快表-地址转换

Насколько быстры быстрые часы?

Пример. Система использует базовое управление хранилищем подкачки и использует механизм преобразования адресов с быстрой таблицей. Для однократного доступа к быстрой таблице требуется 1 мкс, а для однократного доступа к памяти — 100 мкс. Если частота совпадений быстрой таблицы составляет 90%, каково среднее время доступа к логическому адресу?

(1+100) * 0,9 + (1+100+100) * 0,1 = 111 мкс. Некоторые системы поддерживают одновременно быстрый и медленный поиск в таблице, если это так, то среднее затрачиваемое время должно быть (1+100) * 0,9 + (100+100) * 0,1 = 110,9 мкс

Если механизм быстрой таблицы не используется, то для доступа к логическому адресу требуется 100+100 = 200 мкс.Очевидно, что после введения механизма быстрой таблицы скорость доступа к логическому адресу значительно выше.

Пагинация - двухуровневая таблица страниц

单级页表的问题:

Вопрос 1: Метод запроса таблицы страниц по номеру страницы: место хранения записи таблицы страниц, соответствующей странице K = начальный адрес таблицы страниц + K * 4, таблица страниц должна храниться постоянно, поэтому, когда страница таблица большая, она должна занимать много непрерывного фрейма страницы;

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

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

两级页表

两级页表-解决整个页表内存常驻问题

Пагинация — многоуровневая таблица страниц

多级页表

Интересно увидеть многоуровневый метод пейджинга таблицы страниц.

Сегментация - что такое сегментация

Адресное пространство процесса: разделено на несколько сегментов в соответствии с логической взаимосвязью самой программы, каждый сегмент имеет имя сегмента (в низкоуровневых языках программисты используют имена сегментов для программирования), и адресация каждого сегмента начинается с 0.

Правила выделения памяти: Выделять в единицах сегментов Каждый сегмент занимает непрерывное пространство в памяти, но сегменты не могут быть смежными друг с другом.

分段

сегмент - таблица сегментов

分段-段表

преобразование адреса сегмента

分段-地址转换

Сегментация против пагинации

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

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

2.1 Сегмент виден пользователю, и пользователь должен указать имя сегмента явно при программировании.

2.2 Размер страницы фиксирован и определяется системой. Длина сегмента не фиксирована и зависит от программы, написанной пользователем.

3.1 Адресное пространство пользовательского процесса пейджинга является одномерным, и программисту нужно только указать символ памяти для представления адреса.

3.2 Сегментированное адресное пространство пользовательского процесса является двумерным.Когда программист идентифицирует адрес, он должен указать как имя сегмента, так и адрес внутри сегмента.

分段 VS 分页

4.1 分段比分页更容易实现信息的共享和保护。Код, который нельзя изменить, называется чистым кодом или реентерабельным кодом (не критическим ресурсом), и такой код можно использовать совместно. Изменяемый код нельзя использовать совместно (например, в сегменте кода много переменных, и одновременный доступ каждого процесса может привести к несогласованности данных)

分段比分页更容易实现信息的共享和保护

резюме абзаца

Самое большое отличие от «пейджинга» заключается в том, что базовая единица адресного пространства, выделенная при дискретном выделении, отличается.

基本分段存储管理

Пункт

Плюсы и минусы сегментации и пагинации:

分段和分页的优缺点

Абзац - что такое абзац

段页式管理

Каждый сегмент соответствует записи сегмента, и каждая запись сегмента состоит из номера сегмента, длины таблицы страниц и номера блока хранения таблицы страниц (начальный адрес таблицы страниц).

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

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

таблица сегментов таблица страниц

段表页表

преобразование адреса страницы сегмента

段页式-地址 转化

резюме абзаца

段页式小结

Расширение памяти

Размер многих игр превышает 60 Гб, поэтому игровая программа перед запуском должна поместить в память все 60 Гб данных. Однако фактическая память моего компьютера составляет всего 8 ГБ, и мне приходится открывать браузер WeChat и другие процессы, но почему эта игра работает без сбоев?

Использовать технологию виртуализации (виртуальность операционной системы)

虚拟内存

Временная локальность: если инструкция в программе выполняется, вполне вероятно, что эта инструкция будет выполнена снова вскоре; если осуществляется доступ к определенным данным, доступ к данным, вероятно, будет осуществлен снова вскоре после этого. (потому что в программе много циклов);

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

局部性原理

虚拟内存大小是多少?

Максимальный объем виртуальной памяти определяется структурой адресов компьютера (диапазон адресации ЦП), реальный объем виртуальной памяти = min (сумма объема памяти и внешней памяти, диапазон адресации ЦП)

Например, адресная структура компьютера 32 бита, адресация по байтам, объем памяти 512 Мб, объем внешней памяти 2 Гб.

Тогда максимальный объем виртуальной памяти равен 2^32 Б = 4 ГБ;

Фактический объем виртуальной памяти = мин. (232Б, 512МБ+2ГБ) = 2ГБ+512МБ;

Реализация виртуальной памяти

虚拟内存的实现

Запрос управления пейджингом

请求分页存储管理与基本分页存储管理的主要区别:

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

请求分页-页表机制

Запрос на пейджинг - прерывание из-за ошибки пейджинга

请求分页-缺页中断

Прерывание по ошибке страницы генерируется, потому что целевая страница, к которой в данный момент выполняется инструкция, не загружена в память, поэтому属于内中断 Во время выполнения инструкции могут возникнуть многостраничные ошибки. (Например: копирование A в B, то есть копирование данных из логического адреса A в логический адрес B, а A и B принадлежат разным страницам, это может сгенерировать два прерывания)

中断分类

Запрос пейджинга — преобразование адреса

请求分页-地址转换

地质转化详细过程

  1. Только «команда записи» должна изменить «бит модификации». Более того, как правило, модифицировать нужно только данные в быстрой таблице, и только когда запись в быстрой таблице нужно удалить, ее нужно записать обратно в медленную таблицу в памяти. Это уменьшает количество обращений к памяти.
  2. Как и обычная обработка прерывания, обработка прерывания ошибки страницы по-прежнему должна сохранять сцену ЦП.
  3. Для определения страницы, подлежащей замене, необходимо использовать какой-то «алгоритм замены страницы» (следующий раздел).
  4. На странице обмена/замены нужно запустить медленную операцию ввода/вывода, видно, если обмен/обмен слишком частый, будет много накладных расходов.
  5. После того, как страница загружена в память, медленную таблицу необходимо изменить, а запись таблицы необходимо скопировать в быструю таблицу.

请求分页管理方式

Запросить пейджинг — Замена страницы

页面的换入、换出需要磁盘 I/O,会有较大的开销,因此好的页面置换算法应该追求更少的缺页率

  1. Алгоритм оптимальной перестановки (OPT)
  2. Алгоритм перестановки в порядке поступления (FIFO)
  3. Последний неиспользованный алгоритм перестановки (LRU)
  4. Алгоритм замены часов (CLOCK)
  5. Улучшенный алгоритм замены часов

页面置换算法

Обязанности управления памятью — преобразование адресов

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

Конкретный метод преобразования адресов описан выше.

Обязанности управления памятью — защита хранилища

Операционная система должна обеспечивать защиту памяти. Убедитесь, что каждый процесс работает в своем собственном пространстве хранения, не мешая друг другу.

内存保护方式一

内存保护方式二

内存管理职责实现方式

Операционная система — это внутренняя сила программиста. Только практикуя эту внутреннюю силу, вы сможете продвинуться дальше. Это также является содержанием моего технического обмена на этой неделе. Если хотите, вы можете подписаться на мой общедоступный аккаунт «Дорога кода Форреста Гампа», посвященный обмену серверными технологиями.

Справочные материалы: Википедия, энциклопедия Baidu, курс для учителей Вандао.