Предыдущий раздел УПРАВЛЕНИЕ ПАМЯТЬЮ И ЗАПУСК ПРОГРАММ Следующая глава

18.3.1 Многопрограммный редактор - структура многопрограммного редактора

Переделаем разработанный в разделе 16 редактор так, чтобы он состоял не из одной, а из нескольких программ. В результате должна получиться программная система, структура которой приведена на рис.64. На этом рисунке программы изображены в виде параллелограммов. Подобное изображение программ используется для того, чтобы подчеркнуть возможную независимость (параллельность) выполнения программ. При этом выполнение каждой программы представляет собой отдельный программный процесс, изображаемый в виде параллелограмма. Несмотря на то, что подобная параллельность реализуется лишь в мультипрограммных ОС, к которым DOS не относится, мы будем использовать изображение выполнения программ в виде процессов.

 

 

Рис. 64. Структура многопрограммного редактора

 

Небольшие прямоугольники внутри процессов на рис.64 обозначают точки входа в процесс. Точка входа – место в алгоритме процесса (программы), находясь в котором процесс “простаивает”, ожидая инициирующего (запускающего) воздействия со стороны других процессов. Более подробно используемый графический язык описан в Приложении 3.

Как видно из рис.64, главной программой многопрограммного редактора является Dispatcher. Но в отличие от однопрограммного варианта, она инициирует не свои внутренние процедуры, а отдельные программы, каждая из которых инициируется при нажатии пользователем своей функциональной клавиши. Прежде чем инициировать соответствующую программу, диспетчер должен загрузить в ОП загрузочный модуль программы. И загрузка и инициирование программы выполняются диспетчером с помощью рассмотренного ранее системного вызова EXEC.

Стрелки на рис.64 обозначают управляющие (инициирующие) воздействия. Такое воздействие поступает на точку входа инициируемой программы. Одновременно иницирующая программа сама оказывается в одной из точек своих входов. Например, диспетчер после запуска любой своей дочерней программы сразу же оказывается в той своей точке входа, которой соответствует оператор исходной программы, расположенный сразу же после вызова EXEC.

 


Предыдущий раздел В начало Следующая глава