Obecnie wykonuję moduł w teorii systemów operacyjnych i mam kilka koncepcji, których nie jestem w stanie zrozumieć - czy byłoby to właściwe miejsce do zadawania pytań?
Moje główne pytanie dotyczy przerwań. Kiedy procesor wykryje, że nastąpiło przerwanie, rozumiem, że musi dowiedzieć się, skąd pochodzi przerwanie. Moje rozumienie jest następujące: czy ktoś mógłby mi powiedzieć, czy to jest poprawne i wyjaśnić kilka luk w mojej wiedzy?
Aby procesor mógł wykryć, gdzie powstało przerwanie, mógł zapytać wszystkie obiekty o identyfikację źródła, ale te pytania oparte na I / O zajęłyby dużo czasu. Zamiast tego wykorzystuje cykl przerwań i oczekuje identyfikatora przerwania na magistrali danych. Jeśli jest to 8-bitowa magistrala danych, istnieje 256 poziomów przerwań (tj. 2 ^ 8). (Dlaczego to?)
Tak więc procedura obsługi przerwań (ISR) jest zapisywana dla każdego możliwego poziomu przerwań i przechowywana w tabeli w ustalonej lokalizacji (wektor przerwań), która jest standaryzowana przez procesor. W moich notatkach jest napisane: „Lokalizacja musi być znana przed otrzymaniem adresu” (Co to znaczy?)
Identyfikator poziomu przerwania otrzymany jako część cyklu przerwania jest używany jako indeks do wektora przerwań (Czy ktoś może to trochę zepsuć?) . Rozumiem, że wartość, identyfikator poziomu przerwań jest przekazywany do CPU i używany do wskazania wektora przerwań.
Co to znaczy, gdy mówi się, że przerwanie jest „obsługiwane”?
Dziękuję bardzo i przepraszam za długie akapity, jestem trochę zdezorientowany wieloma aspektami tego!
źródło