프로세스 상태와 계층 구조

.·2023년 11월 28일

목차

  • 프로세스 상태
  • 프로세스 계층 구조
  • 프로세스 생성 기법

프로세스 상태

  • 생성 상태
  • 준비 상태
  • 실행 상태
  • 대기 상태
  • 종료 상태

생성 (New) 상태

  • 이제 막 메모리(보조장치에서 메모리로 적재) 에 적재되어 PCB를 할당 받은 상태
  • 준비가 완료 되었다면 준비 상태로

준비(Ready) 상태

  • 당장이라도 CPU를 할당 받아 실행할 수 있지만
  • 자신의 차례가 아니기에 기다리는 상태
  • 자신의 차례가 된다면 실행 상태로 (=dispatch 를 통해)

실행 (Running) 상태

  • CPU를 할당 받아 실행 중인 상태
  • 할당된 시간 모두 사용 시(타이머 인터럽트 발생 시) 준비 상태로
  • 만약 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지 (=입출력 완료 인터럽트를 받을때까지) 대기 상태로

대기 (Block) 상태

  • 프로세스가 실행 도중 입출력장치를 사용하는 경우
  • 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듬
  • 입출력 작업이 끝나면 (입출력 완료 인터럽트를 받으면) 준비 상태로

종료 상태

  • 프로세스가 종료된 상태
  • PCB, 프로세스의 메모리 영역 정리

프로세스 상태 다이어그램

프로세스 계층 구조

(etc. window os 는 프로세스를 계층적으로 관리하지 않음)

  • 프로세스 실행 도중 (시스템 호출을 통해) 다른 프로세스 생성 가능
  • 새 프로세스를 생성한 프로세스 : 부모 프로세스 (Parent process)
  • 부모 프로세스에 의해 생성된 프로세스 : 자식 프로세스 (Child process)
    - 자식 프로세스는 또 자식 프로세스를 낳을 수 있고 또 자식 프로세스를 낳을수 있고 또 ..

(부모 프로세스와 자식 프로세스는 별개의 프로세스이므로 각기 다른 PID를 가짐)

예시 )

최초의 프로세스 확인하기 (tree 구조로 확인 가능)
(linux 는 systemd)

프로세스 생성 기법

복제와 옷 갈아입기

  • 부모 프로세스는 fork 시스템 호출(system call) 을 통해 자신의 복사본을 자식 프로세스로 생성
  • 자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체

fork

exec 시스템 호출

  • 메모리 공간을 새로운 프로그램으로 덮어쓰기
  • 코드/데이터 영역은 실행할 프로그램 내용으로 바뀌고 나머지 영역은 초기화

Reference

  1. https://m.blog.naver.com/samonim8/29204953
  2. https://www.youtube.com/watch?v=wz9C_vqME8g&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=29
profile
.

0개의 댓글