본문 바로가기
CS

[혼공컴운] 프로세스 상태와 계층 구조

by 데브겸 2023. 4. 7.

프로세스 상태 

운영체제는 PCB에 적힌 프로세스의 상태를 통해 프로세스를 관리. 

  • 생성 상태: 메모리에 적재되어 PCB를 할당받은 상태. 바로 실행 상태가 되는 것이 아니라 준비 상태가 되어 CPU 할당을 기다림
  • 준비 상태: CPU의 할당을 기다리고 있는 상태
  • 실행 상태: CPU를 할당 받아 실행 중인 상태.
    • 타이머 인터럽트가 발생한다면(CPU가 할당된 시간을 모두 사용한다면) 다시 준비 상태가 됨
    • 입출력 장치의 조작이 있다면 대기 상태로 도입
  • 대기 상태: 입출력장치가 사용되는 경우 입출력을 요청한 프로세스가 입출력장치의 작업이 완료되기 기다리는 상태
    • 입출력 작업이 완료되면 해당 프로세스는 다시 준비 상태로 CPU 할당을 기다림
  • 종료 상태: 프로세스가 종료된 상태로 운영체제는 PCB와 사용한 메모리를 정리함

프로세스 생성

프로세스는 실행되고 있는 도중에 시스템 호출을 통해 다른 프로세스를 새롭게 생성할 수 있음. 이때 원래 프로세스를 부모 프로세스(parent process), 부모 프로세스에 의해 새롭게 생성된 프로세스를 자식 프로세스(child process)라고 함. 둘은 다른 프로세스이기 때문에 다른 PID를 지님. (자식 프로세스의 PCB에 부모의 PID인 PPID를 기록하기도 함). 자식 프로세스는 또 다른 자식 프로세스를 생성할 수도 있음.

 

 

프로세스 생성 기법

크게 fork와 exec로 나뉘어져 있음 (둘 다 시스템호출)

  • fork: 자기 자신의 복사본을 만드는 작업
    • 메모리의 내용이나 열린 파일의 목록 등 부모 프로세스의 자원을 복제함
    • 물론 별개의 프로세스이기 때문에 PID나 저장된 메모리 위치는 다름
  • exec: 자식 프로세스가 자신을 실행하기 위한 내용으로 자신을 바꿔나가는 과정
    • 코드 영역, 데이터 영역의 내용들이 새로운 프로세스에 적합한 내용들로 바뀜
    • 나머지 스택 힙 영역 등은 초기화