인터럽트 중첩 관련

무명 2019.04.05 16:55 조회 수 : 811

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

 

 

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

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

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

 

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

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

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

 

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

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

 

다시 말하면,

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

이렇게 중첩되었다면

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

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

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

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

 

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

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

 

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

 

 

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

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

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

 

그러면

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

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

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

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

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

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

 

같은 맥락에서,

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

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

 

감사합니다.

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22231
478 파일시스템관련 서적추천 부탁드립니다. [7] 김영일 2012.04.25 7329
477 ARM 인터럽트 관련 [5] 무명 2019.04.08 1459
» 인터럽트 중첩 관련 [4] 무명 2019.04.05 811
475 program을 실행 할 때 shell or dameon [2] wizard1483 2019.01.14 324
474 메모리와 관련하여 질문있습니다. [5] 인그니야 2018.10.17 360
473 커널 스터디 관련 질문있습니다. [1] bakery 2018.07.08 543
472 커널스터디 추가로 참석해도 되나요? [3] 빨강이 2018.05.08 951
471 안녕하세요 스터디 관련하여 문의드립니다. [1] kevin 2018.04.18 458
470 linux proc 수정 관련 질문드립니다. [1] AERO 2018.03.02 561
469 임베디드 커널 컴파일에 관련된 질문입니다. [1] 김영일 2018.02.26 473
468 리눅스 커널 네트워킹 책 읽어보신분 [1] 말아 2017.08.31 903
467 안녕하세요 soheemon 2018.02.26 284
466 커널 스터디 관련 궁금합니다. [1] 마스터 2018.01.17 631
465 커널 스터디 참석하고 싶습니다! [1] js뚝섬 2017.09.19 759
464 커널에서 page alloc에 관해서 [1] 미다리로23 2017.02.05 34549
463 SMP관련 질문입니다. [2] 컴퓨터 2017.04.13 16583
462 create_workqueu 와 create_singlethread_workqueue의 차이 ? [1] 박성열2 2017.04.25 1296
461 파일시스템에 관한 질문(Htree [6] 사앙조 2017.05.22 17061
460 [커널주중 E조 스터디 이슈] tgid, pid 개념 [2] 김지성 2017.05.28 2830
459 리눅스에서의 우선순위 [2] 사앙조 2017.05.14 1113
XE Login