Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на ОС.docx
Скачиваний:
8
Добавлен:
25.09.2019
Размер:
204.32 Кб
Скачать
  1. Оверлейная структура

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

Потребность в таком способе загрузки появляется, если логическое адресное пространство  системы мало, например 1 мегабайт (MS-DOS) или даже всего 64 килобайта (PDP-11), а программа относительно велика. На современных 32-разрядных системах, где  виртуальное адресное пространство измеряется гигабайтами, проблемы с нехваткой памяти решаются другими способами (см. раздел Виртуальная память).

Рис 8.3 . Организация структуры с перекрытием. Можно поочередно загружать в память ветви A-B, A-C-D и A-C-E программы.

Коды  ветвей  оверлейной  структуры программы находятся на диске как абсолютные образы памяти и считываются драйвером оверлеев при необходимости. Для конструирования оверлеев необходимы специальные алгоритмы перемещения и связывания. Для описания оверлейной структуры обычно используется  специальный несложный язык (overlaydescription language). Совокупность файлов исполняемой программы дополняется файлом (обычно с расширением .odl), описывающим дерево вызовов внутри программы.  Например, для примера, приведенного на рис. 8.3 , текст этого файла может выглядеть так:

A-(B,C)

C-(D,E)

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

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

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

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

  1. Свопинг

Разновидностью виртуальной памяти является свопинг.

На рисунке 2.16 показан график зависимости коэффициента загрузки процессора в зависимости от числа одновременно выполняемых процессов и доли времени, проводимого этими процессами в состоянии ожидания ввода-вывода.

Рис. 2.16. Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода

Из рисунка видно, что для загрузки процессора на 90% достаточно всего трех счетных задач. Однако для того, чтобы обеспечить такую же загрузку интерактивными задачами, выполняющими интенсивный ввод-вывод, потребуются десятки таких задач. Необходимым условием для выполнения задачи является загрузка ее в оперативную память, объем которой ограничен. В этих условиях был предложен метод организации вычислительного процесса, называемый свопингом. В соответствии с этим методом некоторые процессы (обычно находящиеся в состоянии ожидания) временно выгружаются на диск. Планировщик операционной системы не исключает их из своего рассмотрения, и при наступлении условий активизации некоторого процесса, находящегося в области свопинга на диске, этот процесс перемещается в оперативную память. Если свободного места в оперативной памяти не хватает, то выгружается другой процесс.

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

  1. Схема с переменными разделами

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

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

Рис. 8.4  Динамика распределения памяти между процессами. Серым цветом показана неиспользуемая  память.

Типовой цикл работы менеджера памяти состоит в анализе запроса на выделение свободного участка (раздела), выборке его среди имеющихся в соответствие с одной из стратегий  (first fit, best fit, worst fit),  загрузке процесса в выбранный раздел и последующем внесении изменений в таблицы свободных и занятых областей. Аналогичная корректировка необходима и после завершения процесса. Связывание адресов может быть осуществлено на этапах загрузки и выполнения.

Этот метод более гибок по сравнению с методом фиксированных разделов

Этому методу также присуща внешняя фрагментация вследствие наличия большого числа участков свободной памяти. Проблемы фрагментации могут быть различными. В худшем случае мы можем иметь участок свободной (потерянной) памяти между двумя процессами. Если все эти куски объединить в один блок, мы смогли бы разместить больше процессов. Выбор между first-fit и best-fit слабо влияет на величину фрагментации.

В зависимости от суммарного размера памяти и среднего размера процесса эта проблема может быть большей или меньшей. Статистический анализ показывает, что при наличии n блоков пропадает n/2 блоков, то есть 1/3 памяти! Это известное 50% правило (два соседних свободных участка в отличие от двух соседних процессов могут быть объединены в один).

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

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

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

  1. Схема с использованием виртуального адресного пространства на основе страничного преобразования

Итак, пусть произошло обращение к памяти по некоторому виртуальному адресу. Аппаратными схемами процессора выполняются следующие действия:

1.     Из специального регистра процессора извлекается адрес AT таблицы страниц активного процесса. На основании начального адреса таблицы страниц, номера виртуальной страницы р (старшие разряды виртуального адреса) и длины отдельной записи в таблице страниц L (системная константа) определяется адрес нужного дескриптора в таблице страниц: а=АТ+(р*L).

2.     Из этого дескриптора извлекается номер соответствующей физической страницы — n.

3.     К номеру физической страницы присоединяется смещение s (младшие разряды виртуального адреса).

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

Преимущества: 1-Не ограниченно только физической памятью. 2- Упрощение разработки. 3-Утсутствие проблемы проблемтации. 4-Позволяют более эффективно загружать процессы. 5-Сигментная страничная адресация.

  1. Механизмы управления страничной памятью

3 основные стратегии: 1-Стратегия выборки. 2-Стратегия размещения. 3-Стратегия замещения.

Выборка 2х вариантов: По запросу и с упреждением.

Требуются для определения: в какое место оперативной памяти разместить страницу.

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

  1. Алгоритмы замещения страниц

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

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

Реализация FIFO при котором страница не удаляется а сносится в конец очереди.

  1. Алгоритм FIFO-выталкивание первой пришедшей страницы

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

  1. Алгоритм LRU-выталкивание дольше всего не использованной страницы

Использовавшийся реже всего:

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

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

  1. Алгоритм NRU-выталкивание редко использованной страницы

Не использующиеся в последнее время страницы. Используются биты обращения(R4)изменения (M)в таблицы страниц N. При обращении бит «R»=1. Через некоторое время ОС переведет его в 0. «M» переводиться в 0 только после записи на диск.

Благодаря этим видам можно получить 4 класс страниц.

  1. R=0, М=0 не было обращений и не было изменений.

  2. R=0, М=1 не было обращений, но были изменения.

  3. R=1, М=0 было обращение, но не было изменений.

  4. R=1, М=1 было обращение, были изменения.

  1. Алгоритм замещения страниц «Вторая попытка»

Подобен FIFO, но если R=1, то страница переводиться в конец очереди, если R=0, то страница выгружается.В этом алгоритме часто используемая страница никогда не покинет память, но в этом алгоритме приходиться часто перемещать страницы по списку.

  1. Алгоритм замещения страниц «Часы»

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

Что бы избежать перемещения страниц по списку, можно использовать указатель которые перемещается по списку. 

  1. Файловая система

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

В широком смысле понятие "файловая система" включает:

  • совокупность всех файлов на диске,

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

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

Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другомэлектронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например,разграничение доступа или шифрование файлов.

Файловая система связывает носитель информации с одной стороны и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и на каком физическом типе носителя (CD, жёстком диске, магнитной ленте, блоке флеш-памятиили другом) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

С точки зрения операционной системы (ОС), весь диск представляет собой набор кластеров(как правило, размером 512 байт и больше)[1]. Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.

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