본문 바로가기
스프링

SPRING(4) - 멀티스레드, 멀티프로세스

by 고유빙글 2021. 7. 28.

멀티스레드의 T 메모리 모델은 스택 영역을 스레드 개수만큼 분할해서 쓰는 것이다.

그림으로 나타내면 이렇다.

 

멀티프로세스는 다수의 데이터 저장영역, 즉 다수의 T메모리를 갖는 구조다.

 

그림으로 나타내면 이렇다.

 

 

 

멀티프로세스는 각 프로세스마다 각자의 T메모리가 있고, 각자 고유의 공간이므로 서로 참조할 수 없다. ( 접근할 수 없다. ) 그로인해 그만큼 안전하지만, 메모리 사용량은 그만큼 크다.

 

멀티스레드는 하나의 T메모리 안에서 STACK영역만 분할한 것이기 때문에 하나의 스레드에서 다른 스레드의 스택 영역에는 접근할 수 없지만 STATIC영역과 HEEP영역은 공유해서 사용하는 구조다. 따라서 멀티프로레스 대비 메모리를 적게 사용할 수 있는 구조다.

 

서블릿은 요청당 프로레스가 아닌 요청당 스레드이다. 어떤면에서 더 효율적일 수 있을지 알 수 있다.

전역변수를 멀티스레드 상황에서 보게된다면, 왜 전역변수를 사용하는 것을 지양하는지 알 수 있게된다. 읽기 전용의 전역변수라면 문제가 적을 수 있지만, 쓰기 가능한 전역변수를 사용하게 되면 스레드의 안정성이 깨진다고 표현한다.

락을 거는 방법으로 해결은 가능하나 그 경우 멀티스레드의  장점을 버린것과 같다고 한다. 이는 좀 더 깊은 내용으로 다른 서적을 공부하게된다면 다뤄보겠다.