티끌모아 태산

Chapter 5 : System Calls 본문

CS 지식/시스템프로그래밍

Chapter 5 : System Calls

goldpig 2023. 12. 25. 16:36
728x90

System Call Principles

  • 응용 프로그램(Applications)과 하드웨어(hardware) 사이에 추가적인 계층을 두는 것의 장점은 다음과 같습니다:
    • 프로그래밍이 쉬워집니다(easy to program): 사용자가 하드웨어 장치의 저수준(low-level) 프로그래밍 특성을 인지할 필요가 없어집니다.
    • 시스템 보안이 증가합니다(Increasing system security): 커널이 인터페이스 수준에서 요청의 정확성을 확인할 수 있습니다.
    • 프로그램의 이식성이 증가합니다. (Increase program portability)
  • 시스템 호출에 대해:
    • UNIX 시스템은 사용자 모드(User Mode) 프로세스와 하드웨어 장치 간의 대부분의 인터페이스를 커널로 발행된 시스템 호출을 통해 구현합니다.
    • 사용자 모드 프로세스와 하드웨어 장치 사이의 인터페이스입니다. (interfaces between User Mode processes and hardware devices)
    • 커널 서비스를 요청하는 데 사용됩니다.
  • System Call
    • 소프트웨어 인터럽트를 통해 커널에 명시적으로 요청을 하는 것입니다.
      • 커널 설계자의 관점에서 볼 때 커널에 속한 기능입니다.
    • 일부 시스템 호출은 하나 이상의 인자를 필요로 합니다.
    • 성공적인 종료를 의미하는 양수나 0 값을 반환합니다.
      • 실패할 경우: -1을 반환하고 오류 코드를 errno에 설정합니다 (예: include/asm-i386/errno.h를 보세요).
    • 시스템 호출은 사용자 공간의 libc에 있는 래퍼 루틴(예: _syscall3())으로 구현됩니다.

시스템 호출이 사용자 공간의 응용 프로그램과 커널 사이의 인터페이스 역할을 하며, 이를 통해 커널 서비스를 요청하고 결과를 반환하는 과정을 나타냅니다. 오류 발생 시 시스템 호출은 특정 오류 코드를 errno 변수에 설정하여, 호출한 프로그램이 오류를 처리할 수 있도록 정보를 제공합니다.

System Call Handling In x86/Linux

전반적인 시스템 콜 처리과정은 다음과 같습니다.

  1. Saves the contents of most registers in the Kernel Mode stack
  2. Handles the system call by invoking the system call service routine.
  3. Exits from the handler: restore the register and swtiches back to User Mode

 

728x90

'CS 지식 > 시스템프로그래밍' 카테고리의 다른 글

Chapter 6 : Signals  (0) 2023.12.25
Chapter 4 : Timing Measurements  (0) 2023.12.25
Chapter 3: Interrupt and Exception  (0) 2023.12.23