인터럽트를 비활성화 할 때 일어나는 일과 인터럽트로 무엇을합니까? 어떻게 처리하는 방법을 모릅니다.

StackOverflow https://stackoverflow.com//questions/10671048

문제

인터럽트를 비활성화 할 때 (x86의 cli 명령어 사용), 정확히 일어나는 일은 무엇입니까?

  • PIC가 인터럽트를 켜고 일어나는 일이 일어날 때 인터럽트를 발사합니까?(그렇다면, 기다리는 시간, 그리고 시간이 만료되면 어떤 일이 일어나는 일이 무엇입니까?)

  • 는 인터럽트가 - 장치의 관점에서 - 응답이없는 "블랙홀"으로 보내지는 않습니다.

  • 어떻게 든 "CPU가 바쁘다"또는 무언가를 " 라는 장치에 알려줍니다.

  • 또는 다른 일이 일어나는가?

    또한 어떻게 처리하는 방법을 모르는 인터럽트를 어떻게 처리합니까? 그림 (또는 장치가 무엇인지 모르는 경우)을 알려주는 몇 가지 방법이 있습니까? "네, 메시지가 생겼지 만, 어떻게 해야할지 모르겠습니다."

도움이 되었습니까?

해결책

8259A PIC는 CPU에서 인트나 신호에 대해 기다립니다. CPU는 컨트롤을 적절한 ISR로 전송하여 인터럽트 처리를 시작할 때 전송합니다. 어느 isr? 그림은 인터럽트 벡터를 CPU에 제공하므로 주소의 IVT / IDT를 찾고 나머지는 알 수 있습니다. 그림이 INTA를받을 때까지 인터럽트 벡터를 공급하지 않습니다.

8259A PIC에는 I / O 장치와의 단방향 통신 만 있습니다. 그들은 서비스가 필요한 인터럽트가있는 것을 알 수 있습니다.

그래서 CPU가 인터럽트에 응답하지 않는 경우 그림의 공기 중에 모든 것이 있습니다. 그러나 장치는 Whim이 De-Assert를 표시 한 다음 인터럽트 요청 신호를 다시 주장 할 수 있습니다. 나는 어떤지 모르겠다. 나는 또한 인터럽트 서비스를위한 시간 요구 사항을 알지 못한다.

특정 소스에서 인터럽트에 관심이 없으면 마스크를 가면 할 수 있으며 아무 것도 얻지 못할 수 있습니다. 인터럽트를 취하지 만 어떻게 처리하는 방법을 모르면, 당신은 그것을 처리 한 사진을 알려줄 수 있습니다. 이것은 중단 된 장치를 "냉동"상태로 남겨두고 무기한으로 대기하는 일이 발생할 수 있습니다. 또한 장치가 인터럽트 요청 신호를 유지하는 데 계속되면 레벨 트리거 모드에서 인터럽트를 듣는 경우 문제가 될 수 있습니다.

다른 팁

인터럽트는 여전히 불이지만 CPU가 듣지 않고 있습니다.다시 듣기 시작하면 (sti) 신호는 여전히 거기에 있으며 첫 번째 기회에 적용됩니다.

PC PIC에는 여러 단계의 인터럽트가 있으며 각 우선 순위 수준에 대해 하나의 활성 인터럽트를 보유 할 수 있습니다.CPU가 해당 취급이 완료되었음을 알릴 때까지 각각 하나씩 유지합니다.오랜 기간 동안 인터럽트가 장애가있는 시간이 걸릴 수 있으므로 그렇게하지 마십시오!

인터럽트를 담당하는 장치는 대기 중 임의의 응답을 얻지 못할 것입니다 - 어쨌든 응답의 종류입니다.기다릴 수없는 경우, CPU가 결국 주위에 올 때 CPU가 볼 수있는 오류 상태를 입력 할 수 있습니다.

사용자가 명시 적으로 활성화 한 인터럽트 만 얻을 수 있으므로 놀라움이 없어야합니다.인터럽트를 켜는 장치 드라이버가 처리하는 방법을 더 잘 알고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top