System Call

citron03·2021년 10월 28일
0

운영체제

목록 보기
4/11

System call이란?
OS에서 제공하는 서비스에 대한 programming interface를 말한다.

I/O 장치에서 system call은 OS의 서비스를 필요로하는 함수를 뜻한다. I/O가 완료될 때 까지 사용자를 기다리게 한다.

System Call

  • 일반적으로 C나 C++과 같은 high-level language로 작성된다.
  • 주로 직접 system call을 사용하는 대신 Application Programming Interface, API를 통해 프로그램이 접근할 수 있다.
  • system call 호출 -> interrupt, trap(소프트웨어 interrupt) 발생

implementation

  • 각 system call과 관련된 번호가 있고, system call interface는 이 번호들로 index를 만든 table을 가지고 있다.
  • system call interface는 kernel에서 요구되는 system call을 호출하고, state와 values를 return한다.
  • 사용자는 system call이 어떻게 구현되는지 알 필요가 없습니다. 필요한 API를 실행하고, 그 작업에 따른 작업 내용을 알기만 하면 됩니다.

parameter passing

  • OS나 system call에 따라서 호출에 필요한 정보의 type이나 양이 더 많을 수 있다.
  • OS에서 parameter를 전달하는 방법에는 일반적으로 세 가지 방법이 있다.
    1. 가장 간단한 방법으로, register를 통해 parameter를 전달한다.
    때로는 register보다 필요한 parameter의 갯수가 더 많을 수도 있다. 그렇게 되면 전달이 불가능하다.
    🍕 따라서 아래의 두 방법을 더 많이 사용한다.
    아래의 두 방법은 parameter의 길이에 제한이 없다 🍕

    2. parameter가 memory, block, tables 중 한 곳에 저장됩니다.
    그리고 block의 주소가 parameter로 register에 전달됩니다.
    🍨 이 방법이 Linux에 사용됩니다.
    3. parameter가 프로그램에 의해 stack에 배치되고 push된다. 그리고 OS에 의해 stack에서 pop된다.
    즉, 스택에 저장 후 필요할 때 마다 pop한다.

System call의 종류

  • process control
  • device / file management
  • communication
  • information maintenance
  • protection

🍙 OS는 두 가지 모드를 가진다.
User Mode와 Kernel Mode인데, 이는 OS스스로와 기타 시스템 구성요소를 보호하기 위함이다.
하드웨어에서 생성하는 Mode Bit를 통해서 시스템이 현재 어떤 모드인지 알 수 있다.
kernel mode에서만 사용가능한 instructions, 명령어들이 있다.
System Call이 모드를 kernel로 바꿀 수 있다.

profile
new blog! https://citron031.tistory.com/

0개의 댓글