Notice
Recent Posts
Recent Comments
Link
매일 매일 미라클 코딩
[JAVA] 멀티 쓰레드 VS 멀티 프로세스 본문
프로세스
- 실행중인 프로그램. 운영체제로부터 자원을 할당받는 작업의 단위
- 자원과 이를 실행하는 쓰레드로 구성
쓰레드
- 프로세스 내에서 실제 작업을 수행하는 단위
- 모든 프로세스는 하나 이상의 쓰레드를 가진다.
멀티 쓰레드
- 하나의 프로세스(프로그램) 에 하나 이상의 쓰레드를 생성하여 실행
멀티 프로세스
- 두개 이상의 프로세서(CPU)가 하나 이상의 작업(Task)을 동시에 처리하는 것 (병렬처리)
<멀티 쓰레드 VS 멀티 프로세스>
멀티 Thread | 멀티 Process | |
T메모리 | 스레드 개수만큼 분할 | 다수의 T메모리 |
메모리 공유 | 힙과 스태틱 영역을 공유, 스택은 분할 |
다른 프로세스의 영역 침범 X |
장점 | 공유하는 영역이 있기 때문에 메모리를 적게 사용 | 안전한 메모리 구조. 다른 프로세스의 영향을 받지 않음 |
단점 | 동기화 문제, 하나의 스레드 문제로 전체 스레드가 종료될 수 있음 | 멀티 스레드보다 많은 메모리공간과 CPU 시간을 차지 |
Context Switching
- CPU는 한번에 하나의 프로세스만 실행 가능하다.
- Context Switching 은 CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정
- 동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업
(바람둥이라 생각하니 이해가 쉬웠음)
동기화
자원은 한정적인데 여러 스레드가 동시접근해서 생기는 문제
→ 한번에 한 스레드만 공유자원에 접근할 수 있도록 만들어 해결
DeadLock(교착상태)
"두개 이상의 프로세스(혹은 쓰레드)가 서로 끝나기를 기다리는 상태"
자원(변수 등)을 공유해서 쓸 때 발생. 결국 무한정 대기상태가 된다.
데드락 조건: 상호배제, 점유대기, 비선점, 순환대기
참고
멀티 프로세스(Multi Process)와 멀티 스레드(Multi Thread)
멀티 프로세스와 멀티 스레드의 차이
wooody92.github.io
'BackEnd > JAVA' 카테고리의 다른 글
[JAVA] 오버로딩 & 오버라이딩 (0) | 2021.06.14 |
---|---|
[JAVA] 자바의 메모리 구조 - 스태틱 / 스택 / 힙 (0) | 2021.06.13 |
[자료구조] 해쉬(Hash)구조 - Set 과 Map (0) | 2021.03.26 |
오버라이딩 VS 오버로딩, 그리고 super. / this. (0) | 2020.12.07 |
[JAVA] 상속과 생성자 (feat. super()) (0) | 2020.12.02 |