- •Понятие операционной системы (ос). Основные функции ос.
- •Сервисы, предоставляемые типичными ос. Основные этапы развития ос.
- •Классификация ос: по назначению, по режиму обработки задач, по способу взаимодействия с пользователем. Компоненты типичной ос.
- •Типы структур ос. Режимы работы ос. Понятие операционной и программной среды.
- •Системный таймер. Программные таймеры. Сторожевой таймер.
- •Утилиты. Понятие транслятора, компилятора, интерпретатора, ассемблера, дизассемблера, компоновщика, отладчика.
- •Преимущества многозадачного режима работы ос. Понятие процесса. Основные причины создания, завершения процессов в вычислительной системе (вс).
- •Модели процесса: с двумя состояниями, с пятью состояниями.
- •Описание процессов: атрибуты, управляющий блок (дескриптор). Действия ос при создании, переключении процессов.
- •Подходы к разработке кода ос по отношению к процессам.
- •Понятие потока. Сравнение процессов и потоков. Понятие, преимущества многопоточности.
- •Способы реализации потоков: в пространстве пользователя, в пространстве ядра, смешанная. Кратко
- •Подробно
- •Виды планирования процессов (потоков). Краткосрочное планирование: режимы решения, стратегии.
- •Стратегии распределения ресурсов вс: одноочередные, многоочередные.
- •Основные режимы работы вс.
- •Основные категории ресурсов ос. Типы доступа к ресурсам ос.
- •Понятие взаимной блокировки (тупика). Примеры, условия возникновения, обнаружение, предупреждение взаимоблокировок.
- •Понятие параллельных, последовательных процессов (потоков). Виды взаимодействия процессов (потоков). Проблемы взаимодействия параллельных процессов (потоков). Пример состояния гонок.
- •Понятие взаимного исключения, критического ресурса, критической секции. Проблемы, условия, способы взаимного исключения.
- •Механизмы взаимодействия процессов (потоков): очереди сообщений, разделяемая память, обмен сообщениями, сокеты.
- •Понятие семафора. Решение задачи взаимоисключения с использованием семафора. Понятие сигнализирующего семафора, мьютекса, монитора.
- •Проблема читателей-писателей
- •Вторая проблема читателей-писателей (приоритет писателя)
- •Третья проблема читателей-писателей (честное распределение ресурсов)
- •Понятие памяти. Функции подсистемы управления памятью. Типы адресов. Понятие виртуального адресного пространства (вап). Типы структур вап. Способы преобразования виртуальных адресов в физические.
- •Механизмы распределения памяти: разделами, свопинг, виртуальная память.
- •Механизмы распределения памяти: страничный.
- •Механизмы распределения памяти: сегментный, сегментностраничный.
- •Принципы организации подсистемы ввода-вывода. Способы реализации ввода-вывода. Уровни подсистемы ввода-вывода.
- •Понятие файловой системы (фс), файла. Функции фс.
- •Физическая организация фс, файла. Логическая организация фс.
- •Свойства безопасной информационной системы. Понятие угрозы, атаки, риска. Классификация угроз. Функции ос по защите данных.
- •Современне ос. Тенденции, перспективы развития современных ос.
Понятие параллельных, последовательных процессов (потоков). Виды взаимодействия процессов (потоков). Проблемы взаимодействия параллельных процессов (потоков). Пример состояния гонок.
Параллельные процессы — это процессы, которые выполняются одновременно на разных процессорах или на одном процессоре, но на разных ядрах. Они могут взаимодействовать друг с другом через механизмы межпроцессного взаимодействия (IPC- Inter-Process Communication), такие как разделяемая память, семафоры, мьютексы и сообщения.
Последовательные процессы — это процессы, которые выполняются один за другим на одном процессоре. Они не могут взаимодействовать напрямую, но могут использовать механизмы IPC для коммуникации.
Виды взаимодействия процессов:
– Синхронизация - это процесс координации действий между различными процессами или потоками для обеспечения их корректного взаимодействия и предотвращения нежелательных состояний, таких как гонки данных или тупиков. Процессы могут синхронизироваться друг с другом, используя механизмы блокировки и условные переменные.
– Обмен данными: Процессы могут обмениваться данными через разделяемую память, каналы, сокеты, общие переменные и другие механизмы IPC.
– Кооперация: Процессы могут кооперироваться, выполняя задачи в определенной последовательности или в зависимости от результатов друг друга.
Проблемы взаимодействия параллельных процессов:
Состояние гонок: возникает, когда два или более параллельных процесса пытаются получить доступ к одному и тому же ресурсу одновременно, и один из них может изменить состояние ресурса, пока другой еще не закончил с ним работать. Это может привести к непредсказуемым результатам или ошибкам.
Тупики возникают, когда два или более процесса пытаются получить доступ к ресурсам, которые уже используются другими процессами, и ни один из них не может продолжить работу без освобождения занятых ресурсов.
Некорректное использование разделяемых ресурсов: если несколько процессов пытаются получить доступ к одному и тому же ресурсу, то могут возникнуть конфликты и ошибки.
Ошибки в синхронизации: если процессы не синхронизированы должным образом, то возможны проблемы с корректной работой программы.
Для предотвращения этих проблем необходимо использовать соответствующие механизмы синхронизации, такие как мьютексы, семафоры и события, а также тщательно планировать доступ к ресурсам и взаимодействие между процессами.
Понятие взаимного исключения, критического ресурса, критической секции. Проблемы, условия, способы взаимного исключения.
Взаимное исключение – необходимость использования разделяемого (критического) ресурса только одним процессом в каждый момент времени.
Критические ресурсы – это ресурсы, которые в какой-то момент требуются нескольким процессам. Это проблема возникает в результате того, что процессы с ресурсами отрабатываются за разное время.
Критическая область, или секция(КС), – часть программы, в которой есть обращение к совместно используемым данным. КС обычно реализуется с помощью блокировок или семафоров. Блокировка - это механизм, который позволяет потоку захватить ресурс и предотвратить доступ других потоков к этому ресурсу. Семафор - это другой механизм, который используется для управления доступом к ресурсам. Оба этих механизма обеспечивают синхронизацию потоков и предотвращают ошибки, связанные с доступом к общим ресурсам.
Раота с КС на С++:
// Определяем критическую секцию
CRITICAL_SECTION cs;
// Вход в критическую секцию
EnterCriticalSection(&cs);
// Выход из критической секцию=и
LeaveCriticalSection(&cs);
// Инициализация критической секции чтобы убедиться, что критическая секция готова к использованию
InitializeCriticalSection(&cs);
// Удаление критической секции
DeleteCriticalSection(&cs)
Требования к КС:
в любой момент времени только один процесс может находиться в своей критической секции по данному ресурсу (это главное требование - взаимное исключение);
ни один процесс не должен ждать бесконечно долго входа в критическую секцию (реализация взаимного исключения не должна приводить к ошибкам или невозможности выполнения процессами своих функций - взаимное исключение только устанавливает порядок доступа к общим ресурсам, исключающий их разрушение);
ни один процесс не может находиться в своей критической секции бесконечно долго (это следствие предыдущего требования - все процессы в течение приемлемого времени должны получить доступ к разделяемым данным для выполнения своих функций);
никакой процесс, находящийся вне своей критической секции, не должен задерживать выполнение других процессов, ожидающих входа в свои критические секции.
Способы реализации взаимного исключения:
- запрещение прерывания – самое простое решение. Запрещение всех прерываний при входе процессоров в критическую область и разрешение прерываний по выходе из области. Это решение нецелесообразно. Если все прерывания отключились и возник какой-то сбой, ОС закончит свое существование. Если система многопроцессорная, второй процессор все равно может зайти в критическую область.
- переменные блокировки.
- строгое чередование.
- алгоритм Петерсона.
- команда TSL (Test and Set Lock – проверить и заблокировать). Это решение требует участия аппаратного обеспечения. Многие компьютеры имеют команду: TSL RX, LOCK. В регистр RX считывается содержимое слова памяти LOCK, в ячейке памяти LOCK сохраняется некоторое ненулевое значение. Операция считывания слова неделима. Процессор, выполняющий команду TSL, блокирует шину памяти, чтобы остальные процессоры, если они есть, не могли обратиться к памяти.
Способы взаимного исключения. Способы совместного использования информации процессами (потоками). Механизмы взаимодействия процессов (потоков): неименованные (программные) и именованные (FIFO) каналы.
Способы реализации взаимного исключения:
- запрещение прерывания – самое простое решение. Запрещение всех прерываний при входе процессоров в критическую область и разрешение прерываний по выходе из области. Это решение нецелесообразно. Если все прерывания отключились и возник какой-то сбой, ОС закончит свое существование. Если система многопроцессорная, второй процессор все равно может зайти в критическую область.
- переменные блокировки.
- строгое чередование.
- алгоритм Петерсона.
- команда TSL (Test and Set Lock – проверить и заблокировать). Это решение требует участия аппаратного обеспечения. Многие компьютеры имеют команду: TSL RX, LOCK. В регистр RX считывается содержимое слова памяти LOCK, в ячейке памяти LOCK сохраняется некоторое ненулевое значение. Операция считывания слова неделима. Процессор, выполняющий команду TSL, блокирует шину памяти, чтобы остальные процессоры, если они есть, не могли обратиться к памяти.
Для взаимодействия процессов создается совместный буфер.
Буфер- это область памяти, которую используют два или более процессов для обмена данными. Буфер создается одним процессом и используется другими процессами для передачи данных. Имеет фиксированные размеры, следовательно, процессы могут находиться в состояние ожидания, когда:
- буфер заполнен – ожидает процесс-производителя;
- буфер пуст – ожидает процесс-потребитель.
Каналы (транспортеры) являются средством взаимодействия процессов, представляют собой область памяти, имеющую файловую организацию, для которой обеспечивается запись и считывание данных. Порядок записи данных на транспортер неизменен, не допускается повторное считывание данных. Каналы позволяют процессам отправлять и получать данные в режиме реального времени, что делает их очень полезными для разработки приложений.
Сигналы. Сигнал является механизмом передачи требования от одного процесса к другому на немедленное выполнение действия. Обработчик сигнала создается процессом и помещается в начале первого потока процесса. Является аналогом обработки прерывания. Процесс, посылающий сигнал типа флаг, может передать дополнительную информацию обработчику сигнала.
Неименованный канал (или программный канал) представляется в виде области памяти на внешнем запоминающем устройстве, управляемой операционной системой, которая осуществляет выделение взаимодействующим процессам частей из этой области памяти для совместной работы, т.е. это область памяти является разделяемым ресурсом.
Для доступа к неименованному каналу система ассоциирует с ним два файловых дескриптора. Один из них предназначен для чтения информации из канала, т.е. с ним можно ассоциировать файл, открытый только на чтение. Другой дескриптор предназначен для записи информации в канал. Соответственно, с ним может быть ассоциирован файл, открытый только на запись.
Программные каналы не имеют имен, и их главным недостатком является невозможность передачи информации между неродственными процессами. Два неродственных процесса не могут создать канал связи между собой (если не передавать дескриптор).
Аббревиатура FIFO расшифровывается как “first in, first out” – “первым вошел, первым вышел”, то есть эти каналы работают как очереди. Именованные каналы в Unix функционируют подобно неименованным – они позволяют передавать данные только в одну сторону. Однако в отличие от программных каналов каждому каналу FIFO сопоставляется полное имя в файловой системе, что позволяет двум неродственным процессам обратиться к одному и тому же FIFO.