본문 바로가기

Linux(Centos or RHEL)/RHEL 기초

인터럽트 컨텍스트란?

아래의 블로그를 참고하여 글을 작성하였습니다. 제가 공부할 때 참조한 커널 버전은 v2.6.39.4입니다.

http://rousalome.egloos.com/10012152

 

[리눅스커널] 인터럽트: 리눅스 커널이 처리하는 인터럽트의 주요 개념

앞에서 인터럽트에 대해 소개했으니 리눅스 커널에서 인터럽트를 처리하는 방식을 이해하기 위해 알아야 할 주요 개념을 소개합니다.  인터럽트 핸들러  인터럽트 벡터   인터럽트 디스크립터   인터럽트 컨텍스트 인터럽트 핸들러란? 인터럽트가 발생하면 이를 핸들링하기 위한 함수가 호출되는데 이를 인터럽트 핸들러라고 합니다. 예를 들어

rousalome.egloos.com

 

인터럽트 핸들러

인터럽트 벡터

인터럽트 디스크립터

인터럽트 컨텍스트

 

앞에서 인터럽트 디스크립터에 대해 간단히 공부해 보았으니, 이제 인터럽트 컨텍스트에 대해서 공부해 보겠습니다.

 

인터럽트 컨텍스트에 대해 공부하기 전, 컨텍스트란 무엇인가에 대해 먼저 알아보시면 좋을 것 같습니다.

https://mns010.tistory.com/16

 

 

보통 컨텍스트라고 하면 프로세스 컨텍스트를 많이 떠올리게 됩니다. 하지만 컨텍스트에는 크게 두 가지로 구분이 되어있습니다.

 

process context

interrupt context

 

 

프로세스 컨텍스트?

프로세스의 중요한 부분 중 하나는 실행 중인 프로그램 코드입니다. 실행 파일에서 이 코드를 읽어 들이고, 프로그램의 주소 공간에서 코드를 실행합니다. 일반적으로 프로그램은 사용자 공간에서 실행됩니다. 프로그램이 시스템 호출을 사용하거나, 예외처리가 발생한 경우, 프로그램은 커널 공간으로 진입합니다. 이런 상황을 커널이 프로세스를 대신해 실행 중이라고 하거나 커널이 프로세스 컨텍스트에 있다라고 합니다. 프로세스 컨텍스트에 있을 때에는 current 매크로를 사용할 수 있습니다. 커널이 작업을 끝내면 프로세스는 사용자 공간에서 실행을 계속합니다. 그 사이에 우선순위가 높은 프로세스가 실행 가능한 상태가 되어 스케줄러가 그 프로세스를 먼저 실행하지 않는다면 말입니다.

, 프로세스 컨텍스트는 커널 동작 상태 중 하나로, 시스템 호출을 실행하거나 커널 스레드를 실행할 때와 같이 프로세스 대신에 커널이 실행되는 상태입니다. 커널이 프로세스 컨텍스트에 있을 때, current 매크로는 관련 태스크를 가리킵니다. 거기에 프로세스 컨텍스트에 있는 커널과 프로세스가 묶여 있어서 프로세스 컨텍스트는 휴면상태가 되거나, 스케줄러를 호출할 수 있습니다.

 

 

 

인터럽트 컨텍스트?

프로세스 컨텍스트와 비슷하지만, 인터럽트 컨텍스트는 위와는 달리 특정 프로세스와 묶여 있지 않습니다. current 매크로는(인터럽트가 중단시킨 프로세스를 가리키고 있기는 하지만) 특별한 의미가 없습니다. 뒤에 버티고 있는 프로세스가 없어서 인터럽트 컨텍스트는 휴면상태가 될 수 없습니다. 또한 다시 스케줄링이 될 수도 없습니다. 따라서 특정 함수는 인터럽트 컨텍스트에서는 호출할 수 없습니다. 예를 들면, 함수가 실행 중 휴면상태가 될수 있는 함수가 있습니다. 따라서 인터럽트 핸들러에서 사용할 수 있는 함수는 제한됩니다.

 

 

 

 

 

・참조

http://www.embeddedlinux.org.cn/essentiallinuxdevicedrivers/final/ch04lev1sec2.html#ch04lev1sec2

https://topic.alibabacloud.com/a/summary-of-process-context-and-interrupt-context_8_8_30142056.html

http://www.embeddedlinux.org.cn/essentiallinuxdevicedrivers/final/ch02lev1sec3.html

https://blog.naver.com/loveall0926/220038217140

http://books.gigatux.nl/mirror/kerneldevelopment/0672327201/ch06lev1sec5.html