1

최근 키패드 드라이버에 쓰레드 IRQ's을 쓰고 싶습니다. 스레드 IRQ 핸들러에 대한 몇 가지 배경의 경우 :리눅스 장치 드라이버 - 쓰레드 된 IRQ 핸들

http://lwn.net/Articles/302043/

내가 이해하는 바로는, 모든 시각을 IRQIRQ 핸들러 스레드가 깨어 될 것이다 발생합니다. 그래서 KEY A을 누르면 스레드가 깨어나고 완료 될 때까지 실행됩니다. 자, IRQ에서 KEY A을 처리하는 동안 처리기 스레드가 계속 실행 중일 때 KEY B을 눌러야하는 동작은 무엇입니까? IRQKEY B은 무시됩니까?

예상되는 동작은 무엇입니까?

답변

2

가 이상적으로 시스템이 항상> 키 B.에게 키 A-의 순서를 인정 것이다

그러나 키를 누를 것을 인정하고, 각 키를 누르면되는 시점에서 뭔가를해야하는 시스템, 즉 키보드 인터럽트가 발생하면 최소한 키 누름을 대기열에 기록해야합니다.

단일 프로세서의 관점에서 보면 한 번에 하나만 할 수 있기 때문에 A 키를 녹음하는 도중에 있다면 B 키를 동시에 녹음 할 수 없습니다. 대신 A를 포기하고 B를 기록해야합니다. 그렇지 않으면 B를 무시해야합니다.

따라서 인터럽트 처리의 목표는 주어진 인터럽트.

스레드 된 인터럽트의 목표는 스레드를 분리하기 위해 더 많은 작업을 밀어 넣기 때문에 인터럽트를 확인하는 데 필요한 최소값이 줄어들고 인터럽트를 처리하는 데 걸리는 시간 (다른 인터럽트를 처리 할 수없는 곳) 동시에) 감소됩니다.

그럼에도 불구하고 프로세서가 인터럽트를 무시하거나 무시할 필요가 없다는 이론적 인 보장은 없지만 실제로는 그렇지 않을 수도 있습니다.

키 누르기에 대한 구체적인 예를 들어서, 프로세서가 A의 최소 처리를 완료하기 전에 B를 누르기에 충분히 빨라지면 두 인터럽트가 모두 동일한 소스에서 발생하므로 동일합니다 우선 순위는 B가 무시되며 B가 눌러지지 않은 것처럼 보입니다.

관련 문제