Interrupt là gì

lưu ý này phía bên trong series tập hợp những quan niệm lộ diện lúc mới có tác dụng thân quen cùng với thiết kế khối hệ thống nhúng, những quan niệm này hoàn toàn có thể khởi nguồn từ thương hiệu sản phẩm, thương hiệu hiện tượng hoặc một kinh nghiệm nào kia, ….

Bạn đang xem: Interrupt là gì

Khái niệm trước tiên mà lại tôi muốn liệt kê là interrupt.

Interrupt có thể phát âm là 1 biểu lộ (tín hiệu thứ lý hoặc biểu đạt logic) bắn tới processor. Tín hiệu này tạo ra vì chưng Hartware hoặc phần mềm, đại diện cho 1 event cần phải xử lý tức thì mau lẹ.

Tín hiệu vật dụng lý hoàn toàn có thể đọc là dấu hiệu tạo ra từ những mối cung cấp vật lý (vi tinh chỉnh, nút ít dìm, công tắc nguồn, …….), hoàn toàn có thể đo – đếm được.

Tín hiệu logic có thể phát âm là những lệnh, các lời Hotline hàm….

Hardware interrupt: ở trong hình dáng asynch. Hành rượu cồn init hardware interrupt có cách gọi khác là IRQ. Số lượng hardware interrupt bị số lượng giới hạn vì số con đường IRQ của processor.Software interrupt: nằm trong hình dáng synch, gây nên do exceptional condition vào nội trên processor (ngôi trường hòa hợp này rất có thể Điện thoại tư vấn là exception hoặc trap), hoặc tạo ra vị một instruction quan trọng đặc biệt trong instruction phối. Số lượng software interrupt có vẻ như nhỏng không trở nên giới hạn

Interrupt tương tự như cùng với signal, khác hoàn toàn duy nhất giữa chúng là:

signal được áp dụng cho IPC, tất cả trung gian là kernel (mediated by the kernel) cùng được xử lí vày processes (handled by process),interrupt thì gồm trung gian là processor (mediated by processor) với cách xử lý vì kernel.

Kernel rất có thể pass một interrupt dưới dạng một signal cho tới process gây ra nó.

Phần in nghiêng này dịch tự wiki nhưng lại có vẻ ko gần kề nghĩa lắm, đang lưu ý lại trong tương lai.

Interrupt là một trong những kỹ năng thịnh hành áp dụng trong computer multitasking, đặc biệt là RTC. Cụ thể, hardware interrupt góp cải thiện hiệu năng vị nó giúp phần cứng chưa phải wait trong một vòng lặp rất nhiều của cách thức polling. Tức là trong lúc “ngóng đợi” interrupt xẩy ra, hệ thống vẫn có thể làm các Việc khác, trường hợp gồm interrupt, khối hệ thống new tạm dừng quá trình hiện thời để chuyển hẳn qua cách xử lý interrupt thông qua một Interrupt Handler hoặc Interrupt Service Routine (ISR)

Có thể phân các loại interrupt theo 5 nhánh sau:

Maskable Interrupt – IRQ: hardware interrupt có thể quăng quật qua nhờ vào thông số kỹ thuật một bit trong IMR – interrupt mask register.Non-maskable Interrupt – NMI: hardware interrupt không có Bit-mask kèm theo. NMI hoàn toàn có thể là các interrupt cần thiết quăng quật qua hoặc là interrupt của những task gồm độ ưu tiên cao nhất (tương quan cho tới timers cùng watchdog timer…)Inter-processor Interrupt IPI: một case quan trọng của interrupt, IPI được tạo thành bởi vì một processor nhằm interrupt processor không giống (trong khối hệ thống nhiều processor)Software interrupt: interrupt vì chưng processor tạo nên Khi tiến hành một lệnh. Software interrupt thường dùng để implement system calls vị nó thường xuyên kéo theo một subroutine calls với sự biến hóa vào CPU ring level.Spurious interrupt: hardware interrupt không hề muốn. hay được tạo nên vị system condition.

Cũng rất có thể phân loại interrupt theo 2 thứ hạng nlỗi sau (nhờ vào tác đọng của chính nó lên tinh thần của khối hệ thống cơ hội xẩy ra interrupt):

precise interrupt: là các loại interrupt Lúc xảy ra thì đảm bảo 4 đặc thù sau mang đến hệ thống:

Thanh ghi PC được lưu lại lại

Tất cả lệnh nằm trước địa chỉ bây chừ của PC được tiến hành hoàn chỉnh

Các lệnh mà lại PC chưa trỏ qua thì chưa thực hiện.

Trạng thái thực hiện những lệnh mà lại PC đang trỏ qua được lưu lại

imprecise interrupt là nhiều loại interrupt Khi xẩy ra ko đảm bảo an toàn 4 đặc điểm trên mang lại khối hệ thống.

Ta vẫn tồn tại một bí quyết không giống nhằm phân nhiều loại interrupt nlỗi sau:

Level- triggered – ngắt theo mức: Là một interrupt thông tin Việc xuất hiện của nó vị Việc gia hạn interrupt line tại mức logic cao hoặc rẻ. Một sản phẩm công nghệ ước ao phun ra level-triggered interrupt vẫn bảo trì IRQ line của chính nó ở tầm mức ACTIVE (rất có thể là high hoặc low tùy quan niệm của nsx), và gia hạn cấp độ đó cho tới khi ISR hoàn toàn. Level-triggered interrupt line rất có thể đựa phân tách đang giữa các thiết bị. Line này cần phải có pull-up hoặc pull-down resistor để line này tự động hóa về giá trị khoác định lúc không tồn tại interrupt xảy ra. Điểm tiêu giảm của phong cách interrupt này là interrupt của các sản phẩm công nghệ tất cả nấc ưu tiên cao rất có thể “che mất” interrupt của các trang bị có mức ưu tiên tốt hơn….Edge-triggered – ngắt sườn: Là một hình trạng interrupt xảy ra Khi tất cả sự đổi khác của interrupt line (đi từ cao-thấp hoặc rẻ – cao), xuất xắc nói theo một cách khác là lúc interrupt signal có sự biến hóa cực hiếm (tăng hoặc giảm). Các lắp thêm có thể share 1 edge-triggered interrupt line.Hybrid Interrupt – giao diện lai: Một số khối hệ thống áp dụng phối hợp cả 2 loại ngắt vừa nêu sinh hoạt bên trên. Kiểu lai này hay vận dụng với NMI input đầu vào (non-maskable interrupt).

Xem thêm: Nạp Kim Cương Cdht - Nạp Game Mobile Cdht Wefire Qq Trên Android

Message – signaled – interrupt dựa vào message: Interrupt loại này sẽ không thực hiện hardware interrupt line như những interrupt vừa liệt kê. Tgiỏi vào đó, nó gửi một message bên trên một kênh liên lạc thông thường (thường xuyên là bus của hệ thống) để request for service. Mesage-signaled có nhiều đường nét tương đương với edge-triggered interrupt,.Doorbell: Khái niệm này dùng làm biểu đạt một nguyên tắc Lúc nhưng mà ứng dụng hoàn toàn có thể “thông báo” cùng với phần cứng rằng “còn một số trong những câu hỏi cần hoàn thành”. Đôi khi phần mềm đang đựat dữ liệu vào trong 1 vùng lưu giữ đã được “thống nhất” cùng “rung chuông báo hiệu” bằng cách ghi vào vùng lưu giữ không giống cùng với vùng lưu giữ đã có thống độc nhất vô nhị. Vùng lưu giữ không giống này còn được gọi là doorbell region. Có nhiều doorbell phục vụ những mục đích khác nhau

Độ ưu tiên giữa những interrupts – interrupt priorities

Do interrupt là asynch sự kiện (hardware interrupt) buộc phải processor cần có mang ra những cường độ ưu tiên cho các interrupt nhằm cách xử lý tình huống những interrupt xẩy ra đồng thời. Các cường độ ưu tiên này được ghi vào doc của processor.

Trong ngôi trường hợp interrupt có độ ưu tiên thấp đang được giải pháp xử lý thì xảy ra interrupt bao gồm ưu tiên cao hơn thế thì interrupt ưu tiên rẻ có khả năng sẽ bị tạm dừng xử lí… hành động này Hotline là interrupt nesting,

Cần chăm chú kích cỡ của stack Lúc nesting interrupt, Mỗi ISR của interrupt được nest buộc phải giữ quý giá các tkhô cứng ghi của chính nó trong stachồng, vấn đề này rất có thể dẫn tới stackoverflow nếu không kiểm soát chính xác size stachồng.

Interrupt priorities được set do phần cứng, phần mềm hoặc cả hai.

Ta quan trọng thao tác làm việc với global interrupt flags bởi ngôn ngữ C, nỗ lực vào đó, nên sử dụng asembly.

Interrupt Mapping

khi một interrupt xẩy ra và không bị không đồng ý cách xử lý thì processor sẽ nhảy đầm cho ISR – tập vừa lòng những đoạn code được lập trình tự trước để cách xử lý interrupt tương xứng. Để bảo vệ được ISR tương ứng cùng với interrupt vừa xảy ra, cần phải có một nguyên lý mapping giữa ISR với interrupt source.

Cơ chế mapping này lâu dài dưới dạng interrupt vector table. Nó là một trong mảng những nhỏ trỏ hàm (pointer to lớn function, Processor vẫn sử dụng một số lượng được gán mang đến từng interrupt làm cho index để chú ý mảng này. Và quý hiếm trên index tương xứng vẫn là bé trỏ hàm trỏ cho tới ISR cần phải thực thi.

Việc thiết lập ISR mang đến tất cả interrupt là cần thiết, kể cả cùng với phần lớn interrupts không được sử dụng trong khối hệ thống (rời chứng trạng hệ thống going off into the weeds – mất kiểm soát). Nếu cảm thấy việc setup ISR mang đến từng interrupt không thực hiện là 1 trong bài toán tốn thời gian, phổ biến sta có thể setup một ISR tầm thường cho các interrupt không áp dụng.

ISR – Interrupt Service Routine

Mục đích của bọn họ là ko để interrupt ảnh hưởng cho tới quá trình processor tiến hành lịch trình hiện giờ yêu cầu chúng ta đề xuất viết ISR càng nđính gọn càng xuất sắc. Nếu buộc phải thêm một số trong những làm việc cách xử lý đối với một interrupt cụ thể nào kia, hãy làm việc này sinh sống quanh đó ISR bởi một hàm khác…. Hàm này được call là DSR – deffered service routine.

Thường thì ISR không sở hữu và nhận tmê say số truyền vào với không tồn tại giá trị trả về. Một ISR cnạp năng lượng bản vẫn thực hiện hồ hết các bước sau:

Saving processor contextAcknowleding the interruptRestoring processor context

Một quan niệm đi liền với interrupt là interrupt latency – đây là thông số đo khoảng chừng thời hạn tự Khi interrupt xẩy ra đến đén Lúc processor ban đầu thực hiện ISR khớp ứng.

Shared data và race conditions

Việc share tài liệu (giới thiệu data) thân ISR với main program là một trong vấn đề khi kiến tạo embedded software gồm áp dụng interrupt.

Race condition là một trong trường hợp xảy ra khi công dụng thay đổi dựa vào trang bị tự tiến hành những lệnh vào main code cùng ISR. Cần tránh trường hợp này.

Race condition được coi là khôn cùng nặng nề phạt hiện nay vì interrupt là asynch event với race condition thì không phải lúc nào thì cũng xuất hiện….

Khái niệm race condition kéo theo khái niệm critical section. Critical section là một đoạn lịch trình yêu cầu được tiến hành tiếp tục từ trên đầu cho cuối, ko được phnghiền xảy ra interrupt trọng điểm (Trong ngôn ngữ C hoàn toàn có thể chỉ là một loại lệnh tuy thế trên thực tiễn, cần tới 4-5 chiếc lệnh asm tương tự…).

Xem thêm: Ryze Mùa 11

Giải pháp mang lại race condition đó là disable interrupt trước lúc bước vào xúc tiến critical section và enable interrupt Khi đang thực hiện ngừng critical section dồng thời giảm bớt tối đa số lượng cùng độ dài của critical section.


Chuyên mục: Công Nghệ