Khác biệt giữa bản sửa đổi của “Ngắt”

→‎Phân loại: +Ngắt mềm
(them biểu mẫu OS)
(→‎Phân loại: +Ngắt mềm)
{{OS}}
 
Trong [[máy tính]], '''ngắt''' (hay còn gọi là '''bẫy''') là một phản ứng của [[CPU|bộ xử lý]] đối với một sự kiện cần được phần mềm chú ý. Điều kiện ngắt cảnh báo bộ xử lý và phục vụ như một yêu cầu bộ xử lý ngắt đoạn mã đang thực thi khi được phép, để sự kiện có thể được xử lý kịp thời. Nếu yêu cầu được chấp nhận, bộ xử lý sẽ phản hồi bằng cách tạm dừng các hoạt động hiện tại của nó, lưu [[Trạng thái (khoa học máy tính)|trạng thái]] của nó và thực thi một [[Chương trình con|chức năng]] được gọi là ''[[trình xử lý ngắt]]'' (hoặc quy trình dịch vụ ngắt, ISR) để đối phó với sự kiện. Sự gián đoạn này là tạm thời và, trừ khi ngắt chỉ ra một lỗi nghiêm trọng, bộ xử lý sẽ tiếp tục các hoạt động bình thường sau khi trình xử lý ngắt kết thúc.<ref>{{Chú thích web|url=https://lwn.net/images/pdf/LDD3/ch10.pdf|tựa đề=''Linux Device Drivers'', Third Edition, Chapter 10. Interrupt Handling|tác giả=Jonathan Corbet|tác giả 2=Alessandro Rubini|năm=2005|nhà xuất bản=[[O'Reilly Media]]|trang=269|ngày truy cập=ngày 25 tháng 12 năm 2014|trích dẫn=Then it's just a matter of cleaning up, running software interrupts, and getting back to regular work. The "regular work" may well have changed as a result of an interrupt (the handler could <code>wake_up</code> a process, for example), so the last thing that happens on return from an interrupt is a possible rescheduling of the processor.|tác giả 3=Greg Kroah-Hartman}}</ref>
 
Ngắt thường được sử dụng bởi các thiết bị phần cứng để chỉ ra những thay đổi trạng thái vật lý hoặc điện tử cần được chú ý. Ngắt cũng thường được sử dụng để thực hiện [[đa nhiệm máy tính]], đặc biệt là trong [[Hệ thống thời gian thực|tính toán thời gian thực]]. Các hệ thống sử dụng ngắt theo những cách này được cho là điều khiển ngắt.<ref>{{Chú thích web|url=http://www.sltf.com/articles/pein/pein9505.htm|tựa đề=Basics of Interrupts|tác giả=Rosenthal|tên=Scott|ngày=May 1995|url lưu trữ=https://web.archive.org/web/20160426144654/http://www.sltf.com/articles/pein/pein9505.htm|ngày lưu trữ=2016-04-26|ngày truy cập=2010-11-11}}</ref>[[Tập tin:Interrupt_Process.PNG|nhỏ|NguồnCác nguồn ngắt và xử lý bộcách xử lý]]
== Phân loại ==
Các tín hiệu ngắt có thể được phát ra để đáp ứng với [[Phần mềm|các]] sự kiện [[phần cứng]] hoặc [[phần mềm]]. Chúng được phân loại là '''ngắt phần cứng''' hoặc '''ngắt phần mềm''', tương ứng. Đối với bất kỳ bộ xử lý cụ thể nào, số lượng kiểu ngắt bị giới hạn bởi kiến trúc của máy.
 
=== Ngắt phần cứng ===
Ngắt phần cứng là một điều kiện liên quan đến trạng thái của phần cứng có thể được báo hiệu bởi thiết bị phần cứng bên ngoài, ví dụ: dòng [[Yêu cầu gián đoạn|yêu cầu ngắt]] (IRQ) trên PC hoặc được phát hiện bởi các thiết bị nhúng trong logic của bộ xử lý logic (ví dụ: bộ hẹn giờ CPU trong Hệ thống IBM System/ 370), để thông báo rằng thiết bị cần được chú ý từ [[hệ điều hành]] (OS) <ref>{{Chú thích web|url=https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Reference_Guide/chap-Realtime_Reference_Guide-Hardware_interrupts.html|tựa đề=Hardware interrupts|ngày truy cập=2014-02-09}}</ref>, hoặc, nếuít khôngnhất hệ điều hành, từmột chương trình "bare-metal" đang chạykiểm trênsoát CPU. Các thiết bị bên ngoài như vậy có thể là một phần của máy tính (ví dụ: [[bộ điều khiển đĩa]]) hoặc chúng có thể là [[thiết bị ngoại vi]] bên ngoài. Ví dụ: nhấn [[Bàn phím máy tính|phím bàn]] phím hoặc di chuyển [[Chuột (máy tính)|chuột]] được cắm vào [[IBM Personal SystemPS/2|cổng PS / 2]] sẽ kích hoạt ngắt phần cứng khiến bộ xử lý đọc vị trí phím hoặc chuột.
 
Các ngắt phần cứng có thể đến [[Giao tiếp không đồng bộ|không đồng bộ]] đối với xung nhịp của bộ xử lý và bất kỳ lúc nào trong khi thực hiện lệnh. Do đó, tất cả các tín hiệu ngắt phần cứng được điều hòa bằng cách đồng bộ hóa chúng với đồng hồ bộ xử lý và chỉ hoạt động ở các ranh giới thực thi lệnh.
 
Trên một số hệ thống cũ hơn <ref>{{Chú thích sách|url=http://bitsavers.org/pdf/cdc/3x00/48bit/3600/60021300E_3600_SysRef_Sep64.pdf|title=Control Data 3600 Computer System Reference Manual|date=July 1964|publisher=Control Data Corporation|page=4-6|chapter=Interrupt Instructions|id=60021300}}</ref> tất cả các ngắt đều đến cùng một vị trí và Hệ điều hành sử dụng một lệnh chuyên biệt để xác định mức ưu tiên cao nhất của ngắt chưa được che dấu. Trên các hệ thống hiện đại thường có một quy trình ngắt riêng biệt cho từng loại ngắt hoặc cho từng nguồn ngắt, thường được thực hiện dưới dạng một hoặc nhiều [[bảng vectơ ngắt]].
 
=== Ngắt phần mềm ===
Một ngắt phần mềm được yêu cầu bởi chính bản thân bộ xử lý khi nó thực thi một số lệnh đậc biệt hay gặp phải một số điều kiện nhất định. Tất cả các ngắt mềm đều đi kèm với một trình xử lý ngắt đặc biệt.
 
Có thể tạo ra một ngắt mềm bằng cách thực hiện một câu lênh đặc biệt, chúng hoạt động tương tự với các [[lời gọi hàm]] và được sử dụng cho nhiều mục đích như sử dụng các dịch vụ của hệ điều hành hay tương tác với [[trình điều khiển thiết bị]] (ví dụ như đọc hay ghi đĩa). Các ngắt mềm cũng có thể bị gây ra bởi các lỗi thực thi chương trình hay bởi hệ thống [[bộ nhớ ảo]].
 
Thông thường nhân hệ điều hành sẽ tiếp nhận và xử lý các ngắt mềm. Một số ngắt mềm được xử lý mà chuơng trình không hề có ý thức: ví dụ như cách giải quyết thông thường của một lỗi page là làm cho page đó truy cập được trong bộ nhớ thực. Tuy nhiên, trong một số trường hợp khác một lỗi phân đoạn khi đó hệ điều hành sẽ thực thi một callback. Trên các hệ điều hành dạng Unix điều này bao gồm gửi đi một tín hiệu như SIGSEGV, SIGBUS, SIGILL hay SIGFPE, sau đó tín hiệu sẽ gọi một trình xử lý tín hiệu hay thực thi một hành động mặc định (kết thúc chương trình).
 
Trong một tiến trình của nhân, thường có một số loại ngắt mềm nào đó không được phép xảy ra. Nếu chúng xảy ra thì khi đó hệ điều hành sẽ bị [[Crash (máy tính)|treo]].
 
==Tham khảo==
177

lần sửa đổi