시스템 콜(system call)

이상우·2022년 1월 25일
0
post-thumbnail

시스템 콜(system call)

시스템 호출(system call)은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 보통 C나 C++과 같은 고급 언어로 작성된 프로그램들은 직접 시스템 호출을 사용할 수 없기 때문에 고급 API를 통해 시스템 호출에 접근하게 하는 방법이다.
출처: 위키피디아

직접적으로 받아들이기에는 어려운 정의인 것 같다.
좀 더 쉽게 설명하자면, 앞서 글에서 OS(운영체제)는 다양한 서비스들을 수행하기 위해 하드웨어를 직접적으로 관리한다. 이와 반면 응용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 사용할 수 있다. OS가 제공하는 이러한 인터페이스를 시스템 콜(system call)이라고 한다.

통상적으로 시스템 콜은 여러 종류의 기능으로 나뉘어져 있다. 각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 이러한 번호에 따라 인덱스 되는 테이블을 유지된다.

아래 그림은 open()시스템 콜을 호출 했을 때 운영체제에서 처리하는 과정이다.

시스템 콜의 유형

  • 프로세스 제어
  • 파일 조작
  • 장치 조작
  • 정보 유지보수
  • 통신
  • 보호

1. 프로세스 제어(Process Control)

  • 끝내기(exit), 중지(abort)
  • 적재(load), 실행(execute)
  • 프로세스 생성(create process)-fork
  • 프로세스 속성 획득과 설정(get process attribute and set process attribute)
  • 시간 대기(wait time)
  • 사건 대기(wait event)
  • 사건을 알림(signal event)
  • 메모리 할당 및 해제 : malloc, free

2. 파일 조작(File Manipulation)

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

3. 장치 관리(Devide Management)

  • 하드웨어의 제어와 상태 정보를 얻음(ioctl)
  • 장치를 요구(request devices), 장치를 방출(release device)
  • 읽기(read), 쓰기(write), 위치 변경(reposition)
  • 장치 속성 획득, 장치 속성 설정
  • 장치의 논리적 부탁(attach) 또는 분리(detach)

4. 정보 유지(Information Maintenance)

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

5. 통신(Communication)

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

6. 보호(Protection)

  • chmod()
  • umask()
  • chown()

참고 사이트

profile
구상한것을 구현할 수 있는 개발자가 되고 싶습니다.

0개의 댓글