2010-07-05 9 views
17

Czy wielokrotnie sprawdzają warunek i wykonują, jeśli warunek jest spełniony. Np. Jak system operacyjny dokładnie wie, kiedy podłączone jest urządzenie USB, lub w jaki sposób MSN dokładnie wie, kiedy otrzymasz wiadomość e-mail. Jak to działa?Jak działają detektory zdarzeń?

Dzięki

Odpowiedz

31

Na niskim poziomie jądro systemu operacyjnego "wie", gdy coś się dzieje, ponieważ dane urządzenie wysyła procesorowi przerwanie sprzętowe.

Kiedy, powiedzmy, że pakiet sieciowy przybywa, kontroler sieci wysyła przerwanie, a jądro systemu operacyjnego reaguje odpowiednio.

Na poziomie programu działa zupełnie inaczej - większość programów aplikacji uruchamia "pętlę zdarzeń", gdzie pobiera wiadomość (np. Wiadomość od systemu operacyjnego informująca, że ​​"kliknięto myszką na ten punkt w aplikacji "), wykonaj odpowiednie działania w odpowiedzi na to, a następnie słuchaj kolejnych wiadomości. Jeśli nie ma komunikatu, system operacyjny śpi wątek, dopóki nie otrzyma wiadomości do dostarczenia.

+2

+1 Wyraźnie wyjaśnia różnicę między przerwaniami na poziomie sprzętu i detektorami zdarzeń na poziomie oprogramowania. – Pete

1

Zależy.

Często detektor zdarzeń jest zarejestrowany w obiekcie generującym zdarzenie. Po wystąpieniu zdarzenia obiekt przechodzi przez wszystkie zarejestrowane przez niego detektory, informując o zdarzeniu. Zobacz przykład modelu zdarzeń AWT/Swing w Javie.

ow OS wie dokładnie, kiedy to dostaje USB

na niskim poziomie podejrzewam ów interupt sprzętową (ktoś mnie poprawić jeśli się mylę), które jest obsługiwane przez kernel/USB kierowca. Często są to systemy o wyższym poziomie (na przykład DBUS), które nasłuchują i mają słuchaczy zdarzeń, którzy ich słuchają.

lub jak MSN dokładnie wie, kiedy otrzymasz wiadomość e-mail.

Podejrzewam, że to prosty przypadek odpytywania skrzynki pocztowej (np. Przez POP3) co x sekundę i sprawdzanie liczby wiadomości (może być jednak źle).

Anon. wyjaśnia całkiem dobrze różnicę między przerwaniami sprzętowymi a słuchaniem zdarzeń na poziomie oprogramowania.

1

Spójrz na Interrupts ten powinien wyjaśnić, w jaki sposób sprzętowy inicjuje pewne „Wydarzenia”

0

Programy takie jak warcaby e-mail będzie zazwyczaj działa usług działających w tle, które wyszukują ich każdego okresu X sprawdzania nowej poczty serwer poczty . Są inne sposoby robienia tego, ale w przypadku wydarzeń na poziomie oprogramowania, prawie na pewno będzie coś takiego.

Powiązane problemy