System Call

신명철·2022년 2월 3일
0

OS

목록 보기
8/27

정의

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

  • 간단히 말하자면, 운영체제 서비스에 접근하기 위한 유일한 수단이다. 프로그램을 실행하거나 프로그램이 컴퓨터 자원을 사용하기 위해서는 시스템 콜을 통해 커널에 자원 사용을 요청해야 한다.

시스템 콜의 기능

  1. 사용자 모드에 있는 응용 프로그램이 커널의 기능을 사용할 수 있도록 한다.
  2. 시스템 호출을 하면 사용자 모드에서 커널 모드로 바뀐다.
  3. 커널에서 시스템 호출의 작업이 끝나면 사용자 모드로 돌아간다.

시스템 콜이 필요한 이유

  • 사용자가 직접적으로 하드웨어 장치를 제어한다면 큰 문제가 발생할 수 있다. 따라서 사용자 어플리케이션은 System Call 을 통해 직접적인 H/W 요청이나 중요한 시스템 요청을 하는 것이다.
  • 우리가 일반적으로 사용하는 프로그램은 응용프로그램이다. 유저레벨의 프로그램은 유저레벨의 함수들 만으로는 많은 기능을 구현하기 힘들기 때문에 커널의 도움을 반드시 받아야 한다.
  • 커널에 관련된 것은 커널모드로 전환된 후에야 해당 작업을 수행할 권한이 생긴다. 커널모드를 통한 이러한 작업은 반드시 시스템 콜을 통해 수행하도록 설계되어 있다.

사용자모드와 커널모드

  • 유저레벨, 즉 사용자 모드는 프로그램 실행, 코드 작성 등을 하는 상태를 말한다.
  • 커널 모드는 시스템 콜을 처리하는 상태를 말한다.
  • 사용자 모드와 커널 모드는 H/W 내부에 존재하는 Mode bit를 통해 구분하는데, 모든 비트가 0 이면 커널 모드, 1 이면 사용자 모드가 된다.
  • 사용자가 만들어내는 프로그램은 불안정하고 보안이 부족할 수 있기 때문에, 시스템에 큰 영향을 미칠 수 있는 연산들은 커널 모드에서 이루어진다. 즉, H/W, S/W 추상화를 통해 컴퓨터 전체의 보안을 유지할 수 있게 되는 것이다.

시스템 콜의 유형

  1. 프로세스 제어
    프로세스 생성, 중지(fork, exit, exec, ...)
  2. 파일 조작
    파일 생성, 삭제, 속성 관리 등(create, open, close, lseek, ...)
  3. 장치 관리
    장치 연결, 방출, 속성 관리 등(open, close, ioctl, ...)
  4. 정보 유지
    시간, 날짜 설정, 프로세스와 연결된 파일, 장치 관리 등(time, data, dump, pid, ...)
  5. 통신
    파일, 사용자 권한 등(chmod, umask, ...)

EX) 디스크에서 자료를 읽는 시스템 콜

  1. 사용자 프로그램이 시스템 콜을 하게 되면 운영체제는 자신의 커널 영역에 정의된 시스템 콜 처리 코드를 수행한다.
  2. CPU 가 컨트롤 레지스터를 세팅해서 디스크 컨트롤러에게 데이터를 읽어 오라고 명령한다.
  3. 디스크 컨트롤러는 디스크로부터 데이터를 읽어 로컬 버퍼에 저장
  4. 작업이 완료되면 디스크 컨트롤러는 CPU 에게 인터럽트를 발생시켜 입출력 작업이 완료되었음을 알린다.

참고
profile
내 머릿속 지우개

0개의 댓글