OS는 다양한 서비스 들을 수행하기 위해 하드웨어를 직접적으로 관리한다. 이와 반면 응용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 사용할 수 있다.
OS가 제공하는 이러한 인터페이스를 '시스템 콜 (system call)' 이라고 한다.
시스템콜은 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉, 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 할 수 있게 해준다. (응용프로그램은 시스템 콜을 사용해서 원하는 기능을 수행할 수 있음.)
보통 직접적으로 시스템콜을 사용하기 보다는 API를 통해 사용하게 된다.
시스템콜 종류
- 프로세스 제어 (Process Control)
- 파일 조작 (File Manipulation)
- 장치 관리 (Device Manipulation)
- 정보 유지 (Information Maintenance)
- 통신 (Communication)
- 보호 (Protection)
fork
새로운 Process를 생성할 때 사용.
wait
child 프로세스가 종료될 때까지 기다리는 작업 (대기)
exec
단순 fork는 동일한 프로세스의 내용을 여러 번 동작할 때 사용함.
child에서는 parent와 다른 동작을 하고 싶을 때는 exec를 사용할 수 있음. (실행)
면접질문
System Call에 대해 설명해주세요.
- System Call(시스템 콜)은 사용자나 응용프로그램이 커널에서 제공하는 기능을 사용하기 위한 인터페이스입니다.
- 운영체제는 커널이 제공하는 서비스를 '시스템 콜'을 사용해야만 사용할 수 있도록 제한함으로써 컴퓨터 자원을 보호하면서 사용자나 응용프로그램에게 서비스를 제공할 수 있습니다.
커널에 대해 설명해주세요.
- 커널은 메모리에 상주하는 운영체제의 핵심 부분이라고 할 수 있습니다.
- 기본적으로 프로그램이 실행되기 위해서는 주기억장치에 적재된 상태여야 합니다.
운영체제 역시 프로그램이기 때문에 메인 메모리에 적재가 되어야 하나, 운영체제의 크기가 너무 커서 전체를 다 메인 메모리에 올리게 된다면 비효율적입니다. (메모리 공간의 낭비)
따라서 커널(kernel)이라고 하는 항상 필요한 운영체제의 핵심 부분만을 메인 메모리에 적재하여 운영체제를 사용하게끔 합니다.