Developer/Jsp
스레드(Thread)
Jeremy.Park
2014. 6. 24. 09:47
Thread
-> 독립적으로 실행하는 명령어 블럭
OS에서 Cpu 사용권 받음
실행중인 Application (메모리에 명령어가 로딩된 상태)
↓
[Process] <-
[CPU] -> [Process] <- [ HDD, MS Word, HWP, PPT ] <- application
[Process] <-
[ O S ]
*CPU 배정 방법
(CPU scheduling)
1). Round-Robin 방식
-> 일정시간에 따라 순환
-> Windows OS
2) Priorify 방식
(+ Ag.hg 기법)
-> Unix 계열
* 동시 실행
-> 전체 명령어에서 일부 작업은 분리하여 독립적으로 실행
(해결책)
1) 예전 방식 => 복제(프로세스 복제)
[ChatClient]-[메모리] (heap,stack...)
-> [ChatClient]-[메모리]
fork() : 메모리 복제 => 자원 낭비가 심하다.
2) 현재 방식 => 코드 분리
[ChatClient] ---> (일부코드분리)
↓ ↓
[메모리]<-------------공유 (자원 낭비 줄임)
(heap, stack...)
* 스레드 생명 주기
timeout, notify(), notifyAll()
start() <----- sleep()
스레드 ------------> Runnable(스레드실행) ------------> Not Runnable
-> cpu를 받을 수 있는 상태 -> cup를 받지 않는 상태
(racing)
↓
X ↓ run() 리턴
↑ ↓
"Thread Dead"
OS
-> 다른 (프로세스)스레드 에게 CPU를 넘기기 전에 현재 프로세스의 실행 상태 보관
-> 프로세스 실행전에 -> 이전 상태 읽기
* Context Switching