티스토리 뷰

컴퓨터 공학

인터럽트 & 시스템 콜

삼전동해커 2020. 10. 4. 20:46

출처 : https://velog.io/@chowisely/Operating-Systems-Introduction

Interrupt

일반적으로 인터럽트(interrupt)는 하드웨어에 이벤트가 발생해 CPU에 알리는 방법이다.
하지만 소프트웨어 쪽 프로세스가 인터럽트를 알리는 경우도 발생한다.
전자의 경우는 비동기식 인터럽트,후자는 동기식 인터럽트라고 한다.

동기식 인터럽트의 종류는
1.trap : 의도적으로 일으킨 인터럽트. ISR 종료 후 실행 재개
2.Fault : 복구가 가능할 수도 있는 인터럽트.
3.Abort : 복구가 불가능한 인터럽트

Interrupt Service Routine(ISR)

CPU에 인터럽트가 걸리면 ISR에게 제어권을 준다.

ISR은 인터럽트를 발생하게 하는 문제점인 인터럽트 핸들러의 주소가 담긴 테이블인 인터럽트 벡터를 보고 어떤 인터럽트가 발생했는지 결정한다. 그리고 해당하는 인터럽트 핸들러의 주소로 이동하여 예외처리를 실행한다.


Dual Mode

일반 사용자가 컴퓨터에 치명적인 명령어를 사용할 수 없도록, 일반 사용자로부터 시스템을 보호하기 위해 하드웨어적으로 이중모드를 지원한다. 이중모드는 사용자 모드커널 모드가 존재한다. 일반적인 프로세스는 사용자 모드에서 실행되지만, 잘못된 접근으로 부터 OS와 사용자를 보호하기 위해 특정 명령어는 커널 모드에서만 실행할 수 있다.

System Call

CPU가 특권 명령을 실행하려고 하면, 사용자 모드에서 커널 모드로 전환을 해야한다. 이러한 요청을 시스템 콜이라고 한다. 시스템 콜은 trap의 종류이다.

프로세스A가 디스크로 부터 파일을 읽어오라는 명령을 실행한다고 했을 때, 내부적으로 일어나는 과정은 다음과 같다.
1.프로세스A가 시스템 콜을 요청하면서 CPU 내에 인터럽트 라인을 세팅한다.
2.CPU는 실행 중이던 명령어를 마치고 인터럽트 라인을 통해 인터럽트가 걸렸음을 인지한다.
3.사용자 모드에서 커널 모드로 변경 후 OS에게 CPU 제어권을 넘긴다.
4.현재 실행 중이던 프로세서의 상태 및 정보를 PCB(Process Control block)에 저장한다
그리고 PC(Problem Counter)에는 다음에 실행할 명령어의 주소를 저장한다.
5.시스템 콜 루틴에 해당하는 곳으로 점프하고, 시스템 콜 테이블을 참조하여 파일 읽기에 해당하는 시스템 콜을 실행한다.
6.해당 루틴이 끝나면, 다시 사용자 모드로 바꾸고, PCB에 저장했던 프로세스를 복원한다.
7.PC에 저장되어 있던 주소로 점프하여 계속 프로세스를 진행한다.




'컴퓨터 공학' 카테고리의 다른 글

메모리 계층 구조  (0) 2020.10.04
CPU 스케쥴링 알고리즘  (0) 2020.10.04
프로세스 와 쓰레드  (0) 2020.10.04
I/O 방식  (0) 2020.10.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함