Чтобы было возможно писать программы, работающие в любой системе unix, был разработан стандарт posix

Вид материалаЛекции

Содержание


Управление данными
Страничная и сегментная организация памяти
В настоящее время используется
Свопинг (swapping)
В целом эта технология замедляет доступ к процессам, но освобождает оперативную память, поэтому в современных ОС используются мо
Управление виртуальной памятью
Управление внешней памятью. Файлы.
Put, write
Таким образом
Разделение доступа к данным в ОС
Каждому пользователю и группе, в которую он входит, присвоены уникальные целочисленные ID.
Подобный материал:
1   2   3   4   5

Управление данными


При запуске любой программы созданный ей процесс должен быть размещен в оперативной памяти. Методы размещения процессов в ОЗУ делятся на смежные и несмежные.

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


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

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

Размер страницы обычно составляет 512 байт, 2 или 4 Кбайт.

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

Аппаратная поддержка сегментации памяти реализована в процессорах Intel.

В настоящее время используется сегментно-страничная организация памяти. В ней большие сегменты делятся на небольшие страницы.
    1. Свопинг (swapping)


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

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

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

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


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


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

Любой файл имеет имя, которое записывается в соответствии со стандартом POSIX: до 255 символов имени + 3 символа расширения.

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

Обычные файлы можно подразделить по их содержимому на текстовые и бинарные. Текстовые файлы содержат символы кода ASCII, простейшие управляющие символы (CR – возврат каретки, LF – перевод строки, TAB – табуляция, NP – новая страница).

Бинарные файлы – файлы с произвольной последовательностью бит, которые имеют некоторую внутреннюю структуру, например, архивные файлы.

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

Цикл обработки файла:
  • Открытие файла – занятие устройства (точнее, его контроллера), на котором файл размещен, создание в ОЗУ управляющего блока, в котором записывается справка о состоянии файла и буфера для хранения текущей обрабатываемой записи файла;
  • Организация цикла, управляемого файлом (заканчивается по исчерпании записей файла – наступление состояния EOF – end-of-file), после чего выполняется освобождение устройства. Цикл должен содержать команду типа READ (заголовок цикла), GET (ввод записи), PUT, WRITE (вывод записи), REWRITE (обновить запись).
  • Закрытие файла – выполнение операций по внесению всех изменений в файл, освобождение памяти, отведенной под файл и устройства, на котором он размещался.

Таким образом, цикл обработки файла выглядит так: считывание (ввод) порции (блок) данных с ВЗУ через его контроллер → помещение его во входной буфер в ОЗУ → извлечение данных из буфера, их обработка и помещение обратно или в другой (выходной) буфер → вывод (запись) результатов на выходной накопитель в виде одного или нескольких блоков.

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

Магнитная поверхность накопителей разбивается на дорожки (нумеруются с 0-го), каждая из которых – на секторы (начиная с 1-го). Пакет магнитных дисков, каждый из которых имеет по 2 стороны, называется цилиндром (нумеруется с 0). Таким образом, мельчайшей единицей хранения информации на магнитном ВЗУ является сектор (512 байт).

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

Файловая система создается при инициализации (разметке) тома с помощью операции форматирования, затем корректируется ОС при работе с файлами.

Кластерминимальный размер места на диске, которое может быть выделено файловой системой для хранения одного файла. Размер кластера определяется автоматически при форматировании тома в зависимости от размера последнего! Кластер может иметь размер от 512 байт до 64 Кбайт, соответственно содержать от 1 до 128 секторов.

Таким образом, главная задача файловой системы – поставить в соответствие имя файла, кластеры, выделенные под его хранение и их физический секторный адрес.

Файловая система включает таблицу содержания и область данных. Таблица содержания может иметь разные имена – VTOC, FAT, MFT, FDT. Эта таблица состоит из 3 областей:
  • Область файлов – таблица с их именами и блоками, занимаемыми файлами.
  • Список свободных блоков
  • Список сбойных блоков

Кроме того, поддерживается иерархия ФС: каталоги обеспечивают связь между именами файлов и собственно файлами. Каждый элемент каталога содержит имя файла и ссылку на конкретный файл. В корневом каталоге может быть не более 512 файлов.
    1. Разделение доступа к данным в ОС


С каждым файлом в ОС связана пара идентификаторов – пользовательский (User ID - UID) и групповой (Group ID - GID). Файл наследует эти идентификаторы от эффективных идентификаторов процесса, создавшего данный файл. Процесс, эффективный пользовательский ID которого совпадает с пользовательским ID файла, считается владельцем данного файла.

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

Таким образом, всех пользователей системы можно разделить на:
  • Владельцы (UID = эффективный UID)
  • Члены группы (GID = эффективный GID)
  • Прочие

Именно по этому принципу в ОС Unix каждому файлу выданы атрибуты в формате 9-битного кода, содержащего 3 поля для каждой группы: rwxrwxrwx. R – read, w – write, x – execute.