• 제목/요약/키워드: 스레드

검색결과 277건 처리시간 0.024초

OpenMP 프로그램을 위한 경합탐지 도구의 분석 (An Analysis of Race Detection Tool for OpenMP Programs)

  • 김영주;강문혜;전용기
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 가을 학술발표논문집 Vol.30 No.2 (1)
    • /
    • pp.478-480
    • /
    • 2003
  • 공유메모리 기반의 OpenMP 프로그램에서 발생하는 경합은 의도하지 않은 비결정적 수행 결과를 초래하므로 효과적으로 경합을 탐지하는 도구가 필요하다. 본 연구는 OpenMP 프로그램의 경합탐지를 위한 Intel 사의 Thread Checker를 내포병렬성의 여부와 접근사건들의 분포 형태를 기준으로 개발한 커널프로그램 집합을 이용하여 분석한 결과로서, 스레드들을 순서적으로 수행하면서 내포된 스레드를 부모 스레드와 동일한 스레드로 간주하고 적어도 하나의 읽기와 쓰기 접근사건들을 유지하면서 수행중에 경합을 탐지하는 도구임을 보인다. 이 도구는 접근사건의 발생 시에 이전 접근사건들과의 경합 여부를 검사한 후에 그 접근사건의 유지 여부를 결정하므로, 논리적 병행성 관계를 반영하지 못하는 내포된 스레드가 존재하지 않으면 경합의 존재를 검증한다.

  • PDF

C++11 멀티스레드 프로그래밍을 위한 Lock-Free shared_ptr와 weak_ptr의 구현 (Implementation of Lock-Free shared_ptr and weak_ptr for C++11 multi-thread programming)

  • 구태균;정내훈
    • 한국게임학회 논문지
    • /
    • 제21권1호
    • /
    • pp.55-66
    • /
    • 2021
  • 고성능이 요구되는 게임 프로그래밍에서 멀티스레드 프로그래밍은 필수이다. 하지만 널리 사용되는 C++11의 shared_ptr와 weak_ptr는 멀티스레드 환경에서 오작동 및 성능 문제를 가지고 있다. 본 논문에서는 기존의 오작동 방지 방법보다 높은 성능을 가지는 Lock-Free shared_ptr와 weak_ptr를 제안한다. 제안하는 두 객체는 논블로킹 알고리즘을 이용하여 멀티스레드에서의 데이터 레이스를 방지하였으며, 8스레드 환경에서 실험한 결과 스레드 사이의 경쟁이 낮은 상황에서 기존의 방법보다 최대 7424% 향상되었고, 경쟁이 높은 상황에서 최대 3767% 향상된 성능을 보여준다.

다중스레드 모델의 스레드 코드를 안전한 자바 바이트코드로 변환하기 위한 번역기 설계 (Design of Translator for generating Secure Java Bytecode from Thread code of Multithreaded Models)

  • 김기태;유원희
    • 한국산업정보학회:학술대회논문집
    • /
    • 한국산업정보학회 2002년도 춘계학술대회 논문집
    • /
    • pp.148-155
    • /
    • 2002
  • 다중스레드 모델은 데이터플로우 모델의 내부적인 병렬성, 비동기적 자필 가용성과 폰 노이만 모델의 실행 지역성을 결합하여 병렬처리 시스템의 성능을 향상시켰다. 이 모델은 프로그램의 실행을 위하여 컴파일러에 의해 생성된 스레드를 수행하며, 스레드의 생성 방법에 따라 자원 활용 빈도나 동기화 빈도와 같은 스레드의 질이 결정되는 특징이 있다. 하지만 다중스레드 모델은 실행 모델이 특정 플랫폼에 제한되는 단점을 가지고 있다. 이에 반해 자바는 플랫폼에 독립적인 특징을 가지고 있어 다중스레드 모델의 스레드 코드를 실행 단위인 자바 언어로 변환하면 다중스레드 모델의 특징을 여러 플랫폼에서 수정 없이 사용할 수 있게 된다. 자바는 원시 언어를 중간 언어 형태의 바이트코드로 변환하여 각 아키텍처에 맞게 설계된 자바 가상 머신이 설치된 시스템에서 자바 언어를 수행한다. 이러한 자바 언어의 바이트코드는 번역기의 중간 언어와 같은 역할을 수행하고, 이때 자바 가상 머신은 번역기의 후위부와 같은 역할을 한다. 스레드 코드에서 번역된 자바 바이트코드는 다양한 플랫폼에서 실행될 수 있다는 장점은 있지만 신뢰할 수 없다는 만점이 있다. 또한 자바 언어 자체의 문제에 의해 안전하지 못한 코드가 생성 될 수도 있다. 본 논문은 다중스레드 코드가 플랫폼에 독립적인 특성을 갖출 수 있도록 다중스레드 코드를 자바 가상 머신에서 실행 가능하도록 한다. 또한 번역시에 자바에서 발생할 수 있는 문제들을 고려하여 안전한 바이트코드를 생성한다. 즉, 다중스레드 모델의 스레드 코드를 플랫폼에 독립적이고 외부 공격으로부터 안전한 자바 바이트코드로 변환하는 번역기를 선계, 구현한다.구센타와 병원간에 임상정보와 유전체 분석정보의 공유가 필수적으로 발생하게 됨으로, 유전체 정보와 임상정보의 통합은 미래 의료환경에 필수기능이 될 것이다. 3) 각 생명공학 연구소에서 사용하는 첨단 분석 장비와 생명공학 정보시스템의 자동 연계가 필요하다. 현재 국내에는 전국적인 초고속정보망이 가동되어 웹을 기반으로 하는 생명정보의 공유는 기술적으로 문제가 될 수 없으나 임상정보의 유전체연구에 그리고 유전체연구정보의 임상활용은 다양한 문제를 내포하고 있다. 이에 영상을 포함한 환자정보의 유전체연구센터와 병원정보시스템과의 효율적인 연계통합 운영을 위해 국내에서는 초기 도입단계에 있는 국제적인 보건의료정보의 표준인 Health Level 7 (textural information 공유), DICOM (image 및 wave 공유), 관련 ISO표준, WHO의 ICD9/10 (질병분류), LOINC (검사 및 관련용어), SNOMED International (의학용어) 등을 활용하여야 한다.matrix. The prediction system gives about 50% of sensitivity and 98% of specificity, Based on the PID matrix, we develop a system providing several interaction information-finding services in the Internet. The system, named PreDIN (Prediction-oriented Database of Interaction Network) provides interacting domain finding

  • PDF

실제 적용 타당성 탐색을 위한 고전적 상호배제 알고리즘 성능 평가 (A Performance Evaluation on Classic Mutual Exclusion Algorithms for Exploring Feasibility of Practical Application)

  • 이형봉;권기현
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제6권12호
    • /
    • pp.469-478
    • /
    • 2017
  • 상호배제는 원래 다중처리기 시스템을 지원하는 운영체제의 경쟁상황 예방 이론에서 출발하였으나, 최근에는 다중코어처리기의 일반화로 그 적용범위가 급격하게 병렬처리 어플리케이션 영역으로 이동되었다. POSIX 스레드, WIN32 스레드, Java 스레드 등이 대표적인 병렬 처리 어플리케이션 개발환경인데, 이들은 각자 고유한 상호배제 메커니즘을 제공하고 있다. 이들 환경에서 성능에 매우 민감한 어플리케이션들은 코딩의 불편함 등 약간의 희생을 감수하더라도 상호배제를 위한 부담 경감을 필요로 할 수 있다. 이 연구에서는 두 스레드 사이에서 Dekker와 Peterson 알고리즘을 플랫폼별로 바쁜 대기와 처리기 양보 형태로 구현하여 각각의 고유 상호배제 메커니즘들과의 성능을 비교하고, 그 알고리즘들의 유용성을 평가한다. 분석 결과 POSIX 및 WIN32 스레드 환경에서 처리기 양보 형 Dekker 알고리즘이 최소 2배에서 최대 70배까지 우수한 것으로 나타나 이 알고리즘의 실용성이 충분한 것으로 확인되었다.

MPLS 망에서 칼라 스레드의 루프방지 알고리즘 개선 (Improvement of the Colored Thread Algorithm to Prevent Loop in MPLS Network)

  • 전환식;김한경
    • 인터넷정보학회논문지
    • /
    • 제3권1호
    • /
    • pp.41-49
    • /
    • 2002
  • MPLS망에서 루프 경로가 형성되는 것을 방지하기 위한 방안으로 Ohba는 칼라 스레드 알고리즘을 제안하였다. LSP를 설정할 때 중간 노드가 칼라와 홉 카운트, TTL 값으로 표현된 스레드 정보를 LDP메시지를 이용하여 다운스트림 노드에게 전달한다. 그 다음 같은 칼라의 스레드가 다시 접수되면, 루프 경로가 형성되었음을 감지하고 다른 경로의 탐색을 시도한다. 메시지가 egress 노드에 도착하면 ingress 노드까지 업스트림으로 확인 메시지를 역 전송하여, 루프가 없는 경로를 설정한다. 이를 위해 Ohba가 스레드의 상태를Null, Colored, Transparent의 세 가지로 정의한 것을Extending, Merging, Stalling, Null, Transparent의 5가지로 확장하여 정의하고, 이에 따라 관련 FSM과 TCB를 재정의 하여 스레드 상태의 모호성으로 인한 잘못된 동작과 오버로드의 발생을 개선코자 하였다. 그리고, Stalling 상태에서 스레드 생성을 회피함으로써, 성능의 향상을 유도하였다.

  • PDF

큐를 이용한 다중스레드 방식의 웹 크롤링 설계 (Multi-threaded Web Crawling Design using Queues)

  • 김효종;이준연;신승수
    • 융합정보논문지
    • /
    • 제7권2호
    • /
    • pp.43-51
    • /
    • 2017
  • 연구목적 : 본 연구의 목적은 광역 네트워크로 연결된 다수의 봇을 활용하여 단일처리 방식의 시간 지연의 문제점과 병렬처리 방식의 비용증가, 인력낭비에 대한 문제점을 해결할 수 있는 큐를 이용한 다중스레드 방식의 웹 크롤링을 연구한다. 연구방법 : 본 연구는 큐를 이용한 다중스레드 방식의 시스템 구성을 바탕으로 독립된 시스템에서 실행하는 어플리케이션을 설계하고 분석한다. 연구결과 : 큐를 이용하여 다중 스레드 방식의 웹 크롤러 설계를 제안한다. 또한, 웹 문서의 처리량을 수식에 따라 클라이언트와 스레드 별로 나누어 분석하고, 각각 효율성 비교를 통해 최적의 클라이언트의 개수와 스레드의 개수를 확인 할 수 있다. 제안하는 시스템의 설계 방식은 분산처리를 기반으로 각각의 독립된 환경에서의 클라이언트는 큐와 스레드를 이용하여 빠르고 신뢰성이 높은 웹 문서를 제공한다. 향후연구 방향 : 특정 사이트를 대상으로 하는 웹 크롤러 설계가 아닌 범용 웹 크롤러에 큐와 다중 스레드를 적용하여 다양한 웹 사이트를 빠르고 효율적으로 탐색 및 수집하는 시스템이 필요하다.

멀티코어 환경에서의 멀티스레드 기법을 이용한 메모리 할당 연산의 성능 평가를 위한 시뮬레이터 (A Simulator for Performance Evaluation of Multithreaded Memory Allocation Operation in Multi-Core Environment)

  • 김호영;황대대;한상혁;김영국
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2012년도 한국컴퓨터종합학술대회논문집 Vol.39 No.1(A)
    • /
    • pp.245-247
    • /
    • 2012
  • 최근 멀티코어 프로세서의 활용이 대중화되고 있다. 멀티코어 시스템에서는 소프트웨어가 동시에 여러 코어를 사용하여 동작을 수행 할 때 성능 향상 효과를 얻을 수 있다. 즉, 하나의 소프트웨어가 여러 코어를 동시에 사용할 수 있는 멀티스레드 프로그래밍 기법을 사용할 때 성능을 높일 수 있다. 이러한 환경에서 효율적인 메모리 할당은 데스크톱, 서버 및 과학 등과 같은 응용에 매우 중요하다. 하지만, 동적으로 메모리를 할당하는 것은 메모리 할당 연산과 반환 연산 및 어떤 스레드가 다른 스레드의 힙 영역에 접근하는 것을 처리하기 위한 동기화 문제로 인한 오버헤드가 발생하여 성능에 영향을 끼치는 문제가 발생하게 된다. 따라서 이와 같은 환경에서 실제로 성능에 어느 정도 영향을 끼칠 것인가를 측정할 수 있는 도구가 필요하다. 이에 멀티코어 환경에서 멀티스레드 기법을 사용하여 메모리 할당 연산이 성능에 어떠한 영향을 끼치는지를 측정 및 평가할 수 있는 시뮬레이터인 MAES(Memory Allocation Evaluation Simulator)를 설계하고 구현한다.

OpenMP 프로그램을 위한 효율적 병행성 정보의 생성기법 (An Efficient Scheme for Creating Concurrency Information in OpenMP Programs)

  • 하옥균;김선숙;전용기
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2010년도 한국컴퓨터종합학술대회논문집 Vol.37 No.1(C)
    • /
    • pp.534-539
    • /
    • 2010
  • OpenMP 프로그램의 수행 중에 발생하는 자료 경합과 같은 병행성 오류는 디버깅을 위하여 반드시 탐지되어야만 한다. 그러나 이를 탐지하는 것은 어려운 일이다. 접근사건의 발생 후 관계를 기반으로하는 경합 탐지 기법은 프로그램의 수행 중에 발생하는 스레드의 병행성 정보를 식별하기위한 레이블을 생성하고, 생성된 스레드의 레이블을 기반으로 공유변수에 접근하는 사건을 접근역사를 통해 감시함으로써 경합을 탐지한다. 이러한 경합 탐지의 방법에서 레이블 생성을 위한 NR 레이블링 기법은 병행성 정보생성 시에 지역자료 구조를 사용함으로써 병목현상이 발생하지 않으며, 접근역사에 저장하는 레이블의 크기가 상수 값을 갖는 공간적 효율성을 제공한다. 또한 부모스레드의 정보역사를 정렬된 리스트 형태로 가져 병행성 정보 비교 시에 이진탐색이 가능하므로 시간적 효율성을 가지는 우수한 기법이다. 그러나, NR 레이블링은 레이블의 생성시에 부모스레드의 정보역사를 유지하기 위해서 내포 병렬성의 깊이에 의존하는 시간적 비용이 요구된다. 본 논문에서는 부모스레드의 정보역사 유지를 위해 상수적인 시간 및 공간적 복잡도를 갖도록 NR 레이블링 기법을 개선한다. 합성 프로그램을 이용하여 실험한 결과에서 개선된 기법은 최대 병렬성의 증가에 따라 레이블의 생성과 유지시 기존의 기법보다 평균 4.5배 빠르고, 레이블링을 위해 평균 3배 감소된 기억공간을 요구하며, 내포 병렬성에 의존적이지 않음을 보인다.

  • PDF

스레드를 이용한 함수 병렬성 추출 (Exploration of Functional Parallelism using threads)

  • 김현철;이성우;류시룡;유기영
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2000년도 가을 학술발표논문집 Vol.27 No.2 (3)
    • /
    • pp.633-635
    • /
    • 2000
  • 본 논문에서는 프로그램을 루프 구조에 근거하여 계층적으로 표현한 HTG (Hierarchical Task Graph)의 복합 노드 태스크들을 공유 메모리 다중처리기 환경에서의 효율적 수행을 위한 새로운 스케쥴링 기법을 제안한다. 단일처리기의 멀티스레드 구조를 비롯한 여러 플랫폼에 적용하기 위해 자바의 스레드를 사용하여 구현하였으며, 기존의 HTG의 함수 병렬성을 위한 비티 벡터 알고리즘과 성능을 비교 분석하였다. 실험 결과에서 보듯이, 제안된 기법이 비트 벡트 방법에 비해 수행 시간 측면에서 효율적임을 알 수 있으며 또한, 좋은 부하 균형을 유지하였다.

  • PDF

EJB 애플리케이션을 위한 멀티 쓰레드 구현 방법에 대한 연구 (Multithread design of Enterprise Java Beans)

  • 이영지;김태윤
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2001년도 추계학술발표논문집 (하)
    • /
    • pp.1557-1560
    • /
    • 2001
  • EJB는 Sun사에서 발표한 분산 객체 구조에 맞는 서버쪽 컴포넌트 아키텍처이다. EJB를 사용하면 다중 네트워크 환경에서 애플리케이션의 디자인과 개발, 배포가 쉬워진다. 개발자는 하부 사항에 대해 신경쓰지 않고 상위 레벨에서 애플리케이션을 설계할 수 있다. EJB 1.1 명세서는 그러한 내용을 나타내고 있는 명세서이다. 하지만 이 명세에서는 멀티 스레드를 허용하지 않는다. 멀티 스레드는 프로그래밍에서 상당히 유용한 것으로 멀티 스레드를 사용하면 다른 오브젝트에 영향을 주지 않으면서 작업을 수행할 수 있는 등 여러 가지 이점이 많다. 본 논문에서는 이러한 이점을 살려서 명세서에 따르면서 멀티 스레드를 생성하는 방법에 대해 알아보고자 한다 본 논문에서 제시하는 방법은 클라이언트 쪽에서 멀티 스레딩을 생성하는 방법, 콜백 서비스를 이용하는 방법, 메세징 서비스를 이용하는 방법 3가지이고 각각에는 장단점이 따른다. 따라서 실제 구현 시에는 각자의 요구 사항에 맞춰 알맞은 방법을 찾아야 한다.

  • PDF