프로그래밍/JAVA
프로세스와 쓰레드 2
Baesj
2021. 10. 2. 13:35
프로세스
운영체제가 프로그램에 메모리를 할당하여 실행하는 것이 프로세스
각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당 받는다.
쓰레드
프로세스 내에서 실행되는 흐름의 단위로 하나의 프로세스는 하나 이상의 쓰레드를 갖는다.
같은 프로세스의 쓰레드는 메모리를 공유한다.
쓰레드는 프로세스 내에서 각각 Stack만 할당받고, Code, Data, Heap 영역은 공유한다.
자바에서 쓰레드 스케줄링은 JVM에 의해 이루어진다.
멀티 프로세스 대신 멀티 쓰레드를 사용하는 이유?
자원 효율성 증대
- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리
- 시스템자원 소모가 줄어들게 됨
처리 비용 감소 및 응답 시간 단축
- 프로세스 간의 통신보다 쓰레드 간의 통신비용이 적음
- 프로세스 간의 전환 속도보다 쓰레드 간의 전환 속도가 빠름
주의점
- 동기화 문제
- 교착상태(데드락)