Программирование - это просто
Advertisement
Главная arrow Математика и информатика arrow Теория операционных систем (платный раздел) arrow Теория операционных систем. Урок 3. Межпроцессное взаимодействие – состояние состязания, критические
29.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Теория операционных систем. Урок 3. Межпроцессное взаимодействие – состояние состязания, критические Печать E-mail
Автор megabax   
22.11.2023 г.
New Page 1

Теория операционных систем. Урок 3. Межпроцессное взаимодействие – состояние состязания, критические области.

Чтобы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находится здесь.


На прошлом уроке мы с вами рассмотрели такую функцию операционной системы, как управление процессами. Узнали что такое "процесс", когда процессы запускаются и удаляются, когда происходит переключение между процессами и в каких они могут быть состояниях. Сегодня займемся межпроцессорным взаимодействием.

Итак, очевидно, что данные одного процесса могут понадобиться данным другого процесса. Вот ситуации, когда процессам приходиться взаимодействовать:

  • Передача информации от одного процесса к другому.

  • Контроль над деятельностью процесса, например, если они конкурируют за один ресурс.

  • Согласование действий процессов, например, когда один процесс подготавливает данные, а другие как то обрабатывает их (выводит на печать, в файл и так далее).

Вторые два случае справедливы также и для потока, в первом случае у потоков нет проблем, так как они используют одно и тоже адресное пространство.
 

Итак, в чем же проблема взаимодействия между процессорами?

Дело в том, что ...

...

...

...

...

...

Данный эмулятор имитирует наш пример: два процесса кладут файлы в очередь, а спулер их печатает:

 

Теория операционных систем. Урок 3. Межпроцессное взаимодействие – состояние состязания, критические области.

 

Этот эмулятор повторяет описанный нами несовершенный алгоритм. На скриншоте мы отлично видим, как теряются файлы. Но если у нас будет один потом, все файлы нормально отправляются на печать:

 

Теория операционных систем. Урок 3. Межпроцессное взаимодействие – состояние состязания, критические области.

 

Количество процессов задается в конструкторе эмулятор операционной системы:

        public OS()

        {

            spuler_dir = new List<int>();

            printed = new List<int>();

            for (int i = 1; i <= 20; i++) spuler_dir.Add(0);

            current_id = 0;

            spuler_index = -1;

            printer_index = 0;

            processes = new List<Clinet>();

            processes.Add(new Clinet(this));

            //processes.Add(new Clinet(this));

            cur_proc = 0;

            counter = 0;

        }

 

Последнее обновление ( 22.11.2023 г. )
 
« След.
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги