Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Стоулинг ГЛАВА 2 Обзор ОС.doc
Скачиваний:
30
Добавлен:
11.05.2015
Размер:
510.46 Кб
Скачать

Управление памятью

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

  • Изоляция процессов. Операционная система должна следить за тем, чтобы ни один из независимых процессов не смог изменить содержимое памяти, отведенное другому процессу, и наоборот.

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

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

  • Зашита и контроль доступа. При совместном использовании памяти на каждом ее иерархическом уровне есть вероятность, что одна программа обратится к пространству памяти другой программы. Такая возможность может понадо­биться, если она заложена в принцип работы данного приложения. С другой стороны, это угроза целостности программ и самой операционной системы. Операционная система должна следить за тем, каким образом различные поль­зователи могут осуществлять доступ к различным областям памяти.

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

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

Виртуальная память — это устройство, позволяющее программистам рас­сматривать память с логической точки зрения, не заботясь о наличии физиче­ской памяти достаточного объема. Принципы работы с виртуальной памятью были разработаны, чтобы задания нескольких пользователей, выполняясь па­раллельно, могли одновременно присутствовать в основной памяти. При такой организации процессов нет задержки между их выполнением: как только один из процессов заносится на вспомогательное запоминающее устройство, считыва­ется следующий процесс. Из-за различий в количестве памяти, требующемся для разных процессов, при переключении процессора с одного процесса на другой трудно компактно разместить их в основной памяти. Поэтому были разработаны системы со страничной организацией памяти, при которой процесс разбивается на блоки фиксированного размера, которые называются страницами. Обращение программы к слову памяти происходит по виртуальному адресу (virtual address), который состоит из номера страницы и смещения относительно ее начала. Стра­ницы одного и того же процесса могут быть разбросаны по всей основной памя­ти. Система разбивки на страницы обеспечивает динамическое соответствие ме­жду виртуальным адресом, использующимся программой, и реальным (real ad­dress), или физическим, адресом основной памяти.

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

Рис. 2.9. Концепция виртуальной памяти

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

Рис. 2.10 поясняет концепцию адресации в схеме виртуальной памяти. Хранилище состоит из основной памяти, открытой для прямого доступа, осуще­ствляемого с помощью машинных команд, а также более медленной вспомога­тельной памяти, доступ к которой осуществляется косвенно путем загрузки бло­ков в основную память. Между процессором и памятью находятся аппаратные средства преобразования адреса. Программы обращаются к ячейкам памяти по­средством виртуальных адресов, преобразующихся в ходе обращения в реальные адреса, основной памяти. Если происходит обращение к виртуальному адресу, который не загружен в основную память, то один из блоков реальной памяти меняется местами с нужным блоком, который находится во вспомогательной памяти. Во время этого обмена процесс, который обратился к данному адресу, должен быть приостановлен. Задача разработки такого механизма преобразова­ния адресов, который бы не требовал больших дополнительных ресурсов, и та­кой стратегии размещения данных в хранилище, которая бы сводила к миниму­му перемещение данных между различными уровнями памяти, возлагается на разработчика операционной системы.

Рис. 2.10. Адресация виртуальной памяти