세션은 프로세스 그룹의 묶음이다. 특징으로는 아래 몇가지를 들 수 있다.
- 세션 내 모든 프로세스는 동일한 세션 ID를 가지고 있다.
- 세션 리더는 세션을 만든 프로세스이고, 그 프로세스 ID가 세션 ID 가 된다.
- 세션은 주로 작업 제어 쉘에서 쓰인다.
- 작업 제어 쉘에서 만든 모든 프로세스 그룹은 쉘과 동일한 세션에 속하고, 쉘은 세션 리더가 된다.
세션에는 보통 연관된 제어 터미널이 있다. 제어 터미널은 세션 리더 프로세스가 처음 터미널 디바이스를 열 때 설정된다. 대화형 쉘이 만든 세션의 경우, 제어 터미널은 사용자가 로그인한 터미널이다. 터미널은 최대한 세션의 제어 터미널이 될 수 있다.
제어 터미널을 열면 세션 리더가 그 터미널의 제어 프로세스가 된다. 터미널이 끊어지면 제어 프로세스는 SIGHUP 시그널을 받는다.
어느 싲점에서든 세션 내 프로세스 그룹 중 하나는 포그라운드 프로세스 그룹으로서 터미널에서 입력을 받을 수 있고, 터미널로 출력을 보낼 수 있다. 사용자가 제어 터미널에서 인터럽트 문자나 중지문자를 입력하면, 터미널 드라이버는 포그라운드 프로세스 그룹을 종료시키거나 중지시키는 시그널을 보낸다. 세션은 임의 개수의 백그라운드 프로세스 그룹을 가질 수 있는데 명령끝에 & 문자를 붙여 만든다.
작업 제어 쉘은 모든 작업을 나열하고, 작업에게 시그널을 보내고, 작업을 포그라운ㄷ드와 백그라운드로 전환하는 명령을 제공한다.
'리눅스 > 기본개념 및 용어' 카테고리의 다른 글
클라이언트/서버 아키텍처, 실시간 응용 프로그램 (0) | 2019.09.26 |
---|---|
가상 터미널, 날짜와 시간 (0) | 2019.09.25 |
스레드, 프로세스 그룹, 쉘 작업 제어 (0) | 2019.09.23 |
시그널 (0) | 2019.09.23 |
파일 I/O 모델 (0) | 2019.09.23 |