LifeCycle 멀티 프로세싱, 멀티 스레딩

개발하는개발자·2022년 9월 7일
0

Java Thread

목록 보기
3/10

멀티 프로세싱

LifeCycle

New

  • 2차 메모리(디스크와 같은 장기기억 저장소)에 있는 프로그램이 OS에 의해 선택되어 프로세스가 되는 단계입니다.
Ready
  • 프로세스는 생성된 후 메인 메모리로 올라가서 ready 상태로 들어갑니다.(queue에서 대기)
  • 이 단계에서 프로세스는 실행할 준비를 하고 dispatcher에 의해 CPU에 할당되기를 대기합니다.
Run
  • 프로세스가 CPU 자원을 할당받아 실행되는 상태입니다.
Blocked or wait
  • 프로세스가 I/O 작업(네트워크나 파일, 데이터베이스 등 외부 커널 자원 요청, 사용자 입력 대기 등)을 수행중인 경우
  • critical section(임계구역)에서 lock을 획득하기를 기다리는 경우
  • 대기 작업이 끝나는 경우 Reday 상태로 돌아갑니다.
Terminated or completed
  • PCB(Process Controll Block)의 삭제와 함께 프로세스가 종료됩니다
Suspend ready
  • ready 상태에서 메인메모리가 부족해져 2차 메모리로 이동된 상태
Suspend wait or suspend blocked
  • Blocked 상태에서 메인메모리가 부족해져 2차 메모리로 이동된 상태
  • memory image를 2차 메모리에 보관
  • Blocked에서 수행하던 작업이 끝난 이벤트가 발생하면 suspend ready 상태로 변경

프로세스 스케줄러

Long term – performance

  • 얼마나 많은 프로세스가 ready 상태에 있을지를 결정합니다.
  • 스케쥴러 동작 주기가 길기 때문에 long term scheduler라고 합니다.
Short term - Context switching time
  • 어떤 프로세스를 다음에 실행할지 결정하고 디스패처를 호출합니다.
  • 디스패처는 ready 상태에 있는 프로세스를 CPU에 할당하여 실행될 수 있도록 합니다. 동시에 기존에 해당 CPU를 점유하고 있던 프로세스는 ready(timeout) or blocked(event wait) or release 상태로 변경됩니다.
  • 이 과정을 context switching이라 합니다.
Medium term – Swapping time
  • 메인메모리와 2차 메모리 사이에서 프로세스를 swap 하는 결정을 합니다.

멀티 스레딩

LifeCycle

New

  • 쓰레드가 생성되고 아직 Start()가 호출되지 않은 상태
RUNNABLE
  • 실행 중 또는 실행 가능한 상태
BLOCKED
  • 동기화블럭에 의해서 일시정지된 상태(lock이 풀릴 때까지 기다리는 상태)
WAITING, TIMED_WAITING
  • 쓰레드의 작업이 종료되지는 않았지만 실행가능하지 않은(unrunnable) 일시정지 상태. TIMED_WAITING은 일시정지시간이 지정된 경우를 의미
TERMINATED
  • 쓰레드의 작업이 종료된 상태
profile
하루에 하나씩 배우자

0개의 댓글