내 잡다한 노트

시스템콜 처리 과정, 시스템 콜 테이블 본문

운영체제

시스템콜 처리 과정, 시스템 콜 테이블

peanutwalnut 2023. 3. 31. 19:53

시스템 콜 처리 과정은 소프트웨어 시스템에서 사용자 프로그램이 OS와 상호작용하여 특정 작업을

수행하는 과정이다. 운영체제에서 제공하는 서비스에 접근할 때 사용되며, 일반적으로 하드웨어

자원에 접근하거나 메모리 관리, 프로세스 관리 등의 운영 체제 기능을 수행하는 데 사용된다.

 

시스템 콜 처리 과정

1. 사용자 프로그램에서 시스템 콜 함수 호출

호출한다. 시스템 콜 함수는 보통 C 라이브러리 함수 형태로 제공되며, 시스템 콜 번호와

인자 값을 인자로 받는다.

 

2. 사용자 모드에서 커널 모드로 전환

CPU는 현재 실행 중인 사용자 모드에서 커널 모드로 전환된다. 이 과정에서 CPU는

특권 명령어(Privileged instruction)를 사용하여 운영 체제에게 제어권을 넘긴다.

 

3. 시스템 콜 번호와 인자 값을 저장

운영 체제는 시스템 콜 번호와 인자 값을 저장하고 이때 인자값은 보통 프로세스의

pcb(Process Control Block)에 저장된다.

 

4. 시스템 콜 핸들러 실행

운영 체제는 시스템 콜 핸들러를 실행한다. 이건 시스템 콜 번호를 기반으로 적절한 서비스를 제공하기 위한

코드를 실행.

 

5. 요청된 작업 수행

시스템 콜 핸들러는 요청된 작업을 수행하고, 결과를 반환한다.

 

6. 커널 모드에서 사용자 모드로 전환

 

시스템 콜 처리 과정은 CPU 모드 전환과 같은 오버헤드가 발생하므로, 시스템 콜이 빈번하게 호출될 경우 성능 저하가 발생할 수 있습니다. 이를 방지하기 위해 운영 체제는 시스템 콜 테이블(System Call Table)을 사용하여 시스템 콜 처리 속도를 최적화합니다.

 

시스템 콜 테이블은 시스템 콜 번호를 인덱스로 사용하여 각 시스템 콜 핸들러의 주소를 저장하는 배열이다.

운영 체제는 시스템 콜 번호를 사용해 쉽게 핸들러의 주소를 찾아 실행해 처리 속도를 높인다.

 

Overhead : 어떤 작업을 수행하기 위해 필요한 추가적인 작업, 시간, 자원 또는 비용을 말한다.

즉, 실제 작업에 필요한 것보다 더 많은 작업이나 자원을 소모하게 되는 것을 의미한다.

 

시스템 콜 처리 과정에서 IDT(Interrupt Descriptor Table)가 쓰인다.

시스템 콜은 소프트웨어 인터럽트를 사용해 호출된다. 이를 처리하기 위해 IDT를 사용한다.

IDT는 하드웨어 인터럽트와 소프트웨어 인터럽트 모두를 처리하기 위한 Interrupt Handler의 주소를 저장하는

테이블이다. 시스템 콜 처리 과정에서는 소프트웨어를 발생시키기 위해 해당 인터럽트 번호에 해당하는

IDT 항목을 찾아 해당 Interrupt Handler의 주소를 실행한다.

왜 소프트웨어 인터럽트를 발생시키나?

시스템 콜은 운영 체제 커널 내부에서 수행되는 특별한 작업으로, 사용자 모드에서 직접 수행할 수 없기 때문이다.