
- •96. Шины локального управления.
- •97. Последовательное и параллельное программирование.
- •98. Мультипрограммирование и многозадачность.
- •99. Однопроцессорная и распределённая архитектура.
- •100. Функции ос в среде реального времени. Распределённые ос.
- •102. Взаимные исключения и тупики. Синхронизация процесса.
- •103. Обмен информацией между процессами.
- •104. Среда программирования и структура программ реального времени.
102. Взаимные исключения и тупики. Синхронизация процесса.
Тупик (deadlock) – множество заблокированных процессов, каждый из которых владеет некоторым ресурсом и ожидает ресурса, которым владеет какой-либо другой процесс из этого множества. Простой пример тупика легко смоделировать с помощью семафоров (см. "Методы синхронизации процессов"). Пусть в системе есть два внешних устройстваA и B, к которым обращаются два процесса P1 и P2. С каждым из внешних устройств с целью синхронизации связан семафор, которые будем обозначать также A и B. Семафоры изначально открыты. Пусть каждому из процессов необходимы оба устройства, но они обращаются к ним в противоположном порядке: P1: wait(A); wait (B) P2: wait(B); wait (A). В данном случае будет иметь место тупик: процесс P1, закрыв семафор A и заблокировав первое устройство, никогда не дождётся, когда откроется семафор B,связанный со вторым устройством, так как его уже успел закрыть процесс P2. Аналогично, процесс P2 никогда не дождется, когда откроется семафор A.
Тупик может возникнуть, если одновременно выполняются следующие четыре условия: - взаимное исключение: только один процесс в каждый момент времени может получить доступ к ресурсу; - удержание и ожидание: процесс, удерживающий один ресурс, ожидает приобретения других ресурсов, которыми обладают другие процессы; - отсутствие прерываний: процесс может освободить ресурс только добровольно, когда завершит свою работу; - циклическое ожидание: существует множество {P0, P1, … P0}, такое, что P0 ожидает ресурса, которым обладает P1; P1 ожидает ресурса, которым обладает P2 … Pn ожидает ресурса, которым обладает P0
^ Взаимное исключение – одно из необходимых условий тупика: только один процесс в каждый момент времени может получить доступ к ресурсу.
Синхронизация процессов – одна из интереснейших и наиболее актуальных тем, в связи с широким распространением параллельных вычислительных систем и параллельных алгоритмов решения задач, требующих синхронизации параллельных процессов и потоков по общим ресурсам и событиям.
103. Обмен информацией между процессами.
Потоки одного процесса не имеют доступа к адресному пространству другого процесса. Однако существуют специализированные механизмы для передачи данных между процессами. Вообще обмен данными между процессами (Interprocess Communication, IPC) в свое время начинался в виде процедуры перемещения перфокарт из выходного отверстия одного вычислительного устройства в устройство чтения другого вычислительного устройства. Позже, с развитием операционных систем, обмен данными между процессами проделал определенный путь в сторону высоких технологий. Наиболее впечатляющим примером обмена информацией является создание Всемирной паутины (World Wide Web). Приведем краткий список механизмов IPC, встроенных в Windows: Буфер обмена (clipboard) — одна из самых примитивных и хорошо известных форм IPC. Основная его задача состоит в поддержке обмена данными между программами по желанию и под контролем пользователя.Библиотеки динамической компоновки. Когда в рамках DLL объявляется переменная, то ее можно сделать разделяемой (shared). Все процессы из DLL, обращающиеся к такой переменной, будут использовать одно и то же место в физической памяти. Сообщение WM_COPYDATA, которое применяется для передачи участка памяти другому процессу. Разделяемая память (shared memory) реализуется при помощи объектов ядра «проекция файла», которые осуществляют отображение файлов на оперативную память. Протокол динамического обмена данными (Dynamic Data Exchange, DDE), который определяет все основные функции для обмена данными между приложениями. ActiveX является универсальной технологией, и одним из ее применений является обмен данными между процессами. Каналы (pipes) — мощная технология обмена данными. Сокеты (sockets) — очень важная технология, так как именно она отвечает за обмен данными в сети Интернет.