인터럽트 스택

Ahn9807 (토론 | 기여)님의 2023년 2월 13일 (월) 02:17 판 (새 문서: 분류: 제어흐름 == 개요 == 인터럽트 스택(Interrupt stack)은 인터럽트가 작동하기 위해서 필요한 커널 공간의 스택이다. 인터럽트 스택에는 유저 프로세스에 대한 상태정보와, syscall handler에 대한 스택으로 사용된다. 인터럽트 스택은 Atomic하게 setting되어야 한다. 하드웨어적인 방식으로 Interrupt Stack이 쌓이는 도중에는 다른 sp에 대한 함수가 pending 됨으로써 이러한...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

인터럽트 스택(Interrupt stack)은 인터럽트가 작동하기 위해서 필요한 커널 공간의 스택이다. 인터럽트 스택에는 유저 프로세스에 대한 상태정보와, syscall handler에 대한 스택으로 사용된다. 인터럽트 스택은 Atomic하게 setting되어야 한다. 하드웨어적인 방식으로 Interrupt Stack이 쌓이는 도중에는 다른 sp에 대한 함수가 pending 됨으로써 이러한 작동이 Atomic함을 보장한다. 하드웨어는 인터럽트를 호출하면서 인터럽트 스택에 현재 user process 혹은 kernel process 에 대한 정보를 저장함으로써 커널이 인터럽트를 처리한후 원래 위치로 돌아 갈 수 있도록 한다. 그후 pre interrupt handler가 레지스터의 상태를 인터럽트 스택에 저장하게 된다. 이때 ESP는 두번 저장되게 되는데, 하나는 하드웨어적으로 저장된 ESP이고 나중은 소프트웨어적으로 저장된 레지스터값이다.