Процессор прерываний (PIC)        



Представьте, что сидите вы за компьютером и дуетесь в свой любимый Counter-Strike со знакомым из Австрии, с головой погрузившись в игровой процесс. Тут в самый "горячий" момент вас тревожит кто-нибудь из домочадцев с целью послать в магазин за кочаном капусты. Прерывают на самом интересном месте. Теперь помимо игры вас занимает еще и мысль о представившейся альтернативе: продолжать мочить "ненавистного врага" и потом получить нагоняй или бросить азартное занятие, крепко выругавшись (про себя), и с миром выполнить обязанность. Вы все же не решаетесь спорить и выключаете компьютер. Для вас важнее отношения с близкими, нежели виртуальные развлечения, т.е. приоритет отношений больше приоритета развлечений.
С процессором такая же катавасия. Если к нему приходит более важное прерывание (на прерывании указана степень его важности), то он откладывает свою задачу, предварительно запомнив место остановки программы, и переключается на выполнение другой обязанности. Но, предположим, задача выполнена. Вы вернулись из магазина и теперь самозабвенно стучите по клавишам, набирая очередную статью для IT журнала. Вдруг оглушительно звонит рядом стоящий телефон. Это ваш приятель Вася с дружеской просьбой. Надо бы распечатать один занимательный материальчик, найденный только что в Интернете, а у него, видите ли, чернила закончились. Назначим вашей проблеме со статьей приоритет пять. Его же задача расценивается вами как нечто, тянущее максимум на двойку. 2<5. Поэтому вы продолжаете марать электронные листы, отослав Васю на потом. Однако после завершения своих дел предстоит еще и распечатать документы товарища. То есть картина следующая: позвонил Вася и выставил ЗАПРОС (просьбу) на прерывание (чтобы вы занялись его проблемами). Он только попросил вас прерваться, а уж выполнять немедленно или не выполнять, оставив до лучших времен его просьбу, решать вам - центральному процессору. Другими словами, прерывание - это представитель куска программы у процессора и насколько этот представитель важный, настолько часто процессор будет обсчитывать соответствующий кусок кода. Всякий контролер наделен аппаратом, который позволяет им управлять извне или внутри. Для чего? Объясняю на примере. Щелкаете вы по клавишам, на экране формируются строчки текста, параллельно звучит музыка из динамиков. Допустим, десятой ячейке соответствует клавиатура, сотый коробок отвечает за монитор, а ноль - это звук. Контролер начинает работу с нулевой ячейки. Мы непрерывно бьем по "клаве" и тащимся от умопомрачительного рока (звучит гитарное соло). Теперь проследим ситуацию в деталях. Ударили по клавише - в коробке с десятым номером количество спичек изменилось. Надо выводить значение в 10-м коробке (клавиатура) в сотый коробок (монитор), а конролер где-то там ползает. Что же получается? Вы со злостью все стучите и стучите по кнопке, а на мониторе никаких изменений. Да еще в нулевую ячейку звук надо выводить. Можно было бы зациклить процессор на вывод в звуковую ячейку данных из массива других ячеек (например, с 30 по 40), но тогда процессор кроме звука ничем иным заниматься не сможет. А теперь представим, что при нажатии на клавишу на ножку процессора подается напряжение и он, бросая все дела, мчится выполнять клавиатурную команду. Это внешнее прерывание. Что касается звука. У процессора есть встроенный таймер. При достижении таймером какого-либо значения происходит срабатывание. Заложил программист срабатывание 1000 раз в секунду, конролер 1000 раз в секунду будет подрываться к определенным коробкам, закрепленным за таймером, выполнять код. В примере, описанном выше, будет звучать музыка, в других случаях - происходить еще что-то. Но у нас о звуке и клавиатуре складывается впечатление, что они работают непрерывно. Вот это уже внутренне прерывание (я о звуке).

Работа остальных компонентом подробно рассматривается на практических занятиях.


Дата добавления: 2018-05-02; просмотров: 179; Мы поможем в написании вашей работы!






Мы поможем в написании ваших работ!