인터럽트 처리 프로세스의 5단계: 1. 인터럽트 요청 단계 2. 인터럽트 중재 단계에는 하드웨어 중재와 소프트웨어 중재의 두 가지 방법이 있습니다. 3. 인터럽트 응답 단계, CPU는 인터럽트 소스에 인터럽트 응답 신호를 보냅니다. ; 4. 인터럽트 서비스 단계; 5. 인터럽트 복귀 단계, 원래 프로그램의 중단점으로 돌아가서 하드웨어 사이트를 복원하고 원래 프로그램을 계속 실행합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.
인터럽트 처리의 기본 프로세스는 인터럽트 요청, 인터럽트 중재, 인터럽트 응답, 인터럽트 서비스 및 인터럽트 반환의 5단계로 구성됩니다.
1) CPU 내부에서 발생하는 인터럽트(내부 인터럽트)는 인터럽트 요청이 필요하지 않으며, CPU 내부의 인터럽트 제어 로직이 이를 직접 받아 처리합니다.
2) 외부 인터럽트 요청은 인터럽트 소스에 의해 이루어집니다. 외부 인터럽트 소스는 CPU의 인터럽트 입력 핀을 이용하여 인터럽트 요청 신호를 입력한다. 일반적으로 CPU에는 마스크 가능한 인터럽트 요청 입력 핀과 마스크 불가능한 인터럽트 요청 입력 핀의 두 가지 인터럽트 요청 입력 핀이 있습니다.
각 인터럽트 소스가 인터럽트 요청 신호를 보내는 시간도 불확실하며, CPU가 인터럽트에 응답하는 시기도 불확실합니다. 따라서 각 인터럽트 소스에는 인터럽트 요청 플립플롭이 있어 자체 인터럽트 요청 신호를 래치하고 CPU가 인터럽트 요청을 삭제하기 전에 해당 요청에 응답할 때까지 이를 유지합니다.
CPU 내부에 인터럽트 활성화 플립플롭이 있습니다. "1"이면 CPU가 인터럽트에 응답할 수 있게 되는데, 이를 on Interrupt라고 합니다. "0"이면 CPU가 인터럽트에 응답할 수 없으며 인터럽트가 차단되는 것을 off Interrupts이라고 합니다.
%%일반적으로 CPU가 재설정되면 인터럽트 활성화 플립플롭도 "0"으로 재설정됩니다. 이는 인터럽트가 꺼진다는 의미입니다. CPU 인터럽트가 응답하면 CPU는 자동으로 인터럽트를 끄고 다른 새로운 인터럽트를 받아들이는 것이 금지됩니다.
%%인터럽트 활성화 트리거의 상태는 인터럽트 켜기 또는 끄기 명령어를 사용하여 설정할 수 있습니다.
CPU는 동시에 하나의 인터럽트 소스에서만 요청을 수락할 수 있습니다. 가장 높은 인터럽트 우선순위입니다. 이 프로세스를 인터럽트 중재라고 합니다.
중단 중재는 하드웨어 방법이나 소프트웨어 방법을 사용할 수 있습니다.
CPU는 인터럽트 요청을 감지한 후 먼저 인터럽트 요청 레지스터의 내용을 읽고 해당 상태를 비트별로 감지합니다. 특정 비트가 1로 감지되면 다음과 같이 결정됩니다. 해당 인터럽트 소스에는 인터럽트 서비스 루틴을 실행하기 위한 인터럽트 요청 및 전송이 있습니다.
먼저 감지된 것이 더 높은 우선순위를 가지며, 나중에 감지된 것이 더 낮은 우선순위를 갖습니다. 감지 순서는 각 인터럽트 소스의 우선순위입니다.
위 그림의 입력 포트 주소가 87FFH라고 가정하겠습니다. 다음 쿼리 프로그램이 있습니다.
MOV DX, 87FFH
IN AL, DX; 인터럽트 요청 레지스터의 내용을 읽습니다.
SHR AL, 1
JC IRQ0에 요청이 있습니다. IR0
SHR AL, 1
JC IRQ1에 요청이 있습니다. IR1로 전송됩니다.
SHR AL,1
JC IRQ2에 요청이 있습니다. IR2
로 전송됩니다...
소프트웨어 의사결정에 오랜 시간이 걸립니다. 인터럽트 소스가 많으면 인터럽트의 실시간 성능이 떨어지지만 소프트웨어 우선순위 배열은 유연합니다.
특수 하드웨어 회로를 사용하여 인터럽트 소스의 우선순위를 결정하는 두 가지 일반적인 방법이 있습니다: 데이지 체인 중재 회로 및 인터럽트 컨트롤러 중재.
디자인 아이디어: 각 인터럽트 소스에는 인터럽트 논리 회로가 있으며 모든 인터럽트 논리 회로는 데이지 체인과 같은 체인을 형성합니다. 체인 앞쪽에 있는 인터럽트 소스의 우선순위가 가장 높으며, 장치가 뒤쪽에 있을수록 우선순위가 낮아집니다.
구현 과정: CPU는 인터럽트 요청을 수신하고, 인터럽트가 허용되면 CPU는 인터럽트 응답 신호를 보냅니다. 인터럽트 응답 신호는 데이지 체인의 프런트 엔드에 먼저 도달합니다. 인터럽트 소스 1이 인터럽트를 요청하면 인터럽트 응답 신호를 가로채어 다음 인터럽트 소스로 전송할 수 없도록 차단합니다. 다음 인터럽트 소스가 인터럽트 요청을 제기했는지 여부에 관계없이 인터럽트 응답 신호를 수신할 수 없으므로 해당 인터럽트 요청에 응답할 수 없습니다.
Intel8259A와 같은 인터럽트 컨트롤러는 다양한 방법으로 인터럽트 소스의 인터럽트 우선순위를 설정할 수 있습니다. 인터럽트 컨트롤러에는 현재 인터럽트를 요청하는 가장 높은 우선순위의 인터럽트 소스를 자동으로 결정하고 해당 인터럽트 벡터 코드를 데이터 버스로 보내는 인터럽트 우선순위 판별자가 있습니다. .
인터럽트 조정 후 인터럽트 처리는 인터럽트 응답 단계로 들어갑니다. 인터럽트에 응답할 때 CPU는 인터럽트 소스에 인터럽트 응답 신호를 보냅니다.
① 하드웨어 사이트를 보호합니다.
② 인터럽트를 끕니다.
③ 중단점을 보호합니다. 인터럽트 서비스 프로그램의 주소.
1)
사이트를 보호합니다.인터럽트 서비스 루틴 시작 부분에 여러 푸시 명령어를 배열하여 각 레지스터의 내용을 스택에 푸시하여 저장합니다. 2)
인터럽트를 활성화합니다.인터럽트 서비스 루틴이 실행되는 동안 더 높은 수준의 인터럽트 요청은 현재 인터럽트 서비스 루틴을 인터럽트하여 인터럽트 중첩을 달성하는 것이 허용됩니다. 3)
서비스 중단.인터럽트 소스에 대한 특정 요구 사항을 완료하세요. 4)
장면을 복원하세요.인터럽트 서비스 루틴이 종료되기 전에 메인 프로그램의 인터럽트 장면을 복원해야 합니다. 일반적으로 스택에 저장된 로컬 정보는 원래 레지스터에 팝됩니다. 5)
인터럽트 반환. 원래 프로그램의 중단점으로 돌아가 원래 프로그램을 계속 실행합니다.
더 많은 프로그래밍 관련 지식을 보려면
위 내용은 인터럽트 처리의 5단계는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!