Always Be Wise

시스템 콜(System Call)이란? 본문

기술 관련 정리

시스템 콜(System Call)이란?

bewisesh91 2022. 3. 29. 22:00
728x90

시스템 콜(System Call)이란?


시스템 콜은 운영체제에 의해 제공되는 인터페이스로서, 응용 프로그램은 시스템의 어떤 기능이나 자원을 사용하기

위해 시스템 콜을 요청해야 합니다. 시스템 콜을 이해하기 위해서는 모드 비트(Mode Bit)라는 하드웨어를 알고

있어야 합니다. 모드 비트는 사용자 모드(User Mode)와 커널 모드(Kernel Mode)를 제공하는 하드웨어입니다.

사용자 모드에서 응용 프로그램이 할 수 있는 일은 제한됩니다. 반면, 커널 모드에서는 특수한 명령어를 포함하여

사용자 모드에서 할 수 없었던 일들을 수행할 수 있습니다. 예를 들어, 파일을 읽고 쓰는 것은 프로세스가 사용자

모드에서 자유롭게 진행할 수 없습니다. 하지만 사용자 모드에서 커널 모드로 전환되어 특권 수준이 상향된다면

그것이 가능합니다. 이러한 사용자 모드에서 커널 모드로의 전환을 가능케 하는 것이 시스템 콜입니다.

시스템 콜이 필요한 이유


시스템 콜을 사용하지 않고 응용 프로그램이 시스템의 기능과 자원을 직접 사용할 수 있다면 시스템 안정성 확보와

자원 보호가 불가능 합니다.

시스템 콜과 인터럽트


프로세서에 전력이 공급된 시점부터 전력 공급이 끊기는 시점까지, 실행하는 명령어에 따라 프로그램 카운터의

값이 변해가는 흐름을 제어 흐름이라고 합니다. 제어 흐름의 양상은 크게 세 종류입니다.

첫 번째로 메모리에 연속적으로 할당되어 있는 명령어들을 순차적으로 실행하는 경우입니다.

두 번째는 프로그램 상태 변화에 반응하여 제어 흐름이 갑자기 바뀌는 경우입니다(jump, call, return 등).

세 번째가 시스템 콜, 인터럽트와 관련이 있는 예외적인 제어 흐름입니다. 이는 시스템 상태 변화에 반응하여

제어 흐름이 갑자기 바뀌는 경우입니다.

한 시스템 내에서 발생할 수 있는 모든 예외는 자신만의 예외 번호(Exception Number)를 가집니다. 예외 번호는

음이 아닌 정수로서, 모든 예외는 고유한 예외 번호를 가진다는 것이 보장됩니다. 어떤 예외 번호는 프로세서를

설계하는 사람들에 의해 부여되며, 또 어떤 예외 번호는 커널을 설계하는 사람들에 의해 부여됩니다.

전자에 해당하는 예외로는 0으로 나누기 연산(Divide by Zero), 페이지 폴트(Page Fault) 등이 있으며,

후자에 해당하는 예외로는 시스템 콜, 인터럽트 등이 있습니다.

인터럽트는 프로세서 외부의 입출력 장치들로부터 전달받는 신호에 의해 발생하는 예외로, 명령어의 실행 결과로

발생하는 예외가 아니기 때문에 비동기적 예외(Asynchronous Exception)에 해당합니다. 반면, 시스템 콜은

특정 명령어를 실행하여 의도적으로 발생시키는 예외로, 명령어의 실행 결과로 발생하는 예외이므로 동기적 예외

(Synchronous Exception)에 해당합니다.

'기술 관련 정리' 카테고리의 다른 글

스택(Stack)과 힙(Heap)  (0) 2022.03.29
프로세스(Process)란?  (0) 2022.03.29
세마포어(Semaphore)란?  (0) 2022.03.20
JPG와 PNG의 차이  (0) 2022.03.20
CRDT란(feat. OT)?  (0) 2022.03.17
Comments