Реализация модели распределения памяти перемещаемыми разделами с перемещением в сторону старших адресов со сжатием при каждом

Автор работы: Пользователь скрыл имя, 07 Апреля 2011 в 13:17, курсовая работа

Описание работы

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

Содержание работы

Введение…………………………………………………………….3
1. Распределение памяти перемещаемыми разделами
1.1 Типы адресов…............................................................................5
1.2 Алгоритмы распределения памяти …………………………..14
1.3 Распределение памяти динамическими разделами………….14
1.4 Распределение памяти перемещаемыми разделами…………16
2. Реализация модели распределения памяти перемещаемыми разделами
2.1 Алгоритм реализации модели распределения памяти
перемещаемыми разделами …........................................................18
2.2 Блок-схема программы …….....................................................19
2.3 Программа реализация модели распределения памяти перемещаемыми разделами ……....................................................24
2.4 Тестирование программы реализация модели распределения
памяти перемещаемыми разделами …………………………......27
Заключение…………………………………………………………....30
Список использованной литературы………………………….......32

Файлы: 1 файл

Курсовая готовая))).doc

— 818.00 Кб (Скачать файл)

РОССИЙСКИЙ  ГОСУДАРСТВЕННЫЙ  СОЦИАЛЬНЫЙ УНИВЕРСИТЕТ

Кафедра Моделирования информационных систем и сетей 
 
 
 
 
 
 
 
 
 
 

Курсовой  проект

по дисциплине: Операционные системы. 

Тема:  Реализация модели распределения  памяти перемещаемыми  разделами с перемещением в сторону старших адресов со сжатием при каждом завершении задачи.

Вариант №11 
 
 
 
 
 

                                                                                                         

                                    Выполнила:

                           студентка группы ИСТ-Д-3-1                                                                

                            Пиганова Н.А.

                                                                                    Проверила:                                                      

                        доц. Журавлёва Е.М. 

                  Дата выполнения работы:

                  Дата  защиты работы:  
                   
                   

Москва

2007

 

                                      Содержание 

Введение…………………………………………………………….3

1. Распределение памяти перемещаемыми разделами

      1.1 Типы адресов…............................................................................5

      1.2 Алгоритмы распределения памяти …………………………..14

      1.3 Распределение памяти динамическими разделами………….14

               1.4 Распределение памяти перемещаемыми разделами…………16

      2. Реализация модели распределения памяти перемещаемыми разделами

      2.1 Алгоритм реализации модели распределения памяти

      перемещаемыми разделами …........................................................18

      2.2 Блок-схема программы …….....................................................19

      2.3 Программа  реализация модели распределения памяти перемещаемыми разделами ……....................................................24

      2.4 Тестирование программы реализация модели распределения

       памяти  перемещаемыми разделами …………………………......27

      Заключение…………………………………………………………....30

      Список использованной литературы………………………….......32  

 

                                        Введение

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

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

   Функциями ОС по управлению памятью в мультипрограммной  системе являются:  

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

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

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

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

 

                   1. Распределение памяти перемещаемыми разделами

1.1 Типы адресов

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

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

     Совокупность виртуальных адресов  процесса называется виртуальным  адресным пространством. Диапазон  возможных адресов виртуального  пространства у всех процессов  является одним и тем же. Например, при использовании 32-разрядных виртуальных адресов этот диапазон задается границами 0000000016и FFFFFFFF16. Тем не менее, каждый процесс имеет собственное виртуальное адресное пространство — транслятор присваивает виртуальные адреса переменным и кодам каждой программе независимо (рис. 2).

   

   Рис. 1 Типы адресов

   

   Рис. 2. Виртуальные адресные пространства нескольких программ

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

       В разных операционных системах  используются разные способы  структуризации виртуального адресного  пространства. В одних ОС виртуальное  адресное пространство процесса  подобно физической памяти представлено  в виде непрерывной линейной последовательности виртуальных адресов. Такую структуру адресного пространства называют также плоской (flat). При этом виртуальным адресом является единственное число, представляющее собой смещение относительно начала (обычно это значение 000...000) виртуального адресного пространства (рис. 3а). Адрес такого типа называют линейным виртуальным адресом.

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

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

   

   Рис. 3 Типы виртуальных адресных пространств: плоское (а), сегментированное (б)

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

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

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

      Второй способ заключается в том, что программа загружается в память в неизмененном виде в виртуальных адресах, то есть операнды инструкций и адреса переходов имеют те значения, которые выработал транслятор. В наиболее простом случае, когда виртуальная и физическая память процесса представляют собой единые непрерывные области адресов, операционная система выполняет преобразование виртуальных адресов в физические по следующей схеме. При загрузке операционная система фиксирует смещение действительного расположения программного кода относительно виртуального адресного пространства. Во время выполнения программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Схема такого преобразования показана на рис.4. Пусть, например, операционная система использует линейно-структурированное виртуальное адресное пространство и пусть некоторая программа, работающая под управлением этой ОС, загружена в физическую память начиная с физического адреса S. ОС запоминает значение начального смещения S и во время выполнения программы помещает его в специальный регистр процессора. При обращении к памяти виртуальные адреса данной программы преобразуются в физические путем прибавления к ним смещения S. Например, при выполнении инструкции MOV пересылки данных, находящихся по адресу VA, виртуальный адрес VA заменяется физическим адресом VA+S.

   

   Рис.4. Схема динамического преобразования адресов

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

     Необходимо различать максимально  возможное виртуальное адресное  пространство процесса и назначенное  (выделенное) процессу виртуальное  адресное пространство. В первом  случае речь идет о максимальном  размере виртуального адресного  пространства, определяемом архитектурой компьютера, на котором работает ОС, и, в частности, разрядностью его схем адресации (32-битная, 64-битная и т. п.). Например, при работе на компьютерах с 32-разрядными процессорами Intel Pentium операционная система может предоставить каждому процессу виртуальное адресное пространство до 4 Гбайт (232). Однако это значение представляет собой только потенциально возможный размер виртуального адресного пространства, который редко на практике бывает необходим процессу. Процесс использует только часть доступного ему виртуального адресного пространства.

Информация о работе Реализация модели распределения памяти перемещаемыми разделами с перемещением в сторону старших адресов со сжатием при каждом