Операционная система, процессы, оборудование

 

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

ОС как виртуальная (расширенная) машина.Использование большинства компьютеров на уровне машинного языка затруднительно, особенно это касается ввода-вывода. (Например, для организации чтения блока данных с гибкого диска программист может использовать 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) для прозрачного распределения программных процедур по машинам, многонитевой обработки, позволяющей распараллеливать вычисления в рамках одной задачи и выполнять эту задачу сразу на нескольких компьютерах сети, а также наличие других распределенных служб.

Особенности аппаратных платформ

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

Задачи и упражнения

2. В чем состояло принципиальное отличие первых мониторов пакетной обработки от уже существовавших к этому времени системных обрабатывающих программ… 3. Может ли компьютер работать без операционной системы? 4. Как эволюционировало отношение к концепции мультипрограммирования на протяжении всей истории ОС?

Лекция 3. АРХИТЕКТУРА ОПЕРАЦИОННОЙ СИСТЕМЫ

Любая хорошо организованная сложная система имеет понятную и рациональную структуру, то есть разделяется на части - модули, имеющие вполне… Функциональная сложность операционной системы неизбежно приводит к слож­ности… Большинство современных операционных систем представляют собой хорошо структурированные модульные системы, способные к…

Управление процессами

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

- создание и удаление процессов;

- приостановку и возобновление процессов;

- обеспечение механизмов для синхронизации процессов;

- обеспечение механизмов для взаимодействия процессов.

Управление основной памятью

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

Управление внешней памятью

- управление свободным пространством; - распределение памяти; - управление диском.

Подсистема управления файлами

Подсистема ОС отвечает за следующие действия в связи с управлением файлами: - создание файлов; - создание и удаление подкаталогов;

Защита системы

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

Механизм защиты должен:

- различать авторизованное и не авторизованное использование;

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

- обеспечить средства реализации.

Сетевое обеспечение

- увеличить скорость вычислений; - увеличить объем доступной информации; - повысить надежность.

Ядро и вспомогательные модули ОС

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

Ядро и привилегированный режим

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

Многослойная структура ОС

Вычислительную систему, работающую под управлением ОС на основе ядра, можно рассматривать как систему, состоящую из трех иерархически расположенных…  

Рис3. 4. Структура ядра

Средства аппаратной поддержки ОС. До сих пор об операционной системе говорилось как о комплексе программ, но часть функций ОС может выполняться и… Машинно-зависимые компоненты ОС. Этот слой образуют программные мо­дули, в… Базовые механизмы ядра. Этот слой выполняет наиболее примитивные операции ядра, такие, как программное переключение…

Аппаратная зависимость и переносимость ОС

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

Переносимость операционной системы

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

Концепция

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

Рис. 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, в которых микроядро выполняет достаточно большой объем функций.

 

Совместимость и множественные прикладные среды

 

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

Двоичная совместимость и совместимость исходных текстов

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

Трансляция библиотек

Выходом в таких случаях является использование так называемых прикладных программных сред. Одной из составляющих, формирующих прикладную программную… Эффективность этого подхода связана с тем, что большинство сегодняшних… Например, для Windows-программы, работающей на Macintosh, при интерпретации команд процессора Intel 80x86…

Способы реализации прикладных программных сред

Во многих версиях ОС UNIX транслятор прикладных сред реализуется в виде обычного приложения. В операционных системах, построенных с использовани­ем… Один из наиболее очевидных вариантов реализации множественных приклад­ных сред…  

Контрольные вопросы

 

  1. Назовите составляющие ОС.
  2. На какие группы принято разделять модули ОС?
  3. Какие базовые функции закреплены за модулями ядра?
  4. На какие группы программ подразделяются вспомогательные модули ОС?
  5. Какие режимы процессора Intel x86, используемые ОС для работы ядра, Вам известны?
  6. Какой из режимов работы процессора Intel x86 используется при выполнении модулей ядра?
  7. На какие слои подразделяется ядро ОС?
  8. Какие функции выполняет слой базовых механизмов ядра?
  9. Какие функции выполняет слой менеджера ресурсов?
  10. Можно ли рассматривать базовую систему ввода/вывода компьютера (BIOS) как часть операционной системы?
  11. В каком случае ОС, написанная на ассемблере, является переносимой?
  12. Каким термином в микроядерной архитектуре принято называть менеджеры ресурсов, вынесенные в пользовательский режим?
  13. Можно ли считать микроядерную архитектуру в высокой степени переносимой?
  14. Почему микроядерная архитектура ОС в большей степени расширяемая, чем классическая ОС?
  15. Является ли микроядерная архитектура более надежной, чем традиционная?
  16. Укажите причину, из-за которой производительность микроядерной архитектуры хуже традиционной схемы ОС.
  17. Можно ли считать ОС Windows NT 4.0 системой с микроядерной архитектурой?
  18. Какие виды совместимости Вам известны?
  19. За счет каких действий достигается двоичная совместимость для процессоров различных архитектур?
  20. Укажите способ, который позволяет повысить производительность ПК при выполнении «чужого» исполняемого файла.
  21. Достаточно ли одного метода трансляции библиотек для полной совместимости приложений?

 

 

Лекция 4. ОСНОВНЫЕ КОНЦЕПЦИИ ТЕОРИИ ОС

ПОНЯТИЕ ПРОЦЕССА

Процессом называется некоторая деятельность, выполняемая на процессоре. Процессором в широком смысле называется любое устройство в составе ЭВМ,… Процесс, выполняемый на центральном процессоре (внутренний процесс),… 1. порождение – подготавливаются условия для первого исполнения программы на процессоре;

ПОНЯТИЕ РЕСУРСА

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

КОНЦЕПЦИЯ ВИРТУАЛИЗАЦИИ

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

Одноочередные дисциплины обслуживания.

б) LIFO (Last In -- First Out) – дисциплина обслуживания в порядке, обратном порядку поступления. Эта дисциплина является основой построения… Обе рассмотренные дисциплины просты в реализации. Среднее время ожидания… в) Дисциплина обслуживания по круговому циклическому алгоритму. Схема данной дисциплины показана на рис.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.

Завершение процесса

Таким образом, приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти(core image), и компонентов…

Иерархия процессов

В таком случае в UNIX существует и прародитель всех процессов - процесс init.  

Состояние процессов

   

Потоки (нити, облегченный процесс)

Понятие потока

   

Модель потока

Потоки делят между собой элементы своего процесса: Адресное пространство Глобальные переменные Открытые файлы Таймеры Семафоры …   В остальном модель идентична модели процессов.

Преимущества использования потоков

Реализация потоков в пространстве пользователя, ядра и смешанное

А - потоки в пространстве пользователя B - потоки в пространстве ядра

Особенности реализации Windows

Потоки работают в режиме пользователя, но при системных вызовах переключаются в режим ядра. Из-за переключения в режим ядра и обратно, очень…  

Взаимодействие между процессами

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

Передача информации от одного процесса другому

  Схема для канала

Состояние состязания

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

Критические области

Условия избегания состязания и эффективной работы процессов: Два процесса не должны одновременно находиться в критических областях. Процесс, … Пример:  

Взаимное исключение с активным ожиданием

Рассмотрим методы взаимного исключения

Запрещение прерываний

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

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

Переменные блокировки

   

Строгое чередование

   

Примитивы взаимодействия процессов

sleep - системный запрос, в результате которого вызывающий процесс блокируется, пока его не запустит другой процесс. wakeup - системный запрос, в результате которого блокированный процесс будет…

Семафоры

Были предложены две операции down и up (аналоги sleep и wakeup). Прежде чем заблокировать процесс down проверяет семафор, если он равен нулю,… up увеличит значение семафора на 1 или разблокирует процесс, находящийся в ожидании..

Лекция 6. Планирование процессов

Основные понятия планирования процессов

Планирование- обеспечение поочередного доступа процессов к одному процессору.

Планировщик - отвечающая за это часть операционной системы.

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

Ситуации, когда необходимо планирование:

  1. Когда создается процесс
  2. Когда процесс завершает работу
  3. Когда процесс блокируется на операции ввода/вывода, семафоре, и т.д.
  4. При прерывании ввода/вывода.

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

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

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

Основные три системы:

  1. Системы пакетной обработки - могут использовать неприоритетный и приоритетный алгоритм (например: для расчетных программ).
  2. Интерактивные системы - могут использовать только приоритетный алгоритм, нельзя допустить чтобы один процесс занял надолго процессор (например: сервер общего доступа или персональный компьютер).
  3. Системы реального времени - могут использовать неприоритетный и приоритетный алгоритм (например: система управления автомобилем).

Задачи алгоритмов планирования:

  1. Для всех систем
    Справедливость - каждому процессу справедливую долю процессорного времени
    Контроль над выполнением принятой политики
    Баланс - поддержка занятости всех частей системы (например: чтобы были заняты процессор и устройства ввода/вывода)
  2. Системы пакетной обработки
    Пропускная способность - количество задач в час
    Оборотное время - минимизация времени на ожидание обслуживания и обработку задач.
    Использование процесса - чтобы процессор всегда был занят.
  3. Интерактивные системы
    Время отклика - быстрая реакция на запросы
    Соразмерность - выполнение ожиданий пользователя (например: пользователь не готов к долгой загрузке системы)
  4. Системы реального времени
    Окончание работы к сроку - предотвращение потери данных
    Предсказуемость - предотвращение деградации качества в мультимедийных системах (например: потерь качества звука должно быть меньше чем видео)

Планирование в системах пакетной обработки

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

Наименьшее оставшееся время выполнение

Аналог предыдущего, но если приходит новый процесс, его полное время выполнения сравнивается с оставшимся временем выполнения текущего процесса.

Трехуровневое планирование

Трехуровневое планирование

Планировщик доступа выбирает задачи оптимальным образом(например: процессы, ограниченные процессором и вводом/выводом).

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

 

Планирование в интерактивных системах

Циклическое планирование

Каждому процессу предоставляется квант времени процессора. Когда квант заканчивается процесс переводится планировщиком в конец очереди. При…

Приоритетное планирование

Приоритет может быть динамический и статический. Динамический приоритет может устанавливаться так: П=1/Т, где Т- часть использованного в последний раз кванта

Планирование в системах реального времени

Внешние события, на которые система должна реагировать, делятся: периодические - потоковое видео и аудио непериодические (непредсказуемые) -…   ß

Планирование однородных процессов

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

Т.к. все процессы важны, можно использовать циклическое планирование.

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

Общее планирование реального времени

Планировщик должен знать: частоту, с которой должен работать каждый процесс объем работ, который ему предстоит выполнить ближайший срок … Рассмотрим пример из трех процессов. Процесс Азапускается каждые 30мс, обработка кадра 10мс

Лекция 7 - Взаимоблокировка процессов

Взаимоблокировка процессов

Ресурсы бывают выгружаемые и невыгружаемые, аппаратные и программные. Выгружаемый ресурс- этот ресурс безболезненно можно забрать у процесса… Невыгружаемый ресурс -этот ресурс нельзя забрать у процесса без потери данных (например: принтер).

Моделирование взаимоблокировок

Условные обозначения На такой модели очень хорошо проверить возникает ли взаимоблокировка. Если есть цикл, значит, есть и…

Методы борьбы с взаимоблокировками

Четыре стратегии избегания взаимоблокировок:

  1. Пренебрежением проблемой в целом (вдруг пронесет).
  2. Обнаружение и устранение (взаимоблокировка происходит, но оперативно ликвидируется).
  3. Динамическое избежание тупиков.
  4. Предотвращение четырех условий, необходимых для взаимоблокировок.

Пренебрежением проблемой в целом (страусовый алгоритм)

Если вероятность взаимоблокировки очень мала, то ею легче пренебречь, т.к. код исключения может очень усложнить ОС и привести к большим ошибкам. Также многие взаимоблокировки тяжело обнаружить.

Этот алгоритм используется как в UNIX, так и в Windows.

Поэтому (и не только) на серверах часто устанавливают автоматическую перезагрузку (раз в сутки, как правило, ночью), если возникнет взаимоблокировка, то после перезагрузки ее не будет.

Обнаружение и устранение взаимоблокировок

Обнаружение взаимоблокировки при наличии одного ресурса каждого типа Под одним ресурсом каждого типа, подразумевается один принтер, один сканер и… Рассмотрим систему из 7-ми процессов и 6-ти ресурсов.

Динамическое избежание взаимоблокировок

Траектории ресурсов Рассмотрим модель из двух процессов и двух ресурсов. А1 - запрос принтера процессом А

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

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

Принципы аппаратуры ввода-вывода

  Рис. 1. Структура системы ввода-вывода  

Устройства ввода-вывода

Устройства делят на две категории (некоторые не попадают ни в одну):

 

Контроллеры устройств

Если интерфейс между контроллером и устройством стандартизован (ANSI, IEEE или ISO), то независимые производители могут выпускать совместимые как… Операционная система обычно имеет дело не с устройством, а с контроллером.…  

Отображаемый на адресное пространство памяти ввод-вывод

У многих устройств есть буфер данных (например: видеопамять). Реализации доступа к управляющим регистрам и буферам:   номер порта ввода-вывода - назначается каждому управляющему регистру 8- или 16-рзрядное целое число.…

Прямой доступ к памяти (DMA - Direct Memory Access)

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

Прерывания

Чтобы сигнализировать процессору об окончании работы, устройство инициализирует прерывание, выставляя сигнал на выделенную устройству линию шины (а… Контроллер прерываний - обслуживает поступающие прерывания от устройств. …  

Принципы программного обеспечения ввода-вывода

 

Задачи программного обеспечения ввода-вывода

Три основных способа осуществления операций ввода-вывода: Программный ввод-вывод Управляемый прерываниями ввод-вывод Ввод-вывод с… Рассмотрим их подробнее.  

Программный ввод-вывод

Рассмотрим процесс печати строки ABCDEFGH этим способом.  

Управляемый прерываниями ввод-вывод

Рассмотрим тот же пример, но с небольшим усовершенствованием. Алгоритм печати: До пункта 8 тоже самое. Процессор не ждет готовности…  

Ввод-вывод с использованием DMA

Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа.

Алгоритм не отличается, но всю работу на себя берет контроллер DMA.

 

Программные уровни и функции ввода-вывода

Четыре уровня ввода-вывода:

 

 

Уровни ввода-вывода

 

Обработчики прерываний

Алгоритм: Драйвер начинает операцию ввод-вывод. Драйвер блокирует сам себя, - выполнив на семафоре процедуру down - выполнив на…    

Драйвера устройств

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

Независимое от устройств программное обеспечение ввода-вывода

Единообразный интерфейс для драйверов устройств Кроме интерфейса, в него также входят проблемы, именование устройств … Буферизация

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

Функции этого обеспечения:

 

 

Обобщение уровней и функций ввода-вывода

  Уровни и основные функции системы ввода-вывода

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

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

Буферизация и кэширование

· Первая причина буферизации – это разные скорости приема и передачи информации, которыми обладают участники обмена. Рассмотрим, например, случай… · Вторая причина буферизации – это разные объемы данных, которые могут быть… · Третья причина буферизации связана с необходимостью копирования информации из приложений, осуществляющих…

Spooling и захват устройств

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

Обработка прерываний и ошибок

Одна и та же процедура обработки прерывания может применяться для нескольких устройств ввода-вывода (например, если эти устройства используют одну… Действия по обработке прерывания и компенсации возникающих ошибок могут быть…

Планирование запросов

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

Принципы, заложенные в подсистему управления вводом-выводом в ОС UNIX

2. Другая особенность подсистемы ввода-вывода в ОС UNIX заключается в том, что она работает как синхронная система. Любой программный процесс,… 3. Для управления ПУ в ОС UNIX используются 2 вида интерфейса с этими ПУ:… 4. В состав системы управления вводом-выводом входят также драйверы и набор специальных таблиц для логического…

Лекция 8. Управление памятью в ОС

4.2. Методы связного распределения основной памяти 4.2.1. Связное распределение памяти для одного пользователя 4.2.2. Связное распределение памяти при мультипрограммной обработке

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

В операционных системах различают два вида памяти: основная (первичная) и внешняя (вторичная). Основная память (main storage) - оперативная память центрального процессора… Внешняя память (external storage) - память, данные в которой доступны центральному процессору посредством операций…

Методы связного распределения основной памяти

Связное распределение памяти для одного пользователя

Вся основная часть ЭВМ, не занятая программами операционной системы, выделяется программе единственного на данном отрезке времени пользователя.… Организация памяти при связном распределении для одного пользователя показана…  

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

· распределение фиксированными разделами; · распределение переменными разделами; · распределение со свопингом.

Стратегии размещения информации в памяти

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

Организация виртуальной памяти

Основные концепции виртуальной памяти

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

Страничная организация виртуальной памяти

  Для обеспечения работы механизма отображения страниц формируется таблица… r - признак наличия страницы в первичной памяти (r=0 - страницы в первичной памяти нет; 1 - страница находится в…

Сегментная организация виртуальной памяти

Странично-сегментная организация виртуальной памяти

Операционная система для каждого процесса формирует, во-первых, одну таблицу сегментов процесса, и, во-вторых, таблицы страниц сегментов (по одной… Таблица сегментов процесса содержит в своих строках информацию о количестве… Каждая страница таблиц сегмента содержит в своих строках информацию о начальном адресе p’ размещения в первичной…

Управление виртуальной памятью

Стратегии управления виртуальной памятью

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

Стратегии вталкивания (подкачки)

· вталкивание (подкачка) по запросу (по требованию); · вталкивание (подкачка) с упреждением (опережением). Вталкивание (подкачка) по запросу предполагает, что система ждет ссылки на страницу или сегмент от выполняющегося…

Стратегии размещения

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

Стратегии выталкивания

Стратегия выталкивания случайных страниц или сегментов является наиболее простой в реализации, обладает малыми издержками и не является… Стратегия выталкивания первой пришедшей страницы или сегмента (FIFO-стратегия)… Стратегия выталкивания дольше всего не использовавшихся страниц или сегментов (LRU-стратегия) предусматривает, что для…

Контрольные вопросы

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

2. В чем достоинства и недостатки преобразования виртуальных адресов в реальные во время выполнения программы? Какая часть работы по этому преобразованию выполняется аппаратным обеспечением, а какая - ОС?

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

4. Почему при поиске свободной памяти стратегия "самый подходящий" оказывается хуже, чем "первый подходящий".

5. Сравните сегментную и страничную модели виртуальной памяти. Какая из них представляется Вам лучшей и почему?

6. Дополните приведенные в разделе 3.5. соображения по поводу выбора размера страницы.

7. Смоделируйте ситуацию применения дисциплины вытеснения FCFS, в которой увеличение числа реальных страниц приведет к увеличению числа страничных отказов.

8. Что такое кластерная подкачка страниц? Почему в современных ОС она становится все более популярной?

9. Каким образом ОС может определять, к каким страницам будут обращения в ближайшее время?

10. Большой размер виртуальной памяти процесса может приводить к тому, что даже таблица страниц не будет помещаться в реальной памяти. Какими путями решается эта проблема в современных ОС?

11. Каким образом снижение стоимости памяти влияет на дисциплины управления памятью?

12. Какие принципиальные изменения в концепции памяти может повлечь за собой увеличение разрядности адреса?

 

 

Лекции 10-11. Системы управления данными (файловые системы)

Лекция 10. Организация файловых систем

Файлы

Требования к хранению информации:

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

· информация должна сохраняться после прекращения работы процесса

· несколько процессов должны иметь одновременный доступ к информации

Именование файлов

ОС могут различать прописные и строчные символы. Например, WINDOWS и windows для MS-DOS одно и тоже, но для UNIX это разные файлы. Во многих ОС имя файла состоит из двух частей, разделенных точкой, например… У MS-DOS расширение составляет 3 символа. По нему система различает тип файла, а также можно его исполнять или нет. …

Структура файла

1. Последовательность байтов - ОС не интересуется содержимым файла, она видит только байты. Основное преимущество такой системы, это гибкость… 2. Последовательность записей - записей фиксированной длины (например,… 3. Дерево записей - каждая запись имеет ключ, записи считываются по ключу. Основное преимущество такой системы, это…

Три типа структур файла.

Типы файлов

· Регулярные - содержат информацию пользователя. Используются в Windows и UNIX. · Каталоги - системные файлы, обеспечивающие поддержку структуры файловой… · Символьные - для моделирования ввода-вывода. Используются только в UNIX.

Примеры исполняемого и не исполняемого файла

«Магическое число» - идентифицирующее файл как исполняющий.

Доступ к файлам

Основные виды доступа к файлам:

· Последовательный - байты читаются по порядку. Использовались, когда были магнитные ленты.

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

Атрибуты файла

· Защита - кто, и каким образом может получить доступ к файлу (пользователи, группы, чтение/запись). Используются в Windows и UNIX. · Пароль - пароль к файлу · Создатель - кто создал файл

Операции с файлами

Основные системные вызовы для работы с файлами:

· Create - создание файла без данных.

· Delete - удаление файла.

· Open - открытие файла.

· Close - закрытие файла.

· Read - чтение из файла, с текущей позиции файла.

· Write - запись в файл, в текущею позицию файла.

· Append - добавление в конец файла.

· Seek - устанавливает файловый указатель в определенную позицию в файле.

· Get attributes - получение атрибутов файла.

· Set attributes - установить атрибутов файла.

· Rename - переименование файла.

Файлы, отображаемые на адресное пространство памяти

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

Пример копирования файла через отображение в памяти.

Алгоритм:

1. Создается сегмент для файла 1

2. Файл отображается в памяти

3. Создается сегмент для файла 2

4. Сегмент 1 копируется в сегмент 2

5. Сегмент 2 сохраняется на диске

Недостатки этого метода:

· Тяжело определить длину выходного файла

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

· Файл может оказаться большим, больше сегмента или виртуального пространства.

Каталоги

Одноуровневые каталоговые системы

   

Двухуровневые каталоговые системы

Для каждого пользователя создается свой собственный каталог.

 

Двухуровневая каталоговая система

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

Эту проблему можно решить созданием системного каталога, с общим доступом.

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

Иерархические каталоговые системы

Каждый пользователь может создавать столько каталогов, сколько ему нужно.

 

Иерархическая каталоговая система

Почти все современные универсальные ОС, организованы таким образом. Специализированным ОС это может быть не нужным.

Имя пути

Два основных метода указания файла: · абсолютное имя пути - указывает путь от корневого каталога, например: - для Windows usrastmailbox

Операции с каталогами

Основные системные вызовы для работы с каталогами:

· 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.

Реализация каталогов

В зависимости от системы это может быть: · дисковый адрес всего файла (для непрерывных файлов) · номер первого блока (связные списки)

Варианты реализации каталогов

Реализация длинных имен файлов

Методы реализации длинных имен файлов: · Просто выделить место под длинные имена, увеличив записи каталога. Но это… · Применить записи с фиксированной частью (атрибуты) и динамической записью (имя файла).

Реализация длинных имен файлов

Ускорение поиска файлов

1 Использование хэш-таблицы для ускорения поиска файла. Алгоритм записи файла: · Создается хэш-таблица в начале каталога, с размером n (n записей).

Использование кэширования результатов поиска файлов для ускорения поиска файла.

Алгоритм поиска файла:

· Проверяется, нет ли имени файла в кэше

· Если нет, то ищется в каталоге, если есть, то берется из кэша

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

Совместно используемые файлы

Иногда нужно чтобы файл присутствовал в разных каталогах.

Link (связь, ссылка) - с ее помощью обеспечивается присутствие файла в разных каталогах.

 

А - совместно используемый файл.

Возникает проблема, если дисковые адреса содержатся в самих каталоговых записях, тогда при добавлении новых данных к совместно используемому файлу… Есть два решения этой проблемы: 1. Использование i-узлов, в каталогах хранится только указатель на i-узел. Такие ссылки называются жесткими…

Жесткие ссылки

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

Поэтому в этом случае при удалении файла i-узел лучше не удалять.

Файл будет удален только после того, как счетчик будет равен 0.

 

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

Символьные ссылки

Удаление файла не влияет на ссылку, просто по ссылке будет не возможно найти файл (путь будет не верен).

Удаление ссылки тоже никак не скажется на файле.

Но возникают накладные расходы, чтобы получить доступ к i-узлу, должны быть проделаны следующие шаги:

· Прочитать файл-ссылку (содержащий путь)

· Пройти по всему этому путь, открывая каталог за каталогом

Организация дискового пространства

Размер блока

Есть две крайности: · Большие блоки - например, 1Мбайт, то файл даже 1 байт займет целый блок в… · Маленькие блоки - чтение файла состоящего из большого числа блоков будет медленным.

Учет свободных блоков

· Связной список блоков диска, в каждом блоке содержится номеров свободных блоков столько, сколько вмешается в блок. Часто для списка резервируется… · Битовый массив (бит-карта) - для каждого блока требуется один бит.  

Основные два способа учета свободных блоков

Дисковые квоты

Два вида лимитов: · Жесткие - превышены быть не могут · Гибкие - могут быть превышены, но при выходе пользователь должен удалить лишние файлы. Если он не удалил, то при…

Надежность файловой системы

Резервное копирование

· Аварийные ситуации, приводящие к потере данных на диске · Случайное удаление или программная порча файлов Основные принципы создания резервных копий:

Непротиворечивость файловой системы

В большинстве файловых систем есть специальная программа, проверяющая непротиворечивость системы.В UNIX - fsck.В Windows - scandisk. Если произошел сбой, то во время загрузки они проверяют файловую систему (если… Журналируемая файловая система- операции выполняются в виде транзакций, если транзакция не завершена, то во время…

Производительность файловой системы

Так как дисковая память достаточно медленная. Приходится использовать методы повышающие производительность.

Кэширование

Перехватываются все запросы чтения к диску, и проверяется наличие требуемых блоков в кэше. Ситуация схожа со страничной организацией памяти, можно применять те же… Нужно чтобы измененные блоки периодически записывались на диск. В UNIX это выполняет демон update (вызывая системный…

Опережающее чтение блока

Если файлы считываются последовательно, и когда получен к-блок, можно считать блок к+1 (если его нет в памяти). Что увеличивает быстродействие.

Снижение времени перемещения блока головок

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

В случае использования i-узлов если они расположены в начале диска, то быстродействие будет уменьшено, т.к. сначала головка считает i-узел (в начале диска), а потом будет считывать данные (где-то на диске). Если располагать i-узлы поближе к данным, то можно увеличить скорость доступа.

Лекция 11. Примеры файловых систем

Файловой системы CD-дисков

 

Файловая система ISO 9660

По стандарту диски могут быть разбиты на логические разделы, но мы будем рассматривать диски с одним разделом. Как вы знаете блоки записываются последовательно; по спирали; сектора по 2352… Порядок записи информации:

Каталоговая запись стандарта ISO 9660.

L - длина имени файла в байтах Имя файла - 8 символов, 3 символа расширения (из-за совместимости с MS-DOS).… Sys - поле System use (используется различными ОС для своих расширений )

Рок-ридж расширения для UNIX

Для этого используется поле System use. Расширения содержат следующие поля: 1. PX - атрибуты POSIX (стандартные биты rwxrwxrwx, (чтение, запись, запуск) (владелец, группа, все) )

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).

Файловая система UDF (Universal Disk Format)

Изначально созданная для DVD, с версии 1.50 добавили поддержку CD-RW и CD-R. Сейчас последняя версия 2.60. Официальную информацию (и спецификацию) можно… Эта файловая система позволяет дописывать диски, а также поддерживает большие размеры файлов и длинные имена файлов. …

Файловая система MS-DOS (FAT-12,16,32)

С версии MS-DOS 2.0 применили иерархическую структуру. Каталоговые записи, фиксированны по 32 байта. Имена файлов - 8+3 символов верхнего регистра.

Каталоговая запись MS-DOS, обратите внимание на пустые 10 байт,

Они будут задействованы в Windows 98

Поле время (16 разрядов) разбивается на три подполя: 1. секунды - 5бит (2^5=32 поэтому хранятся с точностью до 2-х секунд) 2. минуты - 6бит

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Кбайт.

Расширение Windows 98 для FAT-32

   

Основная надстройка над FAT-32, это длинные имена файлов.

1. Короткое 8+3 для совместимости с MS-DOS 2. Длинное имя файла, в формате Unicode Доступ к файлу может быть получен по любому имени.

Формат каталогов записи с фрагментом длинного имени файла в Windows 98

Поле "Атрибуты" позволяет отличить фрагмент длинного имени (значение 0х0F) от дескриптора файла. Старые программы MS-DOS каталоговые… Последовательность - порядковый номер в последовательности фрагментов. Длина имени файла ограничена 260 символами не из-за порядкового номера (1 байт), для номера используются только 6 бит…

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

Особенности: · 64-разрядные адреса, т.е. теоретически может поддерживать 264*216 байт (1… · Размеры блока (кластера) от 512байт до 64 Кбайт, для большинства используется 4Кбайта.

Главная файловая таблица 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 для небольшого каталога

Поиск файла в каталоге по имени состоит в последовательном переборе имен файлов.

Для больших каталогов используется другой формат. Используется дерево В+, обеспечивающее поиск в алфавитном порядке.

Поиск файла по имени

CreateFile("C:windowsreadmy.txt", ...) Этот вызов попадает в совместно используемую библиотеку уровня пользователя… ??C:windowsreadmy.txt

Сжатие файлов

Алгоритм работы: 1. Берутся для изучения первые 16 блоков файла (не зависимо от сегментов… 2. При меняется к ним алгоритм сжатия.

Пример 48-блочного файла, сжатого до 32 блоков

Запись MFT для предыдущего файла.

Недостатки сжатия:

· Как видно из рисунка, сжатие приводит к сильной фрагментации.

· Чтобы прочитать сжатый блок системе придется распаковать весь сегмент. Поэтому сжатие применяют к 16 блокам, если увеличить количество блоков, уменьшится производительность (но возрастет эффективность сжатия).

Шифрование файлов

Даже если у вас украдут винчестер, прочесть данные не смогут (большинство не сможет). Если файл помечен как шифрованный, то система автоматически шифрует при… Шифрование и дешифрование выполняет не сама NTFS, а специальный драйвер EFS (Encrypting File System).

Шифрование файлов в NTFS

Файловая система UNIX V7

Особенности: · Имена файлов ограничены 14 символами ASCII, кроме косой черты "/"… · Поддержка ссылок.

Расположение файловой системы UNIX

Суперблок содержит:

· Количество i-узлов

· Количество дисковых блоков

· Начало списка свободных блоков диска

При уничтожении суперблока, файловая система становится не читаемой.

Каждый i-узел имеет 64 байта в длину и описывает один файл (в том числе каталог).

Каталог содержит по одной записи для каждого файла.

 

Каталоговая запись UNIX V7 в 16 байт

Структура i-узела

Первые 10 дисковых блоков файла хранятся в самом i-узле, при блоке в 1Кбайт, файл может быть 10Кбайт. Дополнительные блоки для i-узла, в случае больших файлов: · Одинарный косвенный блок -дополнительный блок с адресами блоков файла, если файл не сильно большой, то один из…

I-узел UNIX V7

Поиск файла

 

Этапы поиска файла по абсолютному пути /usr/sbin/mc

При использовании относительного пути, например sbin/mc, поиск начинается с рабочего каталога /usr.

Блокировка данных файла

Блокирование осуществляется по блочно.

Стандартом POSIX два типа блокировки:

· Блокировка с монополизацией - больше ни один процесс эти блоки заблокировать не может.

· Блокировка без монополизации - могут блокировать и другие процессы.

 

Блокировки данных файла без монополизации

Если процесс Кпопытается блокировать блок 6 с монополизацией, то сам процесс будет заблокирован до разблокирования блока 6 всеми процессами.

Создание и работа с файлом

Успешный вызов возвращает целое число fd - дескриптор файла. Который хранится в таблице дескрипторов файла, открывшегопроцесса. После этого можно работать с файлом, используя системные вызовы write и read.

Связь между таблицей дескрипторов файлов, таблицей открытых файлов и таблицей i-узлов.

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

Особенности (отличие от предыдущей системы): · Увеличена длина имени файла до 255 символов · Реорганизованы каталоги

Каталог BSD с тремя каталоговыми записями для трех файлов и тот же каталог после удаления файла zip, увеличивается длина первой записи.

Файловые системы LINUX

Изначально использовалась файловая система MINIX с ограничениями: 14 символов для имени файла и размер файла 64 Мбайта.

После была создана файловая система EXTс расширением: 255 символов для имени файла и размер файла 2Гбайта.

Система была достаточно медленной.

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

Эта файловая система стала основой для LINUX, она очень похожа BSD систему.

Вместо групп цилиндров используются группы блоков.

 

Размещение файловой системы EXT2 на диске

· Размер блока 1 Кбайт · Размер каждого i-узла 128 байт. · i-узел содержит 12 прямых и 3 косвенных адресов, длина адреса в i-узле стала 4 байта, что обеспечивает поддержку…

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

Разработанная в Red Hat В данный момент является основной для LINUX. Драйвер Ext3 хранит полные точные копии модифицируемых блоков (1КБ, 2КБ или 4КБ) в памяти до завершения операции. Это…

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

Официальная информация на http://oss.sgi.com/projects/xfs/ XFS была создана в начале 90ых (1992-1993) фирмой Silicon Grapgics (сейчас… Некоторые особенности:

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

Официальная информация на RaiserFS Некоторые особенности: · Более эффективно работает с большим количеством мелких файлов, в плане производительности и эффективности…

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

Официальная информация на Journaled File System Technology for Linux Некоторые особенности: · Журналы JFS соответствуют классической модели транзакций, принятой в базах данных

Сравнительная таблица некоторых современных файловых систем

 

  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

 

Структура уровней файловой системы NFS

Записи для каждого открытого файла называются v-узлами(virtual i-node). VFSиспользуется не только для NFS, но и для работы инородными файловыми… Алгоритм работы NFS (рассмотрим последовательность системных вызовов mount, open и read):

Контрольные вопросы

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