멀티스레드의 T 메모리 모델은 스택 영역을 스레드 개수만큼 분할해서 쓰는 것이다.
그림으로 나타내면 이렇다.
멀티프로세스는 다수의 데이터 저장영역, 즉 다수의 T메모리를 갖는 구조다.
그림으로 나타내면 이렇다.
멀티프로세스는 각 프로세스마다 각자의 T메모리가 있고, 각자 고유의 공간이므로 서로 참조할 수 없다. ( 접근할 수 없다. ) 그로인해 그만큼 안전하지만, 메모리 사용량은 그만큼 크다.
멀티스레드는 하나의 T메모리 안에서 STACK영역만 분할한 것이기 때문에 하나의 스레드에서 다른 스레드의 스택 영역에는 접근할 수 없지만 STATIC영역과 HEEP영역은 공유해서 사용하는 구조다. 따라서 멀티프로레스 대비 메모리를 적게 사용할 수 있는 구조다.
서블릿은 요청당 프로레스가 아닌 요청당 스레드이다. 어떤면에서 더 효율적일 수 있을지 알 수 있다.
전역변수를 멀티스레드 상황에서 보게된다면, 왜 전역변수를 사용하는 것을 지양하는지 알 수 있게된다. 읽기 전용의 전역변수라면 문제가 적을 수 있지만, 쓰기 가능한 전역변수를 사용하게 되면 스레드의 안정성이 깨진다고 표현한다.
락을 거는 방법으로 해결은 가능하나 그 경우 멀티스레드의 장점을 버린것과 같다고 한다. 이는 좀 더 깊은 내용으로 다른 서적을 공부하게된다면 다뤄보겠다.
'스프링' 카테고리의 다른 글
SPRING(6) - 객체 지향의 4대특성 2 (0) | 2021.07.28 |
---|---|
SPRING(5) - 객체지향의 4대특성 1 (0) | 2021.07.28 |
SPRING(3) - 변수의 메모리상 위치 (0) | 2021.07.27 |
SPRING(2) - 메모리영역의 구분 (0) | 2021.07.27 |
SPRING (1) - SPRING의 기본 개념 (0) | 2021.07.27 |