System Call   시스템 호출, 시스템 콜

(2018-06-28)
1. 시스템 호출프로세스운영체제 커널에게 어떤 동작을 수행토록 요청하는 것
     - 커널시스템호출 API를 통해 광범위한 서비스를 제공하게됨


2. 시스템 호출에 따른 프로세스 제어권 전달프로그램을 작성할 때 단순히 서브루틴을 호출하는 것처럼 시스템 호출을 함
  ㅇ 시스템 호출을 수행하면 제어권은 사용자 모드에서부터 커널 모드로 옮겨지고,
  ㅇ 시스템 호출을 모두 마치면 제어권은 다시 사용자 프로세스로 복귀하게 됨


3. 시스템 호출 종류프로세스와 관련된 시스템 호출
     - 프로세스 제어용 
        . exec : 자신을 수행 가능한 다른 프로세스로 대치 수행
        . fork : 현재의 프로세스 이미지를 복사하고 child 프로세스를 만듬
        . wait
     - pipe : 파이프
     - signal : 소프트웨어 인터럽트 또는 시그널
     - exit : 프로세스 종료
     - getuid, setuid ... : 사용자 및 그룹 id 접근

  ㅇ 표준 화일(장치)에 대한 입출력 시스템 호출
     - open( ), create( ), close( ), read( ), write( ), lseek( ), ...

  ㅇ 소켓 기반의 입출력 시스템 호출
     - socket(), bind(), listen(), accept(), connect(), ...


4. Linux 시스템 호출커널 차원에서 사용자 프로세스를 위해 서비스하기 위한 여러 함수들을 마련하고 있는데,
     이 함수(function)들을 일컬어 시스템 호출 이라고 함
     - 대부분 헤더파일 syscall.h, unistd.h 에 정의되어 있음

  ㅇ 사용 방법
     - libc를 통한 포장함수(Wrapper Function)에 의해 호출하는 방법
     - syscall() 함수를 이용해서 직접 실행시키는 방법

  ㅇ Linux 시스템 콜 例)
     -  exit() : 현재 프로세스의 종료     (소스 위치 : kernel/exit.c)
     -  fork() : 자식 프로세스의 생성     (소스 위치 : arch/i385/kernel/process.c)
     -  read() : 파일 지정자로 부터 읽기  (소스 위치 : fs/read_write.c)
     -  write(): 파일 지정자로 쓰기	  (소스 위치 : fs/read_write.c)
     -  open() : 파일이나 장치열기	  (소스 위치 : fs/open)
     -  close(): 파일 지정자 닫기         (소스 위치 : fs/open.c)


[UNIX 프로세스] 1. 프로세스 2. 시스템 호출 3. init,exec,fork 4. 시그널 5. 좀비

 
        최근수정     요약목록(시험중)     참고문헌