본문 바로가기
Computer Science/Operating System

System Call이란?

by JuHy_ 2019. 4. 22.

System Call이란?

System Call이란 앞서 말했 듯 OS가 Application에게 제공하는 Interface이다.

 

System Call을 사용하는 이유

OS는 프로세스의 실행, 종료나 I/O 작업 등의 사용자가 함부로 사용하면 문제가 될 만한 명령들을 Privileged Instruction으로 분류하여 막아놓았다. 따라서 사용자들이 이와 같은 기능을 사용하기 위해서는 OS가 제공하는 System Call을 사용하여야 한다.

 

System Call (Process Control)

1. folk()

- 새 프로세스를 생성한다.

2. wait()

- 자식 프로세스가 끝날 때까지 대기한다.

3. exec()

- 다른 프로그램을 실행한다.

 

System Call 수행 과정

프로세스가 System Call을 호출하면 trap이 발생하여 kernel mode로 진입하게 된다.

그 후 요청이 들어온 System Call을 수행한 뒤 return-from-trap을 발생시켜 user mode로 돌아간다.

 

User Mode와 Kernel Mode란?

앞서 말했듯 사용자가 함부로 사용하면 안될 명령들을 Privileged Instruction이라 하는데 이는 Kernel Mode에서만 사용 가능하다. 따라서 System Call이 요청되면 Trap을 발생시켜 User Mode에서 Kernel Mode로 진입하는 것이다.

 

Interrupt와 Trap

Interrupt란? - Asynchronous

Interrupt란 프로그램 수행 중 CPU가 강제로 제어를 가져오는 것을 말한다. 주로 허용되지 않은 작업이 수행될 때 발생한다(비동기적). Interrupt가 발생하면 interrupt service routine(명령어)의 위치가 기록되어 있는 interrupt vector로 이동하여 해당하는 명령어를 찾아 수행한다.

 

Trap이란? - Synchronous

Trap은 Interrupt의 한 종류로서 명령의 수행 결과로 발생한다(동기적). 주로 System Call을 호출할 때나 Segmentation fault(할당되지 않은 메모리 참조)로 인해 발생한다. Trap이 발생하면 Trap Table로 이동하여 해당하는 명령을 수행한다.

 

Timer Interrupt

하나의 프로세스가 계속 자원을 점유하게 되면 다른 프로세스는 자원을 사용할 수 없다. 따라서 OS는 이를 방지하기 위해 권한을 뺏어올 수 있다. 이를 위해 주기적으로 Interrupt를 발생시켜 권한을 가져오는데 이를 Timer Interrupt라 한다.

 

Direct Memory Access (DMA)

 

DMA Operation은 I/O 작업을 CPU 대신 Device가 수행하는 과정을 말한다.

프로세스 실행 중 I/O 작업이 생기면 CPU는 Disk Controller에게 작업을 전달한 후 프로세스를 정지시킨다.

요청한 I/O 작업이 끝나면 Disk Controller는 Interrupt를 발생시켜 작업이 끝났음을 알리고 CPU는 프로세스를 재개한다.

I/O 작업이 시간이 오래 걸리기 때문에 이처럼 CPU는 Disk Controller에게 I/O 작업을 맡기고 다른 작업을 수행함으로써 효율적인 작업이 가능하다.

 

 

'Computer Science > Operating System' 카테고리의 다른 글

Segmentation이란?  (0) 2019.04.23
Virtual Address Space와 Address Translation  (0) 2019.04.23
Memory API란?  (0) 2019.04.22
CPU Scheduling 기법  (0) 2019.04.22
Process와 Process API란?  (0) 2019.04.22