Операционная система OS2 Warp




Вытесняющая мультизадачность IBM OS/2 - часть 2


Если эта программа работает в однозадачной операционной системе, компьютер недоступен для решения других задач все время, пока работает функция Calculate.

Операционная система Microsoft Windows позволяет вам одновременно запустить несколько различных приложений или несколько копий одного и того же приложения. Поэтому теоретически вы можете попробовать запустить длительную расчетную задачу и еще несколько приложений. Однако из-за невытесняющего характера мультизадачности без принятия специальных мер функция Calculate передаст управление другим приложениям только тогда, когда все расчеты будут завершены (т.е. на следующий день).

Конечно, можно составить функцию Calculate таким образом, что она будет выполнять расчет маленькими порциями, разрешая работу других приложений. Однако это требует специальных усилий и не гарантирует полного успеха, так как расчетные задачи отнимают много процессорного времени. В результате другие приложения будут работать так медленно, что воспользоваться ими так и не удастся.

Дело можно поправить только в том случае, если регулировать степень использования процессора для работы всех одновременно запущенных программ, т. е. управлять приоритетами программ. Однако для приложений Microsoft Windows это невозможно.

Операционная система IBM OS/2 позволяет организовать параллельное выполнение многих программ, а также отдельных фрагментов кода одной и той же программы.

Когда пользователь запускает программу в среде IBM OS/2, операционная система создает так называемый процесс (process). Это понятие мы уточним позже, а сейчас достаточно знать, что для процесса выделяется отдельное адресное пространство, изолированное от адресных пространств других процессов. Изоляция выполняется на физическом уровне с использованием схемы адресации памяти защищенного режима (описанной нами в 6 томе "Библиотеки системного программиста").

В рамках процесса создается задача (thread), которая выполняется автономно и асинхронно по отношению ко всем остальным активным задачам.После запуска эта задача может создать в рамках процесса другие задачи.

Что такое задача?

Задача больше всего похожа на подпрограмму, которая вызывается из основной программы, но выполняется по отношению к ней асинхронно. Это возможно благодаря системе разделения времени, которая передает управление всем активным задачам по прерыванию таймера и с учетом приоритетов задачи.

Все задачи, созданные в рамках одного процесса, используют общее адресное пространство процесса. Заметим, что операционная система IBM OS/2 присваивает приоритеты не процессам, а задачам. Поэтому программист не может изменить приоритет процесса (такое понятие, как приоритет процесса просто не существует), но может управлять приоритетом отдельных задач.




Содержание  Назад  Вперед