개발자 면접 공부/운영체제,CS

쓰레드 풀링, 메모리 풀링

chogyujin 2022. 8. 23. 21:13
728x90

오늘은 쓰레드 풀링에 대해 공부하도록 하겠습니다.


쓰레드 풀링

풀이란 연못이라는 뜻 입니다. 저희가 익히 알고있는 게임 스타크래프트 에서도 스포닝 풀 이라는 건물이 있습니다.
이것을 번역하면 산란못으로 풀 = 못 -> 연못 이라는 뜻이 있고 실제로 건물 자체가 초록색 연못이 가운데 있습니다.

 

그럼 왜 쓰레드 풀링을 사용하는지 이유를 알아봅시다.


쓰레드 풀에 대한 이해

  • 쓰레드의 생성과 소멸은 시스템에 많은 부담
  • 때문에 빈번한 쓰레드의 생성과 소멸은 피해야 성능이 향상됨
  • 따라서 쓰레드 풀을 유지하는 것은 성능 향상에 도움이 됨
  • 쓰레드의 재활용 기법 ( 할당된 일을 마친 쓰레드를 소멸시키지 않음, 쓰레드 풀이라는 큐에 저장시켜놓고 다시 꺼내 쓰는 개념)
  • 즉, 쓰레드의 생성과 소멸에 필요한 비용을 지불하지 않겠다는 기법

출처 : https://popcorntree.tistory.com/67

  • 쓰레드 풀은 처리해야 할 일(work)이 등록되기 전에 생성되는데, 풀이 생성됨과 동시에 쓰레드들도 생성되어 풀에서 대기 (미리 쓰레드를 할당)
  • 쓰레드 풀에 존재하는 쓰레드 하나를 임의로 할당해서 일의 처리를 도모
  • 만약 풀에 존재하는 쓰레드 수보다 처리해야 할 일의 수가 많다면, 일이 순서대로 처리되도록 디자인할 수 있고, 빠른 일 처리를 위해 추가적인 쓰레드가 생성되도록 풀을 디자인함

메모리 풀링

메모리 풀링 또한 쓰레드 풀링과 비슷하게 미리 메모리의 공간을 할당하여 그 공간에 자원을 공급하고 해제시 자원을 회수하는 방식입니다.

쓰레드 풀링과 비슷하게 미리 할당을 한 후 자원을 공급하고 해제하면 그 공간을 다시 회수합니다.
메모리 또한, 할당과 해제가 잦게 일어나면 매우 큰 성능 저하를 일으킬수 있고 쓰레드 풀링과 다르게 메모리 단편화가 생길수 있기 때문입니다.

하지만 이러한 메모리 풀링은 메모리 누수라는 치명적인 단점이 생길수 있습니다. 할당된 메모리 공간을 적절하게 사용하지 못하면 안되니깐요

단편화, 단편화 해결 방법은 아래 링크를 통해 공부하세요

https://chogyujin-study.tistory.com/39

 

CS,OS 단편화

오늘은 단편화에 대해 공부하겠습니다. 메모리 단편화 메모리에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모

chogyujin-study.tistory.com