2010-12-29 12 views
5

(NB: Đây không phải là về gián đoạn Java đề/.NET, đây là khoảng kernel-mode ngắt.)Ngắt gián đoạn là gì?

Hi,

Wikipedia có này để nói về Interrupt Chủ đề trong bài viết Interrupt handler:

Interrupt đề

Một số hệ điều hành - Solaris, NetBSD, Mac OS X, WinCE và FreeBSD, ví dụ - sử dụng lược đồ khác nhau được gọi là các chủ đề ngắt. Bộ xử lý ngắt được cung cấp bởi trình điều khiển thiết bị chỉ là ưu tiên cao luồng chạy với ngắt được bật và, quan trọng hơn, có thể chặn trên mutex. Điều này rất nhiều đơn giản hóa khóa trong hạt nhân. Ngoài ra, chuỗi gián đoạn có thể là được ưu tiên bởi mức độ ưu tiên cao hơn ngắt luồng.

Kỹ thuật này của các chuỗi ngắt mà FreeBSD (trong số những người khác) rõ ràng sử dụng là gì? Và tôi có thể đọc thêm về nó ở đâu?

Xin cảm ơn trước. :)

Trả lời

1

Có một số thông tin kỹ thuật khác trong FreeBSD's ithread(9).

+0

Xin chào. Dường như đây là những gì tôi đang hỏi về, bạn có thể giải thích thêm một chút về cách nó hoạt động và nó khác với các cách tiếp cận khác tại trì hoãn thực thi gián đoạn không? –

+0

Tôi không biết chi tiết, xin lỗi. http://www.freebsd.org/doc/en/books/arch-handbook/smp-design.html dường như có thêm một số thông tin. – BCran

2

Phần cứng thông báo cho hệ điều hành của một số sự kiện bị gián đoạn. Chúng có thể được nâng lên khi xảy ra lỗi hoặc khi một số thiết bị ngoại vi có sẵn dữ liệu mới (người dùng nhấn một phím, một gói đến mạng, hẹn giờ hết hạn, ...). Những gián đoạn đó cần phải được xử lý nhanh chóng bởi hệ thống (để nó xuất hiện đáp ứng).

Chúng được xử lý bởi hạt nhân. Nói chung, khi một sự gián đoạn như vậy đến, mã hiện đang chạy bị dừng lại, và một hàm của hạt nhân được gọi. Việc gián đoạn phải được thực hiện một cách nhanh chóng để có một hệ thống đáp ứng, vì vậy chúng không được chặn hạt nhân chờ đợi một số tài nguyên, hoặc làm một cái gì đó như thế. Giải pháp cổ điển là có một chức năng gián đoạn câm chỉ cần lưu ý số lượng gián đoạn và trả về, và sau đó trong vòng lặp chính của hạt nhân, để kiểm tra xem có bất kỳ sự gián đoạn nào xảy ra và gọi trình xử lý thực.

Vì những gián đoạn này có thể bị che khuất (ngoại trừ gián đoạn không có mặt nạ - NMI), hạt nhân có thể sinh ra một số luồng trong chế độ hạt nhân, và chỉ cho phép chúng loại bỏ sự gián đoạn và xử lý chúng. Vì các luồng đó độc lập với chuỗi hạt nhân chính, chúng có thể chặn, miễn là có đủ luồng để xử lý các gián đoạn có thể đến trong khi luồng bị chặn.

+0

Xin chào. Cảm ơn câu trả lời. Tôi hiểu sự cần thiết phải thực hiện trì hoãn dựa trên các ngắt, những gì tôi đặc biệt quan tâm là kỹ thuật này để làm điều đó, được gọi là Chủ đề gián đoạn. –