시스템콜(System Call)

이산·2022년 10월 28일
0

기술블로그

목록 보기
25/42

시스템 콜의 정의

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

커널이란?

커널은 항상 메모리에 올라가 있는 운영체제의 핵심 부분으로써 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하며 컴퓨터 자원들을 관리하는 역할을 한다.
즉, 커널은 인터페이스로써 응용프로그램 수행에 필요한 여러가지 서비스를 제공하고, 여러가지 하드웨어(CPU, 메모리) 등의 리소스를 관리하는 역할을 한다.

시스템 콜(System Call)

운영체제는 커널모드와 사용자 모드로 나뉘어서 구동된다. 사용자 모드의 함수들 만으로는 많은 기능을 구현하기 힘들기 때문에 반드시 커널 모드의 도움을 받아야 한다. 커널 관련된 것은 커널 모드로 전환 후 수행할 수 있는 권한이 생기며 커널 모드를 통한 이러한 작업은 반드시 시스템 콜을 통해 수행되도록 설계되어 있다. 즉, 시스템 콜은 커널 모드의 기등을 사용자 모드가 사용 가능하게 하여 필요한 기능을 사용할 수 있게 한다.

시스템 콜 사용 예시

A 파일을 복사하여 B라는 이름으로 저장한다고 할 때,
1. 먼저 A 파일이 현재 디렉터리에서 접근할 수 있는지 확인하기 위해 시스템 콜을 호출한다.
2. 만약 파일이 존재하지 않는다면 에러를 발생시켜야 하며, 프로그램을 종료하는데 이때 시스템 콜이 사용된다.
3. 만약 파일이 존재한다면, 복사한 파일을 저장하기 위해 B라는 이름의 파일이 있는지 시스템 콜을 통해 확인한다.
4. B라는 이름이 겹치지 않는다면 저장해야 하는데 이 때도 시스템 콜을 이용한다.
간단한 프로그램을 사용해도 상당히 많이 시스템 콜이 발생한다.

시스템 콜의 종류

프로세스 컨트롤(Process Control)

  1. 프로세스 생성 및 종료
  2. 메모리에 로드 및 실행
  3. 프로세스 속성 값 확인 및 지정
  4. wait 이벤트 및 signal 이벤트
  5. 메모리 할당

파일 관리(File Management)

  1. 파일 생성 및 삭제
  2. 파일 열기 및 닫기
  3. 파일 읽기, 쓰기 및 이동
  4. 파일 속성 값 확인 및 지정

장치 관리(Device Management)

  1. 장치 요청 및 해제
  2. 장치 읽기, 쓰기 및 이동
  3. 장치 속성 확인 및 지정
  4. 비 물리적인 장치 해제 및 장착

정보 관리(Information Management)

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

통신(Communication)

  1. 통신 연결 생성 및 삭제
  2. 메치시 송신 및 수신
  3. 상태 정보 전달
  4. 원격장치 해제 및 장착

보안(Security)

  1. 권한 획득 및 설정
profile
백엔드 개발자입니다.

0개의 댓글