티스토리 뷰

시스템의 수행능력을 향상해준다는 멀티스레딩, 의미와 장단점. 그리고 멀티 프로세스와의 차이점도 공부해보자!

 

 

 

멀티 스레딩(Multi Threading)이란?

: 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생산과 관리의 중복성을 최소화하여 수행 능력을 향상하는 것.

여러 개의 스레드를 통해 하나의 프로그램에서 동시에 여러 개의 일을 수행할 수 있도록 해주는 것.

 

 

멀티 스레드를 사용하는 이유는?

: 프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어들게 되기 때문이다. 이 때문에 다양한 장점들이 존재한다.

 

멀티 스레딩의 장점

  • 스레드 간 통신 시에 별도의 자원을 사용하는 것이 아닌 공유된 공간인 전역 변수, heap메모리 영역을 통해 이뤄지므로 통신 방법이 간단하다.
  • 또한 스레드의 context switch는 캐시 메모리를 비울 필요가 없기 때문에 빠르다.

결론적으로

자원을 공유하고 생산과 관리를 효율적으로 하여 수행 능력을 향상하기 때문에 사용하는 것.

 

멀티 스레딩의 문제점

  • 자원을 공유하므로, 즉 datat, heap 영역에 데이터를 다른 스레드들이 동시 접근이 가능하므로 사용 중인 변수나 엉뚱한 값을 읽어 올 수 있음

이를 해결하기 위해 자원의 처리 순서를 컨트롤하고 공유 자원에 대한 접근을 컨트롤하기 위해 동기화하는 작업이 필요하다

 

  • 하지만 이 동기화로 인해 병목현상이 일어나서 성능에 문제를 일으키기도 한다.
  • 불필요한 부분까지 동기화를 할 경우 현재 스레드는 락(lock)을 획득한 스레드가 종료하기 전까지 대기해야 하기 때문. 그렇게 되면 전체 성능에 영향을 미치게 된다. 

*락에 대해서는 동기화 관련해서 다음에 더 자세히 알아보자

→ 이를 해결하기 위해 동기화 작업으로 인한 과도한 lock의 사용을 줄인다. 즉 공유자원이 아닌 곳에는 동기화 처리가 필요하지 않다는 뜻. 따라서 어떤 영역까지 동기화를 할지 잘 생각해야 한다.

 

$병목현상 이란?

더보기

$병목현상 이란?

: 어떤 시스템 내 데이터의 처리 속도가 지연됨에 따라 다음에 오는 데이터 처리가 지연되는 현상을 말한다. 즉, 일부분에 의한 전체의 성능에 하향 평준화가 된다.

→예를 들어 스레드 A가 공유자원인 1번 자원을 사용하기 위해 락을 걸었는데 스레드 B 스레드 C가 1번 자원을 사용해야 한다면 앞에 처리가 끝날 때까지 줄줄이 기다려야 한다.

멀티 프로세스 Vs 멀티 스레드 차이점

  • 멀티 프로세스는 독립적인 자원을 사용함으로써 많은 메모리 공간을 차지하고 문맥 교환이 느린 반면에 멀티 스레드는 공유 자원으로 메모리 공간을 줄이고 문맥 교환 역시 빠르다.
  • 멀티 프로세스는 독립적인 자원을 사용함으로써 다른 프로세스가 죽더라도 다른 프로세스에 영향을 끼치지 않는 반면에 멀티 스레드는 하나의 스레드가 오류로 종료되면 전체 스레드가 종료된다는 위험과 동기화의 문제가 있다.

→ 결론적으로 둘 다 동시에 여러 작업을 처리하지만 장단점이 있으므로 시스템의 특성에 맞게 선택하여 사용하기!

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함