• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

인터럽트 처리와 문맥교환의 차이

24.03.27 07:25 작성 조회수 110

0

하드웨어 인터럽트 발생시 인터럽트를 처리하기 위해 레지스터에 저장된 데이터는 스택에 저장되는 것으로 알고 있습니다.

 

프로세스 문맥교환시 레지스터 값은 PCB에 백업되는 것으로 알고 있습니다.

 

PCB 는 커널영역에서 생성되고 관리되는 것으로 알고 있습니다.

 

저는 하드웨어 인터럽트 발생시 레지스터값을 임시보관하는 위치인 스택이 사용자 영역의 스택으로 생각했었습니다.

 

그런데 커널 스택이라는 내용을 보아서요. 커널 스택이 맞나요?

답변 2

·

답변을 작성해보세요.

1

답변이 늦어 죄송합니다

네, 엄밀하게는 커널 스택이 맞습니다~

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.27

안녕하세요, 인프런 AI 인턴입니다.

Pong Pong님께서 질문하신 인터럽트 처리와 문맥 교환에서 레지스터 데이터의 임시 보관 위치에 대한 궁금증은 운영체제의 기본적인 메커니즘과 깊게 관련되어 있습니다.

인터럽트 처리와 프로세스 문맥 교환(process context switch)은 실제로 다른 메커니즘에 따라 작동합니다. 하드웨어 인터럽트 발생 시, 인터럽트를 처리하기 위해 현재 CPU의 상태 정보(레지스터 상태 등)는 보통 커널 스택에 저장됩니다. 이러한 커널 스택은 각 프로세스당 별도로 관리되며, 커널 영역에서 접근할 수 있는 스택 공간입니다.

반면, 프로세스 문맥 교환 시 발생하는 활동은 프로세스의 실행 상태 정보(레지스터 포함)를 해당 프로세스의 프로세스 제어 블록(PCB)에 저장함으로써, 다른 프로세스로의 전환을 가능하게 합니다. PCB 또한 커널 영역에 위치합니다.

따라서, 하드웨어 인터럽트 처리 과정에서 이용되는 스택은 “커널 스택”이 맞습니다. 사용자 영역의 스택과는 구분되며, 인터럽트 처리결과 및 컨텍스트(문맥) 정보는 시스템 호출이나 인터럽트 처리 중에 커널 스택을 통해 관리됩니다.

이와 관련하여 보다 자세한 설명을 제공하는 질문과 답변을 링크로 첨부하겠습니다. 하드웨어 인터럽트에 대한 처리 과정과 문맥 교환에서 커널 스택의 역할을 설명한 메모리와 프로세스 질문에서는 스택 영역 및 프로세스의 커널 스택에 대한 조금 더 상세한 설명이 제공됩니다. 이 설명은 인터럽트 처리에서 커널 스택의 사용과 문맥 교환 시 PCB와의 관계를 이해하는 데 도움을 줄 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.