2011. 10. 13. 20:11
softirq 사용 OS이야기2011. 10. 13. 20:11
- 새로운 softirq를 추가하려 한다면 태스크릿으로는 왜 불충분한가를 곰곰히 따져 보아야 한다.
- 태스크릿은 동적으로 생성되며 락에 대한 요구사항이 덜 엄격하여 훨씬 간단함에도 불구하고 많은 경우에 있어 매우 잘 동작하기 때문이다.
- 그럼에도 불구하고 타임크리티컬한 응용프로그램이 자신만의 효율적인 락 메커니즘을 제공할 수 있따면 softirq가 가장 올바른 해결책일 수 있다.
인덱스 할당
softirq 컴파일시 <linux/interrupt.h>에 있는 enum에 정의되어야 한다. 커널은 0부터 시작하는
이 인덱스를 상대적인 우선순위로 사용한다.
즉, 작은 인덱스의 softirq가 우선적으로 실행된다.
새 softirq를 만들려면 이 enum에 새 항목을 추가해야한다. 하지만 다른 코드에서 하듯이 이 목록의 맨 마지막
새 항목을 추가하는 것은 바람직하지 않다. 대신 새 softirq의 우선순위를 고려하여 적절히 다른 softirq 사이에
끼워넣는 것이 좋다.
- 태스크릿은 동적으로 생성되며 락에 대한 요구사항이 덜 엄격하여 훨씬 간단함에도 불구하고 많은 경우에 있어 매우 잘 동작하기 때문이다.
- 그럼에도 불구하고 타임크리티컬한 응용프로그램이 자신만의 효율적인 락 메커니즘을 제공할 수 있따면 softirq가 가장 올바른 해결책일 수 있다.
인덱스 할당
406enum 407{ 408 HI_SOFTIRQ=0, 409 TIMER_SOFTIRQ, 410 NET_TX_SOFTIRQ, 411 NET_RX_SOFTIRQ, 412 BLOCK_SOFTIRQ, 413 BLOCK_IOPOLL_SOFTIRQ, 414 TASKLET_SOFTIRQ, 415 SCHED_SOFTIRQ, 416 HRTIMER_SOFTIRQ, 417 RCU_SOFTIRQ, /* Preferable RCU should always be the last softirq */ 418 419 NR_SOFTIRQS420};
softirq 컴파일시 <linux/interrupt.h>에 있는 enum에 정의되어야 한다. 커널은 0부터 시작하는
이 인덱스를 상대적인 우선순위로 사용한다.
즉, 작은 인덱스의 softirq가 우선적으로 실행된다.
새 softirq를 만들려면 이 enum에 새 항목을 추가해야한다. 하지만 다른 코드에서 하듯이 이 목록의 맨 마지막
새 항목을 추가하는 것은 바람직하지 않다. 대신 새 softirq의 우선순위를 고려하여 적절히 다른 softirq 사이에
끼워넣는 것이 좋다.
'OS이야기' 카테고리의 다른 글
softirq 레이즈 (0) | 2011.10.13 |
---|---|
softirq 새 핸들러 등록 (0) | 2011.10.13 |
softirq 구현, 핸들러, 실행 (0) | 2011.10.13 |
Bottom Half (0) | 2011.10.13 |
인터럽트 핸들링구현 (0) | 2011.10.13 |