시스템 콜

Ahn9807 (토론 | 기여)님의 2023년 2월 11일 (토) 01:59 판 (새 문서: 분류: 제어흐름 == 개요 == 시스템콜은 Userprocess가 Kernel process에서만 다룰 수 있는 민감한 Resource에 접근하기 위한 방법이다. Userporcess는 프로그램 작동중 파일의 읽기와 쓰기 같은 커널 영역에서만 처리되어야 하는 작업에 당면하면 시스템콜을 부르게 된다. 시스템콜은 그에 따른 시스템콜을 호출하게 된다. 이러한 시스템콜에대한 Abstraction은 라이브러리의 형태...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

시스템콜은 Userprocess가 Kernel process에서만 다룰 수 있는 민감한 Resource에 접근하기 위한 방법이다. Userporcess는 프로그램 작동중 파일의 읽기와 쓰기 같은 커널 영역에서만 처리되어야 하는 작업에 당면하면 시스템콜을 부르게 된다. 시스템콜은 그에 따른 시스템콜을 호출하게 된다. 이러한 시스템콜에대한 Abstraction은 라이브러리의 형태로 언어마다 주어지게 된다 (C언어와 같은 경우는 Libc에 저장).

후에 라이브러리에서는 Kernel영역에 접근하기 위해서 syscall(sysenter)이나 int0x80을 호출하게 되고, User program이 제시한 인자를 커널영역에 카피한후, 인자를 체크한후 시스템콜을 수행하게 된다. 이때 인자를 커널영역에 카핑하는 이유는, argument checking과정에서 일어날 수도 있는 혹시모르는 보안상의 허점을 막기 위함이다.

기능

시스템 호출이란 프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영 체제의 루틴을 호출하여 이용하는 것을 말한다. 시스템 호출의 세 가지 기능은 다음과 같다.

  1. 사용자 모드에 있는 응용 프로그램이 커널의 기능을 사용할 수 있도록 한다.
  2. 시스템 호출을 하면 사용자 모드에서 커널 모드로 바뀐다.
  3. 커널에서 시스템 호출을 처리하면 커널 모드에서 사용자 모드로 돌아가 작업을 계속한다.
  4. 프로세스 제어(process Control)
  5. 파일 조작(file manipulation)
  6. 장치 관리(Device Management)
  7. 정보 유지(Information maintenance)
  8. 통신(Communication)

참고

  1. https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md