3-1.[os] 프로세스의 개요

프로세스:

  • 하나의 작업 단위
  • 마우스를 더블클릭하여 프로그램을 실행하면 그 프로그램은 프로세스가 된다.

프로그램: 저장장치에 저장되어있는 정적인 상태 - 레시피

프로세스: 실행을 위해 메모리에 올라온 동적인 상태 - 요리


일괄 작업 방식

  • 한번에 하나의 작업만 처리
  • 테이블이 하나 밖에 없음
  • 손님이 식사를 마치고 나간 후에야 다음 손님 받을 수 있음
  • 손님이 식사하는 동안 쉬는 시간이 생김
  • : 먼저 들어온 주문서가 먼저 처리됨

image.png

시분할 방식의 요리

  • 시간을 절약하기 위해 손님이 식사하는 동안 다른 손님의 요리를 만들어야한다
  • CPU가 시간을 쪼개어 여러 프로세스에 적당히 배분해 동시에 실행하는 것처럼 느껴진다
  • 주문 받은 코스 요리 중 단품 요리 하나를 만든 후 그 주문서를 주문 목록의 맨 뒤로 옮긴다. 다음 주문서를 가져다가 단품 요리를 만든다.

image.png

예상치 못한 상황처리

  • 새우튀김을 해야하는데 새우가 아직 손질되지 않았다면?
  • 대기 목록으로 보내고 다른 주문서를 가져와 요리한다
  • 손질이 끝났다면?
  • 바로 새우튀김을 시작하지 않고 주문 목록으로 이동해 순서를 기다리게 한다
  • 손님이 급한 볼일 보느라 음식을 천천히 달라고 한다면?
  • 언제 요청할지 모르므로 보류 목록으로 옮긴다
  • 손님이 요청하면 주문 목록으로 보낸다
  • 손님이 가버리면 주문서를 폐기한다

보류 목록: 언제 다시 시작될지 모르고 중간에 그만둘 수도 있는 곳

image.png


프로그램에서 프로세스로의 전환

  • 프로세스 = 태스크

프로세스 제어 블록(Process Control Block, PCB):

  • 작업 지시서

프로세스 구분자

  • 메모리에는 여러 개의 프로세스가 존재함 각 프로세스를 구분하는 구분자 필요

메모리 관련 정보

  • CPU는 실행하려는 프로세스가 메모리의 어디에 저장되어 있는지 알아야 작업 가능
  • 프로세스의 메모리 위치 정보
  • 메모리 보호를 위한 경계 레지스터와 한계 레지스터도 포함

각종 중간값

  • 중간값: 중간까지 작업한 위치
  • 다음에 작업해야할 코드의 위치가 담긴 레지스터인 프로그램 카운터가 저 장

프로세스= 프로그램+프로세스 제어 블록

프로그램= 프로세스- 프로세스 제어 블록


  • 하나의 프로세스를 실행하려면 프로세스 구분자, 메모리 관련 정보, 프로그램 카 운터와 각종 레지스터 같은 중간값을 관리해야 하며, 이러한 정보를 보관하는 데이터 구조가 프로세스 제어 블록

  • 프로세스가 종료되면 프로세스가 메모리에서 삭제되고 프로세스 제어블록도 폐기


프로세스의 4가지 상태

image.png

생성 상태(create status): 프로세스가 메모리에 올라와 실행 준비를 완료한 상태

  • 프로세스를 관리하는 데 필요한 프로세스 제어 블록이 생성된다.

준비 상태(eady status): 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태

  • CPU가 하나인 컴퓨터에서는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 자기 실행 순서가 될 때까지 준비 상태에서 기다림

실행 상태(running status, execute status): 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태

  • 실행 상태에 들어간 프로세스는 일정 시간 동안 CPU를 사용할 권리를 갖는다.
  • 만약 다 못끝내면 프로세스는 준비 상태로 돌아와 다음 차례를 기다림.
  • 준비 상태와 실행 상태를 왔다갔다 함

완료상태(terminate status) : 작업을 마치면 완료 상태

  • 프로세스 제어 블록이 사라진 상태

  • CPU 스케줄러: 여러 프로세스 중 다음에 실행할 프로세스를 선정함

    • 준비 상태의 맨 앞에서 기다리고 있는 프로세스 제어 블록을 CPU에 전달
  • 타임 슬라이스 / 타임 퀀텀: 프로세스에 배당된 작업 시간

  • 디스패치: 준비 -> 실행

  • 타임아웃: 실행 -> 준비


프로세스의 5가지 상태

image.png 생성상태 -> 준비상태 -> 실행상태 -> 대기상태 -> 완료상태

생성 상태: 프로그램이 메모리에 올라오고 운영체제로부터 프로세스 제어 블록을 할당 받은 상태 준비 상태: 실행 대기 중인 모든 프로세스가 자기 순서를 기다리는 상태

실행 상태: 프로세스가 CPU를 할당받아 실행되는 상태

대기 상태: 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태

완료 상태: 프로세스가 종료되는 상태

  • 활성 상태: 생성, 준비, 실행, 대기,완료
  • 휴식 상태: 프로세스가 작업을 일시적으로 쉬고 있는 상태
  • 보류 상태: 프로세스가 메모리에서 잠시 쫓겨난 상태
    • 메모리가 꽉 차서 일부 프로세스를 메모리 밖으로 내보낼 때
    • 프로그램에 오류가 있어서 실행을 미루어야할 때
    • 바이러스와 같이 악의적인 공격을 하는 프로세스라고 판단될 때
    • 매우 긴 주기로 반복되는 프로세스라 메모리 밖으로 쫓아내도 큰 문제가 없을 때
    • 입출력을기다리는프로세스의 입출력이 계속 지연될 때

image.png

스왑 영역:

  • 보류 상태에 들어간 프로세스는 메모리 밖으로 쫓겨나 스왑 영역에 보관
  • 메모리에서 쫓겨난 데이터가 임시로 보관되는 곳
  • 보류 상태는 스왑 영역에 있는 상태이고 휴식 상태는 프로세스가 메모리에 있으나 멈춘 상태

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!