Операционная система (ОС) в наибольшей степени определяет облик всей вычислительной системы в целом. ОС выполняет две по существу мало связанные функции: обеспечение пользователю-программисту удобств посредством предоставления для него расширенной машины и повышение эффективности использования компьютера путем рационального управления его ресурсами.
ОС как виртуальная (расширенная) машина.Использование большинства компьютеров на уровне машинного языка затруднительно, особенно это касается ввода-вывода. (Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающих наличие и типы ошибок, которые, очевидно, надо анализировать.) При работе с диском программисту-пользователю достаточно представлять его в виде некоторого набора файлов, каждый из которых имеет имя. Работа с файлом заключается в его открытии, выполнении чтения или записи, а затем в закрытии файла. Вопросы подобные тому, в каком состоянии сейчас находится двигатель механизма перемещения головок, не должны волновать пользователя. Программа, которая скрывает от программиста все реалии аппаратуры и предоставляет возможность простого, удобного просмотра указанных файлов, чтения или записи – это операционная система. Операционная система также берет на себя такие функции как обработка прерываний, управление таймерами и оперативной памятью и т.д.
С точки зрения пользователя функцией ОС является предоставление пользователю некоторой расширенной или виртуальной машины, которую легче программировать и с которой легче работать, чем непосредственно с аппаратурой, составляющей реальную машину, тем самым скрывая от пользователя детали управления оборудованием (hardware)
Этот принцип иллюстрируется рис.1.
Рис. 1. Операционная система, процессы, оборудование
Как видно из рисунка, ОС играет роль "прослойки" между процессами пользователей и оборудованием системы. (Под оборудованием понимаются, как правило, внешние устройства, но можно трактовать этот термин и шире - включая в него все первичные ресурсы). Процессы пользователей не имеют непосредственного доступа к оборудованию и, говоря шире, к системным ресурсам. Если процессу необходимо выполнить операцию с системным ресурсом, в том числе, и с оборудованием, процесс выдает системный вызов. ОС интерпретирует системный вызов, проверяет его корректность, возможно, помещает в очередь запросов и выполняет его. Если выполнение вызова связано с операциями на оборудовании, ОС формирует и выдает на оборудование требуемые управляющие воздействия. Оборудование, выполнив операцию, заданную управляющими воздействиями, сигнализирует об этом прерыванием. Прерывание поступает в ядро ОС, которое анализирует его и формирует отклик для процесса, выдавшего системный вызов. Если выполнение системного вызова не требует операций на оборудовании, отклик может быть сформирован немедленно.
Управляющие воздействия и прерывания составляют интерфейс оборудования, системные вызовы и отклики на них - интерфейс процессов. В качестве синонима интерфейса процессов мы в соответствии со сложившейся в последнее время традицией часто будем употреблять аббревиатуру API (Application Programm Interface - интерфейс прикладной программы).
Отделение процессов пользователя от оборудования преследует две цели.
Во-первых, - безопасность. Если пользователь не имеет прямого доступа к оборудованию и вообще к системным ресурсам, то он не может вывести их из строя или монопольно использовать в ущерб другим пользователям. Обеспечение этой цели нуждается в аппаратной поддержке, рассматриваемой в следующем разделе.
Во-вторых, - обеспечение абстрагирования пользователя от деталей управления оборудованием. Вывод на диск, например, требует сложного программирования контролера дискового устройства, однако, все пользователи используют для этих целей простое обращение к драйверу устройства. Более того, в большинстве систем имеются библиотеки системных вызовов, обеспечивающие API для языков высокого уровня (прежде всего - для языка C). Можно также говорить о том, что ОС интегрирует ресурсы: из ресурсов низкого (физического) уровня она конструирует более сложные ресурсы, которые с одной стороны сложнее (по функциональным возможностям), а с другой стороны - проще (по управлению) низкоуровневых.
ОС как система управления ресурсами – менеджер ресурсов.С другой стороны, с точки зрения системного программиста, ОС представляет собой набор программ, управляющий всеми частями сложной вычислительной системы (ВС) - ресурсами. Ресурс - "средство системы обработки данных, которое может быть выделено процессу обработки данных на определенный интервал времени". Простыми словами: ресурс - это все те аппаратные и программные средства и данные, которые необходимы для выполнения программы. Ресурсы можно подразделить на первичные и вторичные. К первой группе относятся те ресурсы, которые обеспечиваются аппаратными средствами, например: процессор, память - оперативная и внешняя, устройства и каналы ввода-вывода и т.п. Ко второй группе - ресурсы, порождаемые ОС, например, системные коды и структуры данных, файлы, семафоры, очереди и т.п. В последнее время в связи с развитием распределенных вычислений и распределенного хранения данных все большее значение приобретают такие ресурсы как данные и сообщения.
В соответствии со вторым подходом функцией ОС является распределение процессоров, памяти, устройств и данных между процессами, конкурирующими за эти ресурсы. ОС должна управлять всеми ресурсами вычислительной машины таким образом, чтобы обеспечить максимальную эффективность ее функционирования. Критерием эффективности может быть, например, пропускная способность. Управление ресурсами включает решение двух общих, не зависящих от типа ресурса задач:
- планирование ресурса - то есть определение, кому, когда, а для делимых ресурсов и в каком количестве, необходимо выделить данный ресурс;
- отслеживание состояния ресурса – то есть поддержание оперативной информации о том, занят или не занят ресурс, а для делимых ресурсов – какое количество ресурса уже распределено, а какое свободно.
Для решения этих общих задач управления ресурсами разные ОС используют различные алгоритмы, что, в конечном счете, и определяет их облик в целом, включая характеристики производительности, область применения и даже пользовательский интерфейс. Так, например, алгоритм управления процессором в значительной степени определяет, является ли ОС системой разделения времени, системой пакетной обработки или системой реального времени.
1. Эволюция ОС
Первый период (1945 -1955). В середине 40-х были созданы первые ламповые вычислительные устройства. В то время одна и та же группа людей участвовала и в проектировании, и в эксплуатации, и в программировании вычислительной машины. Это была скорее научно-исследовательская работа в области вычислительной техники, а не использование компьютеров в качестве инструмента решения каких-либо практических задач из других прикладных областей. Программирование осуществлялось исключительно на машинном языке. Об операционных системах не было и речи, все задачи организации вычислительного процесса решались вручную каждым программистом с пульта управления. Не было никакого другого системного программного обеспечения, кроме библиотек математических и служебных подпрограмм.
Второй период (1955 - 1965). С середины 50-х годов начался новый период в развитии вычислительной техники, связанный с появлением новой технической базы – полупроводниковых элементов. Компьютеры второго поколения стали более надежными, теперь они смогли непрерывно работать настолько долго, чтобы на них можно было возложить выполнение действительно практически важных задач. Именно в этот период произошло разделение персонала на программистов и операторов, эксплуатационщиков и разработчиков вычислительных машин.
В эти годы появились первые алгоритмические языки, а следовательно и первые системные программы – компиляторы. Стоимость процессорного времени возросла, что потребовало уменьшения непроизводительных затрат времени между запусками программ. Появились первые системы пакетной обработки, которые просто автоматизировали запуск одной программ за другой и тем самым увеличивали коэффициент загрузки процессора. Системы пакетной обработки явились прообразом современных операционных систем, они стали первыми системными программами, предназначенными для управления вычислительным процессом. В ходе реализации систем пакетной обработки был разработан формализованный язык управления заданиями, с помощью которого программист сообщал системе и оператору, какую работу он хочет выполнить на вычислительной машине. Совокупность нескольких заданий, как правило, в виде колоды перфокарт, получила название пакета заданий.
Третий период (1965 - 1980). Следующий важный период развития вычислительных машин относится к 1965-1980 годам. В это время в технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что дало гораздо большие возможности новому, третьему поколению компьютеров.
Для этого периода характерно также создание семейств программно-совместимых машин. Первым семейством программно-совместимых машин, построенных на интегральных микросхемах, явилась серия машин IBM/360. Построенное в начале 60-х годов это семейство значительно превосходило машины второго поколения по критерию «цена-производительность». Вскоре идея программно-совместимых машин стала общепризнанной.
Программная совместимость требовала и совместимости операционных систем. Такие операционные системы должны были бы работать и на больших, и на малых вычислительных системах, с большим и с малым количеством разнообразной периферии, в коммерческой области и в области научных исследований. Операционные системы, построенные с намерением удовлетворить всем этим противоречивым требованиям, оказались чрезвычайно сложными и громоздкими. Важнейшим достижением ОС данного поколения явилась реализация мультипрограммирования. Мультипрограммирование – это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ. Пока одна программа выполняет операцию ввода-вывода, процессор не простаивает, как это происходило при последовательном выполнении программ (однопрограммный режим), а выполняет другую программу (многопрограммный режим). При этом каждая программа загружается в свой участок оперативной памяти, называемый разделом.
Другое нововведение – спулинг (spooling). Спулинг в то время определялся как способ организации вычислительного процесса, в соответствии с которым задания считывались с перфокарт на диск в том темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное задание завершалось, новое задание с диска загружалось в освободившийся раздел.
Наряду с мультипрограммной реализацией систем пакетной обработки появился новый тип ОС – системы разделения времени. Вариант мультипрограммирования, применяемый в системах разделения времени, нацелен на создание для каждого отдельного пользователя иллюзии единоличного использования вычислительной машины.
Четвертый период (1980 - настоящее время). Следующий период в эволюции операционных систем связан с появлением больших интегральных схем (БИС). В эти годы произошло резкое возрастание степени интеграции и удешевление микросхем. Компьютер стал доступен отдельному человеку. С точки зрения архитектуры персональные компьютеры ничем не отличались от класса миникомпьютеров типа PDP-11.
Компьютеры стали широко использоваться неспециалистами, что потребовало разработки «дружественного» (понятного) программного обеспечения.
На рынке операционных систем доминировали две системы: MS-DOS и UNIX. Однопрограммная однопользовательская ОС MS-DOS широко использовалась для компьютеров, построенных на базе микропроцессоров Intel 8088, а затем 80286, 80386 и 80486. Мультипрограммная многопользовательская ОС UNIX доминировала в среде «неинтеловских» компьютеров, особенно построенных на базе высокопроизводительных RISC-процессоров.
В середине 80-х стали бурно развиваться сети персональных компьютеров, работающие под управлением сетевых или распределенных ОС.
В сетевых ОС пользователи должны быть осведомлены о наличии других компьютеров и должны делать логический вход в другой компьютер, чтобы воспользоваться его ресурсами, преимущественно файлами. Каждая машина в сети содержит свою собственную локальную операционную систему, отличающуюся от ОС автономного компьютера наличием дополнительных средств, позволяющих компьютеру работать в сети. Сетевая ОС не имеет фундаментальных отличий от ОС однопроцессорного компьютера, но она обязательно содержит программную поддержку для сетевых интерфейсных устройств (драйвер сетевого адаптера), а также средства для удаленного входа в другие компьютеры сети и средства доступа к удаленным файлам, однако эти дополнения существенно не меняют структуру самой операционной системы.
2. Классификация ОС
Операционные системы могут различаться особенностями реализации внутренних алгоритмов управления основными ресурсами компьютера (процессорами, памятью, устройствами), особенностями использованных методов проектирования, типами аппаратных платформ, областями использования и многими другими свойствами.
Ниже приведена классификация ОС по нескольким наиболее основным признакам.
2.1. Особенности алгоритмов управления ресурсами
От эффективности алгоритмов управления локальными ресурсами компьютера во многом зависит эффективность всей ОС в целом. Поэтому, характеризуя ОС, часто приводят важнейшие особенности реализации функций ОС по управлению процессорами, памятью, внешними устройствами автономного компьютера. Так, например, в зависимости от особенностей использованного алгоритма управления процессором, операционные системы делят на многозадачные и однозадачные, многопользовательские и однопользовательские, на системы, поддерживающие многонитевую обработку и не поддерживающие ее, на многопроцессорные и однопроцессорные системы.
Поддержка многозадачности. По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
- однозадачные (например, MS-DOS, MSX)
- многозадачные (OC EC, OS/2, UNIX, Windows 95, Windows NT).
Однозадачные ОС в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным процесс взаимодействия пользователя с компьютером. Однозадачные ОС включают средства управления периферийными устройствами, средства управления файлами, средства общения с пользователем.
Многозадачные ОС, кроме вышеперечисленных функций, управляют разделением совместно используемых ресурсов, таких как процессор, оперативная память, файлы и внешние устройства.
Поддержка многопользовательского режима. По числу одновременно работающих пользователей ОС делятся на:
- однопользовательские (MS-DOS, ранние версии OS/2);
- многопользовательские (UNIX, Windows NT).
Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. Следует заметить, что не всякая многозадачная система является многопользовательской, и не всякая однопользовательская ОС является однозадачной.
Вытесняющая и невытесняющая многозадачность. Важнейшим разделяемым ресурсом является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами (или нитями) во многом определяет специфику ОС. Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов:
- невытесняющая многозадачность (NetWare, Windows 3.x);
- вытесняющая многозадачность (Windows NT, OS/2, UNIX).
Основным различием между вытесняющим и невытесняющим вариантами многозадачности является степень централизации механизма планирования процессов. В первом случае механизм планирования процессов целиком сосредоточен в операционной системе, а во втором - распределен между системой и прикладными программами. При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом.
Поддержка многонитевости. Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями).
Многопроцессорная обработка. Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки - мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.
В наши дни становится общепринятым введение в ОС функций поддержки многопроцессорной обработки данных. Такие функции имеются в операционных системах Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell.
Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами.
Выше были рассмотрены характеристики ОС, связанные с управлением только одним типом ресурсов - процессором. Важное влияние на облик операционной системы в целом, на возможности ее использования в той или иной области оказывают особенности и других подсистем управления локальными ресурсами - подсистем управления памятью, файлами, устройствами ввода-вывода, сетевыми функциями.
2.2. Особенности методов построения
При описании операционной системы часто указываются особенности ее структурной организации и основные концепции, положенные в ее основу.
К таким базовым концепциям относятся:
1) Способы построения ядра системы - монолитное ядро или микроядерный подход. Большинство ОС использует монолитное ядро, которое компонуется как одна программа, работающая в привилегированном режиме и использующая быстрые переходы с одной процедуры на другую, не требующие переключения из привилегированного режима в пользовательский и наоборот. Альтернативой является построение ОС на базе микроядра, работающего также в привилегированном режиме и выполняющего только минимум функций по управлению аппаратурой, в то время как функции ОС более высокого уровня выполняют специализированные компоненты ОС - серверы, работающие в пользовательском режиме. При таком построении ОС работает более медленно, так как часто выполняются переходы между привилегированным режимом и пользовательским, зато система получается более гибкой - ее функции можно наращивать, модифицировать или сужать, добавляя, модифицируя или исключая серверы пользовательского режима. Кроме того, серверы хорошо защищены друг от друга, как и любые пользовательские процессы.
2) Построение ОС на базе объектно-ориентированного подхода дает возможность использовать все его достоинства, хорошо зарекомендовавшие себя на уровне приложений, внутри операционной системы, а именно: аккумуляцию удачных решений в форме стандартных объектов, возможность создания новых объектов на базе имеющихся с помощью механизма наследования, хорошую защиту данных за счет их инкапсуляции во внутренние структуры объекта, что делает данные недоступными для несанкционированного использования извне, структуризованность системы, состоящей из набора хорошо определенных объектов.
3) Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС. Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы.
4) Распределенная организация операционной системы позволяет упростить работу пользователей и программистов в сетевых средах. В распределенной ОС реализованы механизмы, которые дают возможность пользователю представлять и воспринимать сеть в виде традиционного однопроцессорного компьютера. Характерными признаками распределенной организации ОС являются: наличие единой справочной службы разделяемых ресурсов, единой службы времени, использование механизма вызова удаленных процедур (RPC) для прозрачного распределения программных процедур по машинам, многонитевой обработки, позволяющей распараллеливать вычисления в рамках одной задачи и выполнять эту задачу сразу на нескольких компьютерах сети, а также наличие других распределенных служб.
Управление процессами
Процесс - это программа в стадии выполнения. Процессу необходимы определенные ресурсы, включая процессорное время, память, файлы и устройства ввода/вывода для выполнения своих задач. ОС отвечает за следующие действия в связи с управлением процессами:
- создание и удаление процессов;
- приостановку и возобновление процессов;
- обеспечение механизмов для синхронизации процессов;
- обеспечение механизмов для взаимодействия процессов.
Защита системы
Защита системы предполагает наличие механизма для управления доступом программ, процессов и пользователей к системным и пользовательским ресурсам.
Механизм защиты должен:
- различать авторизованное и не авторизованное использование;
- определить элементы управления, которые будут задействованы;
- обеспечить средства реализации.
Рис. 3. 6. Реализация системного вызова в микроядерной архитектуре
3. 6. 2. Преимущества и недостатки микроядерной архитектуры
Высокая степень переносимости обусловлена тем, что весь машинно-зависимый код изолирован в микроядре, поэтому для переноса системы на новый процессор требуется меньше изменений, и все они логически сгруппированы вместе.
Расширяемость присуща микроядерной ОС в очень высокой степени. В традиционных системах даже при наличии многослойной структуры нелегко удалить один слой и поменять его на другой по причине множественности и размытости интерфейсов между слоями. Добавление новых функций и изменение существующих требуют хорошего знания операционной системы и больших затрат времени. В то же время ограниченный набор четко определенных интерфейсов микроядра открывает путь к упорядоченному росту и эволюции ОС. Добавление новой подсистемы требует разработки нового приложения, что никак не затрагивает целостность микроядра. Микроядерная структура позволяет не только добавлять, но и сокращать число компонентов операционной системы, что также бывает очень полезно. При микроядерном подходе конфигурируемость ОС не вызывает никаких проблем и не требует особых мер - достаточно изменить файл с настройками начальной конфигурации системы или же остановить не нужные больше серверы в ходе работы обычными для остановки приложений средствами.
Использование микроядерной модели повышает надежность ОС. Каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти и таким образом защищен от других серверов операционной системы, что не наблюдается в традиционной ОС, где все модули ядра могут влиять друг на друга. И если отдельный сервер терпит крах, то он может быть перезапущен без останова или повреждения остальных серверов ОС. Более того, поскольку серверы выполняются в пользовательском режиме, они не имеют непосредственного доступа к аппаратуре и не могут модифицировать память, в которой хранится и работает микроядро. Другим потенциальным источником повышения надежности ОС является уменьшенный объем кода микроядра по сравнению с традиционным ядром - это снижает вероятность появления ошибок программирования.
Модель с микроядром хорошо подходит для поддержки распределенных вычислений, так как использует механизмы, аналогичные сетевым: взаимодействие клиентов и серверов путем обмена сообщениями. Серверы микроядерной ОС могут работать как на одном, так и на разных компьютерах. В этом случае при получении сообщения от приложения микроядро может обработать его самостоятельно и передать локальному серверу или же переслать по сети микроядру, работающему на другом компьютере. Переход к распределенной обработке требует минимальных изменений в работе операционной системы - просто локальный транспорт заменяется на сетевой.
Производительность. При классической организации ОС (рис. 3. 7, а) выполнение системного вызова сопровождается двумя переключениями режимов, а при микроядерной организации (рис. 3. 7, б) - четырьмя. Таким образом, операционная система на основе микроядра при прочих равных условиях всегда будет менее производительной, чем ОС с классическим ядром. Именно по этой причине микроядерный подход не получил такого широкого распространения, которое ему предрекали.
Серьезность этого недостатка хорошо иллюстрирует история развития Windows NT. В версиях 3. 1 и 3. 5 диспетчер окон, графическая библиотека и высокоуровневые драйверы графических устройств входили в состав сервера пользовательского режима, и вызов функций этих модулей осуществлялся в соответствии с микроядерной схемой. Однако очень скоро разработчики Windows NT поняли, что такой механизм обращений к часто используемым функциям графического интерфейса существенно замедляет работу приложений и делает данную операционную систему уязвимой в условиях острой конкуренции. В результате в версию Windows NT 4.0 были внесены существенные изменения - все перечисленные выше модули были перенесены в ядро, что отдалило эту ОС от идеальной микроядерной архитектуры, но зато резко повысило ее производительность.
Приложение Приложение
а) Ядро
t t
Приложение Сервер ОС Приложение
Микроядро Микроядро
б) t t t t
Рис. 3. 7. Смена режимов при выполнении системного вызова
Этот пример иллюстрирует главную проблему, с которой сталкиваются разработчики операционной системы, решившие применить микроядерный подход, – что включать в микроядро, а что выносить в пользовательское пространство. В идеальном случае микроядро может состоять только из средств передачи сообщений, средств взаимодействия с аппаратурой, в том числе средств доступа к механизмам привилегированной защиты. Однако многие разработчики не всегда жестко придерживаются принципа минимизации функций ядра, часто жертвуя этим ради повышения производительности. В результате реализации ОС образуют некоторый спектр, на одном краю которого находятся системы с минимально возможным микроядром, а на другом – системы, подобные Windows NT, в которых микроядро выполняет достаточно большой объем функций.
Совместимость и множественные прикладные среды
В то время как многие архитектурные особенности операционных систем непосредственно касаются только системных программистов, концепция множественных прикладных сред непосредственно связана с нуждами конечных пользователей - возможностью операционной системы выполнять приложения, написанные для других операционных систем. Такое свойство операционной системы называется совместимостью.
Контрольные вопросы
Лекция 4. ОСНОВНЫЕ КОНЦЕПЦИИ ТЕОРИИ ОС
Многоочередная дисциплина обслуживания. Схема данной дисциплины приведена на рис. 5.
Рис.5. Схема многоочередной дисциплины обслуживания
Здесь N очередей, все новые заявки поступают в конец первой очереди. Первая заявка из очереди i (1 < i £ N) поступает на обслуживание лишь тогда, когда все очереди от 1-й до (i-1)-й пустые. Если за время tk обслуживание процесса завершается полностью, то он покидает систему. В противном случае недообслуженная заявка поступает в конец очереди с номером i+1. После обслуживания заявки из очереди i система выбирает для обслуживания запрос из непустой очереди с самым младшим номером. Если система выходит на обслуживание заявок из очереди N, то они обслуживаются либо по дисциплине FIFO, либо по круговому алгоритму. Данная система наиболее быстро обслуживает все короткие запросы. Недостаток системы заключается в непроизводительных затратах времени на перемещение заявок из одной очереди в другую.
Дисциплина обслуживания при наличии приоритетов. Такая дисциплина строится на основе рассмотренной выше многоочередной дисциплины. На рис.6. приводится ее условная схема.
Рис.6. Схема приоритетной многоочередной дисциплины обслуживания
Поступающая в систему новая заявка попадает в одну из N очередей в соответствии с имеющимся приоритетом, определяющимся параметрами обслуживаемых процессов. Первыми обслуживаются заявки из очереди с меньшим номером как имеющие более высокий приоритет. Возможны две стратегии поведения системы по отношению к новым заявкам.
а) Обслуживание с абсолютным приоритетом. Если во время обслуживания заявки из очереди i (1 < i £ N) в систему поступает более приоритетная заявка, например, в очередь i-1, то обслуживание i-го уровня прерывается и система переходит к обслуживанию поступившей заявки. После окончания ее обслуживания происходит дообслуживание прерванной заявки i-го уровня. Здесь еще больше сокращается время ожидания обслуживания для высокоприоритетных заявок за счет ухудшения обслуживания низкоприоритетных. В то же время усложняется логика системы, возникает проблема прерывания, появляются накладные расходы. При достаточной интенсивности прерываний расходы могут стать ощутимыми. Возникает также дополнительная проблема выработки некоторого правила о дообслуживании прерванных процессов – когда выделять им вновь ресурс, учитывать ли, что он уже какое-то время использовался?
б) Обслуживание с относительным приоритетом. Заявка, входящая в систему, не вызывает прерывания обслуживаемой в данный момент заявки, даже если последняя имеет меньший приоритет. Только после окончания обслуживания текущей заявки начнется обслуживание более приоритетной поступившей заявки.
Применение рассмотренных дисциплин обслуживания очередей на практике связано с рядом дополнительных проблем. При распределении сразу нескольких ресурсов для каждого из них должна быть разработана стратегия распределения, согласованная со стратегиями распределения других ресурсов. Дело осложняется также необходимостью анализа возможности возникновения тупиковых ситуаций, проверки полномочий процессов на использование тех или иных ресурсов и т.д.
Следует заметить, что существуют и другие дисциплины обслуживания очередей, особенно в отношении статического и динамического распределения оперативной памяти.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Перечислите принципы построения ОС и дайте их краткую характеристику.
2. Что такое процесс и чем он отличается от программы? Каковы допустимые состояния процесса?
3. Как осуществляется классификация процессов? Приведите примеры.
4. Поясните понятие ресурса. Дайте классификацию ресурсов и приведите примеры.
5. В чем состоит концепция виртуализации? Приведите примеры виртуальных ресурсов.
6. Какие основные бесприоритетные дисциплины используются при обслуживании очередей процессов?
7. Как устроена дисциплина приоритетного обслуживания очереди процессов?
8. Что такое прерывания, и каковы их причины? Какова последовательность действий по обработке прерываний?
9. Приведите классификацию прерываний по уровням. Каким образом порядок обслуживания прерываний зависит от их уровня?
Лекция 5. Процессы и потоки (нити). Взаимодействие процессов.
Процессы
Создание процесса
Три основных события, приводящие к созданию процессов (вызов fork или CreateProcess):
Во всех случаях, активный текущий процесс посылает системный вызов на создание нового процесса.
Каждому процессу присваивается идентификатор процесса PID - Process IDentifier.
Потоки (нити, облегченный процесс)
Взаимное исключение с активным ожиданием
Рассмотрим методы взаимного исключения
Запрещение прерываний
Заключается в запрещении всех прерываний при входе процесса в критическую область.
Недостаток этого метода в том, что если произойдет сбой процесса, то он не сможет снять запрет на прерывания.
Лекция 6. Планирование процессов
Основные понятия планирования процессов
Планирование- обеспечение поочередного доступа процессов к одному процессору.
Планировщик - отвечающая за это часть операционной системы.
Алгоритм планирования - используемый алгоритм для планирования.
Ситуации, когда необходимо планирование:
Алгоритм планирования без переключений(неприоритетный) - не требует прерывание по аппаратному таймеру, процесс останавливается только когда блокируется или завершает работу.
Алгоритм планирования с переключениями (приоритетный) - требует прерывание по аппаратному таймеру, процесс работает только отведенный период времени, после этого он приостанавливается по таймеру, чтобы передать управление планировщику.
Необходимость алгоритма планирования зависит от задач, для которых будет использоваться операционная система.
Основные три системы:
Задачи алгоритмов планирования:
Наименьшее оставшееся время выполнение
Аналог предыдущего, но если приходит новый процесс, его полное время выполнения сравнивается с оставшимся временем выполнения текущего процесса.
Трехуровневое планирование
Трехуровневое планирование
Планировщик доступа выбирает задачи оптимальным образом(например: процессы, ограниченные процессором и вводом/выводом).
Если процессов в памяти слишком много, планировщик памяти выгружает и загружает некоторые процессы на диск. Количество процессов находящихся в памяти, называется степенью многозадачности.
Планирование в интерактивных системах
Планирование однородных процессов
В качестве однородных процессов можно рассмотреть видео сервер с несколькими видео потоками (несколько пользователей смотрят фильм).
Т.к. все процессы важны, можно использовать циклическое планирование.
Но так как количество пользователей и размеры кадров могут меняться, для реальных систем он не подходит.
Лекция 7 - Взаимоблокировка процессов
Методы борьбы с взаимоблокировками
Четыре стратегии избегания взаимоблокировок:
Пренебрежением проблемой в целом (страусовый алгоритм)
Если вероятность взаимоблокировки очень мала, то ею легче пренебречь, т.к. код исключения может очень усложнить ОС и привести к большим ошибкам. Также многие взаимоблокировки тяжело обнаружить.
Этот алгоритм используется как в UNIX, так и в Windows.
Поэтому (и не только) на серверах часто устанавливают автоматическую перезагрузку (раз в сутки, как правило, ночью), если возникнет взаимоблокировка, то после перезагрузки ее не будет.
Устройства ввода-вывода
Устройства делят на две категории (некоторые не попадают ни в одну):
Принципы программного обеспечения ввода-вывода
Ввод-вывод с использованием DMA
Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа.
Алгоритм не отличается, но всю работу на себя берет контроллер DMA.
Программные уровни и функции ввода-вывода
Четыре уровня ввода-вывода:
Уровни ввода-вывода
Программное обеспечение ввода-вывода пространства пользователя
Функции этого обеспечения:
Методы связного распределения основной памяти
Организация виртуальной памяти
Управление виртуальной памятью
Контрольные вопросы
1. Часто единственным достоинством виртуальной памяти называют возможность обеспечить для процесса объем виртуального адресного пространства, превышающий объем реальной памяти. Назовите другие достоинства виртуальной памяти.
2. В чем достоинства и недостатки преобразования виртуальных адресов в реальные во время выполнения программы? Какая часть работы по этому преобразованию выполняется аппаратным обеспечением, а какая - ОС?
3. Иногда считают, что виртуальная память может быть обеспечена только в системах с аппаратной поддержкой динамической трансляции адреса. Докажите, что это не так.
4. Почему при поиске свободной памяти стратегия "самый подходящий" оказывается хуже, чем "первый подходящий".
5. Сравните сегментную и страничную модели виртуальной памяти. Какая из них представляется Вам лучшей и почему?
6. Дополните приведенные в разделе 3.5. соображения по поводу выбора размера страницы.
7. Смоделируйте ситуацию применения дисциплины вытеснения FCFS, в которой увеличение числа реальных страниц приведет к увеличению числа страничных отказов.
8. Что такое кластерная подкачка страниц? Почему в современных ОС она становится все более популярной?
9. Каким образом ОС может определять, к каким страницам будут обращения в ближайшее время?
10. Большой размер виртуальной памяти процесса может приводить к тому, что даже таблица страниц не будет помещаться в реальной памяти. Какими путями решается эта проблема в современных ОС?
11. Каким образом снижение стоимости памяти влияет на дисциплины управления памятью?
12. Какие принципиальные изменения в концепции памяти может повлечь за собой увеличение разрядности адреса?
Лекции 10-11. Системы управления данными (файловые системы)
Лекция 10. Организация файловых систем
Файлы
Требования к хранению информации:
· возможность хранения больших объемов данных
· информация должна сохраняться после прекращения работы процесса
· несколько процессов должны иметь одновременный доступ к информации
Три типа структур файла.
Примеры исполняемого и не исполняемого файла
«Магическое число» - идентифицирующее файл как исполняющий.
Доступ к файлам
Основные виды доступа к файлам:
· Последовательный - байты читаются по порядку. Использовались, когда были магнитные ленты.
· Произвольный - файл можно читать с произвольной точки. Основное преимущество возникает, когда используются большие файлы (например, баз данных) и надо считать только часть данных из файла. Все современные ОС используют этот доступ.
Операции с файлами
Основные системные вызовы для работы с файлами:
· Create - создание файла без данных.
· Delete - удаление файла.
· Open - открытие файла.
· Close - закрытие файла.
· Read - чтение из файла, с текущей позиции файла.
· Write - запись в файл, в текущею позицию файла.
· Append - добавление в конец файла.
· Seek - устанавливает файловый указатель в определенную позицию в файле.
· Get attributes - получение атрибутов файла.
· Set attributes - установить атрибутов файла.
· Rename - переименование файла.
Пример копирования файла через отображение в памяти.
Алгоритм:
1. Создается сегмент для файла 1
2. Файл отображается в памяти
3. Создается сегмент для файла 2
4. Сегмент 1 копируется в сегмент 2
5. Сегмент 2 сохраняется на диске
Недостатки этого метода:
· Тяжело определить длину выходного файла
· Если один процесс отобразил файл в памяти и изменил его, но файл еще не сохранен, второй процесс откроет это же файл, и будет работать с устаревшим файлом.
· Файл может оказаться большим, больше сегмента или виртуального пространства.
Каталоги
Двухуровневые каталоговые системы
Для каждого пользователя создается свой собственный каталог.
Двухуровневая каталоговая система
Пользователь, при входе в систему, попадает в свой каталог и работает только с ним. Это делает проблематичным использование системных файлов.
Эту проблему можно решить созданием системного каталога, с общим доступом.
Если у одного пользователя много файлов, то у него тоже может возникнуть необходимость в файлах с одинаковыми именами.
Иерархические каталоговые системы
Каждый пользователь может создавать столько каталогов, сколько ему нужно.
Иерархическая каталоговая система
Почти все современные универсальные ОС, организованы таким образом. Специализированным ОС это может быть не нужным.
Операции с каталогами
Основные системные вызовы для работы с каталогами:
· Create - создать каталог
· Delete - удалить каталог
· OpenDir - закрыть каталог
· CloseDir - закрыть каталог
· ReadDir - прочитать следующий элемент открытого каталога
· Rename - переименование каталога
· Link - создание жесткой ссылки, позволяет файлу присутствовать сразу в нескольких каталогах.
· Unlink - удаление ссылки из каталога
Структура файловой системы
Возможная структура файловой системы
Все что до "Загрузочного блока" и включая его одинаково у всех ОС. Дальше начинаются различия.
Суперблок- содержит ключевые параметры файловой системы.
Реализация файлов
Основная проблема - сколько, и какие блоки диска принадлежат тому или иному файлу.
Непрерывные файлы
Выделяется каждому файлу последовательность соседних блоков.
Непрерывных файлов на диске и состояние после удаления двух файлов
Преимущества такой системы:
· Простота - нужно знать всего два числа, это номер первого блока и число блоков.
· Высокая производительность - требуется только одна операция поиска, и файл может быть прочитан за одну операцию
Недостатки:
· Диск сильно фрагментируется
Сейчас такая запись почти не используется, только на CD-дисках и магнитных лентах.
Связные списки
Файлы хранятся в разных не последовательных блоках, и с помощью связных списков можно собрать последовательно файл.
Размещение файла в виде связного списка блоков диска
Номер следующего блока хранится в текущем блоке.
Преимущества:
· Нет потерь дискового пространства на фрагментацию
· Нужно хранить информацию только о первом блоке
Недостатки:
· Уменьшение быстродействия - для того чтобы получить информацию о всех блоках надо перебрать все блоки.
· Уменьшается размер блока из-за хранения служебной информации
Связные списки при помощи таблиц в памяти
Чтобы избежать два предыдущих недостатка, стали хранить всю информацию о блоках в специальной таблице загружаемой в память.
FAT (File Allocation Table) - таблица размещения файлов загружаемая в память.
Рассмотри предыдущий пример, но в виде таблицы.
Таблица размещения файлов
Здесь тоже надо собирать блоки по указателям, но работает быстрее, т.к. таблица загружена в память.
Основной не достаток этого метода - всю таблицу надо хранить в памяти. Например, для 20 Гбайт диска, с блоком 1Кбайт (20 млн. блоков), потребовалась бы таблица в 80 Мбайт (при записи в таблице в 4 байта).
Такие таблицы используются в MS-DOS и Windows.
I - узлы
С каждым файлом связывается структура данных, называемая i-узлом (index-node- индекс узел), содержащие атрибуты файла и адреса всех блоков файла.
Примеры i-узла
Преимущества:
· Быстродействие - имея i-узел можно получить информацию о всех блоках файла, не надо собирать указатели.
· Меньший объем, занимаемый в памяти. В память нужно загружать только те узлы, файлы которых используются.
Если каждому файлу выделять фиксированное количество адресов на диске, то со временем этого может не хватить, поэтому последняя запись в узле является указателем на дополнительный блок адресов и т.д.
Такие узлы используются в UNIX.
Варианты реализации каталогов
Реализация длинных имен файлов
Использование кэширования результатов поиска файлов для ускорения поиска файла.
Алгоритм поиска файла:
· Проверяется, нет ли имени файла в кэше
· Если нет, то ищется в каталоге, если есть, то берется из кэша
Такой способ дает ускорение только при частом использовании одних и тех же файлов.
Совместно используемые файлы
Иногда нужно чтобы файл присутствовал в разных каталогах.
Link (связь, ссылка) - с ее помощью обеспечивается присутствие файла в разных каталогах.
Жесткие ссылки
Может возникнуть проблема, если владелец файла удалит его (и i-узел тоже), то указатель, каталога содержащего ссылку, будет указывать на не существующий i-узел. Потом может появиться i-узел с тем же номером, а значит, ссылка будет указывать на не существующий файл.
Поэтому в этом случае при удалении файла i-узел лучше не удалять.
Файл будет удален только после того, как счетчик будет равен 0.
Иллюстрация проблемы, которая может возникнуть
Символьные ссылки
Удаление файла не влияет на ссылку, просто по ссылке будет не возможно найти файл (путь будет не верен).
Удаление ссылки тоже никак не скажется на файле.
Но возникают накладные расходы, чтобы получить доступ к i-узлу, должны быть проделаны следующие шаги:
· Прочитать файл-ссылку (содержащий путь)
· Пройти по всему этому путь, открывая каталог за каталогом
Организация дискового пространства
Основные два способа учета свободных блоков
Надежность файловой системы
Производительность файловой системы
Так как дисковая память достаточно медленная. Приходится использовать методы повышающие производительность.
Опережающее чтение блока
Если файлы считываются последовательно, и когда получен к-блок, можно считать блок к+1 (если его нет в памяти). Что увеличивает быстродействие.
Снижение времени перемещения блока головок
Если записывать, наиболее часто запрашиваемые файлы, рядом (соседние сектора или дорожки), то перемещение головок будет меньше
В случае использования i-узлов если они расположены в начале диска, то быстродействие будет уменьшено, т.к. сначала головка считает i-узел (в начале диска), а потом будет считывать данные (где-то на диске). Если располагать i-узлы поближе к данным, то можно увеличить скорость доступа.
Лекция 11. Примеры файловых систем
Файловой системы CD-дисков
Joliet расширения для Windows
Это расширение было создано, чтобы файловая система ОС Windows 95 была представлена на CD-ROM.
Для этого используется поле System use.
Расширения содержат следующие поля:
1. Длинные имена файлов (до 64 символов)
2. Набор символов Unicode (поддержка различных языков)
3. Преодоление ограничений на вложенность каталогов
4. Имена каталогов с расширениями
Romeo расширения для Windows
Стандарт Romeo предоставляет другую возможность записи файлов с длинными именами на компакт-диск. Длина имени может составлять 128 символов, однако использование кодировки Unicode не предусмотрено. Альтернативные имена в этом стандарте не создаются, поэтому программы MS-DOS не смогут прочитать файлы с такого диска.
Вы можете выбрать стандарт Romeo только в том случае, если диск предназначен для чтения приложениями Windows 95 и Windows NT.
HFS расширения для Macintosh
Иерархическая файловая система компьютеров Macintosh, не совместима ни с какими другими файловыми системами и называется Hierarchical File System (HFS).
Каталоговая запись MS-DOS, обратите внимание на пустые 10 байт,
FAT-12
В первой версии MS-DOS использовалась FAT-12с 512 байтовыми блоками, поэтому максимальный размер раздела мог достигать 2Мбайта (2^12*512байта).
С увеличением дисков, этого стало не хватать, стали увеличивать размер блоков 1,2 и 4 Кбайта (2^12) (при этом эффективность использования диска падает).
FAT-12до сих пор применяется для гибких дисков.
FAT-16
Особенности:
· 16-разрядные дисковые указатели
· Размеры кластеров 512, 1, 2, 4, 8, 16 и 32Кбайт (2^15)
Таблица постоянно занимала в памяти 128 Кбайт.
Максимальный размер раздела диска мог достигать 2Гбайта (2^16*32Кбайта).
Причем кластер в 32 Кбайта для файлов со средним размером в 1Кбайт, не эффективен.
FAT-32
Особенности:
· 28-разрядные адреса
· Размеры кластеров 512, 1, 2, 4, 8, 16 и 32Кбайт
Максимальный размер раздела диска мог бы достигать 2^28*2^15, но здесь уже вступает другое ограничение - 512 байтные сектора адресуются 32-разрядным числом, а это 2^32*2^9, т.е. 2 Тбайта.
Максимальный размер раздела для различных размеров кластеров
Размер кластера, Кбайт | Fat-12, Мбайт | Fat-16, Мбайт | Fat-32, Тбайт |
0.5 | 0.13 | ||
0.27 | |||
0.54 | |||
Из таблицы видно, что FAT-16 использовать не эффективно уже при разделах в 256 Мбайт, учитывая, что средний размер файла 1Кбайт.
Главная файловая таблица MFT, каждая запись ссылается на файл или каталог.
Первые 16 записей MFT зарезервированы для файлов метаданных. Каждая запись описывает нормальный файл, имена этих файлов начинаются с символа "$".
Каждая запись представляет собой последовательность пар (заголовок атрибута, значение).
Некоторые записи метаданных в MFT:
0) Первая запись описывает сам файл MFT, и содержит все блоки файла MFT. Номер первого блока файла MFT содержится в загрузочном блоке.
1) Дубликат файла MFT, резервная копия.
2) Журнал для восстановления, например, перед созданием, удалением каталога делается запись в журнал. Система не попадет в противоречивое состояние после сбоев.
3) Информация о томе (размер, метка и версия)
4) Определяются атрибуты для MFT записей.
6) Битовый массив использованных блоков - для учета свободного места на диске
7) Указывает на файл начальной загрузки
Атрибуты, используемые в записях MFT:
· Стандартная информация - флаговые биты (только чтение, архивный), временные штампы и т.д.
· Имя файла - имя файла в кодировке Unicode, файлы могут повторятся в формате MS-DOS 8+3.
· Список атрибутов - расположение дополнительных записей MFT
· Идентификатор объекта - 64-разрядный идентификатор файла, уникальный для данного тома.
· Точка повторного анализа - используется для символьных ссылок и монтирования устройств.
· Название тома
· Версия тома
· Корневой индекс - используется для каталогов
· Размещение индекса - используется для очень больших каталогов
· Битовый массив - используется для очень больших каталогов
· Поток данных утилиты регистрации - используется для шифрования
· Данные - поточные данные, может повторяться, используется для хранения самого файла. За заголовком следует список дисковых адресов, определяющий положение файла на диске, если файл очень маленький (несколько сотен байт), то следует сам файл (такой файл называется - непосредственный файл).
Как привило, все данные файла не помещаются в запись MFT.
Дисковые блоки файлам назначаются по возможности в виде серий последовательных блоков (сегментов файлов). В идеале файл должен быть записан в одну серию (не фрагментированный файл), файл, состоящий из n блоков, может быть записан от 1 до n серий.
Запись MFT для 9-блочного файла, состоящего из трех сегментов (серий).
Вся запись помещается в одну запись MFT (файл не сильно фрагментирован).
Заголовок содержит количество блоков (9 блоков).
Каждая серия записывается в виде пары, дисковый адрес - количество блоков (20-4, 64-2, 80-3).
Каждая пара, при отсутствие сжатия, это два 64-разрядные числа (16 байт на пару).
Многие адреса содержат большое количество нулей, сжатие делается за счет убирания нулей в старших байтах. В результате для пары требуется чаще всего 4байта.
Если файл сильно фрагментирован, требуется несколько записей MFT.
Три записи MFT для сильно фрагментированного файла. В первой записи указывается индексы на дополнительные записи.
Может потребоваться очень много индексов MFT, так что индексы не поместятся в запись. В этом случае список хранится не в MFT, а в файле.
Запись MFT для небольшого каталога
Поиск файла в каталоге по имени состоит в последовательном переборе имен файлов.
Для больших каталогов используется другой формат. Используется дерево В+, обеспечивающее поиск в алфавитном порядке.
Пример 48-блочного файла, сжатого до 32 блоков
Запись MFT для предыдущего файла.
Недостатки сжатия:
· Как видно из рисунка, сжатие приводит к сильной фрагментации.
· Чтобы прочитать сжатый блок системе придется распаковать весь сегмент. Поэтому сжатие применяют к 16 блокам, если увеличить количество блоков, уменьшится производительность (но возрастет эффективность сжатия).
Шифрование файлов в NTFS
Расположение файловой системы UNIX
Суперблок содержит:
· Количество i-узлов
· Количество дисковых блоков
· Начало списка свободных блоков диска
При уничтожении суперблока, файловая система становится не читаемой.
Каждый i-узел имеет 64 байта в длину и описывает один файл (в том числе каталог).
Каталог содержит по одной записи для каждого файла.
Каталоговая запись UNIX V7 в 16 байт
I-узел UNIX V7
Поиск файла
Этапы поиска файла по абсолютному пути /usr/sbin/mc
При использовании относительного пути, например sbin/mc, поиск начинается с рабочего каталога /usr.
Блокировка данных файла
Блокирование осуществляется по блочно.
Стандартом POSIX два типа блокировки:
· Блокировка с монополизацией - больше ни один процесс эти блоки заблокировать не может.
· Блокировка без монополизации - могут блокировать и другие процессы.
Блокировки данных файла без монополизации
Если процесс Кпопытается блокировать блок 6 с монополизацией, то сам процесс будет заблокирован до разблокирования блока 6 всеми процессами.
Связь между таблицей дескрипторов файлов, таблицей открытых файлов и таблицей i-узлов.
Каталог BSD с тремя каталоговыми записями для трех файлов и тот же каталог после удаления файла zip, увеличивается длина первой записи.
Файловые системы LINUX
Изначально использовалась файловая система MINIX с ограничениями: 14 символов для имени файла и размер файла 64 Мбайта.
После была создана файловая система EXTс расширением: 255 символов для имени файла и размер файла 2Гбайта.
Система была достаточно медленной.
Файловая система EXT2
Эта файловая система стала основой для LINUX, она очень похожа BSD систему.
Вместо групп цилиндров используются группы блоков.
Сравнительная таблица некоторых современных файловых систем
NTFS | EXT4 | RFS | XFS | JFS | |
Хранение информации о файлах | MFT | inode | inode | inode | inode |
Максимальный размер раздела | 16 Эбайт (260) | 1 Эбайт | 4 гигаблоков (т.к. блоки динамические) | 16 Эбайт | 32 Пбайт |
Размеры блоков | от 512 байт до 64 Кбайт | 1 Кбайт - 4 Кбайт | До 64 Кбайт (сейчас фиксированы 4 Кбайт) | от 512 байт до 64 Кбайт | 512/1024/ 2048/4096 байт |
Максимальное число блоков | 248 | 2^32 | 232 | ||
Максимальный размер файла | 264 | 16 Тбайт (для 4Кбайт блоков) | 8 Тбайт | 8 Эбайт | 4 Пбайт (250) |
Максимальная длина имени файла | |||||
Журналирование | Да | Да | Да | Да | Да |
Управление свободными блоками | Нет | На основе битовой карты | B-деревья, индексированные по смещению и по размеру | Дерево+ Binary Buddy | |
Экстенты для свободного пространства | Нет | Нет | Да | Нет | |
B-деревья для элементов каталогов | Да | Нет | Как поддерево основного дерева файловой системы | Да | Да |
B-деревья для адресации блоков файлов | Нет | Внутри основного дерева файловой системы | Да | Да | |
Экстенты для адресации блоков файлов | Нет | Да (с 4 версии) | Да | Да | |
Данные внутри inode (небольшие файлы) | Нет | Да | Да | Нет | |
Данные симво-льных ссылок внутри inode | Нет | Да | Да | Да | |
Элементы каталогов внутри inode (небольшие каталоги) | Нет | Да | Да | Да | |
Динамическое выделение inode/MFT | Да | Нет | Да | Да | Да |
Структуры управления динамически выделяемыми inode | Нет | Общее B*дерево | B+дерево | B+дерево с непрерывными областями inode | |
Поддержка разреженных файлов | Да | Нет | Да | Да | Да |
Файловая система NFS
NFS (Network File System) - сетевая файловая система. Создана для объединения файловых систем по сети.
Архитектура файловой системы NFS
Предоставляется доступ к каталогу (экспортируется) с подкаталогами. Информация об экспортируемых каталогах хранится в /etc/exports. При подключении эти каталоги монтируются к локальной файловой системе.
Примеры монтирования удаленных файловых систем
Протоколы файловой системы NFS
Протокол - набор запросов и ответов, клиента и сервера.
Используется два протокола:
1. Протокол управления монтирования каталогов
2. Протокол управления доступа к каталогам и файлам
Реализация файловой системы NFS
Контрольные вопросы
1. Поясните различие между виртуальным и физическим файлом.
2. Охарактеризуйте основные компоненты иерархической модели файловой системы. Какие преимущества дает иерархическая модель?
3. В чем различие между байт-ориентированными и записеориентированными файлами? Назовите достоинства и недостатки той и другой модели.
4. В чем отличие логической структуры каталогов в MD DOS - Windows - OS/2 от структуры каталогов в Unix?
5. В чем достоинства и недостатки отделения дескриптора файла от элемента каталога?
6. Какую информацию о файле должен содержать его дескриптор, хранимый в файловой системе? Какую информацию должен содержать дескриптор открытого файла?
7. В чем сходство и различие каталогов и файлов (на логическом и на физическом уровнях)?
8. В чем сходство и различие алиасов и косвенных файлов?
9. Обязательно ли закрытие файла при завершении открывшего его процесса? Обязательна ли запись данных файла на диск при закрытии файла?
10. В чем отличие смежного размещения файлов в современных файловых системах от смежного размещения файлов в старых файловых системах?
11. Какими методами может быть обеспечено преимущественно смежное размещение файла на внешней памяти?
12. В чем отличие целостности файловой системы от целостности данных? Какую целостность и какими методами обеспечивают современные файловые системы?
13. Какие два типа ресурсов, связанных с диском, требуется выделить процессу, чтобы он выполнил запись данных на диск?
14. Каким из двух типов драйверов — блок-ориентированным или байт-ориентированным — обслуживается диск?
15. С какой целью в некоторых файловых системах характеристики файла отделяются от его имени?
16. Какие программные компоненты поддерживают структуру файла в тех ОС, где файл представлен последовательностью байт?
17. С какого каталога начинается «раскрутка» полного имени файла?
18. Операционная система выделяет файлам пространство на диске:
А) секторами;
В) дорожками;
С) кластерами;
D) цилиндрами.
19. Выберите размер кластера для файловой системы FAT16, устанавливаемой в разделе, который разделен на секторы размером 512 байт и имеет общий объем 272 Мбайт. Оцените, сколько в этом случае кластеров будет содержать область данных, а также какой размер необходимо отвести таблице FAT. Учтите, что размер кластера должен быть равен степени двойки. Примите во внимание также, что стандартным размером корневого каталога для жестких дисков является размер в 32 сектора.
20. При каких условиях можно автоматически гарантированно восстановить в файловой системе FAT удаленный файл?
21. Сформулируйте основную цель введения в ОС системного вызова open.
22. В какой из типов систем управления доступом — избирательной или мандатной — пользователю предоставляется большая свобода действий?
23. Какой смысл имеет операция «выполнить каталог» в ОС UNIX