> man operating_systems
WYOS - Выпуск №8
Управление памятью
на Среда, 30 Июнь 2004, 16:38
добавил: commrade список авторов печатать элемент контента создать pdf-файл  элемент контента
категория Статьи > Write Your Own OS
комментарии: 0
просмотров: 681

Самые начала организации памяти в компьютере. Физический уровень.

Напиши свою ОС! #8
Здравствуйте, уважаемые подписчики!

В сегоднешнем выпуске речь пойдет об управлении памятью. Управление памятью - это один из основных моментов работы любой ОС. Для начала необходимо отметить, что память можно разделить на два типа: физическая (реальная) и виртуальная. Эти два типа тесно взаимосвязанны, но подход к управлению памятью немного разный. Так как тему управления памятью одним выпуском не охватить, то в этом выпуске будет рассмотренно управление физической памятью, а в следующем - виртуальной.

Физическая память

Физическая память делится на три части:

<ul>
<li><i>основная памя</i> - это где происходит непосредственно выполнение прогрммы или обращение к данным.
<li><i>вторичная памя</i> - это то место, где храняться данные ("" диск и т. п.).
<li><i>кэш памя</i> - программы хранящиеся в основной памяти, для своего выполнения передаются
в сверхскоростную кэш-память поскольку это обеспечивает значительный выигрыш во времени выполнения.
</ul>

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

<p>Чтобы программы можно было выполнять, а к данным можно было обращаться, они должны размещаться
в основной памяти. Программы и данные, которые в настоящий момент не нужны, можно хранить во
вторичной памяти, а затем когда в этом возникнет необходимость, переписывать в основную память
для выполненения и использования. Типовая иерархическая организация памяти представлена на рисунке 1
(данный рисунок взят из источника [1]).</p>
<p align='center'><img src='files/images/articles/wyos/Org_Memory.png' alt='
Org_Memory.png' width='512' height='384'></p>
<p>На самом деле организация работы памяти намного сложнее. Она зависит от многих праметров:
какая будет стратегия управлении памятью,
как распределяется память между программами,какая система однопользователская или многопользоватеьская,
однозадачная среда или многозадачная.</p>

Cтратегия управления памятью
Стратегии управления памятью делятся на следующие категории:

<ol>
<li>Стратегии выборки:
<ol style="list-style: lower-alpha">
<li>стратегии выборки по запросу
<li>стратегии упреждающей выборки
</ol>
<li>Стратегии размещения
<li>Стратегии замещения
</ol>
<i>Стратегии </i> ставят своей целью определять, когда следует "" очередной блок программы или данных
в основную память.<br>
<i>Стратегии размещения</i> ставят своей целью определить, в какое место основной памяти следует помещать поступающую программу.<br>
<i>Стратегии замещения</i> ставят своей целью определить, какой блок программы или данных следует вывести из основной памяти, чтобы
освободить место для записи поступающих программ или <br></p>

Распределение памяти

<p>В начале начал первые ЭВМ требовали, чтобы каждая программа занимала один сплошной блок ячеек памяти. Только когда появились
многозадачные ОС стало ясно, что такое распределение памяти мягко говоря не эффектино.</p>
<p>Существует три способа распределения памяти:<br>
<ul>
<li><i>Несвязанное распределение памя</i> - задача или процесс разбивается на ряд блоков, или сегментов, которые могут размещаться
в различных участках памяти, не обязательно соседних. Данный способ больше всего подходит для многозадачных ОС, так как позволяет
ОС загрузить и выполнить программу, которой в противном случае пришлось бы ждать, так как имеет не один большой участок памяти, а несколько.
Но тут появляется проблема свойственная современным ОС это фрагментация памяти.<br>
<li><i>Связанное распределение памя</i> - задача или процесс занимает один сплошной блок ячеек памяти.
<li><i>Страничное распределение памя</i> - вся адресуемая память (основная, вторичная) разбивается на фрагменты равной длины, называемые страницами. Это деление
не оказывает влияния на расположение задания в памяти. Более того, все страницы независимо перемещаются в основную память
и из нее, заданию могут быть выделены несмежные страницы, т.е. страницы одного задания могут располагаться в разных местах основной памяти.
</ul>
<p>Проблема фрагментации памяти решается различными способами. Наиболее перспективные методы: распределение перемещаемыми
разделами и страничная организация. При распределении перемещаемыми разделами производится перемещение разделов так, чтобы
свободные участки памяти стали смежными.</p>
<p>Для реализации метода страничного распределения используется специальный регистр, называемый таблицей страниц. Распределение страницами может быть реализованно программно
или с использованием аппаратных средств. Последние дают экономию на преобразовании адресов. Кстати говоря исследования, которые проводили на заре времен ЭВМ, показали, что
использование для реализации этих методов только программных средств неэффективно, а внекоторых случаях сводит все усилия к нулю.</p>

[size]Многопользоватеьность и многозадачность/size]

<p>Самые первые ОС как правило были однопользователскими и однозадачными и при этом были супер-громадных размеров, а пользователи
обходились без Explorer'ов, Far'ов и без (о ужас!!!!!!) Winamp'ов. Основные проблемы, которые возникают в современных ОС (многопользоватеских и
многозадачных), это проблема защита параллельно работающих программ друг от друга (будет рассмотренна в следующем разделе данной рассылки,
защита данных пользователей. Об защите данных пользователей можно сказать только, то что эта проблема решается еще на уровне файловой системы
и на уровне ядра ОС. Это проблеме посвящены целые диссертации и научные исследования. C моей же точки зрения данная проблема лучше
всего реализована в системах типа Unix, когда другой пользователь из своего акаунта не сможет просто физически получить доступ
к данным другого пользователя. А Win'98 наглядный пример как этого делать не нужно (сразу скажу, что ничего против Win'98 я не имею, в каком-то смысле
данная ОС мне сейчас ближе всего нежели Win'2000 или WinXP).</p>

Послесловие

<p>И напоследок хочу сказать, что при подговке данной статьи в основном я использовал сведения из книги
Дейтля "Введение в операционные " год издания 1984. Сразу предвидя камни брошенные в мою сторону по поводу
"" данной книги хочу сказать. что может она и не содержит наипоследнейшиесведения в области разработки
ОС, но она рассказывает об основных моментах этого дела и дает полное представление о работе ОС даже современных. Так я например
только прочитав ее некоторые главы понял некоторые моменты работы Win'98. Побольше бы таких книг. Если в этой статье
по вашему мнению я допустил ошибки
либо вы считаете, что я в корне не прав пишете на мыло - я постараюсь ответить.</p>

Источники литературы и интересные ссылки
<ol>
<li>Дейтель "Введение в операционные ", 1984 г.
<li>Г. Н. Лихачев, В. Д. Медведев, "Операционные ", изд: "", 1980 г.
<li><a href="http://www.nondot.org/~sabre/os/">http://www.nondot.org/~sabre/os/</a> - хороший источник информации, правда англоязычный, ну да это не беда
<li><a href="http://www.nondot.org/~sabre/os/articles/MemoryManagement/">Memory Management</a> - подробные сведения об различных видах управления памятью
</ol>


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

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.