ZX Club #05
29 октября 1997

Club IM2 - Терминология и теоритические аспекты прерываний и многозадачности.

Club IM2 - Терминология и теоритические аспекты прерываний и
 многозадачности.
       ╔═════════════════════════╗
       ║  IM2 И МНОГОЗАДАЧНОСТЬ  ║▒
       ╚═════════════════════════╝▒
         ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

  (C) Dr.Gluker                     1997
  ──────────────────────────────────────

      В статье "клуб im2"  электронной га-
зеты  ZX_Club N4  возникла некая  термино-
логическая  путаница, требующая,  по  мое-
му скромному  мнению, некоторого разъясне-
ния.  Напомню, речь  шла  о  прерываниях и
многозадачности.   В данной статье я хотел
бы  коснуться  сугубо  терминологических и
теоретических аспектов данных вопросов.

      Во-первых:  прерывания - всего  лишь
механизм, который может  использовать  при
своей  работе  прикладная программа  (или,
говоря другим  языком, задача) и, по боль-
шому счету, никакого  отношения к многоза-
дачности  не  имеющие; а   многозадачность
 - это  возможность  выполнять  две (и бо-
лее) независимых (!) прикладных  программы
в одно и тоже время. Другое дело, что пре-
рывания  по таймеру, чем на самом  деле  и
является  im 2, могут  использоваться  как
механизм для многозадачности.

      Почему же  невозможно считать выпол-
няемые в прерывания  процедуры независимы-
ми  задачами?  Все  дело в самом механизме
прерываний.   Данный вопрос можно переина-
чить:  почему  прерывания  назвали  именно
прерываниями.  Собственно, ответ находится
в  самом вопросе. Преывания  прерывают вы-
полнение  основной  (!) программы  для вы-
полнения некоей кратковременной процедуры,
которую  нельзя  вставить в основной  цикл
программы. При этом ( по соглашению )  об-
работчик прерывания должен сохранять  сре-
ду  основной программы и после выполнения,
восстанавливать  оную.  Это  делает каждый
программист, сохраняя  на  стеке  регистры
командой push и восстанавливая их командой
pop.

      Другое дело - задача,  ее можно раз-
бить  на три основных раздела:  програмный
стек,  сегмент  испоняемого кода,  сегмент
данных.  Любая полноценная, рабочая  прог-
рамма  всегда  (!)  несет в себе три  этих
элемента.  Более того, процессор Z80 может
выполнять  лишь  одну  задачу и иметь лишь
один стек:  имеется в виду  аппаратная ре-
ализация. К примеру, Motorolla 68000 имеет
два стека и возможность  их  переключения,
поэтому   реализовать  многозадачность  на
Z80  можно только  программным  путем, ис-
пользуя  при  этом механизм прерываний  от
таймера.

      Далее:  что бы  окончательно  прояс-
нить  вопрос  с  прерываниями,  необходимо
коснуться  некоторых  аспектов  аппаратной
реализации Speccy.  Дело в том, что  аппа-
ратные прерывания на нашем любимце сделаны
очень негибко,  я бы даже сказал, - спустя
рукава,  в  связи  с чем мы и лишены очень
многих  возможностей, которые обеспечивают
стандартные прерывания. То есть, на Speccy
возможен  лишь  один достойный  упоминания
тип  прерываний - im2,  который  случается
каждую  1/50  секунды, и третьего не дано.
Так  как  нам  заранее  известна  тактовая
частота  процессора  (3.5 Мгц),  можно од-
нозначно просчитать, сколько тактов сможет
сделать  процессор  за  одно прерывание, а
именно - 70000.  Имеется  в  виду  вариант
Пентагон,  на  других  машинах  может быть
меньше, но не менее  68000.  О чем нам го-
ворит  это  "магическое" число?  А дело  в
том,  что  чем  больше  тактов израсходуют
процедуры  в прерывании, тем меньше их ос-
танется  основной программе, и не исключен
вариант,  когда прерывания  "скушают"  все
машинные циклы и ни одного "тика" не оста-
вят  основной  программе, что и приведет к
ее остановке.

      Теперь, вновь возвращаясь к многоза-
дачности,  разберем теоретическую реализа-
цию оной на примере многозадачного  Бейси-
ка. Итак, нам необходимо чтобы Speccy враз
исполнял две независимые (!)  Бейсик-прог-
раммы.   Для  реализации  нам  потребуются
следующие механизмы:

 -сохраннение среды выполняемой задачи в
  расширенной памяти;

 -восстановление  среды задачи и выполне-
  ние оной;

 -механизм разделения машинного времени
  между двумя задачами.

Итак,  что же необходимо сохранять? Да всю
систему!     Т.е., -  область  переменных,
текст программы, область стеков программы.
С  восстановлением проблем, вроде бы, тоже
быть  не  должно.     Тогда стоит обратить
внимание  на механизм  переключения задач.
Вот здесь то нам и пригодятся im2.   Орга-
низовываем  счетчик, который устанавливаем
на  определенное число прерываний, в тече-
нии которых первая программа  будет выпол-
няться, и опрашиваем его. Как только время
приспело,  мы  сохраним все машинные пара-
метры, остановим  задачу, скопируем  ее  в
недоступную (!) другим программам  область
памяти,  загрузим  следующую  программу  и
запустим  ее  на  выполнение с прерванного
момента.  Как видите, реализовать многоза-
дачный  Бейсик не так уж и сложно - в тео-
рии.  А на практике  придется  столкнуться
с  бездной  проблем:     нехватка  памяти,
очень  медленное переключение,   замедлен-
ное выполнение каждой программы,   ограни-
чение на занимаемый объем памяти,   невоз-
можность использования  процедуры  im2,  и
т.д., и т.п. Таким образом, я могу Вам га-
рантировать  бесполезность  и  бессмыслен-
ность такой затеи.

      Собственно говоря,  это все, что мне
хотелось  сказать  о  многозадачности  на
"старине" Speccy.

                .оооО
                (   )     Оооо.
            ----- (------(   )----
                  _)      ) /
                          (_/



Другие статьи номера:

От редакции - К процессу создания газеты подключилась группа Demention. Вопрос об электронном журнале на Алтае.

Soft group - Кое-что о подключении принтера. Порты устройств компьютера ZX-SPECTRUM.

Железо - О Covox'ах, General Sound'е и Sound Drive 2.

ZX-Поппури - Процедура "OPTION SELECTOR". О процедуре "Звезды", используемой в газете.

Club IM2 - Терминология и теоритические аспекты прерываний и многозадачности.

Club IM2 - Конкурс на лучший сценарий игры типа DIZZY.

Virus - О конкурсе по игре "Вирус 2".

Enjoy - Анекдоты...


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Пять слов надежды - Справедливость, державность, народовластие, духовность и патриотизм.
Маразм - Когда-то, давным давно, в одной забытой миром деревушке жили дед и баба.
Фантазия - компьютерная новелла по игре "Captain Blood".
News - Karbo came back and wrote new music, Freeman is in Ukraine now, in Odessa (left there before the Maidan, to the sea, for health reasons), sculpts games for mobile phones, Mythos codes firmware for BMW on outsourcing and is engaged.
C мира по нитке - Scorpion GMX или неиспользованный пoтенциал.

В этот день...   7 мая