[CS] 프로세스 상태와 계층 구조

정은아·2024년 1월 22일
post-thumbnail

프로세스들은 각자의 상태를 가지고 계층적인 구조를 이루고 있다.
프로세스 상태란 무엇인지, 프로세스 계층 구조란 무엇인지 알아보고 코드를 통해 이들을 확인해보자!

프로세스 상태

생성 상태(new)

  • 프로세스를 생성 중인 상태를 뜻한다.
  • 생성 상태를 거친 프로세스는 곧바로 실행 상태가 되지 않고 준비 상태가 되어 CPU 할당을 기다린다.

준비 상태(ready)

  • CPU를 할당받아 실행할 수 있지만, 자신의 차례를 기다리고 있는 상태를 뜻한다.

    준비 상태인 프로세스가 실행 상태로 전환되는 것을 디스패치(dispatch)라고 한다.

실행 상태(running)

  • CPU를 할당받아 실행 중인 상태를 뜻한다.
  • 할당된 일정 시간 동안만 CPU 사용 가능하다.

대기 상태(blocked)

  • 프로세스가 실행 도중 입출력장치를 사용하는 경우에 입출력장치의 작업을 기다리는 상태를 뜻한다.
  • 입출력 작업이 완료되면 해당 프로세스는 다시 준비 상태로 CPU 할당을 기다린다.

종료 상태(terminated)

  • 프로세스가 종료된 상태를 뜻한다.
  • 운영체제는 프로세스의 PCB와 메모리를 정리한다.

프로세스 계층 구조

  • 새 프로세스를 생성한 프로세스를 부모 프로세스(parent process)라고 한다.
  • 부모 프로세스에 의해 생성된 프로세스를 자식 프로세스(child process)라고 한다.
  • 자식 프로세스에는 부모 프로세스의 PID인 PPID(parent PID)가 기록되기도 한다.
  • 데몬이나 서비스 또한 최초 프로세스의 자식 프로세스이다.

프로세스 생성 기법

  • 부모 프로세스를 통해 생성된 자식 프로세스들은 복제와 옷 갈아입기를 통해 실행된다.

    부모 프로세스는 fork를 통해 자신의 복사본을 자식 프로세스로 생성해내고,
    만들어진 복사본(자식 프로세스)은 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체한다.

fork()

  • 부모 프로세스가 자식 프로세스로 자신의 복사본을 생성하는 시스템 호출.

exec()

  • 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출.
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글