Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







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





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

В какой раздел помещать процесс? Наиболее распространены три стратегии.

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

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

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

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

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

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

120.

Мультипрограммный режим с ФИКСИРОВАННЫМИ границами. Мультипрограммирование с фиксированными разделами (Multiprogramming with a fixed number of tasks) предполагает разделение адресного пространства на ряд разделов фиксированного раздела. В каждом разделе размещается один процесс.

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

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

121.

Мультипрограммирование с переменными разделами. (multiprogramming with a variable number of tasks (MVT). Метод Multiprogramming with a Variable number of Tasks предполагает разделение памяти на разделы и использование загрузочных модулей в перемещаемых адресах, однако, границы разделов не фиксируются. 0ОС90 КбаРаздел 1П5П4П3П2П1Раздел 2Раздел 3Раздел 480 Кб Как следует из рисунка, в начальной фазе отсутствует фрагментация, связанная с тем, что размер очередного процесса меньше размера, занимаемого этим процессом раздела. На этой фазе причиной фрагментации является несоответствие размера очередного процесса и оставшегося участка памяти. По мере завершения работы программы освобождаются отдельные разделы. В том случае, когда освобождаются смежные разделы, границы между ними удаляются и разделы объединяются. 0ОС90 КбаРаздел 1П7П6П5100 КбРаздел 4 За счет объединения или слияния смежных разделов образуются большие фрагменты, в которых можно разместить большие программы из очереди. Таким образом, на фазе повторного размещения действуют те же причины фрагментации, что и для метода MFT.

3.2.4. Мультипрограммирование с переменными разделами и уплотнением памяти. Ясно, что метод Multiprogramming with a Variable number of Tasks порождает в памяти множество малых фрагментов, каждый из которых может быть недостаточен для размещения очередного процесса, однако суммарный размер фрагментов превышает размер этого процесса. Уплотнением памяти называется перемещение всех занятых разделов по адресному пространству памяти. Таким образом, чтобы свободный фрагмент занимал одну связную область.

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

Когда блоки доступной памяти располагаются между участками

распределенной памяти, то говорят, что происходит фрагментация

памяти. Хотя свободной памяти как правило бывает достаточно, что-

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

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

для этого, несмотря на то, что при их объединении получится дос-

таточный объем памяти. На рис.18 показано, как при определенной

последовательности обращения к процедурам "New" и "Dispose" может

возникнуть такая ситуация.

Когда блоки доступной памяти располагаются между участками

распределенной памяти, то говорят, что происходит фрагментация

памяти. Хотя свободной памяти как правило бывает достаточно, что-

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

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

для этого, несмотря на то, что при их объединении получится дос-

таточный объем памяти.

 

В некоторых случаях фрагментация уменьшается, так как функ-

ции динамического распределения памяти объединяют соседние участ-

ки памяти. Например, пусть были выделены участки памяти A,B,C,и D

/см. ниже/. Затем освобождаются участки B и C. Эти участки можно

объединить, поскольку они располагаются рядом. Однако, если осво-

бождаются участки B и D, то объединить их нельзя будет, поскольку

между ними находится участок C который еще не освобожден:

________________________

¦ ¦ ¦ ¦ ¦

¦ A ¦ B ¦ C ¦ D ¦

¦_____¦_____¦_____¦_____¦

 

Так как B и D освобождены, а C занят, то может возникнуть

вопрос: "Почему бы Турбо Паскалю не переслать содержимое C в D и

затем объединить B и C?" Трудность заключается в том, что ваша

программа не будет "знать", что это пересылка произошла.

Один из способов предотвращения большой фрагментации заклю-

чается в том, чтобы всегда выделять одинаковые участки памяти. В

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

любых последующих запросах на выделение памяти и таким образом

будет использована вся свободная память. Если нельзя использовать

всегда одинаковый размер выделяемых участков, то следует ограни-

читься только несколькими размерами. Иногда этого можно достиг-

нуть путем объединения нескольких запросов на выделение небольших

участков в один запрос на выделение одного большого участка памя-

ти. Не следует для предотвращения фрагментации выделять больше

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

не окупит потерь от неиспользованной памяти. Можно использовать

другой подход к решению этой проблемы: при работе программы можно

записывать информацию во временный дисковый файл, освободить всю

память и затем считать информацию с диска в память. При считыва-

нии информации не будет создаваться никаких промежутков.

Имя файла

В большинстве файловых систем имя файла используется для указания, к какому именно файлу производится обращение. В различных файловых системах ограничения на имя файла сильно различаются: в FAT16 и FAT12 размер имени файла ограничен 8.3 знаками (8 на имя и 3 на расширение); в других системах имя файла ограничено обычно в 255 байт; вNTFS имя ограничено в некоторых ОС 255 символами Unicode (по спецификации — 32 768 символов).

Помимо ограничений файловой системы, интерфейсы операционной системы дополнительно ограничивают набор символов, который допустим при работе с файлами.

§ Для MS-DOS в имени файла допустимы только заглавные латинские буквы, цифры. Недопустимы пробел, знак вопроса, звёздочка, символы больше/меньше, символ вертикальной черты.[6] При вызове системных функций именами файлов в нижнем или смешанном регистре, они приводятся к верхнему регистру.

§ Для Windows в имени файла разрешены заглавные и строчные буквы, цифры, некоторые знаки препинания, пробел. Запрещены символы > < |? * / \: ".

§ Для GNU/Linux (с учётом возможности маскировки) разрешены все символы, кроме / и байта, значение которого равно нулю, то есть 0x00.

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

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

 

Чтобы компьютер понимал, к какому типу относится тот или иной файл и в какой программе его открыть, после имени указано расширение.

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

Расширение обычно отделяется от основной части имени файла точкой. В операционных системах CP/M и MS-DOS длина расширения была ограничена тремя символами, в современных операционных системах это ограничение отсутствует. Иногда могут использоваться несколько расширений, следующих друг за другом, например, «.tar.gz».

Обычные файлы

Обычные (или регулярные) файлы реально представляют собой набор блоков (возможно, пустой) на устройстве внешней памяти, на котором поддерживается файловая система. Такие файлы могут содержать как текстовую информацию (обычно в формате ASCII), так и произвольную двоичную информацию. Файловая система не предписывает обычным файлам какую-либо структуру, обеспечивая на уровне пользователей представление обычного файла как последовательности байтов. Используя базовые системные вызовы (или функции библиотеки ввода/вывода, которые мы рассмотрим в разделе 4), пользователи могут как угодно структуризовать файлы. В частности, многие СУБД хранят базы данных в обычных файлах ОС UNIX.

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

Файлы-каталоги

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

Структура файла-каталога очень проста. Фактически, каталог - это таблица, каждый элемент которой состоит из двух полей: номера i-узла данного файла в его файловой системе и имени файла, которое связано с этим номером (конечно, этот файл может быть и каталогом). Если просмотреть содержимое текущего рабочего каталога с помощью команды ls -ai, то можно получить, например, следующий вывод:

inode File

number name

_________________________

33.

122..

54 first_file

65 second_file

65 second_again

77 dir2

Этот вывод демонстрирует, что в любом каталоге содержатся два стандартных имени - "." и "..". Имени "." сопоставляется i-узел, соответствующий самому этому каталогу, а имени ".." - i-узел, соответствующий "родительскому" каталогу данного каталога. "Родительским" (parent) каталогом называется каталог, в котором содержится имя данного каталога. Файлы с именами "first_file" и "second_file" - это разные файлы с номерами i-узлов 54 и 65 соответственно. Файл "second_again" представляет пример так называемой жесткой ссылки: он имеет другое имя, но реально описывается тем же i-узлом, что и файл"second_file". Наконец, последний элемент каталога описывает некоторый другой каталог с именем"dir2".

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

mkdir, производящего новый каталог,

rmdir, удаляющий пустой (незаполненный) каталог,

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

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

Специальные файлы

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

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

cp myfile /tmp/kuz

перепишет файл с именем myfile в подкаталог kuz рабочего каталога. В то же время, команда

cp myfile /dev/console

выдаст содержимое файла myfile на системную консоль вашей установки.

Различаются два типа специальных файлов - блочные и символьные (подробности см. в разделе 3.3). Блочные специальные файлы ассоциируются с такими внешними устройствами, обмен с которыми производится блоками байтов данных, размером 512, 1024, 4096 или 8192 байтов. Типичным примером подобных устройств являются магнитные диски. Файловые системы всегда находятся на блочных устройствах, так что в команде mount обязательно указывается некоторое блочное устройство.

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

При обмене данными с блочным устройством система буферизует данные во внутреннем системном кеше. Через определенные интервалы времени система "выталкивает" буфера, при которых содержится метка "измененный". Кроме того, существуют системные вызовы sync и fsync, которые могут использоваться в пользовательских программах, и выполнение которых приводит к выталкиванию измененных буферов из общесистемного пула. Основная проблема состоит в том, что при аварийной остановке компьютера (например, при внезапном выключении электрического питания) содержимое системного кеша может быть утрачено. Тогда внешние блочные файлы могут оказаться в рассогласованном состоянии. Например, может быть не вытолкнут супер-блок файловой системы, хотя файловая система соответствует его вытолкнутому состоянию. Заметим, что в любом случае согласованное состояние файловой системы может быть восстановлено (конечно, не всегда без потерь пользовательской информации).

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

 







Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.