Курс по програмиране за напреднали (2012) - 4. Desktop приложения. Windows FormsDAVID Academy
Занятие №4 на курса по програмиране за напреднали (2012) провеждан от ДАВИД академия в гр.Казанлък. Включва темите:
- Desktop приложения
- Windows Forms
Курс по програмиране за напреднали (2012) - 4. Desktop приложения. Windows FormsDAVID Academy
Занятие №4 на курса по програмиране за напреднали (2012) провеждан от ДАВИД академия в гр.Казанлък. Включва темите:
- Desktop приложения
- Windows Forms
1. Прекъсвания. Процедури при прекъсванията
Когато работата на процесора се прекъсне, той спира да върши това, което е
правил до момента и незабавно се прехвърля в изпълнението на заявката за
прекъсване, чийто начален адрес се намира в таблица на прекъсванията. В тази
таблица са описани стартовите адреси на процедурите за прекъсване във формат,
специфичен за всяка система.
Прекъсванията са ключова част от всяка компютърна система това е
средството, чрез което се реализира реалната конкурентна и независима работа на
устройства, процеси и потребители. Прекъсването винаги трябва да предаде
управлението на процедура, която го обработва, така наричан прехващач на
прекъсване (interrupt handler). Началото на подобна процедура изследва
информация относно типа на прекъсването и в съответсвие с резултата се обръща
към съответния прехващач, който извършва нужната за съответното прекъсване
работа.
Архитектурата на прекъсванията
прекъснатата инструкция:
трябва
да
съхранява
адреса
на
Много от старите разработки просто съхраняват адреса в паметта
По-съвременните архитектури използват системния стек.
След обработката, съхранения адрес за връщане се взима от стека и се
зарежда в програмния брояч и изпълнението продължава
Обикновено по време на изпълнение на обработкакта на прекъсването :
се забраняват всички останали прекъсвания,
усложнените съвременни архитектури позволяват определена йерархия в
системата за прекъсвания чрез схемата за приоритетите, която поддържат..
Само прекъсвания с по-висок приоритет могат да се обработват по време на
възникнало прекъсване.
Модерните ОС са построени на базата на механизма за прекъсвания. Ако в
даден момент не се изпълняват някакви процеси, ОС стои в режим на изчакване
на събитие.
Събитията могат да сигнализират посредством хардуерни или
софтуерни прекъсвания.
Съществуват и маскируеми и немаскируеми прекъсвания.
Когато възникне прекъсване (или trap) управлението се предава на ОС:
1. Първото нещо, което тя прави е да съхрани цялостното състояние на
процесорните регистри(и програмния брояч включително).
2. След това се определя какъв тип прекъсване е настъпило.
3. За различните типове прекъсвания има отделни сегменти код от ОС,
където се определя какво по-нататъшно действие да се предприеме.
2. Основно качество на микропроцесорите е възможността да реагират адекватно
на различни вътрешни и външни събития. Такава процедура означава
изпълнението на текущата програма да бъде прекъснато, за да даде ход на
подпрограма (фиг.5.8).
Преходьт от текуща програма към
подпрограма
става по няколко причи:
- чрез инструкция, която е адресирана
към началото на подпрограмата, без никакви
допълнителни условия;
чрез инструкция, която е
адресирана към началото на подпрограмата,
но само при изпълнение на предварително
заложено условие.
- при заявка за прекъсване, поради
външно събитие.
Микропроцесорът следи вътрешните условия
и външните събития чрез състоянията на
поредица от флагове.
Установяването на флаг "1 „ генерира
апаратно заявка за прекъсване.
Видът, характерът и броят на прекъсвания
зависят основно от предназначението на
микропроцесора.
3. За повечето микроконтролери са достатъчни между 5 и 20 прекъсвания.
Високопроизводителните
микропроцесори за компютърни цели имат до
няколкостотин прекъсвания.
Преходът към подпрограми, независимо от характера му е илюстриран
графично на фигури 5.8 и 5.9. Този преход изисква последователност от
"стандартни" стъпки, видни от фигурите:
- МП прекратява текущата програма, след завършване на изпълняваната
инструкция;
- Адресът на последната изпълнявана инструкция се прехвърля от програмния
адресен регистър RPC в стека SP;
- Броячът на програмния адресен регистър СnРC се насочва към адреса на
подпрограма, която обслужва прекъсването;
- Програмният адресен регистър RPC се зарежда с първия адрес на подпрограмата.
- Започва изпълнението на подпрограмата;
- Краят на подпрограмата се индикира с инструкция и е резултат регистър RPC на
програмния брояч PC отново се зарежда със следващия адрес на основната
програма и нейното изпълнение продължава.
В момента на прекъсването е възможно да се появи началният адрес на
подпрограмата, наричан векторен адрес. Когато прекъсването се приеме,
програмата се насочва към вектора на прекъсването, показващ къде се намира
векторния адрес.
При преход към подпрограми се използват специфични адресирания, едно
от които е относителното.