Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Проблема синхронизации






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

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

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

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

15. Физическая организация ФС. Принцип действия жёсткого диска. RAID массивы.

1. ФИЗИЧЕСКАЯ ОРГАНИЗАЦИЯ ФАЙЛОВОЙ СИСТЕМЫ

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

2. ДИСКИ, РАЗДЕЛЫ, СЕКТОРЫ, КЛАСТЕРЫ

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

На каждой стороне каждой пластины размечены тонкие концентрические кольца — дорожки (traks), на которых хранятся данные. Количество дорожек зависит от типа диска. Нумерация дорожек начинается с 0 от внешнего края к центру диска. Когда диск вращается, элемент, называемый головкой, считывает двоичные данные с магнитной дорожки или записывает их на магнитную дорожку.

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

Совокупность дорожек одного радиуса на всех поверхностях всех пластин пакета называется цилиндром (cylinder). Каждая дорожка разбивается на фрагменты, называемые секторами (sectors), или блоками (blocks), так что все дорожки имеют равное число секторов, в которые можно максимально записать одно и то же число байт. Сектор имеет фиксированный для конкретной системы размер, выражающийся степенью двойки. Чаще всего размер сектора составляет 512 байт. Учитывая, что дорожки разного радиуса имеют одинаковое число секторов, плотность записи становится тем выше, чем ближе дорожка к центру. Сектор — наименьшая адресуемая единица обмена данными дискового устройства с оперативной памятью. Для того чтобы контроллер мог найти на диске нужный сектор, необходимо задать ему все составляющие адреса сектора: номер цилиндра, номер поверхности и номер сектора. Так как прикладной программе в общем случае нужен не сектор, а некоторое количество байт, не обязательно кратное размеру сектора, то типичный запрос включает чтение нескольких секторов, содержащих требуемую информацию, и одного или двух секторов, содержащих наряду с требуемыми избыточные данные.

 

Операционная система при работе с диском использует, как правило, собственную единицу дискового пространства, называемую кластером (cluster). При создании файла место на диске ему выделяется кластерами. Например, если файл имеет размер 2560 байт, а размер кластера в файловой системе определен в 1024 байта, то файлу будет выделено на диске 3 кластера.

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

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

Прежде чем форматировать диск под определенную файловую систему, он может быть разбит на разделы. Раздел — это непрерывная часть физического диска, которую операционная система представляет пользователю как логическое устройство (используются также названия логический диск и логический раздел). Логическое устройство функционирует так, как если бы это был отдельный физический диск. Именно с логическими устройствами работает пользователь, обращаясь к ним по символьным именам, используя, например, обозначения А, В, С, SYS и т. п. Операционные системы разного типа используют единое для всех них представление о разделах, но создают на его основе логические устройства, специфические для каждого типа ОС. Так же как файловая система, с которой работает одна ОС, в общем случае не может интерпретироваться ОС другого типа, логические устройства не могут быть использованы операционными системами разного типа. На каждом логическом устройстве может создаваться только одна файловая система.

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

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

 

16. Определение операционной системы, среды и оболочки.

 

Операцио́ нная систе́ ма, сокр. ОС (англ. operating system, OS) — комплекс взаимосвязанных программ, предназначенных для управления ресурсами вычислительного устройства и организации взаимодействия с пользователем.

 

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

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

Есть операционные среды, позволяющие управлять вычислительными процессами и файлами встандартной операционной системе посредством графического пользовательского интерфейса, такие как Enlightenment, GNOME, KDE и пр.

Существуют также операционные среды, предназначенные для работы под альтернативнымиоперационными системами (например, GEOS, Microsoft Windows 1. 0 - 3. x, 95, 98 и ME на базе MS - DOS), причем сама ОС может включаться в поставку операционной среды, а некоторые альтернативные ОС(например, Windows NT, Mac OS), наоборот, включают графические операционные среды в свой состав.

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

 

Оболо́ чка операцио́ нной систе́ мы (от англ. shell «оболочка») — интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.

 

17. Синхронизация процессов. Критическая секция и семафоры. Алгоритм Дейкстра

 

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

- блокирующие переменные;

- семафоры;

- антидедлоки и т.д.

 

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

Слово «семафор» в действительности является старым железнодорожным термином. Семафор в положении ON (руки подняты вверх) если ресурс свободен и в положении OFF (руки опущены) если ресурс недоступен (должны ждать).

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

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

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

Когда Машенька напечатала все свои плакаты, менеджер печати увеличивает семафор на 1. Теперь его значение вновь равно 1 и принтер может принимать задания снова.

При управлении семафором(при запросе ресурсов) процесс устанавливает флаг операции:

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

Если флаг положителен, то его значение добавляется к семафору. Это соответствует возвращению ресурсов множеству семафоров приложения. Ресурсы всегда нужно возвращать множеству семафоров, если они больше не используются!

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

 

Алгори́ тм Де́ йкстры (Dijkstra’s algorithm) — алгоритм на графах, изобретённый нидерландским ученым Э. Дейкстрой в 1959 году. Находит кратчайшее расстояние от одной из вершин графа до всех остальных. Алгоритм работает только для графов без рёбер отрицательного веса. Алгоритм широко применяется в программировании и технологиях, например, его использует протокол OSPF для устранения кольцевых маршрутов.

 

 

18. Физическая организация ФС. Размещение информации в ФС.

Размещение файлов связными списками

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

Размещение файлов с использованием связных списков предоставляет следующие преимущества:

§ отсутствие внешней фрагментации (есть только небольшая внутренняя фрагментация, связанная с тем, что размер файла может не делиться нацело на размер кластера);

§ минимум информации, необходимой для хранения в заголовке файла (только ссылки на первый кластер);

§ возможность динамического изменения размера файла;

§ простота реализации управления свободными блоками.

Этот подход, однако, не лишен и серьезных недостатков:

§ отсутствие эффективной реализации случайного доступа к файлу: для того чтобы получить доступ к кластеру с номером п, нужно прочитать все кластеры файла с номерами от 1 до n-1;

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

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

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

Этот подход заключается в том, что все ссылки, которые формируют списки кластеров файла, хранятся в отдельной области файловой системы фиксированного размера, формируя таблицу размещения файлов (File Allocation Table, FAT). Элемент такой таблицы соответствует кластеру на диске и может содержать:

§ номер следующего кластера, если этот кластер принадлежит файлу и не является его последним кластером;

§ индикатор конца файла, если этот кластер является последним кластером файла;

§ индикатор, который показывает, что этот кластер свободен.

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


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

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

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

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

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

 

19. Функциональные компоненты ОС. Охарактеризовать каждую компоненту.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.