OS 프로세스의 시작부터 종료까지 상태가 어떻게 변하는지 설명드립니다!!
프로그래밍 언어 레벨에서 정의된 상태는 또 다를 수 있습니다!
그래서 자바 스레드의 상태와의 차이도 비교해 드립니다!
그렇다면,, 상태를 왜 알아야 할까요? 서버가 불능에 빠지면 분석할 때 필요하기 때문이죠!
상태 분석을 위한 java의 thread dump에 대해서도 간략하게 소개합니다~!
OS 프로세스의 상태 변화와 스레드 상태 변화는 비슷함
프로그램 언어 마다 스레드 상태 이름이 살짝 다름
자바 스레드 상태 변화
1. NEW
자바 스레드가 아직 시작하지 않은 상태
2. RUNNABLE
스레드 실행중인 상태
+ 다른 리소스를 기다리는 상태도 포함
(운영체제의 run보다 포괄적인 개념)
3. BLOCKED
모니터 락을 얻기 위해 기다리는 상태
즉, critical section 으로 들어가려고 모니터 락을 얻기 위해 기다리는 상태
4. WAITING
다른 스레드를 기다리는 상태
5. TIMED_WAITING
제한 시간을 두고 다른 스레드를 기다리는 상태
언제 waiting 되나?
Object.wait with timeout
Thread.join with timeout
등...
timeout 시간을 설정할 수 있음
6. TERMINATED
실행을 마치고 종료된 상태
'운영체제' 카테고리의 다른 글
인터럽트와 시스템 콜 그리고 유저 모드, 커널모드 (0) | 2023.10.27 |
---|---|
4. 동기화, 경쟁조건, 임계 영역 (1) | 2023.06.19 |
3. CPU bound, IO bound (0) | 2023.06.19 |
2. 컨텍스트 스위칭 뽀개기 (0) | 2023.06.19 |
프로세스, 스레드, 멀티태스킹, 멀티 스레딩, 멀티 프로세싱, 멀티 프로그래밍 정리 (1) | 2023.06.19 |