[Centos 7] Investigating and Managing Processes (프로세스 조사)

2022. 11. 20. 17:36리눅스(Linux)

What is Process?

   - 컴퓨터의 CPU에서 실행되는 모든 프로그램을 프로세스라고 한다.

$ Multitasking의 개념

   - 시스템은 기본적으로 하나의 CPU를 가지고 있으며, 그것을 최적화하기 위하여 time-sharing 기법을 이용한다

 

$ Process의 종류
   - 프로세스에는 대화형 프로세스, 배치 프로세스, 데몬 프로세스로 구분 되어 진다.

 

$ 각 Process의 기본규칙
   - 각각의 프로세스마다 고유 번호의 프로세스 ID(PID)를 하나씩 증가시키면서 부여한다.
   - 더이상 할당할 PID가 없으면, 사용되지 않는 가장 낮은 숫자로 되돌아가 다시 할당 한다

 

$ 프로세스는 파일의 소유권과 유사한 방식의 소유권을 갖는다
   - 프로세스를 실행하는 사용자의 UID가 프로세스의 실제 사용자 UID로 할당된다
   - SetUID와 같은 특수한 경우 실행하는 사용자의 UID가 아닌 파일의 소유자가 실행 한것처럼 실행된다(EUID/EGID)

 

대화형 프로세스
$ 터미널과 세션을 통하여 사용자와 정보를 주고받으며 실행하는 프로세스를 말한다
   - 프로그램과 정보를 주고받는 동안 프로세스는 포그라운드로 실행되며 터미널과의 입출력 교류도 이루어진다


   - 포그라운드에서 실행되고 있는 프로세스는 그 프로세스가 종료되거나 일시중지 될 때까지 터미널에 대한 완벽한 제어권을 가지며, 포그라운드 프로세스가 일시 중지된 후 백그라운드 프로세스로 전환되면, 터미널의 제어권은 백그라운드 프로세스의 부모 프로세스(일반적으로 쉘)에게 넘어간다

 

   - 터미널 상에서 입출력 작업이 필요하지 않다면 백그라운드 상태에서 수행을 계속 할 수 있다.
 

   - 대화형 프로세스 제어 또는 작업 제어(job control)는 프로세스를 포그라운드나 백그라운드로 전환하는 역할을 하고, 포그라운드에서 실행을 계속할 수 있도록 제어 한다

 

배치 프로세스
$ 일련의 작업을 몰아서 특정 시각에 실행 시키는 것이며, 일반적으로 터미널과의 입/출력 교류가 전혀 없다
   - 중요하지 않은 작업에 대해 시스템의 사용률이 낮을때 처리하는데 매우 유용
   - batch 명령어와 at 명령어를 사용한다

 

데몬
$ 데몬은 특정 서비스를 위해 백그라운드 상태에서 계속 실행되는 서버 프로세스이다
   - 일반적인 서비스는 각각의 서비스가 사용하는 포트를 관리하는 데몬이 존재한다
   - 다른 데몬들에게 할당된 포트를 관리하는 특별한 용도의 데몬도 존재한다

 

좀비 프로세스
   - 자식 프로세스가 종료 되었는데, 부모 프로세스에게 SIGCHLD 전달이 안되었을 때 혹은 손실(lost) 되었을 때 발생
   

   - 자식 프로세스는 종료 되었는데 부모 프로세스는 종료되지 않았거나, wait() 계열 함수를 호출해서 자식 프로세스를 정리하지 않았을 때 발생

 

   - 파일 등의 모든 자원 및 메모리 이미지 역시 해제 하였으며 프로세스 테이블만 유지하고 있는 상태이다

 

Foreground & Background Process

$ Foreground Process?

   - 쉘 상태에서 명령을 내리면 사용자는 해당 프로세스가 종료될 때까지 기다려야 함

# cp -R /usr/sbin/ /tmp/ 
ㅣ

$ Background Process?

   - 일반적으로 명령뒤에 "&"를 붙여서 동작시키며, 명령을 내린 사용자는 자신이 하고자하는 다른 명령어를 계속 실행 할 수 있음

# cp -R /usr/sbin/ /tmp/ & 
[1] 26662 
# 
[1]+ Done 
2 cp -i -R /usr/sbin /tmp/ & 
#

 

at / batch 를 이용한 배치 프로세싱

   - at와 batch는 /bin/sh를 이용하여 지정된 시점에 실행할 명령을 표준 입력이나 지정한 파일에서 읽어들인다

부모 프로세스와 자식 프로세스
   - 프로세스는 여러가지 기능을 수행함으로써 주어진 작업을 완료하며, 모든 기능이 완료되기 전까지는 종료될 수 없다
   - 부모 프로세스는 여러 개의 자식 프로세스를 실행하여 다수의 작은 작업들을 동시에 처리하도록 할 수 있다

 

$ exec
   - 한 프로세스가 다른 프로세스를 생성(spawn)할 경우 원래의 프로세스가 더는 남아있을 필요가 없다면  exec호출을 통해서 다른 프로그램을 실행하고 새로운 프로세스로 자신을 대체 할 수 있다

 

$ fork
   - exec에 반해 원래 프로세스가 계속 존재해야 한다면 fork를 호출하여 자신의 복사본 프로세스를 먼저 만들고 복사본 프로세스에서 다시 exec를 호출하여 다른 프로그램을 실행하는 새로운 프로세스로 자신을 대체한다

 

 

 

init 프로세스
   - 리눅스 시스템에서 가장 중요한 프로세스이며, 부트 과정에서 커널이 수행하는 마지막 작업이다

$ init 프로세스의 역할
   - 파일시스템의 점검과 마운트
   - 필요한 데몬 동작
   - 시스템 구성에 필요한 기타설정
   - 부모 프로세스가 없는 자식 프로세스에 대한 부모 프로세스 역활

 

 

 

SIGNAL

   - 프로세스에게 발생하는 비동기적인 사건(asynchronous event)
   - 한 프로세스가 다른 프로세스에게 보낼 수도 있고, 커널이 프로세스에게 보낼 수도 있음
   - 비동기적이므로 어느 시점에서 시그널이 발생한지 미리 예측할 수 없음

 

$ SIGNAL 이 발생하는 경우
   - 키보드를 통해 발생 (CTRL + C(SIGINT), CTRL + Z(SIGSTOP))
   - 다른 프로세스에 의해서 발생
   - 커널 내부에서 발생 (Kill(), alarm() 과 같은 시스템 콜)

 

SIGNAL 종류

번호 시그널 이름 발생 및 용도 디폴트 action
1 SIGHUP(HUP) 연결끊기 (프로세스의 설정파일을 다시 읽는데 사용)
실행 종료 (로그아웃 되거나 모뎀 접속을 끊을 때 발생)
종료
2 SIGINT(INT) 인터럽트 (실행종료, CTRL+C를 입력할 때 발생) 종료
3 SIGQUIT(QUIT) Quit (실행종료, CTRL+/를 입력할 때 보내짐) 종료 (코어덤프)
4 SIGILL(ILL) 잘못된 명령  
5 SIGTRAP(TRAP) 트랩 추적  
6 SIGIOT(IOT) IOT 명령  
7 SIGBUS(BUS) 버스 에러  
8 SIGFPE(FPE) 부동 소수점 에러 종료
9 SIGKILL(KILL) 즉시 중지
이 시그널은 잡히지 않음.
종료
10 SIGUSR1(USR1) 사용자 정의 시그널1 종료
11 SIGSEGV(SEGV) 세그멘테이션 위반 (허가되지 않은 메모리 영역 접근)  
12 SIGUSR2(USR3) 사용자 정의 시그널2 종료
13 SIGPIPE(PIPE) 읽을 것이 없는 파이프에 대한 시그널
(읽으려는 프로레스가 없는데 파이프에 쓰려고 함)
종료
14 SIGALRM(ALRM) 경보(Alarm) 시그널
(Alarm(n)에 읭해 n초 후에 생성됨)
종료
15 SIGTERM(TERM) 소프트웨어 종료 시그널
(kill 시그널이 전송되기 전에 전송.
잡히는 시그널이기 때문에 종료되는 것을 트랙할 수 있음)
종료
16 SIGKFLT 코프로세서 스택 실패  
17 SIGHLD(CHLD) 프로세스 종료시 그 부모 프로세스에게 보내지는 시그널 무시
18 SIGCONT(CONT) Continue
(STOP이나 TSTP에 의해 정지된 프로세스가 다시 실행을 계속함.)
 
19 SIGSTOP(STOP) 정지 시그널
(SIGSTP와 같으나 잡거나 무시할 수 없음.
무조건적 즉시 정지함.)
프로세스 정지
20 SIGTSTP(TSTP) 키보드에 의해 발생하는 시그널 Ctrl + Z로 생성.
실행을 정지 후 다시 실행을 계속하기 위해 대기함. (터미널 정지 문자)
프로세스 정지
21 SIGTTIN 백그라운드에서의 제어터미널 읽기 프로세스 정지
22 SITTTOU 백그라운드에서의 제어터미널 쓰기 프로세스 정지
23 SIGURG 소켓에소의 긴급한 상태  
24 SIGXCPU CPU 시간 제한 초과.  
25 SICXFSZ 파일 크기 제한 초과.  
26 SIGVTALRM 가상 시간 경고  
27 SIGROF 프로파일링 타이머 경고  
28 SIGWINCH 윈도우 사이즈 변경  
29 SIGIO 기술자에서 입출력이 가능함.  
30 SIGPWR 전원 실패  
31 UNUSED 사용 안함