[linux기초] 5. 프로세스
프로세스의 개념 및 종류
- 프로세스 정의
- 프로세스 : 실행중인 프로그램
- 관련용어
- 프로그램 : 특정 기능을 수행하기 위한 명령어의 조합
- 작업 : 프로그램과 프로그램 실행에 필요한 입력 데이터
- 프로세서 : 연산을 수행하고 처리하기 위한 자원 (CPU)
- 프로시저 : 프로그램의 일부로 공통적으로 사용되는 특정 루틴
- 스레드 : 프로세스의 일부 특정 데이터만 갖고 있는 가벼운 프로세스
- 좀비 프로세스
- 프로그램 수행을 마치고 자원도 모두 반납한 상태지만 프로세스는 존재하는 상태
- 자식 프로세스가 종료되었지만 부모 프로세스가 확인하지 못하여 남아있는 상태
- 고아 프로세스
- 자식 프로세스모다 부모 프로세스가 먼저 종료된 상태
- 이 때 자식 프로세스의 부모 프로세스는 init프로세스가 된다
- 프로세스 제어 블록(Process Control Block, PCB)
- 커널에 등록된 각 프로세스들에 대한 정보를 저장하고 있는 영역
- 프로세스들은 커널 공간에 자신의 PCB를 하나씩 갖는다
- PCB에 저장되는 정보 : 프로세스 고유 번호, 프로세스 우선 순위, 프로세스 현재 상태 , 문맥 저장 영역 등
- 데몬 프로세스
- 메모리에 상주하면서 요청이 들어올 때마다 명령을 수행하는 프로세스
- 백그라운드에서 작동하는 프로세스다
- 데몬 프로세스 작동 방식
- standalone 방식
- 각 데몬 프로세스들이 독립적으로 수행되며, 항상 메모리에 상주하는 방식
- 자주 실행되는 데몬 프로세스에 적용되는 방식
- /etc/rc.d/init.d 디렉토리에 위치
- 웹 서비스 데몬(apached, httpd, mysqld 등), 메일 서비스 데몬(sendmail 등), NFS 등 서비스 요청이 많은 프로세스들이 standalone 방식으로 작동한다
- (x)inted 방식 (슈퍼 데몬)
- (x)inted이라는 슈퍼 데몬이 서비스 요청을 받아 해당 데몬을 실행시켜 요청을 처리하는 방식
- 서비스 속도는 standalone보다 느리지만, (x)inted 데몬만 메모리에 상주해 있기 때문에 메모리 절약됨
- /etc/xinetd.d 디렉토리에 위치
- telnetd, ftpd, pop3d, rsyncd 등의 서비스들이 슈퍼 데몬 방식으로 작동
- standalone 방식
- 시스템 호출
fork()
,exec()
- 프로세스가 다른 프로세스를 실행하기 위한 시스템 호출 방법
fork()
- 새로운 프로세스를 위한 메모리를 할당받음
- 자식 프로세스를 생성하는 시스템 호출 함수
- 새롭게 생성된 프로세스는 똑같은 코드를 기반으로 실행됨 (복사)
exec()
- 원래의 프로세스를 새로운 프로세스로 대체
- 새로운 프로세스를 위한 메모리를 할당하지 않고, exec()에 의해 호출된 프로세스만 메모리에 남아있음
프로세스 관리의 이해
- 프로세스 상태
- 생성상태 : 프로세스가 처음 생성되는 상태
- 준비상태 : 프로세스가 필요한 자원들을 할당 받은 상태에서 프로세서를 할당받기 위해 기다리고 있는 상태
- 실행상태 : 프로세스가 실행되고 있는 상태
- 대기상태 : 프로세스가 임의의 자원을 요청한 후 할당 받기 전에 할당 받을 때까지 기다리고 있는 상태
- 지연상태 : 프로세스가 기억 장치를 할당받지 못하고 있는 상태
- 시그널 분류
- 1 / SIGHUP : 연결 끊기, 프로세스의 설정파일을 다시 읽는데 사용됨
- 2 / SIGHINT : 인터럽트 발생 [Ctrl + C]
- 9 / SIGHKILL : 강제 종료
- 15 / SIGHTERM : kill 명령어로 프로세스를 종료할 경우
- 19 / SIGHSTP : 프로세스를 백그라운드로 전환하는 경우(정지) [Ctrl + Z]