글
[Kernel 2.6]인터럽트
Process 가 리눅스 커널의 기능을 호출 할 때는 시스템 콜을 이용
H/W 가 리눅스 커널의 기능을 호출 할 때는 Interrupt 구조를 이용.
리눅스에서는 Interrupt 의 레벨이 없고, 처리 자체를 응답성을 필요로 하는 부분과 필요로 하지 않는 부분으로 나눈다. 응답성이 필요한 부분은 가능한 한 실행 시간을 짧게하여 H/W Interrupt 로 실행. 응답성이 필요하지 않은 부분은 나중에 처리할 수 있도록 정리해 둔다. 이 처리를 Soft Interrupt 라고 한다. 예를 들면 이더넷 드라이버 처리( H/W Interrupt ), TCP/IP 프로토콜 처리( Soft Interrupt )
멀티프로세서에서의 인터럽트
- CPU에 관계없이 모든 Int Handler 를 처리 할 수 있고, 한 CPU가 H/W Int를 처리하는 중이면 가장 부하가 적은 다른 CPU에 Int를 발생시켜 Int Handler를 처리
- 같은 IRQ가 아닌 한 CPU 별로 각각의 H/W Int Handler 를 처리 할 수 있다.
인터럽트 종류
: 외부 장치 인터럽트, 타이머 인터럽트, 프로세서 간 인터럽트( 다른 CPU에 이벤트 통지 ), NMI( 마스크 불가 인터럽트 - 긴급 시 장해 대응 목적 ex - 메모리의 패리티 에러 발생 포착( Data검증 ), 워치독(watchdog : 자체적으로 Cnt를 증가하여 check하다가 어느 값이 되면 reset ), 디버거 강제 실행 등에 이용 )
예외 : 인터럽트와 비슷은 하지만, 인터럽트는 외적 요인에 의한 것이지만, 예외는 CPU의 동작 자체에 의해 일으켜진 이벤트를 뜻한다( 예 : 0으로 나누기, 페이지 접근 위반 등 )
하드웨어 인터럽트 처리 동작 예
1. 네트워크 카드에 패킷 도착시 인터럽트 요청
2. 커널은 인터럽트 핸들러를 실행.
3. 인터럽트 핸들러는 네트워크 카드로 부터 패킷 데이터를 가져와서 소프트 인터럽트 핸들러의 실행을 요청. 인터럽트 핸들러 수행은 마치고, 다음 인터럽트에 대비
4. 잠시 후 소프트 인터럽트 핸들러 실행하여 TCP/IP인 경우 그에 따른 소켓에 패킷을 전송.
5. 프로세스는 소켓으로 부터 데이터를 읽는다.
'Programming > Linux' 카테고리의 다른 글
셸 (0) | 2009.10.26 |
---|---|
X 윈도우 (0) | 2009.10.26 |
리눅스 파티션 설정 (0) | 2009.10.26 |
멀티부팅과 파티션 (0) | 2009.10.09 |
시스템 정보 보기 (0) | 2009.10.08 |