동시성 프로그램에서 메모리를 수집하는 세가지 방법

2019-09-03
  • 2,874

동시성 프로그램에서 메모리를 수집하는 세가지 방법(Kor.)

Biography

강지훈은 동시성 프로그래밍, 컴파일러, 프로그래밍 언어에 관심이 있다.  근래에 동시성 프로그래밍 언어의 실행의미를 정리했고, 동시성 프로그램을 위한 컴파일러 최적화를 제안하고 검증했으며,  동시성 자료구조를 위한 오픈소스 메모리 수집기인 Crossbeam 개발을 주도했다.  컴파일러 검증 프로젝트인 CompCert와 CreLLVM에 기여했다.  Furiosa AI에서 Chief Scientist로 일하며 AI 프로세서를 위한 컴파일러를 작성했다.  현재 KAIST 전산학부 조교수이며 동시성 및 병렬성 연구실을 이끌고 있다.  서울대학교에서 컴퓨터공학 학사/박사학위를 받았다 (2013/2019년).  PLDI 우수논문상, 서울대학교 컴퓨터공학부 우수박사학위논문상을 받았다.

Abstract

힙에 메모리 블락을 할당하는 모든 동시성 자료구조는 안전하게 메모리를 수집할 수 있도록 각별히 신경써야 한다.  가령 한 쓰레드가 한 메모리 블락을 자료구조에서 떼어냈다 하더라도 바로 그 블락을 수집해서는 안된다.  다른 쓰레드가 동시에 그 블락을 가리키고 있을 수 있기 때문이다.  다른 쓰레드들이 그 블락을 더이상 가리키고 있지 않음을 확인한 후에야 수집해도 안전하다.  이를 확인하기 위해 필요한 쓰레드간 동기화가 복잡해서, 대개 개별 자료구조가 아닌 일반적인 동시성 메모리 수집기 라이브러리가 동기화를 담당한다.

기존에 수많은 동시성 메모리 수집기 기법이 제안되었지만, 모든 면에서 만족스러운 기법은 아직 제안된 바가 없다.  가령 가장 기본적인 기법인 포인터 기반 수집 기법은 느리고, 가장 널리 사용되는 시대(epoch) 기반 수집 기법은 스케줄링에 따라 자칫 메모리를 아예 수집하지 못할 위험이 있다.  우리는 두 기법의 아이디어를 섞어 포인터 및 시대 기반 수집 기법을 새롭게 제안한다.  새로운 기법은 빠르고, 메모리 수집을 보장할 뿐만 아니라, 이식성이 높고, 다양한 자료구조에 적용 가능하며, 메모리 사용량이 적다.  이 발표에서는 포인터 기반, 시대 기반, 포인터 및 시대 기반 수집 기법을 설명하고 장단점을 비교한다

LIST