2010-07-05 51 views
17

Họ liên tục kiểm tra điều kiện và thực hiện nếu điều kiện được đáp ứng. Ví dụ, làm thế nào hệ điều hành biết chính xác khi một thiết bị USB được cắm vào, hoặc làm thế nào MSN biết chính xác khi bạn nhận được một email. Cái này hoạt động ra sao?Trình xử lý sự kiện hoạt động như thế nào?

Cảm ơn

Trả lời

31

Ở mức thấp, hạt nhân hệ điều hành "biết" khi xảy ra sự cố, vì thiết bị được đề cập gửi CPU bị gián đoạn phần cứng.

Vì vậy, khi nói rằng gói mạng đến, bộ điều khiển mạng sẽ gửi một ngắt và hạt nhân hệ điều hành sẽ phản hồi khi thích hợp. Ở cấp độ chương trình, nó hoạt động khá khác nhau - hầu hết các chương trình ứng dụng chạy một "vòng lặp sự kiện", nơi chúng tìm nạp một thông điệp (nói, một thông báo từ hệ điều hành nói rằng "con chuột đã được nhấp vào điểm này trong ứng dụng của bạn." "), thực hiện các hành động thích hợp để đáp lại điều đó, và sau đó, lắng nghe thêm tin nhắn. Nếu không có thông báo, hệ điều hành sẽ ngủ thread cho đến khi nó có một tin nhắn để gửi.

+2

+1 Để giải thích rõ sự khác biệt giữa các ngắt ở mức phần cứng và trình lắng nghe sự kiện ở cấp phần mềm. – Pete

1

Tùy thuộc.

Thường thì trình xử lý sự kiện được đăng ký với đối tượng tạo sự kiện. Khi sự kiện xảy ra, đối tượng lặp lại thông qua tất cả người nghe đã đăng ký với nó để thông báo cho họ về sự kiện. Hãy xem mô hình sự kiện AWT/Swing trong Java chẳng hạn.

ow hệ điều hành biết chính xác khi nó được một USB

Ở mức độ thấp tôi nghi ngờ thats một gián đoạn phần cứng (ai đó đúng cho tôi nếu tôi là nhầm lẫn) được xử lý bởi các hạt nhân/USB người lái xe. Thường có các hệ thống cấp cao hơn (ví dụ: DBUS) lắng nghe điều này và có người nghe sự kiện lắng nghe họ.

hoặc cách MSN biết chính xác khi nào bạn nhận được email.

Tôi cho rằng đó là trường hợp đơn giản bỏ phiếu hộp thư (ví dụ: qua POP3) sau mỗi x giây và kiểm tra số lượng thư (có thể là sai).

Anon. giải thích sự khác biệt giữa phần cứng ngắt và sự kiện cấp phần mềm nghe khá tốt.

1

Hãy xem Interrupts này nên giải thích như thế nào phần cứng khởi nhất định 'sự kiện'

0

Chương trình như cờ email thường sẽ được chạy các dịch vụ nền mà truy vấn máy chủ email của họ mỗi giai đoạn X kiểm tra thư mới . Có nhiều cách khác để làm điều đó, nhưng đối với các sự kiện cấp phần mềm, nó gần như chắc chắn sẽ là một cái gì đó như thế.

Các vấn đề liên quan