본문 바로가기

학부_대학원/운영체제

Interrupt 인터럽트

SMALL

전에 인터럽트에 관해서 알아 보았다. 

하지만 공부 하다보니 많이 헷갈리는 부분이 있었는데, 공부하다가 알게되어 정리하려 한다.

트랩, 예외, 등등 너무 많은 용어가 있고 정확한 의미를 알지못했다. 

해당 용어들의 관계는 아래와 같다.

fault : page fault ...

trap : int, system call, ...

abort : devide by zero ....


인터럽트는 간단하게 비동기적인 사건이 발생을 알리는 매커니즘이다.

외부 인터럽트

현재 수행중인 태스크와 관련없는 주변장치에서 발생된 비동지적인 하드웨어적인 사건

EX] 우리가 유튜브를 보다가 마우스를 움직이면 외부 인터럽트가 발생한 것.


트랩[trap]

현재 수행중인 태스크와 관련있는, 즉 동기적으로 발생하는 사건을 말한다.

fault

fault를 일으킨 명령어 주소를 eip에 넣어 두었다가 해당 핸들러가 종료되고 나면 eip에 저장되어 있는 주소부터 수행

EX)

프로그램이 수행되는 코드영역이 있다고 생각하자. 해당 영역이 2개의 페이지로 할당 되어있다.

처음 1번 페이지를 수행하다가 2번 페이지로 넘어가야 한다.

하지만 만약에 2번 페이지가 메모리에 적재되어 있지 않으면 수행 될 수 없다.

그렇기 때문에 수행해야 하는 현재 주소를 저장하고 페이지를 불러온 다음 수행한다.

trap

trap을 일으킨 명령어의 다음 주소를 eip에 넣어 두었다가 그 다음부터 다시 수행한다.

EX)

eax 3, int 0x80 과 같이 eax 번호를 이용해서 어떠한 함수인지 지정하고 함수를 호출한다.

그렇게 이를 이용해서 원하는 기능을 수행 했고 다음 명령어를 수행하면 된다. 그렇기 때문에

현재 eip + 4[32bit]를 저장 한다고 생각하면 편하다.

abort

심각한 에러인 경우이다. eip 값을 저장해야할 필요가 없으며, 현재 태스크를 강제 종료시키면 된다.

EX)

0으로 나누기

LIST

'학부_대학원 > 운영체제' 카테고리의 다른 글

프로세스간 통신 IPC - Shared Mem  (0) 2016.08.10
캐시[Cache]란?  (0) 2016.08.10
동기화 vs 비동기화  (0) 2016.08.10
System Bus[버스란?]  (0) 2016.08.08
캐시 쓰기 정책  (0) 2016.08.04