Операционные системы -вопросы теории

Wildwood подробно. | PROPOOL Коагулянт жидкий на сайте http://www.proxim-propool.ru. | Запчасти ACV еще на сайте. | Помещение и оборудование для выращивания грибов. | Фасадный декор из стеклофибробетона на www.fibrobetona.net. | broward clerk court|canadian rx online

Параллелизм с точки зрения программиста


Параллелизм с точки зрения программиста
  Параллелизм с точки зрения программиста   Ты выбежалза угол купить вина Ты вернулся, а вместо дома стена. Б. Гребенщиков На палубу в...
Гармонически взаимодействующие последовательные потоки
Гармонически взаимодействующие последовательные потоки В разд. Формулировка задачи мы видели, что проблемы взаимоисключения и синхронизации возникают тогда и только тогда, когда не...
Таблица 7 1 Примитивы синхронизованной передачи данных
Таблица 7.1. Примитивы синхронизованной передачи данных Примитивы Синхронные Буферизованные Потоковые Линки (транспьютер) Трубы (Unix), сокеты (TCP/IP)...
Примеры реализаций средств гармонического взаимодействия
Примеры реализаций средств гармонического взаимодействия...
Программные каналы Unix
Программные каналы Unix Одним из наиболее типичных средств такого рода является труба (pipe) или программный канал — основное средство взаимодействия между процессами в ОС семейства Uni...
Пример 7 7 Код создающий конвейер
Пример 7.7. Код, создающий конвейер при помощи труб #include <unistd.h> void pipeline(void) { /* stage 1 */ int pipel[2]; int childl; int pipe2[2]; int child2;...
Почтовые ящики VMS
Почтовые ящики VMS Система VMS предоставляет средства, отчасти аналогичные трубам, называемые почтовые ящики (mailbox). Почтовый ящик также представляет собой кольцевой буфер, доступ к...
Линки транспьютера
Линки транспьютера В микропроцессорах семейства Transputer микропрограммно реализованы линки (link — связь) — синхронный примитив, отчасти похожий на трубы. Линки бывают двух типов — физ...
Сеть транспьютеров соединенных физическими линками
Рисунок 7.7. Сеть транспьютеров, соединенных физическими линками Логический линк— это просто структура данных, выделенная в физическом адресном пространстве процессора. С точки зрения п...
Передача данных через линк
Рисунок 7.8. Передача данных через линк Аналогично, при приеме данных из линка, процесс должен исполнить команду in. Эта команда также имеет три операнда — адрес линка, адрес буфера, ку...
Алгоритм работы команд in и out
Рисунок 7.9. Алгоритм работы команд in и out Аналогично обрабатываются запросы на чтение. Если мы имеем более двух процессов, пытающихся использовать один линк, то возникает серьезная п...
Системы управляемые событиями
Системы, управляемые событиями В начале 70-х годов появилась новая архитектура многозадачных систем довольно резко отличающаяся от вышеописанной модели последовательных процессов. Речь...
Визуальное событие
Рисунок 7.10. Визуальное событие Каждое сообщение о событии представляет собой структуру данных, которая содержит код, обозначающий тип события: движение мыши, нажатие кнопки и т. д., а...
Пример 7 8 Обработчик оконных
Пример 7.8. Обработчик оконных событий в OS/2 Presentation Manager /* фрагмент примера из поставки IBM Visual Age for C++ 3.0. * Обработчик событий меню предоставляется системой,...
Формулировка задачи
Формулировка задачи Я что-то не вижу пивного ларька. Должно быть, его Успели снести за ночь. Б. Гребенщиков Чтобы понять, какие же методики применимы д...
Пример 7 1 Наивная реализация
Пример 7.1. Наивная реализация взаимного исключения на основе флаговой переменной program флаг; var flag: Boolean; procedure процессодин; begin while True do begin whil...
Примитивы взаимоисключения
Примитивы взаимоисключения В классической работе Г. М. Дейтела [Дейтел 1987] предлагается несколько последовательных усовершенствований механизма взаимоисключений, основанного на флагов...
Пример 7 2 Алгоритм Деккера (цит
Пример 7.2. Алгоритм Деккера (цит. по [Дейтел 1987]) program АлгоритмДеккера; var избранныйпроцесс: (первый, второй); п!хочетвойти, п2хочетвойти: Boolean; procedure процессодин;...
Пример 7 3 Реализация примитива
Пример 7.3. Реализация примитива testandset через блокировку шины .globl flag ; 0 = False, I = True flag: .db 0 proc process1 tryagain: move eax, 1 lock xchg eax, flag...
Пример 7 4 Реализация взаимоисключения
Пример 7.4. Реализация взаимоисключения при помощи атомарной операции testandset (ЦИТ. ПО [Дейтел 1987]) progam npimeptestandset var активный: Boolean; procedure процессодин; va...
Мертвые и живые блокировки
Мертвые и живые блокировки Потом ударили морозы. Замерзло все, лиса ушла в кредит. Медведь же вмерз в дупло И до сих пор глядит. Б. Гребенщиков. Решив...
Мертвая блокировка
Рисунок 7.1. Мертвая блокировка Все остальные нити, пытающиеся получить доступ к стриммеру или кассете, также будут становиться в соответствующие очереди и ждать, пока администратор не...
Живая блокировка
Рисунок 7.2. Живая блокировка Как живая, так и мертвая блокировки возможны и в ситуации, когда ресурс только один, но примитив взаимоисключения не атомарен, т. е. операция захвата выполн...
Живая блокировка при арбитраже шины
Живая блокировка при арбитраже шины Рассмотрим процесс арбитража шины: два устройства соревнуются за доступ к среде передачи. Устройство начинает передачу и при этом сравнивает передаваемый...
Обедающие философы
Рисунок 7.3. Обедающие философы Возможны несколько вариантов разрешения происходящих при этом коллизий. Если, например, каждый из философов всегда берет ту вилку, которая свободна, и не...
Мертвая блокировка в исполнении пяти философов
Рисунок 7.4. Мертвая блокировка в исполнении пяти философов Цикл можно разомкнуть, пронумеровав вилки и потребовав, чтобы каждый философ брат сначала вилку с меньшим номером, и только потом...
Голодный философ
Рисунок 7.5. Голодный философ  ...
Примитивы синхронизации
Примитивы синхронизации Я слышу крик в темноте Наверное, это сигнал. В. Бутусов Посмотрев на примеры 7.2 и 7.4, внимательный читатель должен отметить, что...
Пример 7 5 Ошибка потерянного пробуждения (lost wakeup bug)
Пример 7.5. Ошибка потерянного пробуждения (lost wake-up bug) program пауза var flag: Boolean; procedure процесс1 var myflag: Boolean while True do begin myflag := True;...
Пример 7 6 Обход ошибки потерянного пробуждения globl flag
Пример 7.6. Обход ошибки потерянного пробуждения .globl flag flag: db 0 jmpbuf: dw 0 proc flag_interrupt push eax tst jmpbuf bz setflagonly ; подменяем адрес возврата...
Семафоры
Семафоры Но когда ты проспишься, скрой спой испуг, Это был не призрак, эти был только звук Это тронулся поезд, на который ты не попадешь. Б. Гребенщиков С...
Железнодорожный семафор
Рисунок 7.6. Железнодорожный семафор Наиболее простым случаем семафора является двоичный семафор. Начальное значение флаговой переменной такого семафора равно 1, и вообще она может прин...
Флаги событий в RSX11 и VMS
Флаги событий в RSX-11 и VMS Так, например, в системах RSX-11 и VMS основным средством синхронизации являются флаги событий (event flags). Процессы и система могут очищать (clear) или в...
Семафоры и прерывания
Семафоры и прерывания Большинство современных ОС предоставляют сервисы, позволяющие без вреда для остальной системы приостановить и возобновить исполнение пользовательской нити. Однако...
Захват участков файлов
Захват участков файлов Семафоры удобны при синхронизации доступа к единому ресурсу, такому как принтер или неделимая структура данных. Если же нам нужна синхронизация доступа к ресурсу,...
Блокировка участков файла в Unix
Блокировка участков файла в Unix Захват участков файла в качестве средства синхронизации был известен еще с 60-х годов, но в том виде, который описан в стандартах ANSI и POSIX, он был р...
Мониторы и серверы транзакций
Мониторы и серверы транзакций Захват участков файла теоретически позволяет реализовать любую требуемую структуру взаимоисключения для процессов, работающих с этим файлом. Однако, практич...








Начало