- •Назначение и функции ос
- •Классификация ос
- •Архитектура ос
- •Управление процессами, состояния процессов, системные очереди.
- •Планирование с динамическими приоритетами
- •Страничное распределение памяти
- •Стратегии работы со страницами памяти
- •Сегментное распределение памяти
- •Сегментно-страничное распределение памяти
- •Процессы и потоки в ос
- •Проблема синхронизации
- •Средства синхронизации и взаимодействия процессов. Семафоры и мьютексы (posix).
- •Средства синхронизации и взаимодействия процессов. Сигналы и события в ос.
- •Управление файловыми системами, виртуальная фс
- •Файловые системы unix, основные принципы, пример реализации - ext2fs.
- •Журналируемые фс, примеры систем, организация системы ntfs.
- •Современные файловые системы на высокопроизводительных платформах xfs, jfs и zfs
- •Сетевая файловая система, кеширование файловых систем
- •Стандарты в области операционных систем
-
Средства синхронизации и взаимодействия процессов. Сигналы и события в ос.
Потребность в синхронизации потоков возникает только в мультипрограммной операционной системе и связана с совместным использованием аппаратных и информационных ресурсов вычислительной системы. Синхронизация необходима для исключения гонок и тупиков при обмене данными между потоками, разделении данных, при доступе к процессору и устройствам ввода-вывода.
Во многих операционных системах эти средства называются средствами межпроцессного взаимодействия — Inter Process Communications (IPC), что отражает историческую первичность понятия "процесс" по отношению к понятию "поток".
Любое взаимодействие процессов или потоков связано с их синхронизацией, которая заключается в согласовании скоростей потоков путем приостановки потока до наступления некоторого события и последующей его активизации при наступлении этого события. Синхронизация лежит в основе любого взаимодействия потоков, связано ли это взаимодействие с разделением ресурсов или с обменом данными. При совместном использовании аппаратных ресурсов синхронизация также совершенно необходима.
Таким образом, потоки должны взаимодействовать друг с другом в двух основных случаях:
совместно используя разделяемый ресурс (чтобы не разрушить его);
когда нужно уведомлять другие потоки о завершении каких-либо операций.
Для синхронизации потоков прикладных программ программист может использовать, как собственные средства и приемы синхронизации, так и средства операционной системы.
,
Ввод-вывод в ОС, спулинг
Ввод-вывод – одна из самых сложных задач проектирования ОС. Это определяется многообразием устройств ввода-вывода, которые должна поддерживать ОС, и необходимостью эффективного виртуального интерфейса в многозадачном режиме.
Любые операции ввода-вывода являются привилегированными и выполняются только под управление ОС. Для этого в большинстве процессоров организуется режим супервизора (выполнение команд ввода-вывода разрешено) и пользователя (выполнение команд ввода-вывода запрещено, а попытка ввода-вывода продолжает исключительную ситуацию).
Устройства ввода-вывода (УВВ) делятся на разделяемые (посредством механизма прямого доступа НМД, CD-ROM) и неразделяемые (посредством механизма последовательного доступа принтер, НМЛ).
Роль ОС в общении задач с УВВ определяется тремя причинами:
– необходимость разрешения конфликтов между задачами, которые обращаются к УВВ;
– необходимость более эффективного использования ресурсов (например, чтение данных с жесткого диска в последовательности, которая дает минимальное перемещение головок);
– ошибки в программах ввода-вывода задачи могут привести к краху всего вычислительного процесса.
Супервизор ввода-вывода (компонент ОС, отвечающий за управление вводом-выводом)
Существует два режима ввода-вывода: обмен с опросом готовности и обмен по прерываниям
Термин спулинг (spooling) не имеет общепринятого русского аналога.В соответствии с программистским фольклором, слово это происходит отаббревиатуры Simultaneous Peripherial Operation Off Line.Эту фразу трудно дословно перевести на русский язык; имеется в видуметод работы с внешними устройствами вывода (реже - ввода) в многозадачной ОС или многомашинной среде, при которой задачам создается иллюзия одновременного доступа к устройству. При этом, однако, задачи не получают к устройству прямого доступа, а работают в режиме off-line (без прямого подключения). Выводимые данные накапливаются системой, а затем выводятся на устройство так, чтобы вывод различных задач не смешивался.