[CS스터디] 프로세스 생명주기와 프로세스 메모리

김주희·2023년 8월 23일
0

내배캠 15주차 TIL

목록 보기
5/10

0. 프로그램과 프로세스

  • 프로그램이 저장 되어 있는 곳 : 보조 기억장치
  • 프로그램이 로딩 되는 곳 : 주 기억장치
  • 프로그램을 실행 해주는 주체 : 프로세스
  • 작업을 처리해주는 주체 : 쓰레드

1. 프로세스 생명주기

1-1. 프로세스 상태 (Status)

  • 시공유 시스템에서는 수행 상태에서 할당된 시간이 종료(만료, Expired)되면, 대기 상태를 거치지 않고 준비 상태로도 변할 수 있음. 중단과 같이 동작.

신규(New)

  • 프로세스가 방금 메인메모리에 올라온 상태이기 때문에 실행하는 것이 불가능. 수용 동작을 거쳐야 준비단계로 넘어감.

준비(Ready)

  • 변수 초기화 등 기초 준비 작업이 모두 끝나고 실행을 할 수 있는 상태.
  • 스케쥴러를 통해 발송(dispatch)되어야 수행 상태가 됨.
  • 준비 상태가 되는 케이스
    : 신규 프로세스가 수용되었을 때
    : 대기 프로세스의 입출력/이벤트가 완료되었을 때
    : 수행 프로세스가 중단되었을 때

수행(Running)

  • CPU가 실제로 프로세스를 수행하고 있는 상태.
  • 선점 스케쥴링에 의해 중단 -> 준비 상태
    (ex. CPU의 과부하)
  • 입출력/이벤트가 필요 -> 대기 상태
    (ex. I/O나 evnet wait 존재)
  • 수행 완료 -> 종류 상태
  • 수행 상태가 되는 케이스 : 준비 프로세스가 스케쥴러를 통해 발송되었을 때

대기(Waiting)

  • 프로세스 도중에 I/O 작업이 필요하여 I/O 작업을 수행하는 상태.
  • CPU는 I/O를 기다리며 다른 프로세스를 수행함.
  • 대기 상태가 끝나면 -> 준비 상태 -> 수행 상태

종료(Terminated)

  • 최종적으로 프로세스가 종료된 상태.
  • 사용하던 메모리 영역 해제됨.

1-2. 대기 큐(Waiting Queue)

1) Job Queue : HDD에 있던 프로그램들이 메모리에 올라올 때, 만약 메인 메모리가 가득 찼거나 CPU가 다른 작업을 수행 중이라면 메모리에 올라오기 전에 어느 정도 기다려야 함. 이 때, 기다리는 곳을 Job Queue라고 함.

2) Ready Queue
: 다른 프로그램이 수행 중이면 기다렸다가 해당 프로그램이 I/O를 시작하거나 시공유시스템의 경우 기존 프로세스가 시간초과 되면 실행.
: 이렇게 이미 메모리에 올라온 프로세스들이 실행을 위해 대기하는 곳.

3) Device Queue
: I/O 장치(ex. 프린터, 키보드, 마우스 등)을 이용하려면 기존 I/O 작업이 끝나기를 기다렸다가 밀려 있던 모든 작업이 끝나면 I/O 장치를 사용할 수 있음.
: 프린터는 프런터큐, 마우스는 마우스큐, 키보드는 키보드큐와 같이 각자의 대기 큐를 가지고 있는데, 이러한 I/O 장치들의 큐들을 통들어 부름.

1-3. 스케줄링

1) Job Scheduler

  • Job Queue의 프로그램들을 어떤 순서로 메모리에 올릴 것인지 결정.
  • 이러한 과정은 프로그램이 새로 시작되거나 메인 메모리가 가득찬 경우 발생하므로 자주 일어나지 않음.
    = Long Term Scheduler

2) CPU Scheduler

  • Ready Queue의 프로세스들을 어떤 순서로 서비스 할 것인지에 대한 스케줄러.
  • 모든 스케줄링 중 CPU 스케줄링이 가장 중요.
  • 시공유 시스템의 경우 1초에도 수십번 많게는 수백번도 일어나기 때문에 Short Term Scheduler라고 함.

3) Device Scheduler

  • Device Queue의 프로세스들을 어떤 순서로 I/O 장치를 이용하게 할 것인지에 대한 스케줄러.
  • 보조 기억 장치 스케줄러를 통틀어 가리키는 말.

1-4. 주-보조 교환(Swapping)

2. 프로세스 메모리

profile
꾸준히 하자

0개의 댓글