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

       

встроена система разделения времени,


В ядро операционной системы OS/ 2 встроена система разделения времени, выделяющая каждой запущенной программе или приложению кванты времени (рис. 1.3).



Рис. 1.3. Программы OS/2 работают под контролем системы разделения времени

Кванты времени выделяются по прерыванию таймера, поэтому вне зависимости от состояния запущенных программ ни одна программа не будет обделена вниманием операционной системы.

Такая мультизадачность называется вытесняющей (preemptive). Она реализована не только в IBM OS/2, но и в Microsoft Windows-95, Microsoft Windows NT, а также в различных версиях UNIX.

Работоспособность систем с вытесняющей мультизадачностью в целом меньше зависит от работоспособности отдельных приложений, хотя плохо сделанные приложения могут повлиять на производительность всей системы (но не вывести ее из строя).

Самая замечательная возможность, предоставляемая системой разделения времени и системой управления программами IBM OS/2 - возможность создания мультизадачных программ и приложений.

Уточним, что мы имеем в виду под мультизадачной программой. Для этого вначале вспомним однозадачные программы.

Если вы программировали для DOS, то имели дело как раз с линейными однозадачными программами, работающими в однозадачной операционной системе. Программа DOS выполняется линейно, вызывая по мере необходимости различные подпрограммы, функции, а так же прерывания DOS и BIOS (рис. 1.4).



Рис. 1.4. Линейная однозадачная программа

В приведенном на рис. 1.4 примере программа получает некоторые данные, обрабатывает их и затем выполняет печать данных и результата обработки на принтере. Все эти действия выполняются строго последовательно, так как пока данные не получены, их нельзя обрабатывать, а пока они не обработаны - печатать.

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



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

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

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

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

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

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

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

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

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

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


Содержание раздела