프로세스

프로세스는 실행 가능한 프로그램이 실제로 실행되는 인스턴스를 의미합니다.

즉, 컴퓨터에서 특정 프로그램이 실행되기 시작하면서 프로세스가 생성됩니다.

프로세스는 메모리의 주소 공간이나, 하나 이상의 프로그램 실행 스레드, 프로세스 상태, 보안 등록 정보 등이 포함됩니다.

프로세스의 특징

부모 프로세스자식 프로세스가 존재합니다.

부모 프로세스는 리눅스가 시작되고 제일 먼저 실행됩니다.

부모 프로세스는 fork() 호출을 사용하여 자식 프로세스를 생성합니다.

fork()란?

기존 상위 프로세스(부모)에서 자체 주소 공간을 복사하여 하위 프로세스(자식) 구조를 생성합니다.

그리고 추적 및 보안 목적으로 모든 새 프로세스에는 고유한 pid가 할당됩니다.

여기서 init은 리눅스 운영체제를 갖춘 시스템이 부팅되면 가장 먼저 실행되는 프로세스입니다.

모든 프로세스는 Red hat 시스템의 첫 번째 프로세스인 systemd의 하위 프로세스입니다.

pid는 1입니다.

  • fork 시스템 콜로 자신을 복제합니다.

  • fork는 두 개의 서로 다른 값을 반환하는데, 자식은 0을, 부모는 새로 생성된 자식의 pid를 리턴합니다.

  • 자식은 새 프로그램의 실행을 위해 exec 계열의 함수를 호출합니다.

  • 자식 프로세스가 exit()가 호출로 종료해도 파일 디스크립터는 유지 됨.

  • wait() 계열 시스템 콜을 호출 후에만 프로세스 상태 정보(프로세스 디스크립터)를 삭제할 수 있음.

부모가 자식 프로세스의 종료를 확인하기 위해서

  • 반대로 말하면 wait()을 호출하지 않으면 프로세스가 종료되어도 디스크립터가 계속 남아있어서 리소스를 차지함.

이것을 좀비 프로세스라고 합니다.

프로세스가 좀비 프로세스가 되지 않기 위해 자식 프로세스가 종료될 때까지 부모프로세스가 기다렸다가 reap을 해줍니다.

여기서 부모가 자식보다 먼저 죽은 경우 (= wait이 없음)
고아 프로세스라 하며, init 프로세스(pid 1)의 자식으로 설정하고, 자식 프로세스 종료를 위해 필요한 wait 동작을 수행하게 됩니다.

프로세스의 확인하기

ps [-옵션]

ps -f 자세한 정보

ps -ef 모든 프로세스 리스트 확인

ps -aux 프로세스 목록 배열 및 시스템 자원 사용률 확인를 명령어를 입력 시에 확인할 수 있는 옵션

  • 프로세스 상태를 나타내는 STAT 항목 
  • R(Runable) : 실행 대기 상태
  • S(Sleeping) : 수면 상태
  • D(inDIskwait) : 입출력을 기다리는 상태
  • T(sTopped) : 멈춰 있거나 흔적이 남아있는 상태
  • Z(Zombie) : 죽었지만 프로세스에 남아있는 상태 (자원 낭비)

앞에 큰 대문자 뒤에 문자들은 보조 플래그이다

ps -f 명령으로 나타나는 항목들의 의미

top, htop

프로세스 정보를 실시간(동적)으로 확인하고 싶으면 top 혹은 htop을 사용하여 확인할 수 있다.

top

htop

[PID] : 프로세스 ID

[USER] : 프로세스를 실행시킨 사용자 ID

[PR] : 프로세스의 우선순위

[NI] : NICE 값, 마이너스를 가지는 값이 우선순위가 높음

[VIRT] : 가상 메모리의 사용량 (SWAP+RES)

[RES] : 현재 페이지가 상주하고 있는 크기

[SHR] : 가상 메모리 중 사용중인 메모리를 제외한 잔여 가상 메모리

[S] : 프로세스의 상태

[%CPU] : 프로세스가 사용하는 CPU의 사용률

[%MEM] : 프로세스가 사용하는 메모리의 사용률

[TIME+] : 프로세스가 CPU를 사용한 시간

[COMMAND] : 실행된 명령어

프로세스를 멈춰보기

$ sleep 10000

sleep 이후 ctrl + z로 작업을 중지하고 프로세스 상태를 확인한다.

T(sTopped) : 멈춰 있거나 흔적이 남아있는 상태 를 확인할 수 있다.

$ kill -SIGCONT pid

중단된(T) 작업을 다시 진행하게 한다(S)

S(Sleeping) : 수면 상태 를 확인할 수 있음.

Reference

profile
안녕하세요

0개의 댓글