멀티 프로세싱
LifeCycle
![](https://velog.velcdn.com/images/kangyun9957/post/4edcb21e-3fd3-4be8-b1e7-90c563b05608/image.png)
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
![](https://velog.velcdn.com/images/kangyun9957/post/419877b8-1e0d-401d-97fa-2fcff24b668a/image.png)
New
- 쓰레드가 생성되고 아직 Start()가 호출되지 않은 상태
RUNNABLE
BLOCKED
- 동기화블럭에 의해서 일시정지된 상태(lock이 풀릴 때까지 기다리는 상태)
WAITING, TIMED_WAITING
- 쓰레드의 작업이 종료되지는 않았지만 실행가능하지 않은(unrunnable) 일시정지 상태. TIMED_WAITING은 일시정지시간이 지정된 경우를 의미
TERMINATED