달력

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
2011. 10. 13. 18:04

인터럽트 컨텍스트 OS이야기2011. 10. 13. 18:04

인터럽트 핸들러나 bottom half를 실행할 때 커널은 인터럽트 컨텍스트에서 동작한다.
프로세스 컨텍스트란 커널이 프로세스 대신에 실행중인 상태임을 상기해보자
즉, 시스템콜이나 커널 스레드를 동작시키는 경우가 프로세스 컨텍스트에 해당한다.

반면, 인터럽트 컨텍스트는 어떤 프로세스와 관련돼 있지 않다.
따라서 currnet매크로는 별로 유용하지 않다. 관련된 프롯스가 없으므로 인터럽트 컨텍스트에서는 휴면할 수 없다.
따라서 휴면이 가능항 몇몇 함수는 인터럽트 컨텍스트에서 사용할 수 없다는 제약조건이 생긴다.

인터럽트 컨텍스트느느 시간에 민감한테 왜냐하면 인터럽트 핸들러는 다른 코드를 중단시킨 상태에서 실행되고 있기 때문이다. 따라서 코드는 빠르고 간단해야 하며 루프의 사용은 피해야한다. 인터럽트 핸들러가 다른 코드를 중단시키고 있다는 사실을 명심해야 한다.
그리고 시간이 오래 걸리는 작업들은 가능한 한 bottom half에서 좀 더 편리한 시간에 수행해야 한다.

인터럽트 핸들러의 스택과 관련한 설정은 환경 설정에 따라 조정 가능하다.
중단된 프로세스의 커널 스택을 고융하여 사용한다.
커널 스태그이 크기는 2페이지이다. 일반적으로 이은 32비트 아키텍쳐에서는 8KB. 이런 설정에서 인터럽트 핸들러들이 스택을 공유하므로 각 핸들러가 사용하라 수 있는 공간은 협소하다

'OS이야기' 카테고리의 다른 글

Bottom Half  (0) 2011.10.13
인터럽트 핸들링구현  (0) 2011.10.13
실제 인터럽트 핸들러  (0) 2011.10.13
load_balance()  (0) 2011.10.13
Sleep And Block  (0) 2011.10.13
:
Posted by НooпeУ


Code Start Code End