커널 2.4의 interrupt 정리 1
이 글은 O'Reilly에서 출판된 리눅스 커널의 이해를 읽고 개인적으로 정리한 내용이다.
인터럽트 : 커널 2.4에서 인터럽트란 exception(예외)과 일반적인 의미의 인터럽트 두가지로 구분된다.
exception은 예외/프로세스 수행중의 구문에러등으로 인한 인터럽트를 의미힌다. 일반적으로 인터럽트는
프로세스와 비교하여 포함하고있는 컨텍스트가 적어 context switching이 프로세스보다 빠르다. 이는 짧
은 수행속도를 가짐을 의미한다.
인터럽트의 특징은 크게 3가지가 있다.
첫째, 인터럽트는 커널이 어떠한 작업을 수행하는 중이라도 언제든지 발생할 수 있다. 커널의 인터럽트 처리
는 두가지로 구분 되는데, dynamic한 인터럽트 처리를 하는 top half와 인터럽트를 처리하는 linked-list
를 이용한 일련의 큐를 관리하여 인터럽트처리를 나중으로 미루는 bottom half가 있고, 리눅스 커널 2.4
의 경우 bottom half를 사용한다.
둘째, 첫째 특징에서 인터럽트는 어떠한 상황에서도 발생할 수 있다고 했는 데, 이는 커널이 이미 인터럽트
를 처리하는 상황에서도 다른 인터럽트가 발생하게 될 수도 있음을 의미한다. 인터럽트 간에는 인터럽트 핸
들러가 존재하여 이들 인터럽트를 제어하는 커널의 제어경로가 중첩되어도 이를 무난한 실행이 가능하도록
인터럽트 핸들러는 well made 되어 있어야 한다.
셋째, 커널은 인터럽트를 처리하는 동안에도 인터럽트가 발생하면 처리할 수 있지만, 특정한 커널 코드 내에
서는 이를 방지해야하는 경우가 있다. 이는 함수의 atomic한 수행을 돕는 기법으로 임계영역(critical
section/region)이라는 원자적인 블레스를 두어 이 안에서의 프로세스 수행시에는 다른 프로세스의 간섭을
받지않는 영역이다. 이는 세마포어를 이용하여 임계영역을 구현하여 사용한다.
분량이 많아 이후에 내용을 다시 추가하도록 한다.
댓글
answer this post
Old school students composed the research papers by their own and it could failure their grades. However, everything is altered in modern world and college students would have a chance to purchase essay service from premium essay service writing services.
respond this post
With the purpose to prevent the failures in the dissertation discussion, it would be better to buy the good enough theme associated with this good topic in the buy dissertation service online. It is not very hard to have the doctoral degree going that great way.
댓글 달기