운영체제의 기본 구조에서 Interrupt, Trap, System Call은 프로세서와 커널, 디바이스 간에 매 순간마다 발생하는 핵심적인 이벤트들이다. 이 3가지에 대해서 알아보고자 한다.
우선 현대의 운영체제들은 대부분 Dual mode(듀얼 모드)로 동작한다. 듀얼 모드란, User mode(사용자 모드)와 Kernel mode(커널 모드)를 아우르는데 User mode는 일반적인 애플리케이션이 동작되는 환경이고 Kernel mode는 커널이 구동되는 환경으로 이 모드에서는 OS 시스템에 영향을 줄 수 있는 명령을 내릴 수도 있다. (이것이 Dual mode를 만든 주요 원인이다. 사용자 단계에서 시스템에 함부로 접근할 수 없도록 하기 위함이다.) 일반적으로 trap과 interrupt가 발생할 때, mode가 바뀐다.
이러한 듀얼 모드의 배경에서 오늘 알아보고자 하는 Interrupt, Trap, System Call 이벤트들이 발생하게 된다.
Interrupt, Trap
Interrupt와 Trap 모두 CPU가 프로그램을 실행 중일 때, 이상징후의 발생으로 인해 잠시 프로그램을 중단하고 해결한 후에 다시 실행중인 프로그램으로 돌아와 작업을 이어가는 것을 의미한다. Interrupt와 Trap의 차이는 바로 발생 위치의 차이이다.
- Interrupt => Device(외부)에서 발생
- 주로 하드웨어에 의해 발생한다고 볼 수 있으며 I/O 장치의 이상 및 오류, 전원 장치에 의한 이상 및 오류 등이 존재한다.
- Trap => CPU(내부)에서 발생
- 주로 소프트웨어에 의해 발생하며 실행 프로그램의 에러가 발생하는 Exception과 사용자 프로그램의 요청이 들어오는 System Call이 예시이며 아래에서 다룰 내용이다.
- 즉, System call과 Exception은 Trap의 예시이다!
System Call
어플리케이션/프로세스들과 OS 사이에서 발생하는 인터페이스이다. 더 자세히는, 사용자 프로그램이 자원이나 서비스를 필요로 할 때 운영체제에 요청하는 것이다. 그림에서 Application processes들이 커널의 System call 함수들을 호출하면 그 내부의 또다른 커널 함수들의 연쇄 작용으로 원하는 이벤트가 실행되게 된다.
System call의 예시는 다음과 같다.
- Process control: Create, terminate, load, wait, etc.
- File management: Create, delete, open, close, read, write, reposition, etc.
- Device management: Request, release, read, write, etc.
- Information management: Get/set time/date, get process/file/device attributes, etc.
- Communications: Create/delete connection, send/receive messages, etc.
- Etc...
Exception
추가적으로 Exception에 대해서 살펴보자. Exception은 시스템 내부에서 예외가 발생한 상황으로 예시는 아래와 같다.
- Divided by zero(0)
- null pointer exception
- cpu가 user mode에서 priviliged instruction 실행
참고: 시스템 상에서 Interrupt와 Exception 발생 시 동작의 차이
자, 그런데 위에서 운영체제에 interrupt와 Exception이 발생했을 때 실행중인 프로그램 및 동작을 중단하고 해결을 하는 메커니즘은 같다고 할 수 있다. 하지만 여기서 둘의 차이는 존재하는데 Interrupt의 경우 실행중인 기계어 명령 사이클이 끝나고 나서 커널에 알리게 되는 반면 Exception의 경우 실행중인 기계어 명령을 사이클과 관계없이 즉시 멈추고 커널에 알린다. Exception이 좀 더 위급(?)한 상황이라고 생각하면 좋을 것 같다.
'CS 지식 > Operating System' 카테고리의 다른 글
[OS] Scheduling Schemes (스케줄링 기법 종류) (2) | 2024.01.23 |
---|---|
[OS] Process Scheduling (프로세스 스케줄링) (0) | 2024.01.09 |
[OS] IPC (Inter-Process Communication)와 RPC (Remote Procedure Call) (0) | 2023.12.27 |
[OS] Context Switching (컨텍스트 스위칭) (0) | 2023.12.22 |
[OS] Process (프로세스) (0) | 2023.12.20 |