하드웨어에서 발생한 인터럽트나 소프트웨어에서 발생한 예외(exception)나 시스템 콜과 같이 소프트웨어에서 발생시킨 인터럽트나 모두 인터럽트 서비스 루틴에서 처리됩니다.ISR 자체가 커널 내부 코드 이므로 커널 영역에서 실행 되는 것이죠.
따라서 커널 모드에서 인터럽트가 발생하든, 인터럽트를 발생시키든 전부 커널 영역에서 실행 됩니다.
질문이 아마도 커널 영역에서 인터럽트가 일어났을 때 유저 영역에 알릴 수 있는가라는 뜻인 것 같은데. 커널 내부에서는 이미 유저 모드의 모든 프로세스에 대한 정보를 알 수 있습니다. 커널에서 인터럽트가 발생했을 때 특정 유저 모드의 쓰레드를 스케줄 시킬 수 있는 지 여부를 질문하신 것이라면 답은 맞다 입니다.
인터럽트란 것 자체가 유저영역을 향해서 발생 시킬 수 있는 것이 전혀 아닙니다. 말그대로 그저 인터럽트 즉 실행 중간에 끼어 들어가는 것이죠~
커널영역에서
커널영역에서 유저영역으로 인터럽트를 발생시킨다는 표현 자체가 이상합니다.
하드웨어에서 발생한 인터럽트나 소프트웨어에서 발생한 예외(exception)나 시스템 콜과 같이 소프트웨어에서 발생시킨 인터럽트나 모두 인터럽트 서비스 루틴에서 처리됩니다.ISR 자체가 커널 내부 코드 이므로 커널 영역에서 실행 되는 것이죠.
따라서 커널 모드에서 인터럽트가 발생하든, 인터럽트를 발생시키든 전부 커널 영역에서 실행 됩니다.
질문이 아마도 커널 영역에서 인터럽트가 일어났을 때 유저 영역에 알릴 수 있는가라는 뜻인 것 같은데. 커널 내부에서는 이미 유저 모드의 모든 프로세스에 대한 정보를 알 수 있습니다. 커널에서 인터럽트가 발생했을 때 특정 유저 모드의 쓰레드를 스케줄 시킬 수 있는 지 여부를 질문하신 것이라면 답은 맞다 입니다.
인터럽트란 것 자체가 유저영역을 향해서 발생 시킬 수 있는 것이 전혀 아닙니다. 말그대로 그저 인터럽트 즉 실행 중간에 끼어 들어가는 것이죠~
댓글 달기