프로세스
- process := 프로그램 코드, 변수 값, 스택 등에 저장된 값, PCB 내용 등을 포함;
- process의 계층 구조: parent process → child processes;
- 유닉스 시스템의 모든 프로세스는 init의 descendent process;
Process identifier
process identifier : 음이 아닌 정수
→ 0 : swapper
→ 1 : init
pid_t getpid(void);
pid_t getppid(void);
Process Group
- 프로세스들을 묶어서 하나의 그룹으로 만든다
- 같은 그룹에 속한 프로세스들에게 동시에 시그널을 보낼 수 있다.
- 초기에 fork나 exec에 의해 그룹 아이디 계승
- group leader : 자신의 pid가 group id이면, group의 leader이다.
pid_t getpgrp(void);
pid_t getpgid(pid_t pid); // 인자가 0이면 호출 프로세스 자신의 그룹 아이디 검색
int setpgid(pid_t pid, pid_t pgid); // pid인 프로세스의 그룹 아이디를 pgid로 설정
Session
- session : 한 세션은 한 단말기를 사용하는 foreground process group과 background process group의 집합체
- 각 프로세스 그룹은 하나의 session에 속한다
- getsid 시스템 호출 : session id를 획득
pid_t getsid(pid_t pid);
- setsid 시스템 호출 :
pid_t setsid(void);
→ 제어 단말기를 갖지 않는 새로운 session과 group 생성;
→ 호출 프로세스의 id의 session과 group의 id가 됨
→ 만약, 호출 프로세스가 현재 그룹의 리더이면 -1 return;
'programming > Unix' 카테고리의 다른 글
[Unix Programming] 8. 시그널 (0) | 2024.12.12 |
---|---|
[Unix Programming] 7. 프로세스 생성과 실행 (1) | 2024.12.11 |
[Unix Programming] 5. 시스템 정보 (0) | 2024.12.11 |
[Unix Programming] 4. 파일 입출력 (1) | 2024.12.09 |
[Unix Programming] 3. 파일 다루기 (0) | 2024.12.09 |