강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터2급강좌 : 프로세스(process)의 생성

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터2급강좌 : 프로세스(process)의 생성

 

 

프로세스의 생성

리눅스 환경에서 사용자가 새로운 프로세스를 생성할 수 있는 방법은 forkexec의 두 가지가 있다.

 

 

 

 

 

 

fork는 자식 프로세스를 만든다.

 

 

 

 

fork() 시스템 호출은 어떤 프로세스가 자신의 사본을 생성하는 데 사용한다.

 

 

 

 

이때 fork()를 부른 프로세스를 부모 프로세스라 부르고, 새로 생성된 프로세스를 자식 프로세스라고 부른다.

 

 

 

 

이와 같은 방법은 프로세스의 수를 증가시키기 위한 전통적인 기법으로 fork() 후에는 프로세스 아이디(PID)만 다르고 두 개가 거의 동일한 프로세스인 부모(Parent)와 자식(Child)이 생긴다.

 

이에 대해, 실행된 프로세스가 새로운 프로세스를 호출해야 하는 경우도 있는데, 이러한 역할을 하는 것이 exec이다.

 

 

 

 

exec는 호출하는 프로세스를 새로운 프로세스로 변경하는 데 사용되며, 호출하는 프로세스의 특성이 변하지 않는 한 시스템 내의 총 프로세스 수는 변하지 않는다.

 

 

 

 

, exec() 시스템 호출은 프로세스의 메모리 공간을 수행 가능 파일로 대체하여 다른 프로그램을 호출한다.

 

이런 의미에서 리눅스 운영체제에서 PID 번호가 1init는 모든 프로세스의 부모 프로세스이다.

 

 

 

 

물론, (GRUB에 의해 리눅스 커널이 RAM에 적재된 후에) PID 번호가 0스와퍼(swapper)라는 프로세스가 실행되기는 하지만 이 스와퍼라는 프로세스는 부팅되면서 잠시 실행되었다가 init 프로세스를 실행시킨 후에 몇 가지 역할을 수행하고 부팅이 완료되면 종료된다.

 

 

 

 

그리고 부팅 중에 스와퍼에 의해 실행된 init 프로세스는 부팅 후에도 PID 1번으로 계속 남아 있다.

 

 

 

 

init 프로세스가 생성된 이후에 시스템에서 생성되는 모든 프로세스들은 PID1번인 init 프로세스에 의해서 실행되고 이에 종속된다(init는 기본적으로 /etc/inittab 파일을 읽어 들여서 그 설정에 따라 각 실행레벨(runlevel)에 포함된 스크립트를 실행하고 사용자들이 로그인할 수 있도록 getty 프로그램을 실행한다).

 

 

이런 이유에서 init가 모든 프로세스의 부모 프로세스라고 하는 것이다.

 

이러한 프로세스들의 생성 가계도를 확인해 보려면 pstree 명령어를 실행해 보면 된다.

 

 

 

 

이 명령어는 프로세스들을 트리(tree) 구조로 출력하며, 이 트리 구조의 최상단에 위치한 것이 init이다.

 

ed36d8ddf63920e81ddecfc30a55e46d_1676872959_6521.png
 

 

한편, 부모 프로세스에 종속되어 있는 자식 프로세스는 부모 프로세스의 환경을 물려받고, 자식 프로세스가 자신의 환경을 변경할 때 그것은 부모 프로세스에게로 전달되지 않는다. 그리고 대부분 부모 프로세스가 종료하면 자식 프로세스도 자동으로 함께 종료된다.

 

 

 

 

그런데 부모 프로세스가 종료된 후에도 자식 프로세스가 아직 남아 있는 경우가 있는데, 이런 상태의 프로세스를 좀비 프로세스(zombie process)라고 한다.

 

 

 

 

이런 좀비 프로세스가 많아지면 시스템이 느려지는 원인이 될 수 있다.

 

 

 

 

대부분의 좀비 프로세스는 init 프로세스에 의해 관리가 되는데, 계속 살아 있는 좀비 프로세스가 있다면 kill 명령에 의해 강제로 종료시키는 것이 가능하다.

 

 

 

 

만약 시스템이 재부팅되면 이런 좀비 프로세스는 자동 제거된다.

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  100 명