반응형

멀티 쓰레드(Thread)란

  • 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시키는 것
  • 하나의 프로그램을 동시에 여러개의 일을 수행할수 있도록 해주는 것

멀티 쓰레드를 사용하는 이유

  • 프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우 메모리공간과 시스템 자원 소모가 줄어듬
  • 전역 변수의 공간 또는 동적으로 할당된 공간인 힙(Heap) 영역을 이용하여 데이터를 주고 받을 수 있음. 그렇기 때문에 프로세스간 통신 방법에 비해 쓰레드 간의 통신 방법이 간단하다.(프로세스 통신방법이란?)
  • 쓰레드의 문맥 교환은 프로세스의 문맥 교환과는 달리 캐시 메모리를 비울 필요가 없다.(프로세스 문맥 교환이란??) 따라서 시스템의 처리량이 향상 되고 자원 소모가 줄어들어 자연스럽게 프로그램의 응답시간이 단축된다.
  • 이러한 장점 때문에 여러 프로세스로 할 수있는 작업들을 하나의 프로세스에서 여러 쓰레드로 나눠 수행하는 것

멀티 프로세스와 멀티 쓰레드의 차이점

  • 멀티 프로세스 : [데이터 영역, 힙, 스택] 영역 모두를 비공유
  • 멀티 쓰레드 : [데이터 영역, 힙, 스택] 영역 중 스택 영역만 비공유

멀티 쓰레딩의 장점

  • 프로세스의 생성은 많은 시간과 자원을 소비한다. 이러한 단점을 최소화 시킨 일종의 (경량화된 프로세스=쓰레드)이다.(한줄 요약)
  • 멀티 쓰레드에서 쓰레드간 스택 영역만 비공유하고 데이터 영역과 힙 영역을 공유한다.
  • 쓰레드의 생성 및 컨텍스트 스위칭은 프로세스의 생성 및 컨텍스트 스위칭보다 빠르다.(?)
  • 멀티 쓰레드 컨텍스트 스위칭(Context Switching)시 데이터 영역과 힙을 올리고 내릴 필요가 없다.
  • 데이터 영역과 힙 영역을 통해 데이터 교환이 가능하다.
  • 쓰레드 사이에서의 데이터 교환에서는 특별한 기법이 필요없다.

멀티 쓰레딩의 문제점

  • 서로 다른 쓰레드가 데이터와 힙 역역을 공유하기 때문에 어떤 쓰레드가 다른 쓰레드에서 사용중인 변수나 자료 구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있다. 따라서 동기화 작업이 필요하다.
  • 동기화를 통해 작업 순서 처리를 컨트롤 하고 공유자원에 대한 접근을 컨트롤 하지만 이로인해 병목현상이 발생하여 성능이 저하될 가능성이 높다.
  • 그러므로 과도한 락(Lock)으로 인한 병목 현상을 줄어야한다. 공유 자원이 아닌 부분은 동기화 처리를 할 필요가 없다. 즉, 동기화 처리가 필요한 부분에만 synchronuized 키워드를 통해 동기화를 한다. 불필요한 부분까지 동기화를 할 경우 쓰레드는 락(Lock)을 획득한 쓰레드가 종료하기 전까지 대기해야한다.

 

반응형

'개인공부 > ICT상식' 카테고리의 다른 글

[ICT상식] API 종류  (0) 2020.12.09
[REST] HTTP/HTTPS 와 REST API 개념  (0) 2020.11.29
[ICT상식] 데이터 베이스 + 기타 IT 상식  (0) 2020.11.07
[ICT 상식 : 운영체제]  (0) 2020.11.06
[ICT 상식 : 디지털 상식]  (0) 2020.11.06

+ Recent posts