공부기록

프로세스 상태 본문

CS/OS

프로세스 상태

코타쿠 2021. 5. 3. 20:46
  • 2-상태 (two state) 프로세스 모델
    • 상태
      • 수행 (Running) / 비수행 (Not Running)
    • 상태의 전이
      • 운영체제가 새로운 프로세스를 생성할 때 PCB를 생성
      • 새로운 프로세스는 비수행 상태로 초기화어 메모리에 저장
      • 수행 중인 프로세스가 인터럽트 당해 비수행 상태로 전이
      • 다른 프로세스가 수행 상태로 전이
    • 프로세스 상태 추적을 위해 PCB가 사용된다.
      • 프로세스의 현재 상태, 메모리 내에서의 위치 등 여러가지 정보가 필요
      • 비수행중인 프로세스는 큐에 저장됨
  • 프로세스 생성과 종료
    • 프로세스 생성
      • 이유
        • new batch job
        • 대화형 로그온
        • 운영체제가 생성
        • 기존 프로세스에 의해 생성 (spawn)
          • 부모프로세스가 fork()하여 자식 프로세스를 생성 
    • 프로세스 종료
      • batch job
        • halt, 또는 명시적인 운영체제 서비스 호출을 수행함으로써 작업을 종료함
        • 중지 명령어는 인터럽트를 통해 운영체제에게 프로세스가 완료되었음을 알림
      • 대화식 응용
        • 사용자의 행동에 의해 프로세스의 수행 완료가 표시됨
      • 오류, 결함으로 인한 종료
      • 부모 프로세스에 의한 종료 

  • 5 상태 모델
    • 상태
      • 수행 : 현재 프로세스가 수행중
      • 준비 : 기회가 주어지면 수행될 준비가 되어있음
      • 블록 : IO 작업 완료 때 까지 수행될 수 없는 상태
      • 생성 : 지금 막 생성되었지만 수행가능한 프로세스 풀로 진입하지 못한 상태
      • 종료 : 프로세스 수행이 종료되거나 중단되어 수행가능한 프로세스 풀에서 방출된 상태
    • 전이의 조건
      • NULL → 생성 : 어떤 프로그램을 수행하기 위해 새로운 프로세스가 생성
      • 생성 → 준비 (승인) : OS가 새로운 프로세스를 생성상태에서 준비상태로 전이시킴
      • 준비 → 수행 : 스케줄러 또는 디스패처에 의해 OS는 준비상태의 프로세스중 하나를 수행 상태로 전이
      • 수행 → 종료 : 현재 수행중인 프로세스가 작업을 완료 또는 수행이 중단되면 OS는 프로세스를 종료시킴
      • 수행 → 준비 : 수행되고 있던 프로세스가 자신에게 허용된 최대 처리기 시간 (time quantum)을 모두 사용함
      • 수행 → 블록 : 프로세스가 자원을 요구했는데 기다려야 될 경우 블록상태로 전이 (IO 발생)
      • 블록 → 준비 : 블록 상태의 프로세스가 자신이 기다리고 있던 이벤트가 발생하면 준비 상태로 전이 (IO 종료)
      • 준비 → 종료 : 부모 프로세스가 자식 프로세스를 종료, 또는 부모 프로세스가 종료되면서 자식 프로세스가 종료
      • 블록 → 종료 : 준비 → 종료 전이와 유사
    • 준비 큐 & 블록 큐
      • 시스템이 한 프로세스를 받아들이면, 그 프로세스는 준비 큐로
      • 다른 프로세스를 수행할 시간이 되면 OS는 준비 큐에 있는 프로세스 하나를 선택
      • 수행 중인 프로세스는 준비 큐, 또는 블록 큐로 이동
      • 이벤트가 발생하면 블록 큐에서 이벤트를 기다리던 모든 프로세스들이 준비 큐로 옮겨짐

  • 보류된 프로세스 (Suspended Process)
    • 프로세스 보류의 이유
      • 스와핑 
      • OS에 의함
      • 대화식 사용자의 요청
      • 타이밍 : 주기적으로 실행되는 프로세스가 다음 주기때 까지 보류될 수 있다.
      • 부모 프로세스의 요청
    • 스와핑 (Swapping)
      • 프로세스의 일부 및 전체를 주기억장치에서 디스크로 옮기는 방법
      • Swap out : 프로세스의 전체 또는 일부 이미지를 주기억장치에서 디스크의 swap area로 이동시킴
      • Swap in : swap area의 프로세스 이미지를 주기억장치로 이동
      • 주기억장치의 프로세스들 중에서 준비 상태에 있는 프로세스가 없다면 OS는 블록된 프로세스를 중 하나를 디스크로 보내고 보류 큐에 넣음
      • 보류 큐에 있는 프로세스를 주기억장치로 들여오거나 새로운 프로세스 요청을 받아들인다.
      • 스와핑은 IO연산으로 일반적으로 성능을 향상시키나 문제를 악화시킬 여지가 있다.
    • 스와핑의 필요성
      • 가능한 많은 프로세스를 메모리에 올리기 위함이다. 
        • I/O연산이 프로세서 연산보다 느리기에 시스템에서 처리기의 대부분은 유휴상태이다. 
        • I/O연산을 하면서 I/O완료가 될 때 까지 프로세스는 블락된다.
        • 가상메모리 환경에서는 이 블락된 프로세스가 굳이 주기억장치에 있을 필요가 없다.
        • 블락된 프로세스를 가상메모리로 옮김으로써 더 많은 프로세스를 주기억장치에 올릴 수 있다.

 

'CS > OS' 카테고리의 다른 글

처리기 스케줄링의 유형  (0) 2021.05.04
스케줄링의 개념  (0) 2021.05.04
프로세스 제어  (0) 2021.05.03
프로세스의 표현  (0) 2021.05.03
프로세스의 개념  (0) 2021.05.03