인터럽트 중첩 관련

무명 2019.04.05 16:55 조회 수 : 813

인터럽트 중첩 관련해서 몇가지 질문이 있습니다.

 

 

(1) 프로세스가 실행 중에 인터럽트가 발생하면

현재 CPU 레지스터들을, 지금까지 실행중이던 프로세스에 할당되어 있는 커널 스택(혹은 인터럽트 스택)에 저장하고

인터럽트 핸들러를 실행하잖아요.

 

서로 다른 인터럽트가 계속 떠서 인터럽트가 중첩되면

인터럽트 핸들러가 실행중일 때 레지스터들도 또 백업해놓아야 할 것 같은데

(처음에 실행중이었던) 인터럽트된 그 프로세스에 할당되어 있는 커널 스택에 계속 저장되나요?

 

프로세스가 실행중이던 상태(레지스터)를 백업해놓는 곳은 그 프로세스에 할당되어 있는 커널 스택인데

인터럽트가 실행중이던 상태(레지스터)를 백업해놓는 곳도 (인터럽트된) 프로세스에 할당되어 있는 커널 스택인가요?

 

다시 말하면,

A 프로세스 -> I 인터럽트 -> J 인터럽트 -> K 인터럽트

이렇게 중첩되었다면

A 프로세스가 중단될 시점의 레지스터 백업 데이터와

I 프로세스가 중단될 시점의 레지스터 백업 데이터와

J 프로세스가 중단될 시점의 레지스터 백업 데이터가

모두 A 프로세스에 할당되어 있는 커널 스택에 저장되는지 입니다.

 

커널 스택이 아니라 인터럽트 스택을 사용하는 경우와 사용하지 않는 경우가 다르면

구분해서 설명 부탁드립니다.

 

커널 스택은 프로세"스"마다 할당되어 있고 인터럽트 스택은 프로세"서"마다 할당되어 있는 거죠?

 

 

(2) 프로세스가 리스케줄링 되는 대표적인 경우는

프로세스가 이벤트를 기다리기 위해 프로세스 스스로 대기 상태로 진입하는 경우와

타이머 인터럽트 핸들러에서 스케줄링하는 경우죠?

 

그러면

A 프로세스가 실행 중일 때 I 인터럽트가 발생했고

I 인터럽트 핸들러가 실행 중일 때 타이머 인터럽트가 발생해서

I 인터럽트 핸들러가 실행을 중단하고 타이머 인터럽트 핸들러로 넘어갔습니다.

이 때, 스케줄링이 일어날 수 있나요?

스케줄링이 일어나서 다른 프로세스가 A 프로세스를 선점해버리면 안될 것 같은데

스케줄링이 일어나지 않도록 되어 있나요?

 

같은 맥락에서,

I 인터럽트 핸들러가 실행을 마치고 복귀할 때,

반드시 처음 인터럽트 되었던 A 프로세스로만 복귀하나요?
다른 프로세스로 복귀되는 경우가 없을까요?

 

감사합니다.

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22249
517 alloc과 free함수에 대해서 질문입니다. [1] 정재훈 2011.06.28 93655
516 안드로이드 system 폴더안의 파일을 인식못하는데.. [5] 김영일 2011.04.14 69698
515 x86에서 ZONE_DMA 영역의 사용 [1] 홍문화 2011.05.02 58308
514 커널에서 page alloc에 관해서 [1] 미다리로23 2017.02.05 34576
513 디바이스 드라이버 모듈에서 작성한 함수를 커널에서 사용하는 방법 [1] 개짖는소리 2017.02.06 27049
512 Linux kernel의 CFS(Completely Fair Scheduling) 스케줄러에서 time slice 구하는 방법? [10] 김재호 2010.04.30 25225
511 "만들면서 배우는 OS..." 4장 kernel.asm 중 idtr 설정 질문드립니다 쿨쿨 2013.06.18 24957
510 리눅스 스케줄러 관련 [9] 홍문화 2011.02.23 22949
509 NFS NAS SAN 이란 무엇인가? file 박은병 2010.04.13 21881
508 s3c2440기반의 리눅스 커널 분석 중 MM관련 질문입니다. 유태경 2007.09.02 21523
507 /dev 폴더에 있는 node파일 중에서 어떤 것을 open해야 플래쉬를 사용할 수 있을까요? [1] 박종주 2012.02.17 19849
506 sparsemem에 대한 질문이 있습니다. [5] 안정모 2010.03.20 19718
505 16기 리눅스 커널 스터디 C조 18주차 질문입니다. [3] cien 2019.10.12 18830
504 tty, tty0, console, vc 는 각각 뭐하는 디바이스인지? [3] 이창만 2008.12.04 18556
503 ARM A8 이상의 프로세서를 공부할 때 스터디 방향 [4] 유강희 2011.06.15 18517
502 임베디드 OS 만들기 내용과 관련하여 문의드립니다. [5] 송인재 2010.03.25 18321
501 far call 이란 무엇인가요? [4] 박한범 2010.04.13 17841
500 파일시스템에 관한 질문(Htree [6] 사앙조 2017.05.22 17071
499 SMP관련 질문입니다. [2] 컴퓨터 2017.04.13 16586
XE Login