- przerwanie (sprzęt komputerowy)
Procedura przerywająca program komputerowy wykonywana przez AP, gdy zaistnieją określone okoliczności. Po powrocie z tej procedury program jest kontynuowany.
Istnieją różne rodzaje przerwań programu:
- • 〈przerwanie systemu zarządzania〉
- • 〈niewstrzymywalne przerwanie sprzętowe〉, np. gdy zaistniał określony błąd w systemie komputerowym
- • 〈wstrzymywalne przerwanie sprzętowe〉, gdy zaistniały określone warunki w urządzeniu systemu komputerowego
- • 〈wyjątek〉, gdy podczas wykonywania instrukcji w AP zaistniały określone warunki, zwykle oznaczające błąd instrukcji
- • 〈przerwanie programowe〉, inicjowane instrukcją programu
System operacyjny konfiguruje ponumerowane procedury obsługi przerwań (oprócz ‹przerwania systemu zarządzania›) w IDT, natomiast przekierowuje przerwania sprzętowe przy użyciu I/O APIC. Przekierowanie na wyższe numery jest konieczne, ponieważ przerwania sprzętowe (IRQ) są generowane z tymi samymi numerami jak ‹wyjątki›.
LAPIC obecny w każdym rdzeniu procesora z osobna — wzbudza przerwania sprzętowe z następujących źródeł:
- • urządzenia systemu komputerowego
- • zapis do odpowiedniego rejestru APIC inicjujący IPI, NMI (‹niewstrzymywalne przerwanie sprzętowe›) lub ‹przerwanie systemu zarządzania›
- • skonfigurowany zegar APIC (‹wstrzymywalne przerwanie sprzętowe›)
- • skonfigurowane PMI
- • skonfigurowane przerwanie monitora temperatury (‹wstrzymywalne przerwanie sprzętowe›)
- • skonfigurowane przerwanie błędu APIC (‹wstrzymywalne przerwanie sprzętowe›)
Przerwania sprzętowe oraz ‹przerwanie systemu zarządzania› po zakończeniu wykonywania procedury obsługi są kontynuowane od instrukcji, przed którą została zainicjowana procedura obsługi; czyli program jest kontynuowany tak, jakby nic się nie wydarzyło. Natomiast ‹przerwania programowe› oraz niektóre ‹wyjątki› są kontynuowane od następnej instrukcji.
‹Wyjątki› dzielą się na trzy rodzaje:
- • wyjątki generowane przy błędzie wykonania instrukcji — wznawiają od tej samej instrukcji
- • wyjątki pułapkowe, generowane przy zaistnieniu ustalonych warunków — wznawiają od następnej instrukcji
- • wyjątki zakańczające — nie wznawiają programu
- volatile (język programowania C)
Specyfikator typu danych. Wymusza na ‘kompilatorze’, by przy każdym dostępie do zmiennej pobierać lub zapisywać jej wartość z/do pamięci, a nie przechowywać jej w rejestrze procesora lub ignorować.
Ze względu na korzystanie przez procesor z pamięci podręcznej zmienne “volatile” nie są od razu synchronizowane z innymi procesorami, ponadto nie ma gwarancji atomowości dostępu do zmiennej. Dlatego mają one zastosowanie tylko w sytuacjach, gdy ·ze względu na składnię języka programowania· ‘kompilator’ nie wie, że odczyt/zapis zmiennej jest wymagany przez program.
Zastosowaniami zmiennych “volatile” są:
- ⁃ dostęp do przestrzeni pamięci MMIO
- ⁃ współdzielenie zmiennej globalnej przez przerwanie sprzętowe i główny program, ale tylko pod warunkiem, że jest ono skonfigurowane do uruchamiania się na tym samym procesorze
By określona zmienna programu służyła do synchronizacji, musi być zapewniony odpowiednimi instrukcjami procesora zapis tej zmiennej do pamięci z pamięci podręcznej oraz atomowość odczytu/zapisu tej zmiennej.
