시스템 콜(System Call)

조완기.Wans·2024년 6월 12일

시스템 콜(System Call)이란?

OS는 다양한 서비스들을 수행하기 위해 하드웨어를 직접적으로 관리한다.
웅용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 사용할 수 있다.
OS가 제공하는 이러한 인터페이스를 시스템 콜(System Call)이라 한다.

운영체제는 커널 모드(Kernel Mode)와 사용자 모드(User Mode)로 나위어 구동된다.
운영체제에서 프로그램이 구동되는데 있어 파일을 읽거나 쓰는 혹은 출력하는 많은 부분에서 커널 모드를 사용한다.

시스템 콜은 커널 영역의 기능을 사용자 모드가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다.

시스템 콜(System Call)은 왜 필요한가?

시스템 콜은 운영체제에게 있어서는 매우 중요한 요소이다. 사용자 모드에 있는 프로그램이 시스템 함수를 직접 호출할 수 없으므로 따로 프로그램이 커널 호출을 요청하는 시스템을 만들어서 커널이 처리해야할 일을 프로그램으로부터 받아서 처리하는 것이다.

그럼 왜? Kernel모드에서 실행을 하는가
해커가 피해를 입히기 위해 악의적으로 시스템 콜(System Call)을 사용하는 경우,
초보 사용자가 아무렇게나 함수 호출할 때 시스템이 망가질 수 있다.
만약 유저 모드에서 시스템 콜을 호출할 경우에는 운영체제에서 불법적인 접근이라 여기고 trap을 발생시킨다.

시스템 콜 종류

프로세스 제어(Process Control)

  • 끝내기(exit), 중지(abort)
  • 적재(load), 실행(execute)
  • 프로세스 생성(Create Process) - fork
  • 프로세스 속성 획득과 속성 설정
  • 시간 대기(wait time)
  • 사건 대기(wait event)
  • 사건의 알림(signal event)
  • 메모리 할당 및 해제

파일 조작(File Manipulation)

  • 파일 생성/ 삭제 (create, delete)
  • 열기 / 닫기 / 읽기 / 쓰기 (open, close, read, write)
  • 위치 변경(reposition)
  • 파일 속성 획득 및 설정(get file attribute, set file attribute)

장치 관리(Divice Manipulation)

  • 하드웨어의 제어와 상태 정보를 얻음 (ioctl)
  • 장치를 요구(request device), 장치를 방출(relese device)
  • 읽기 (read), 쓰기(write)위치 변경
  • 장치 속성 획등 및 설정
  • 장치의 논리적 부착 및 분리

정보 유지(Information Maintenance)

  • getpid(), alarm(), sleep()
  • 시간과 날짜의 설정과 획득(time)
  • 시스템 데이터의 설정과 획득(date)
  • 프로세스 파일, 장치 속성의 획득 및 설정

통신(Communication)

  • pipe(), shm_open(), mmap()
  • 통신 연결의 생성, 제거
  • 메시지의 송신, 수신
  • 상태 정보 전달
  • 원격 장치의 부착 및 분리

보호(Protection)

0개의 댓글