내 잡다한 노트
시스템콜 처리 과정, 시스템 콜 테이블 본문
시스템 콜 처리 과정은 소프트웨어 시스템에서 사용자 프로그램이 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의 주소를 실행한다.
왜 소프트웨어 인터럽트를 발생시키나?
시스템 콜은 운영 체제 커널 내부에서 수행되는 특별한 작업으로, 사용자 모드에서 직접 수행할 수 없기 때문이다.
'운영체제' 카테고리의 다른 글
프로세스 생성 시스템 콜 (0) | 2023.03.20 |
---|---|
챕터8. 캐시 매핑 기법 (0) | 2022.09.17 |
챕터8. 세그먼테이션-페이징 혼용 기법 (0) | 2022.09.17 |
챕터 8. 3. 세그먼테이션 기법 (0) | 2022.09.16 |
챕터 8. 2. 페이징 기법 (0) | 2022.09.16 |