인터럽트(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』 를 참고하여 작성되었습니다.
'운영체제' 카테고리의 다른 글
[OS/운영체제] 프로세스 (Process) - (3) (0) | 2020.11.04 |
---|---|
[OS/운영체제] 프로세스(Process) - (2) (0) | 2020.11.04 |
[OS/운영체제] 프로세스(Process) - (1) (0) | 2020.11.04 |
[OS/운영체제] OS 구조 (OS Structure) (0) | 2020.11.03 |
[OS/운영체제] 운영체제란? (OS, Operating System) (1) | 2020.10.08 |