Рефераты. Операционные системы (шпаргалка)

Вопрос 26. Файловые системы. Общая структура и функционирование.

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

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

Рис. 1. Физическая организация файла

Популярным способом является использование связанного списка индексов. С каждым блоком связывается некоторый элемент – индекс (см. рис 1,в). Индексы располагаются в отдельной области диска (в MS-DOS это таблица FAT). Если некоторый блок распределен некоторому файлу, то индекс этого блока содержит номер следующего блока данного файла.

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


Вопрос 27. Примеры организации файловых систем.

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

 

Рис. 1. Архитектура современной файловой системы

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

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


Cписок вопросов
 к экзамену «Операционные системы»

Введение в операционные системы:

1.   Операционная система. Определение. Функции операционных систем.

2.   Операционная система. Определение. Эволюция операционных систем.

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

4.   Обзор современных операционных систем.

Архитектура операционной системы и ядра:

5.   Архитектура операционной системы. Режимы ядра и приложений. Многослойная архитектура.

6.   Архитектура операционной системы. Режимы ядра и приложений. Микроядерная архитектура. Достоинства и недостатки микроядерной архитектуры.

7.   Архитектура операционной системы. Режимы ядра и приложений. Средства программной и аппаратной поддержки операционной системы.

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

8.   Иерархия памяти. Управление памятью без использования внешней памяти.

9.   Способы управления оперативной памятью. Типы адресов. Страничное распределение памяти, сегментно-страничное распределение.

10. Способы управления оперативной памятью. Типы адресов. Сегментное распределение памяти, сегментно-страничное распределение.

11. Способы управления оперативной памятью. Типы адресов. Сегментно-страничное распределение.

12. Кэширование данных. Принцип работы кэш-памяти. Способы отображения данных на кэш.

13. Кэш-память. Случайное отображени данных на кэш. Выполнение запроса с системах с кэш памятью.

14.       Кэш-память. Прямое отображени данных на кэш. Выполнение запроса с системах с кэш памятью.

15.       Двухуровневое кэширование. Принцип работы. Выполнение запроса с системах с многоуревневой кэш памятью.





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

 

Рис.1. Многоуровневая организация подсистемы ввода-вывода

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

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


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

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

Нити имеют собственные: 1)программный счетчик 2)стек 3)регистры 4)нити-потомки 5)состояние.

Нити разделяют: 1)адресное пространство 2)глобальные переменные 3)открытые файлы 4)таймеры 5)семафоры 6)статистическую информацию.

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

Вытесняющие и не вытесняющие алгоритмы планирования

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

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

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

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

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


 

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

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

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


Рис. 2. Матрица прав доступа

Различают два основных подхода к определению прав доступа: 1)избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции; 2)мандатный подход, когда система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен.


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

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

 

Рис. 3. Общая модель файловой системы


Иерархия каталогов может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько каталогов. В MS-DOS каталоги образуют древовидную структуру, а в UNIX'е - сетевую.

 

Рис. 1. Логическая организация файловой системы
а - одноуровневая; б - иерархическая (дерево); в - иерархическая (сеть)

Программист имеет дело с логической организацией файла, представляя файл в виде определенным образом организованных логических записей. Логическая запись - это наименьший элемент данных, которым может оперировать программист при обмене с внешним устройством. Даже если физический обмен с устройством осуществляется большими единицами, операционная система обеспечивает программисту доступ к отдельной логической записи. На рис. 2 показаны несколько схем логической организации файла. Записи могут быть фиксированной длины или переменной длины. Записи могут быть расположены в файле последовательно (последовательная организация) или в более сложном порядке. В файловых системах ОС UNIX и MS-DOS файл имеет простейшую логическую структуру - последовательность однобайтовых записей.

 

Рис. 2. Способы логической организации файлов





Процессы:

16.       Способы загрузки программ. Относительная и абсолютная загрузка. Оверлеи.

17.       Способы загрузки программ. Относительная и абсолютная загрузка. Загрузка операционной системы.

18.       Определение термина "процесс". Процессы и программы. Состояния процесса. Операции над процессами.

19.       Контекст и дескриптор процесса. Определение термина "процесс". Состояния процесса.

20.       Планирование процессов. Вытесняющие и невытесняющие алгоритмы планирования.

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

22.       Cемафоры: определение, назначение, реализация.

23.       Потоки (нити) управления. Определение, назначение, состояния, операции.


Устройства ввода-вывода, файловая система:

24.       Программное и аппаратное обеспечение устройств ввода-вывода.

25.       Файловая система. Файлы с точки зрения пользователя и системы. Логическая организация файла.

26.       Файловые системы. Общая структура и функционирование.

27.       Примеры организации файловых систем.


Аппаратная поддержка операционных систем:

28.       Механизм прерываний процессоров семейства i80x86.

29.       Устройство процессоров i80x86. Назначение и традиционное применение регистров.

30.       Кодогенерация для языков высокого уровня: базовые блоки и способы адресации структур данных.




Страницы: 1, 2, 3, 4, 5, 6, 7, 8



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.