ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 시스템 콜(System Call)이란 무엇인가
    CS지식/운영체제 2021. 5. 25. 23:03

    시스템 콜은 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스를 제공한다.

    즉, 자신이 하지 못하는 일(운영체제는 가능한 일)을 운영체제에게 맡겨 수행할 수 있도록 하기위해 시스템 콜을 사용한다.

    시스템 콜이 어떻게 사용되는지 예시를 통해 알아보자.

    프로세스A는 디스크에 존재하는 파일1에서 데이터를 읽어서 파일2로 복사하는 일을 수행해야한다고 생각해보자.

    파일1, 파일2가 무엇인지 사용자로부터 입력받기 위해서는 시스템 콜이 필요하다.

    키보드의 입력을 통해 파일의 이름을 얻거나 마우스를 통해 직접 파일을 선택해서 입력받을 수 있다.

    이러한 I/O작업을 위해서는 시스템 콜이 필요하다.

    파일1, 파일2이 무엇인지 입력을 받으면 파일1을 디스크에서 가져오고 복사하여 파일2에 저장하는 작업도 시스템 콜이 필요하다.

    이 작업에서 발생할 수 있는 오류를 처리하기 위해서도 시스템 콜이 필요하다.

     

    위 예시를 통해 알 수 있는 것은 프로세스가 직접 I/O장치(키보드, 마우스, 디스크 등)에 직접 접근하여 일을 수행할 수 있는 권한이 없다는 것이다.

    하지만, 운영체제는 I/O장치의 controller에게 접근할 수 있는 권한이 있어 프로세스는 시스템 콜을 하여 자신이 필요한 것을 운영체제에게 부탁하는 것이다.

     

    예시처럼 간단한 일을 수행하는 프로세스도 운영체제의 힘을 빌리기 위해 많은 시스템 콜을 필요로 한다.

    개발자들은 프로그램을 설계할 때 응용 프로그래밍 인터페이스(API)에 따라 설계한다.

    응용 프로그래밍 인터페이스(API)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스이다.

    이 API를 구성하는 함수들은 프로그래머를 대신하여 실제 시스템 콜을 호출한다.

    예를 들면, 개발자가 프로그램을 설계할 때 CreateProcess()라는 함수를 사용했다면 이것은 실제로 운영체제에서는 NTCreateProcess() 시스템 콜을 호출한다.

    (새로운 프로세스를 생성하는 것을 말하고 있음.)

     

    시스템 콜의 유형은 매우 다양한데 이 유형들을 6가지의 범주(프로세스 제어, 파일조작, 장치조작, 정보유지보수, 통신, 보호)로 나눌 수 있다.

    범주 시스템 콜 유형
    프로세스 제어
    (Process Control)
    프로세스 끝내기(end), 프로세스 중지(abort), 적재(load), 수행(execute)
    프로세스 생성, 종료
    메모리 할당
    프로세스 속성(attributes) 획득, 프로세스 속성(attributes) 설정
    파일 조작
    (FIle Manipulation)
    파일 생성(create file), 파일 삭제(delete file)
    파일 열기(open), 파일 닫기(close)
    파일 읽기, 쓰기, 위치 변경
    장치 관리
    (Device Management)
    장치 요구, 장치 방출
    장치 읽기, 쓰기, 위치 변경
    장치 속성 획득, 장치 속성 설정
    정보 유지
    (Information Maintenance)
    시간과 날짜 설정, 획득
    시스템 데이터 설정, 획득
    프로세스, 파일, 장치 속성의 획득 및 설정
    통신
    (Communication)
    통신 연결 생성 및 제거
    메시지 송신 및 수신
    상태 정보 전달
    보호
    (Protection)
    자원에 대한 접근 제어
    자원 허가 권한 설정
    특정 사용자에 대한 자원 접근 허가 여부 설정

     

     

     

    댓글

Designed by Tistory.