Notice
Recent Posts
Recent Comments
05-17 21:28
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Linux master 1급 - Process 본문

OS/Linux

Linux master 1급 - Process

알 수 없는 사용자 2023. 2. 9. 14:59
더보기

 리눅스 마스터 1급의 이론서를 공부하면서 정리한 내용들을 적으려고 한다. 방학 동안 필기만 합격을 해놓고, 1학기의 강의를 들으면서 실기를 이번년도 상반기에 딸 것이다. 정리한 내용이 다른 분들에게도 도움이 되었으면 한다. 또한, 2급을 따지 않은 입장에서 쓴 글들은 정말 논리적으로 비약적이고, 높은 확률로 정확하지 않을 수 있으므로, 이를 보는 다른 사람들은 해당 글들을 비판하면서 볼 수 있었으면 좋겠습니다.

 프로세스 - 디스크의 프로그램을 메모리에 적재하고 실행한 상태를 의미한다. 따라서 프로세스는 프로그램의 인스턴스라고도 할 수 있다. (여러 인스턴스를 생성할 수 있다)

 

프로세스의 특징

 프로세스는 상태에 있어서 생성, 실행, 대기, 중지, 좀비, 종료의 상태를 갖고 프로세스 간에 구분이 되는 고유한 고유의 아이디(PID : Process Identifier)를 가지게 된다. 또한 부모 프로세스와 자식프로세스의 관계를 맺으며 실행 우선순위와 프로세스의 상태를 갖고 생성 시간, 사용자 실행 시간 등의 시간 정보와 주기적인 이벤트 발생을 위한 타이머를 가진다. 프로세스를 조금 더 자세히 살펴보자.

 

프로세스의 유형

 최상위 프로세스라는 개념이 기본적으로 깔린다. 최상위 프로세스는 시스템 상의 모든 프로세스의 부모 프로세스이며, 부트로더에서 리눅스의 초기화를 위해 가장 먼저 실행된다. 이는 커널이 직접 시작하며, PID는 항상 1이다. 최상위 프로세스는 운영체제 배포판 마다 그 위치가 상이한데 CentOS6은 /sbin/init이며, CentOS7에서는 /usr/lib/systemd/systemd이다.

 Systemd는 최소한의 필요한 서비스로만 시작하고 실제 필요한 시점에 서비스를 실행하는 on-demand 방식을 제공하게 된다. 또한, 최대한 병렬로 서비스를 시작해 부팅 시간을 단축한다.

 앞서 부모 프로세스자식 프로세스를 언급한 바있다. 현재 실행중인 프로세스 A가 특정 실행 파일을 실행하여 프로세스 B가 생성되었다면, 프로세스 A를 부모 프로세스라 하고 프로세스 B를 자식 프로세스라고 한다. 특별히 해당 개념을 얘기할 때는 자식 프로세스 아이디를 PID라고 부르고, 부모 프로세스의 PID를 PPID라고 한다.

 생소하게 보게 되는 고아 프로세스좀비 프로세스도 있다. 자식 프로세스가 부모 프로세스를 잃어버릴 수 있는데, 이때 고아 프로세스가 된다. 이때 고아 프로세스는 최상위 프로세스인 init 프로세스의 자식 프로세스로 변경되게 된다. 자식 프로세스가 종료될 때 부모 프로세스가 wait() 시스템 콜 등으로 자식 프로세스의 종료 코드를 회수하지 못한 경우 좀비 프로세스가 된다. 이때 자원관리를 위해 wait는 자식 프로세스의 리소스 즉, 자원을 회수하는 명령어들이 들어 있고 부모 프로세스가 시스템 콜을 통해 자식 프로세스의 종료 코드를 회수하면 프로세스 테이블에서도 PID가 삭제되게 된다.

 

데몬 ← 완전 중요

 시스템 부팅 시 대부분 자동으로 시작되며 백그라운드로 실행되는 프로그램이다. 데몬은 사용자가 직접 제어하지 않고 보통 특정 이벤트나 상태와 같은 주기적이고 지속적인 서비스의 요청을 처리하기 위해 데몬의 관련 핸들러가 실행하는 방식이다. 무엇보다 중요한 점은 작업 예약(cron)이며 이 외에도 파일 전송(ftpd), 프린터(lpd), 원격 접속(rlogind), 원격 명령(rshd), 텔넷(telnetd) 등이 좋은 예이다.

 

식별자 개념

PID(Process Identifier) - 시스템에서 실행 중인 프로세스를 각각 구분하기 위해 유일한 아이디를 부여 받는데 이를 PID라고 한다.

PPID(Parent Process Identifier) - 생성된 프로세스의 부모 프로세스의 아이디를 특별히 PPID라고 한다.

UID(User Identifier) 또는 GID(Group Identifier) - 나중에 나오겠지만, 생성된 프로세스가 속한 사용자 또는 그룹의 아이디를 일컫는다.

Comments