(시스템 프로그래밍) 5-1 프로세스 개념

업데이트:
1 분 소요

시스템 프로그래밍 - 프로세스 개념

1. 리눅스 시스템 프로세스 개념

1) 프로세스

  • 실행중인 프로그램을 의미
  • 일반적으로 프로그램이 메모리에 적재되면 프로세스라고 함.

alt

(1) 프로세서(processor)

  • 중앙처리장치 (CPU)
  • 예) 펜티엄, 쿼드코어 등

(2) 프로그램(Program)

  • 사용자가 컴퓨터에 작업을 시키기 위한 명령어의 집합

(3)

  • 고급언어로 작성한 프로그램은 기계어 프로그램으로 변환해야 실행이 가능
  • 예) C언어로 작성한 프로그램

alt

2) 프로세스의 부모 - 자식 관계

(1)

  • 프로세스는 부모 - 자식 관계를 가지고 있음 (계층 구조)

(2)

  • 필요에 따라 부모 프로세스(parent process)는 자식 프로세스(child process)를 생성하고,
    자식 프로세스는 또 다른 자식 프로세스 생성 가능

(3)

  • 부팅할 때 스케줄러가 실행한 프로세스인 systemd와 kthreadd 프로세르르 제외하면
    모든 프로세스는 부모 프로세스를 가지고 있음.

(4)

  • 자식 프로세스는 할 일이 끝나면 부모 프로세스에 결과를 돌려주고 종료

3) 프로세스의 번호

alt

4) 프로세스의 종류

(1) 데몬 프로세스

  • 특정 서비스를 제공하기 위해 존재하며 리눅스 커널에 의해 실행
  • 웹(홈페이지) : ex) 아파치

(2) 고아 프로세스

  • 자식 프로세스가 아직 실행 중인데 부모 프로세스가 먼저 종료된 자식 프로세스는 고아(orphan) 프로세스
  • 1번 프로세스가 고아 프로세스의 새로운 부모 프로세스가 되어 고아 프로세스의 작업 종료 지원

(3) 좀비 프로세스

  • 자식 프로세스가 실행을 종료했는데도 프로세스 테이블 목록에 남아 있는 경우
  • 좀비 프로세스는 프로세스 목록에 defunct 프로세스라고 나오기도 함
  • 좀비 프로세스가 증가하면 프로세스 테이블의 용량이 부족해서 일반 프로세스가 실행되지 않을 수도 있음

2. 리눅스 시스템 프로세스 구조

1) 프로세스의 구조

(1)

  • 프로세스 실행 중 프로세스 생성 시스템 호출 이용
  • 새로운 프로세스 생성 (부모 - 자식)

(2)

  • 프로세스 생성 순서를 저장
  • 부모-자식 관계 유지하여 계층적 생성

(3)

  • 생성하는 프로세스는 부모 프로세스 parent process
  • 생성되는 프로세스는 자식 프로세스 child process 또는 서브 프로세스 subprocess

(4)

  • 부모 프로세스는 자식 프로세스를 생성 과정 반복하면서 계층 구조 형성

(5) 메모리에 적재된 프로세스의 구조

alt

2) 프로세스 상태 변화

  • 프로세스의 상태는 규칙에 따라 여러 상태로 변함
  • 커널의 프로세스 관리 기능이 프로세스의 스케줄링 담당

alt

  1. 프로세스는 먼저 사용자 모드에서 실행
  2. 사용자모드에서 시스템 호출을 하면 커널 모드로 전환
  3. 수면 중이던 프로세스가 깨어나 실행 대기 상태로 전환되면 실행 준비
  4. 커널 모드에서 실행 중 입출력을 기다릴 때 처럼 실행을 계속할 수 없으면 수면상태로 전환

댓글남기기