달력

2

« 2025/2 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

'OS이야기'에 해당되는 글 86

  1. 2011.10.13 softirq 사용
2011. 10. 13. 20:11

softirq 사용 OS이야기2011. 10. 13. 20:11

- 새로운 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_SOFTIRQS 
420};

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
:
Posted by НooпeУ


Code Start Code End