[OS] OS, Java에서 프로세스의 상태 (State of Process in OS and Java)

2023. 11. 23. 14:00· Computer Science/Operating System
목차
  1. 💋 운영체제에서 프로세스의 상태
  2. 💋 자바에서 프로세스의 상태
  3. 💋 Java Thread Dump
  4. ✔️ 개념
  5. ✔️ 필요성
  6. 💋 참고자료
반응형
반응형

 
 
 

💋 운영체제에서 프로세스의 상태

프로세스의 상태는 주로 다음과 같은 다섯 가지로 분류됩니다: new, ready, running, waiting, terminated.
 

이미지 출처: https://www.baeldung.com/cs/process-lifecycle

 
 

  1. New (생성)
    • 프로세스가 생성되었지만 아직 실행되지 않은 상태
    • 프로세스가 초기화되고 자원이 할당되기를 대기
    • Long term scheduler가 허락해주어야 하는 상황은 흔치 않으므로, 보통 곧바로 Ready 상태로 넘어간다.
  2. Ready (준비)
    • CPU에서 프로세스가 실행되기를 기다리는 상태
    • 스케줄러에 의해 실행되면 Running로 전환
  3. Running (실행)
    • CPU가 할당된 상태로 현재 실행 중인 상태
    • 멀티 태스킹 하다가 quantum이 지나거나, I/O 작업이 시작되면 Ready로 전환
  4. Waiting (대기)
    • I/O 작업 또는 critical section에 들어가기 위해서 기다리는 상태
    • I/O 작업이 종료되거나, critical section에 들어갈 수 있게 되면 Ready 상태로 변경(곧바로 Running X)되어 CPU에 할당될 준비를 한다.
  5. Terminated (종료)
    • 프로세스의 실행이 완료되었거나 강제로 종료된 상태
    • 프로세스는 시스템에서 삭제되며 사용한 자원들을 반환

 
디테일은 운영체제별로 조금 다를 수 있습니다.
예를 들어, 리눅스는 아래와 같은 상태를 가집니다.
 

https://www.baeldung.com/cs/process-lifecycle

 
리눅스에서 현재 실행중인 프로세스들의 상태를 곧바로 확인해볼 수 있습니다.

STAT 열의 첫번째 글자랑 위 사진에서의 글자들을 매칭하면 됩니다!

 

ps a
	PID TTY	  STAT   TIME COMMAND
   2234 tty2	 Ssl+   0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
   2237 tty2	 Rl+	0:07 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
   2287 tty2	 Sl+	0:00 /usr/libexec/gnome-session-binary --systemd --systemd --session=ubuntu
   2982 pts/0	Ss	 0:00 bash
   3467 pts/0	R+	 0:00 ps a

 
 

💋 자바에서 프로세스의 상태

 

  1. NEW
    • 스레드가 생성되었지만 아직 시작되지 않은 상태
  2. RUNNABLE
    • CPU상에서 실행중인 상태 포함
    • I/O 작업의 결과를 기다리는 등 다른 리소스를 기다리는 상태 포함 (포괄적임)
    • 실행중인 상태
    • start() 메서드를 호출하여 스레드를 시작하면, 스레드는 RUNNABLE 상태로 전환됩니다.
  3. BLOCKED
    • 모니터 락을 얻기 위해(= critical section에 들어가려고) 기다리는 상태
    • 다른 스레드가 해당 블록을 사용 중이기 때문에 현재 스레드는 기다려야 합니다.
  4. WAITING
    • 다른 스레드를 기다리는 상태
    • Object.wait() (모니터의 wait)또는 Thread.join()과 같은 메서드를 호출하면 스레드가 WAITING 상태로 전환될 수 있습니다.
  5. TIMED_WAITING
    • WAITING 상태와 유사하지만 제한 시간을 두고 다른 스레드를 기다리는 상태
    • Thread.sleep()이나 Object.wait(timeout)과 같은 메서드를 호출할 때 발생합니다.
  6. TERMINATED
    • 실행을 마치고 종료된 상태
    • run() 메서드가 정상적으로 종료되거나, 예외가 발생하여 스레드가 종료되면 TERMINATED 상태가 됩니다.

 
 

💋 Java Thread Dump

✔️ 개념

실행 중인 자바 프로세스의 현재 상태를 담은 스냅샷
 

✔️ 필요성

  1. 데드락(Deadlock) 분석
    • 스레드 덤프를 통해 데드락 상태에 있는 스레드들을 확인하고 분석할 수 있습니다.
  2. 성능 문제 해결
    • 스레드 덤프를 이용하여 어떤 스레드가 어떤 작업을 수행 중인지, 얼마나 많은 스레드가 동시에 실행 중인지 등을 파악하여 성능 문제를 해결할 수 있습니다.
  3. 예외 분석
    • 어떤 스레드에서 예외가 발생했는지, 스레드의 상태와 호출 스택을 통해 예외를 추적할 수 있습니다.

 
스레드 덤프를 생성하면, 그 결과는 스레드의 상태, 호출 스택 정보 등이 포함된 텍스트 파일로 출력됩니다. 이를 분석하여 문제를 진단하고 해결할 수 있습니다.
 

💋 참고자료

  • https://www.baeldung.com/linux/process-states
  • https://www.youtube.com/watch?v=_dzRW48NB9M&list=PLcXyemr8ZeoQOtSUjwaer0VMJSMfa-9G-&index=8

 
 
 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 
 

반응형

'Computer Science > Operating System' 카테고리의 다른 글

[OS] System call, System interrupt을 통해 유저 모드에서 커널 모드를 실행할 수 있다!  (0) 2023.11.25
[OS] CPU Scheduler: 운영체제가 CPU에게 일 시키는 방법(Dispatcher, 비선점 VS 선점 스케줄링, 스케줄링 알고리즘)  (0) 2023.11.24
[OS] 데드락(Deadlock)은 언제 발생하고, OS, Java에서 어떻게 해결할까?  (1) 2023.11.22
[OS] 동기화 메커니즘(Synchronization Mechanisms)(2): 모니터(Monitor)  (0) 2023.11.21
[OS] 동기화 메커니즘(Synchronization Mechanisms)(1): 스핀락(Spinlock), 뮤텍스(Mutex), 세마포어(Semaphore)  (0) 2023.11.20
  1. 💋 운영체제에서 프로세스의 상태
  2. 💋 자바에서 프로세스의 상태
  3. 💋 Java Thread Dump
  4. ✔️ 개념
  5. ✔️ 필요성
  6. 💋 참고자료
'Computer Science/Operating System' 카테고리의 다른 글
  • [OS] System call, System interrupt을 통해 유저 모드에서 커널 모드를 실행할 수 있다!
  • [OS] CPU Scheduler: 운영체제가 CPU에게 일 시키는 방법(Dispatcher, 비선점 VS 선점 스케줄링, 스케줄링 알고리즘)
  • [OS] 데드락(Deadlock)은 언제 발생하고, OS, Java에서 어떻게 해결할까?
  • [OS] 동기화 메커니즘(Synchronization Mechanisms)(2): 모니터(Monitor)
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
      • RAG 기반 희귀품종 무화과 챗봇
    • 우아한테크코스5기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • Graphics
      • ETC
    • AI
      • Deep Learning
      • LLM
      • VLA
    • JAVA
    • Spring
      • JPA
      • MVC
    • WEB
      • HTTP
      • Application
    • C, C++
    • MySQL
    • PostgreSQL
    • Architecture
    • DevOps
      • AWS
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • 회고+후기
    • TIL
      • 2023
      • 2024
    • Weekly Momentum
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • 상속과조합
  • 예외
  • 우테코5기
  • 람다
  • Stream
  • 상속
  • lamda
  • 레벨로그
  • 람다와스트림
  • 우아한테크코스5기
  • 스트림
  • 함수형프로그래밍
  • 우아한테크코스
  • TDD
  • 조합
  • 우테코
  • OOP
  • Java
  • Composition
  • 컴포지션
hELLO · Designed By 정상우.v4.2.0
깃짱
[OS] OS, Java에서 프로세스의 상태 (State of Process in OS and Java)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.