CS/운영체제

[운영체제] 시스템 콜이란 무엇일까?

mhko411 2021. 10. 7. 00:08
728x90

운영체제는 커널 모드와 사용자 모드로 나뉘어 운영된다. 프로그램에서 파일 읽기, 파일 쓰기 등은 커널 모드를 통해 동작한다. 이때 시스템 콜은 커널 영역의 기능을 사용자 모드에서 사용할 수 있도록 한다. 시스템 콜의 개념과 동작 과정을 알아보자.


개념

시스템 콜은 응용 프로그램에서 커널이 제공하는 기능을 사용하기 위한 인터페이스다. 이를 통해 프로세스가 하드웨어에 직접 접근하여 디스크에 저장되어 있는 파일을 읽는 등의 기능을 수행할 수 있다.

프로그램은 고유의 주소를 갖고 있으며 함수 호출이 발생하면 해당 주소 내에서 접근하여 함수를 실행할 수 있다. 하지만 프로그램의 주소를 벗어난 공간에 접근하기 위해서는(커널 영역) 시스템 콜을 사용할 수 있다.

 

시스템 콜의 동작 과정

프로그램에서 디스크에 저장되어 있는 파일 입출력이 이루어지는 과정을 통해 시스템 콜이 어떻게 동작하는지 알아보자.

프로그램이 CPU에서 동작하고 있다가 디스크의 파일을 읽어오려고 할 때 프로그램에서 시스템 콜이 발생한다. 이때 파일 입출력이 프로그램의 주소 공간 내에서 이루어질 수 없기 때문에 인터럽트 라인을 세팅하면 CPU의 제어권을 운영체제에 넘긴다.

운영체제는 설정된 인터럽트를 통해 파일 입출력을 요청하는 인터럽트라는 것을 파악한다. 이후 파일 입출력 작업을 수행하고 CPU는 디스크 컨트롤러에게 명령을 내려 파일을 읽는다.

 

이때 디스크 컨트롤러가 파일을 읽어올 때 오랜 시간이 걸리기 때문에 읽어오는 것만 기다리는 것은 비효율적이다. 따라서 파일 입출력을 수행하는 동안 CPU의 제어권을 다른 프로세스에게 이양한다. 만약 파일 입출력을 수행한 프로세스에게 다시 이양한다면 요청한 파일없이 다음 동작을 하여 오류가 발생할 수 있다. 따라서 다른 프로세스에 CPU 제어권을 주고 디스크 컨트롤러에서 파일 입출력이 완료되었을 때 인터럽트를 발생시킨다.

 

시스템 콜의 종류

프로세스 컨트롤

  • 프로세스 생성 및 종료
  • 메모리에 로드 및 실행
  • 프로세스 속성 값 확인
  • 메모리 할당

파일 관리

  • 파일 생성 및 삭제
  • 파일 열기 및 닫기
  • 파일 읽기 및 쓰기
  • 파일 속성 값 확인

디바이스 관리

  • 디바이스 요청 및 해제
  • 읽기, 쓰기
  • 디바이스 속성 확인

정보 관리

  • 시간 확인 및 지정
  • 시스템 데이터 확인
  • 프로세스, 파일, 디바이스 속성 가져오기 및 설정하기

통신

  • 통신 연결 생성 및 제거
  • 메시지의 송수신
  • 상태 정보 전달

정리

  • 운영체제는 커널 모드와 사용자 모드로 나뉜다.
  • 프로세스에서 커널 영역의 기능을 사용하기 위해 시스템 콜을 활용한다.