리눅스/Part3. Ch02. 프로세스 관리

01. 프로세스 구성요소의 이해

Engineer-Lee 2022. 7. 16. 22:20
반응형

프로세스의 정의

  • 실행중인 프로그램
  • 프로그램 진행 상태를 완전하게 나타내는 자료구조의 집합
    -> 프로세스 디스크립터
        (실행중인 프로그램 코드, 열린 파일, 지연된 시그널 리소스, 내부 커널 데이터, 프로세서 상태, 주소 공간 등)

프로세스
리눅스 프로세스 디스크립터

 

 

 

쓰레드의 정의

  • 프로세스 내의 실행 흐름 (프로세스당 최소 1개 이상의 쓰레드가 존재)
  • 리눅스에서는 경량 프로세스(lightweight process)라고도 부름
    -> 쓰레드 단위로 스케줄링
  • 쓰레드는 주소 공간이나 열린 파일 등 여러 자원을 공유할 수 있음
    -> 공유자원을 접근할 때 서로 동기화 해야 함

 

 

 

 

프로세스의 주요 구성요소

PID

  • 커널은 각 프로세스에 고유한 ID를 부여 (Process ID)
  • PID는 프로세스가 생성되는 순서대로 배정

PPID (Parent Process ID)

  • 리눅스에는 새 프로그램을 시작하는 시스템 콜이 없음
  • 기존 프로세스를 복제 및 프로그램 교체하는 방식
    1. 기존 프로세스는 새로운 프로세스를 생성하고 자신을 복제 함
    2. 복제된 프로세스는 현재 실행중인 프로그램을 교체
  • PPID는 그 프로세스를 복제한 부모의 PID

 

 

Niceness

  • 프로세스 스케줄링의 우선순위를 결정
  • 우선순위 높다 == CPU 사용 시간이 많다
  • Nice 값의 범위 : -20 ~ +19 (작을 수록 불친절 -> 우선순위 높음)
  • 조정
    $ nice n 5 [command]
    $ sudo renice -5 -p [process id]
    $ sudo renice 5 -u [username or UID]

  • 수작업으로 우선순위를 조정하는 경우는 흔치 않음
    -> CPU 성능, 스케줄러, I/O 요청 등의 영향으로 조정에 따른 차이가 극적이지 않음
    -> 대부분의 경우 기본값 사용

반응형