리눅스 -프로세스, 데몬

·2025년 7월 7일

Devops

목록 보기
6/6

1. 프로세스란

  • 디스크의 프로그램을 메모리에 적재하고, 실행한 상태.
  • 하나의 프로그램은 여러개의 프로세스로 중복 생성 될 수 있기에 프로세스는 프로그램의 인스턴스 라 할 수 있다.

1) 특징

  • "생성 -> 실행 -> 대기 -> 중지 -> 좀비 -> 종료" 생명 사이클을 갖음
  • 프로세스는 고유의 ID(Pid)를 갖고, 부모 - 자식 프로세스의 관계를 맺으며 실행 우선 순위와 프로세스 상태를 갖음.
  • 프로세스는 시간정보와 주기적인 이벤트 발생을 위한 타이머를 갖음
  • 프로세스는 사용 가상메모리, 프로세스 컨텍스트, 파일 핸들 정보를 갖음

2) 프로세스 유형

  1. 최상위 프로세스( ex) init)
  2. 부모 - 자식 프로세스
  3. 좀비, 고아 프로세스
  • 좀비 프로세스란 "자식 프로세스가 종료 될때 부모 프로세스가 wait() 시스템콜등으로 자식 프로세스의 종료 코드를 회수하지 못한 경우를 의미"
  • 고아 프로세스는 부모 프로세스가 강제 종료된 것을 의미
  • ‼️ 고아, 좀비 프로세스의 부모는 init으로 변경된다.
  1. 데몬
  • 데몬은 시스템 부팅시 대부분 자동으로 백그라운드로 시작.
  • 사용자가 직접 관리하지 않고, 특정 이벤트나 상태와 같은 주기적이고 지속적인 서비스의 요청을 처리하기 위해 데몬의 관련 핸들러가 실행하는 방식.

3) 식별자

  1. PID : 프로세스의 식별값
  2. PPID : 생성된 프로세스의 부모 PID
  3. UID, GID : 생성된 프로세스가 속한 사용자, 그룹의 아이디를 의미.(부모의 프로세스로부터 주로 상속)

4) 프로세스의 동작 원리

  1. exec()
  • 현재 프로세스의 이미지를 새로운 프로세스의 이미지로 교체
  1. fork()
  • 프로세스(부모)가 fork를 통해 프로세스를 생성, 복제(자식)
  • 이때 자식은 부모의 PID를 할당
  • ⁉️ 그럼 유일 식별자가 두갠데? 이때 자식은 exec()를 통해 새로운 이미지로 교체 -> 부모 프로세스는 wait() 으로 코드 회수.

5) 프로세스의 상태

  1. R(runnig)
  2. D(dead)
  3. S(sleep)
  4. Z(zombie)
  5. T(traced or stopped) : 추적 혹은 중단 상태

6) 구조(PCB)

  1. Pointer : 스택 포인터
  2. Process State : 상태
  3. Process Number : Pid
  4. Process Counter : 프로세스가 다음에 실행할 명령어의 주소
  5. Register :cpu레지스터
  6. Memory Limits : 메모리 관리에 대한 정보
  7. Open File Lists : 프로세스가 열고 있는 파일 목록

7) 통신의 유형

  1. 파이프
  2. 메시지 큐
  3. 공유 파일
  4. 공유 메모리
  5. 세마포어 : 다수의 프로세스 간 실행 순서를 조정하고, 임계 영역을 보호하기 위한 동기화 객체
  6. 소켓
  7. 시그널

2. 데몬

1) 실행방식

  • standance 방식
    • 사용자의 요청없이 시스템 시작시 자동으로 시작해 -> 백그라운드에서 대기. 그래서 클라이언트에서 요청 발생시 즉각적으로 서비스를 제공.
    • 데몬이 항상 실행됨으로 메모리 공간을 계속 차지. 그래서 메모리의 비효율적인 문제가 발생
  • xinted 방식(eXtended InterNET)
    • 사용자의 서비스 요청이 있을 때만 관련 데몬이 시작해 서비스를 제공.
    • 사용자의 접속이 종료되면 데몬도 자동 종료
    • 메모리의 효율성은 좋으나, standance보다 상대적으로 느림.
  • systemd의 On-demand 방식
    • 사용자의 서비스 요청이 있을 때만 관련 데몬이 시작해 서비스를 제공.
    • systemd에서 On-demand로 데몬을 실행하기 위해 소켓파일, 서비스 파일을 필요로 하다.
profile
# h

0개의 댓글