시스템 콜
시스템 콜이란
- 응용프로그램이 커널에 접근하기 위한 인터페이스이다.
- 응용프로그램이 운영체제 서비스 이용을 위해 커널 함수를 호출할 때, 시스템 콜 인터페이스를 거쳐서 호출이 이루어진다.
운영체제 서비스의 예
- 프로세스 관리 (프로세스 생성, 삭제 등)
- 파일 관리 (접근, 조회, 수정 등)
- 디바이스 관리 (웹캠, 프린터 등)
- 시간 및 날짜 관리
- 프로세스 간 통신
시스템 콜의 과정
- 응용 프로그램이 커널 함수 사용 요청 트랩(소프트웨어 인터럽트) 발동
- 올바른 요청인지 확인
- 시스템 콜을 통해 유저 모드에서 커널 모드로 전환 (modebit 변경)
- 커널 함수 실행
- 실행 완료 후 다시 유저 모드로 변환되어, 나머지 프로그램 코드 실행
modebit
- 시스템콜이 작동할 때 현재 프로그램이 유저모드인지 커널모드인지를 구분하기 위한 비트
modebit = 0
이면 커널모드, modebit = 1
이면 유저모드를 나타냄
시스템 콜을 사용하는 이유
보안
- 응용 프로그램이 운영체제의 관리 없이 마음대로 디바이스를 사용하거나 파일을 변경할 수 있게 되어 보안성이 취약해진다.
- 대표적으로 공격자가 프로그램을 통해 웹캠을 마음대로 실행하여 사생활 침해 등이 발생할 수 있다.
하지만 시스템 콜을 통해 I/O 디바이스인 웹캠을 운영체제를 통해서만 작동되도록하여 이를 방지할 수 있다. (완벽한 것은 아님)
유저 프로그램과 커널 분리
- 유저프로그램은 커널 내부의 복잡한 파일 시스템이나 프로세스 생성 과정 등을 알지 못해도, 시스템 콜 인터페이스를 이용하는 방법만 알면 운영체제 서비스를 이용할 수 있다.
- 즉 프로그램의 호환성이 증가하고 개발 생산성이 증가한다.