운영체제

[OS/운영체제] 인터럽트(Interrupt), 시스템 콜(System Call)

4Legs 2020. 11. 3. 19:59

인터럽트(Interrupt) 와 트랩(Trap)

인터럽트(Interrupt)는 하드웨어가 시스템의 수행 흐름을 바꾸기 위해 CPU를 일시적으로 멈추는 것이다.

인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.

 

· 하드웨어는 CPU에 특정한 신호를 보내 인터럽트를 발생시킨다.

· 소프트웨어는 시스템 콜(System Call) 이라는 연산을 실행하여 발생시킨다. 이를 트랩이라고도 한다.

 

I/O 인터럽트 (Input/Output Interrupt)

입출력 하드웨어로부터 발생되는 인터럽트이다.

입출력의 수행이 끝나면 이 인터럽트를 통해 CPU에게 입출력이 끝났음을 알린다.

입출력은 동기식 입출력과 비동기식 입출력으로 나뉜다. 동기식 입출력(Synchronous I/O) 은 입출력이 끝날 때까지 해당 프로세스는 대기하는 방식이고, 비동기식 입출력(Non-synchronous I/O)은 입출력이 완료되는 동안 다른 작업을 수행할 수 있는 입출력 방식이다.

 

시스템 콜 (System Call)

시스템 콜은 OS의 서비스들을 사용 가능하게 해주는 인터페이스들을 제공한다. 

우선, 시스템 콜이 사용되는 예시 상황을 보자.

한 파일의 내용을 복사해 다른 파일에 복사하고자 할 때, 이 일은 다음과 같은 과정을 따른다.

이렇듯 아주 간단한 일들이라도 시스템 콜을 호출해 기능을 수행한다.

 

시스템 콜의 동작

open() 시스템 콜에 대한 동작은 다음과 같이 이루어진다.

프로그래밍 언어들의 Run-time 지원 시스템들은 운영체제의 시스템 콜에 대한 링크 역할을 하는 시스템 콜 인터페이스를 제공한다.

시스템 콜 인터페이스는 API의 함수 호출을 통해 필요한 시스템 콜을 제공한다. 일반적으로, 각 시스템 콜마다 지정된 번호를 이용해 시스템 콜을 실행하고 반환값을 리턴한다.

시스템 콜을 호출하는 프로그래밍 언어들은 시스템 콜을 호출할 수 있는 기능을 제공하지만, 시스템 콜 자체가 어떻게 구현되어 있는지 알 필요가 없도록 되어 있다.

 

 

 

 

단원 주제

 

※ 본 게시글은 『Operating System Concepts』 를 참고하여 작성되었습니다.