멀티쓰레딩

음.. 하나 더 갑니다. ㅇㅅㅇ

멀티쓰레딩은 하나의 작업 또는 프로세서가 보다 빠른 시간에 문맥 교환 없이 교체되어 동작할 수 있는 여러 개의 쓰레드로 구성하여 작업을 수행하는 방식을 말합니다. (좀 헷갈리죠?) 쓰레드란 하나의 프로세스를 더욱 세분화하는 경우에 쓰이는 단위로써, 일반적으로 하나의 프로세스가 하나의 쓰레드로 되어 있으나 멀티쓰레딩에서는 하나의 프로세스 안에서 여러 개의 쓰레드로 나뉘어져서 동작합니다.

하나의 쓰레드로 구성된 프로그램은 선형적으로 일을 처리 하지만, 멀티쓰레딩된 프로그램은 어떠한 업무라도 병렬적으로 실행합니다. 멀티쓰레딩 프로그램을 작성하려면, 쓰레드 스케쥴링 같은 추가적인 사항을 고려해야 합니다. 스케쥴링은 쓰레드를 동기화 되게 유지 시켜주는 것이고 모든 것이 순서대로 일어나고 있는지 확인하는 작업입이다. 대게 운영체제에서 이루어 지게 됩니다. 아니면 쓰레드 컨트롤을 해주는 별도의 하드웨어 레벨 혹은 운영체제 레벨의 동작 장치가 있게 됩니다.

멀티쓰레딩을 실행하는 방법에는 non-blocking과 blocking 방법이 있습니다. Non-blocking 방법은 쓰레드의 모든 피연산자가 도착하기 전에는 쓰레드를 실행할 수 없습니다. 이 말은 쓰레드가 한번 실행되면 정지하지 않는다는 것과 같은 말입니다.

반면에 Blocking 방법은 쓰레드의 모든 피연산자가 도착하지 않아도 쓰레드를 실행할 수 있습니다. 도착하지 않은 피연산자가 필요하거나 또는 동기화가 필요할 때, 그 쓰레드를 정지(block)시키고 나중에 다시 실행합니다. 프로세서는 모든 필요한 상태 정보를 저장하고, 실행을 위해 다른 준비된 쓰레드를 로드하게 됩니다. Blocking 쓰레드 방법은 block된 쓰레드의 저장을 위해 추가적인 하드웨어 장치를 요구하는 쓰레드 생성에서 더 관대한 접근방법을 제공합니다.

멀티쓰레딩 실행시 장점은 다음과 같습니다.

  1. 쓰레드가 동적으로 스케쥴링된다.
  2. 쓰레드 할당과 해제를 통해 메모리를 효율적으로 사용한다. 쓰레드는 기본적으로 프로세스가 할당받은 메모리를 이용하여 처리하기 때문에 추가 메모리 구성이 필요 없습니다.
  3. 병렬 수행의 정도가 쓰레드의 크기에 의해 정적으로 제어된다. 병렬 처리에 필요한 수 = 쓰레드 수가 됩니다.

반면, 멀티쓰레딩 실행의 단점도 존재합니다.

  1. 쓰레드를 생성하면서 병렬 수행이 조금 희생된다. 이것은 병렬 처리가 필요하지 않은 과정을 통해서 쓰레드를 생성하기 때문에 생기는 것으로 쓰레드의 생성 및 처리하는 동안의 프로세스에서는 병렬 작업이 진행되지 않는 것을 말합니다.
  2. 쓰레드 관리 하드웨어가 필요하다. 쓰레드 컨트롤은 OS와 처리기(하드웨어) 간의 처리 문제기 때문에 관리를 해줄 하드웨어가 필요하게 됩니다.

 

쓰레드에 관한 더 궁금한 것은 프로그램 언어를 배우다 보면 쓰레드를 다루는 법에 대해서 더 자세하게 배울 겁니다. (특히 자바나 C++이나..) 그만큼 많이 쓰이는 것이기 때문에 잘 알아두면 좋습니다.

중요하면서도 기본적인 내용들을 좀 써나가겠습니다.

IT 분야를 공부하는데 필요한 아주 기본적인 것들이나…

어느 정도 알아두면 좋을 거 같은 내용들을 하나하나 기술해 나갈께요.

 

연재중인 것들도 있지만….

워낙 연구실 생활 및 다른 개발거리가 너무 많아서 쉽게 못하겠는데..

이런 것들이라면 하루에 하나 정도 틈틈히 쓸 수 있을지도요..;ㅁ;

데이터 마이닝

음…

그냥 하루에 하나씩 정리해 보려고 합니다. ㅇㅅㅇ

순서는 내맘! (…)

우선 데이터 마이닝부터..

데이터베이스에서부터 과거에는 알지 못했지만 데이터 속에서 유도된 새로운 데이터 모델을 발견하여 미래에 실행 가능한 정보를 추출해 내고 그 정보를 통해 의사 결정에 이용하는 과정을 말합니다. 즉, 데이터에 숨겨진 패턴과 관계를 찾아내어 새로운 정보를 발견해 내는 것이죠. 정보를 발견한다는 것이란 데이터에 고급 통계 분석과 모델링 기법을 적용하여 유용한 패턴과 관계를 찾아내는 과정을 말합니다. 데이터베이스를 이용한 마케팅의 핵심이라고 할 수 있죠. (그래서 인문학부에서도 데이터베이스를 기초적인 것이나마 배우는 겁니다)

예를 들면, 백화점에서 물건을 진열할 때 고객의 움직임을 줄이는 데 활용하는 것이나 고객의 구매 패턴을 예측해 소비자가 살 무건의 쿠폰을 발행해 준다던가 해서 판매 유도를 하는 데 사용하는 것도 이런 정보를 분석함으로써 가능해 지는 것입니다. 따라서 데이터마이닝의 필수 요소는 신뢰도가 높은 충분한 자료가 필수적인 요소가 되겠습니다. 신뢰도가 높은 자료가 정확한 예견을 할 수 있도록 해주기 때문이죠. 단, 너무 많은 자료는 오히려 데이터마이닝의 예견 능력을 떨어뜨릴 수 있으므로 데이터가 그냥 많다고 해서 좋은 것은 아닙니다. 최적의 결과를 산출할 수 있는 의미 있는 자료의 확보가 우선적으로 실행되어야 하죠.

이런 데이터마이닝의 목적은 사용자에게 유용하고 새로운 지식을 생성하는 것입니다. 그리고 현실세계에 적합한 모형의 수립이 전제되어야 하죠. 위에서 들었던 백화점을 예로 본다면, 모형 수립 과정에서는 기업의 거래처리 자료, 고객 이력 및 신상 자료, 신용정보기관에 의해 제공되는 고객 신용정보와 같은 외부 자료 등 다양한 자료들이 사용됩니다. (백화점마다 신용도를 확인하여 고객 등급을 지정해서 서비스 해주고 하는 곳도 있습니다) 수집된 모형은 데이터에 내제된 패턴이나 관계를 설명하기 위해 다음의 2가지를 사용합니다.

  • 묘사: 데이터베이스에 내제된 패턴이나 관계를 묘사한 것만으로도 의사결정에 필요한 정보를 제공할 수 있다. 군집화, 연관규칙 및 순차패턴 탐사 등이 이용됨.
  • 예측: 발견된 패턴들은 예측에 이용될 수 있다. 회기 분석이나 시계열 분석이 이용됨.

데이터마이닝 프로세스의 6단계 활용법은 다음과 같이 볼 수 있습니다.

  1. 문제 정의
  2. 데이터 선별 및 통계
  3. 변환
  4. 데이터마이닝
  5. 해석 및 평가
  6. 통합

데이터 마이닝 기술은 데이터 웨어하우스, OLAP (OnLine Analytic Processing), 통계학, 인공지능, 데이터 Visualization, 연관성 분석, 웹 서비스 등에서도 많이 이용되고 있으므로 관련 분야에 관심이 있다면 알아보는 것이 좋을 것입니다.