Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Простые способы управления памятью
Системы управления памятью можно разделить на два класса: перемещающие процессы между оперативной памятью и диском во время из выполнения и те, которые этого не делают. Однозадачная система без подкачки на диск Самая простая из возможных моделей управления памятью заключается в том, что в каждый конкретный момент времени работает только одна программа, при этом память разделяется между программами и операционной системой. Многозадачность с фиксированными разделами. Самый легкий способ достижения многозадачности представляет собой простое разделение памяти на n (возможно не равных) разделов. Такое разбиение можно выполнить, например, вручную при запуске системы. Настройка адресов и защита Многозадачность вносит две существенные проблемы, требующие решения, - это настройка адресов для перемещения программы в памяти и защита. Когда программа компонуется (то есть в едином адресном пространстве объединяются основной модуль, написанный пользователем процедуры и библиотечные подпрограммы), компоновщик должен знать, с какого адреса будет начинаться программа в памяти. Эта проблема известна как проблема перемещения программ в памяти или настройки адресов. Подкачка Существует два основных подхода к управлению памятью, зависящие (отчасти) от доступного аппаратного обеспечения. Самая простая стратегия, называемая свопингом (swapping) или обычной подкачкой, заключается в том, что каждый процесс полностью копируется в память, работает некоторое время и затем полностью же возвращается на диск. Другая стратегия, носящая название виртуальной памяти, позволяет программам работать даже тогда, когда они только частично находятся в оперативной памяти. Когда в результате подкачки процессов с диска в память появляется множество неиспользованных фрагментов, их можно объединить в один большой блок, передвинув все процессы в сторону младших адресов настолько, насколько это возможно. Такая операция называется уплотнением или сжатием памяти. Управление памятью с помощью битовых массивов Если память выделяется динамически, этим процессом должна управлять операционная система. Существует два способа учета использования памяти: битовые массивы, иногда называемые битовыми картами, и списки свободных участков. При работе с битовым массивом память разделяется на блоки размером от нескольких слов до нескольких килобайтов. В битовой карте каждому свободному блоку соответствует один нулевой бит, а каждому занятому блоку – бит, установленный в 1 (или наоборот). Управление памятью с помощью списков Другой способ отслеживания состояния памяти предоставляет поддержка списков занятых и свободных фрагментов памяти, где фрагментом является или процесс, или участок между двумя процессами. Каждая запись в списке указывает: является ли область памяти свободной (H, от hole – дыра) или занятой процессом (P, process); адрес, с которого начинается эта область; ее длину; содержит указатель на следующую запись. Виртуальная память Уже достаточно давно люди впервые столкнулись с проблемой размещения программ, оказавшихся слишком большими и поэтому не помещавшихся в доступной физической памяти. Обычно принималось решение о разделении программы на части, называемые оверлеями (overlays). Нулевой оверлей обычно запускался первым. По завершении своего выполнения он вызывал следующий оверлей. Некоторые системы с перекрытием были очень сложными, позволяющими одновременно находиться в памяти нескольким оверлеям. Оверлея хранились на диске и по мере необходимости динамически перемещались между памятью и диском средствами операционной системы. Несмотря на то, что фактическая работа по загрузке оверлеев с диска и выгрузке на диск выполнялась системой, делить программы на части должен был программист. Разбиение больших программ на маленькие модули поглощало много времени и было не слишком интересным занятием. Однако такая ситуация длилась недолго, так как вскоре кто-то придумал способ поручить всю эту работу компьютеру. Разработанный метод известен как виртуальная память. Основная идея виртуальной памяти исходит из того, что совместный размер программы, данных и стека может превысить количество доступной физической памяти. Операционная система хранит части программы, использующиеся в настоящий момент, в оперативной памяти, остальные – на диске. При этом части программы, находящиеся на диске, будут меняться местами с частями в памяти по мере необходимости. Страничная организация памяти Большинство систем виртуальной памяти опираются на технику, называемую страничной организацией памяти (paging). На любом компьютере существует множество адресов в памяти, к которым может обратиться программа. Эти программно формируемые адреса, называемые виртуальными адресами, образуют виртуальное адресное пространство. На компьютерах без виртуальной памяти виртуальные адреса подаются непосредственно на шину памяти и при чтении или записи читается или записывается слово в физической памяти с тем же самым адресом. При применении виртуальной памяти виртуальные адреса не передаются напрямую памяти. Вместо этого они направляются диспетчеру памяти (MMU – Memory Management Unit), который отождествляет виртуальные адреса на физические адреса. Таблица страниц В теории отображения виртуальных адресов на физические происходит так, как мы только что описали. Виртуальный адрес делится на номер виртуальной страницы (старшие биты) и смещение (младшие биты). Номер виртуальной страницы используется как индекс в таблице страниц для поиска записи этой страницы. По записи в таблице страниц находится номер физического блока страницы (если его имеет место). Данный номер присоединяется к старшим разрядам числа смещения, замещая собой, номер виртуальной страницы и тем самым, формируя физический адрес, который может быть послан в память. Назначение таблицы страниц заключается в отображении виртуальных страниц на страничные блоки. Говоря математически, таблица страниц – это функция, имеющая в качестве аргумента номер виртуальной страницы и вырабатывающая в результате номер физического блока. На основе полученного результата поле виртуальной страницы в виртуальном адресе может быть заменено полем страничного блока, таким образом, формируется физический адрес. Date: 2016-05-25; view: 738; Нарушение авторских прав |