프로세스 정보

hgh1472·2023년 12월 23일
0

Process

process는 프로그램 코드, 변수 값, 스택 등에 저장된 값, PCB 내용 등을 포함한다.

  • process의 계층 구조 : parent process -> child processes
  • UNIX system의 모든 process는 init의 descendent process이다.
  • 하나의 program이 여러 개의 process로 실행될 수 있다.

Process Identifier

process identifier : 음이 아닌 정수

  • 0 : swapper
  • 1 : init

Process Group

process group

  • 프로세스들을 묶어서 하나의 group으로 만든다.
  • 같은 group에 속한 process들에게 동시에 signal을 보낼 수 있다.
  • 초기에 fork나 exec에 의해 group id 계승

group leader

자신의 pid가 group id이면, group의 leader이다.

group id 검색 시스템 호출

#include <sys/types.h>
#Include <unistd.h>
pid_t getpgrp(void);
pid_t getpgid(pid_t pid);
// getpgid의 인자가 0이면 호출 프로세스 자신의 group id 검색

process group의 변경

#include <sys/types.h>
#Include <unistd.h>
int setpgid(pid_t pid, pid_t pgid);
// pid인 프로세스의 group id를 pgid로 설정

Session

한 session은 한 단말기를 사용하는 foreground process group과 background process group의 집합체이다.

각 process group은 하나의 session에 속한다.

getsid 시스템 호출 : session id를 획득

#include <sys/types.h>
#Include <unistd.h>
pid_t getsid(pid_t pid);

setsid 시스템 호출

#include <sys/types.h>
#Include <unistd.h>
pid_t setsid(void);
  • 제어 단말기를 갖지 않는 새로운 session과 group을 생성한다.
  • 호출 프로세스의 id가 session과 group의 id가 된다.
  • 만약, 호출 process가 현재 group의 leader 이면, -1 return.

0개의 댓글