- •История операционных систем; понятия операционных систем (понятие Оперативной системы читай из первого вопроса (весь первый вопрос)
- •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.
- •Система адресации данных
14 Задача о читателях и писателях.
Важной и часто встречающейся задачей, решение которой требует синхронизации, является задача «Читатели — писатели». Эта задача имеет много вариантов. Определить ее можно следующим образом. Имеются данные, совместно используемые рядом процессов. Данные могут находиться в файле в блоке основной памяти или даже в регистрах процессора. Имеются несколько процессов, которые только читают эти данные (Читатели), и несколько других, которые только записывают данные (Писатели). При этом должны удовлетворяться следующие условия.- Любое число читателей могут одновременно читать файл.- Записывать информацию в файл в определенный момент времени может только один Писатель.- Когда Писатель записывает информацию в файл, ни один Читатель не может его читать. Пример использования — работа с библиотечным каталогом. Другим типичным примером служит система автоматизированной продажи билетов. Процессы «Читатели» обеспечивают нас справочной информацией о наличии свободных билетов на тот или иной рейс. Процессы «Писатели» запускают с пульта кассира, когда он оформляет для нас тот или иной билет. Имеется большое количество как «Читателей», так и «Писателей». Наиболее характерная область использования этой задачи в вычислительной системе — при построении систем управления файлами. Два класса процессов имеют доступ к некоторому ресурсу (области памяти, файлам). «Читатели» — это процессы, которые могут параллельно считывать информацию из некоторой общей области памяти, являющейся критическим ресурсом. «Писатели» — это процессы, записывающие информацию в эту область памяти, исключая при этом и друг друга и процессы «Читатели». Широко распространены следующие условия: 1.Приоритетное чтение: Устанавливается приоритет в использование критического ресурса процесса Читатели. Это означает, что если хотя бы один Читатель пользуется ресурсом, то он закрыт для использования всем Писателям и доступен для использования всем Читателям. При появлении запроса от Писателя необходимо закрыть дальнейший доступ всем тем процессам Читателям, которые выдадут запрос на критический ресурс после него.
15 Задача о спящем брадобрее. Задача о спящем брадобрее. Действие еще одной классической проблемной ситуации межпроцесс-ного взаимодействия разворачивается в парикмахерской. В парикмахерской есть один брадобрей, его кресло и n стульев для посетителей. Если желаю-щих воспользоваться его услугами нет, брадобрей сидит в своем кресле и спит. Если в парикмахерскую приходит клиент, он должен разбудить брадо-брея. Если клиент приходит и видит, что брадобрей занят, он либо садится на стул (если есть место), либо уходит (если места нет). Необходимо запро-граммировать брадобрея и посетителей так, чтобы избежать состояния состя-зания. В решении можно использовать три семафора: customers, для подсчета ожидающих посетителей (клиент, сидящий в кресле брадобрея, не учитыва-ется — он уже не ждет); barbers, количество брадобреев 0 или 1), простаи-вающих в ожидании клиента, и mutex для реализации взаимного исключения. Также используется переменная waiting, предназначенная для подсчета ожи-дающих посетителей. Она является копией переменной customers. Присутст-вие в программе этой переменной связано с тем фактом, что прочитать теку-щее значение семафора невозможно. В этом решении посетитель, заглядывающий в парикмахерскую, дол-жен сосчитать количество ожидающих посетителей. Если посетителей мень-ше, чем стульев, новый посетитель остается, в противном случае он уходит. Когда брадобрей приходит утром на работу, он выполняет процедуру barber, блокируясь на семафоре customers, поскольку значение семафора равно 0. Затем брадобрей засыпает, как показано на рис., и спит, пока не при-дет первый клиент. Приходя в парикмахерскую, посетитель выполняет про-цедуру customer, запрашивая доступ к mutex для входа в критическую об-ласть. Если вслед за ним появится еще один посетитель, ему не удастся что-либо сделать, пока первый посетитель не освободит доступ к mutex. Затем посетитель проверяет наличие свободных стульев, в случае неудачи освобо-ждает доступ к mutex и уходит. Если свободный стул есть, посетитель увели-чивает значение целочисленной переменной waiting. Затем он выполняет процедуру up на семафоре customers, тем самым активизируя поток брадо-брея. В этот момент оба — посетитель и брадобрей — активны. Когда посе-титель освобождает доступ к mutex, брадобрей захватывает его, проделывает некоторые служебные операции и начинает стричь клиента. По окончании 7 стрижки посетитель выходит из процедуры и покидает парикмахерскую. В отличие от предыдущих программ, цикла посетителя нет, поскольку каждого посетителя стригут только один раз. Цикл брадобрея существует, и брадо-брей пытается найти следующего посетителя. Если ему это удается, он стри-жет следующего посетителя, в противном случае брадобрей засыпает. Стоит отметить, что, несмотря на отсутствие передачи данных в проблеме читате-лей и писателей и в проблеме спящего брадобрея, обе эти проблемы относят-ся к проблемам межпроцессного взаимодействия, поскольку требуют син-хронизации нескольких процессов.