- •История операционных систем; понятия операционных систем (понятие Оперативной системы читай из первого вопроса (весь первый вопрос)
- •3) Технологии ввода/вывода, интерфейсы операционных систем; пакетная технология.
- •4 Виды операционных систем. Архитектура операционных систем.
- •5 Модели процессов и потоков.
- •2.1.2 Модель процесса
- •2.1.4 Завершение процесса
- •2.1.5 Иерархия процессов
- •2.1.6 Состояние процессов
- •2.2.2 Модель потока
- •2.2.3 Преимущества использования потоков
- •6 Управление процессами.
- •7Потоки в процессах и реализация многопоточности.
- •Типы реализации потоков
- •8 Гонки. Взаимное исключение и его реализация.
- •9 Виды и механизмы прерываний.
- •10Необходимость синхронизации и гонки, критическая секция
- •11 Блокирующие переменные, семафоры, мьютексы.
- •Семафоры
- •12 Мониторы, тупики, синхронизирующие объекты.
- •13 Задача об обедающих философов.
- •14 Задача о читателях и писателях.
- •16 Алгоритмы планирования процессов.
- •Алгоритмы планирования процессов
- •17 Фиксированное и динамическое распределение памяти.
- •18 Страницы и сегменты в памяти, адресация.
- •19 Кэширование данных, свопинг.
- •20 Виртуальная память: таблицы страниц. Оверлейные структуры
- •21 Файлы и их атрибуты.
- •11.1.5 Атрибуты файла
- •22 Каталоги и приемы их организации.
- •23 Методики размещения файлов.
- •24 Реализация файловых систем.
- •25 Надежность и производительность файловых систем.
- •26 Журнализация.
- •27 Файловая система fat.
- •28 Файловая система ntfs.
- •29 Файловые системы Ext2 и Ext3.
- •Система адресации данных
10Необходимость синхронизации и гонки, критическая секция
Эффект гонок - это ситуация, когда два или более процессов обрабатывают разделяемые данные, и конечный результат обработки зависит от соотношения скоростей процессов. Это значит что, если процессу не хватило кванта времени для обработки разделяемых ресурсов, то другой процесс может войти в состояние выполнения и модифицировать разделяемый ресурс так, что при возврате управления первому процессу, ресурс станет для него неактуальным (непригодным для использования
Критическая секция — это часть программы, результат выполнения которой может непредсказуемо меняться, если переменные, относящиеся к этой части программы, изменяются другими потоками в то время, когда выполнение этой части еще не завершено. Критическая секция всегда определяется по отношению к определенным критическим данным, при несогласованном изменении которых могут возникнуть нежелательные эффекты. В предыдущем примере такими критическими данными являлись записи файла базы данных. Во всех потоках, работающих с критическими данными, должна быть определена критическая секция. Заметим, что в разных потоках критическая секция состоит в общем случае из разных последовательностей команд.
Чтобы исключить эффект гонок по отношению к критическим данным, необходимо обеспечить, чтобы в каждый момент времени в критической секции, связанной с этими данными, находился только один поток. При этом неважно, находится этот поток в активном или в приостановленном состоянии. Этот прием называют взаимным исключением. Операционная система использует разные способы реализации взаимного исключения
Синхронизация – основа любого взаимодействия процессов, связано ли это взаимодействие с разделением ресурсов или с обменом данными. Необходимость в синхронизации возникает если:1) функции, выполняемые различными процессами, связаны (например, одна задача готовит данные для другой). Такая синхронизация называется синхронизацией по информации;2) необходимо упорядочить доступ нескольких процессов к разделяемому ресурсу;3) необходимо синхронизировать процесс с внешним событием (с помощью механизма прерываний);4) необходимо приостановить процесс до некоторого момента времени, либо запустить процесс в данный момент. Такая синхронизация носит название синхронизации процессов во времени.
11 Блокирующие переменные, семафоры, мьютексы.
Блокирующие переменные. Для синхронизации процессов прикладной программист может использовать глобальные блокирующие переменные. С этими переменными, к которым все процессы имеют прямой доступ, программист работает, не обращаясь к системным вызовам ОС. Каждому набору критических данных ставится в соответствие двоичная переменная, которой процесс присваивает значение 0, когда он входит в критическую секцию, и значение 1, когда он ее покидает. Если переменная установлена в 0, то данные заняты и запрашивающий процесс продолжает запрос. Если же данные свободны, то значение переменной устанавливается в 0 и процесс входит в критическую секцию. После того как он выполнит все действия с данными, значение переменной снова устанавливается равным 1. ОС.
Мью́текс — одноместный семафор, служащий в программировании для синхронизации одновременно выполняющихся потоков.
Мьютексы — это один из вариантов семафорных механизмов для организации взаимного исключения. Они реализованы во многих ОС, их основное назначение — организация взаимного исключения для потоков из одного и того же или из разных процессов.
Мьютексы — это простейшие двоичные семафоры, которые могут находиться в одном из двух состояний — отмеченном или неотмеченном (открыт и закрыт соответственно). Когда какой-либо поток, принадлежащий любому процессу, становится владельцем объекта mutex, последний переводится в неотмеченное состояние. Если задача освобождает мьютекс, его состояние становится отмеченным.
Задача мьютекса — защита объекта от доступа к нему других потоков, отличных от того, который завладел мьютексом. В каждый конкретный момент только один поток может владеть объектом, защищённым мьютексом. Если другому потоку будет нужен доступ к переменной, защищённой мьютексом, то этот поток засыпает до тех пор, пока мьютекс не будет освобождён.
Цель использования мьютексов — защита данных от повреждения; однако им порождаются другие проблемы — такие, как взаимная блокировка (клинч) и Состояние гонки.
Семафор - механизм реализации взаимоисключения процессов