KAIST, 미국 국방부가 주목한 'C-러스트' 기술 선도

태그드 유니언으로 변환하는 기술 세계 첫 개발

과학입력 :2024/08/13 12:55

컴퓨터 시스템을 작동시키기 위해서는 프로그래밍 소프트웨어 언어가 필요하다.

실행속도도 빠르고 유지보수도 쉬운 언어가 바로 C언어다. 그러나 C언오는 메모리 할당 및 관리 등에 치명적인 문제점이 있다.

이 문제를 해결하기 위해 개발된 프로그래밍 언어가 러스트다. 미국 백악관이나 국방성에서도 메모리 문제를 막기 위해 러스트같은 안전한 언어 사용을 촉구하고 있다.

KAIST 전산학부 류석영 교수(왼쪽)와 홍재민 석박사통합과정.

KAIST는 전산학부 류석영 교수 연구팀(프로그래밍 언어 연구실)이 C언어의 유니언(union)을 러스트의 태그드 유니언(tagged union)으로 변환하는 기술을 세계 최초로 개발했다고 13일 밝혔다.

유니언은 여러 종류의 데이터를 같은 공간에 보관해 메모리 효율을 높이는 C언어의 핵심 기능이다. 그러나 보관된 데이터가 어떤 종류인지 구분하지 않아 메모리 문제를 일으킬 수 있다.

태그드 유니언은 같은 공간에 보관할 수 있는 여러 종류의 데이터 중 어떤 종류의 데이터를 보관하는지 태그를 붙여서 구분하기 때문에 메모리 문제를 일으키지 않는다.

연구팀은 C언어의 유니언에 특화된 새로운 프로그램 분석 기법을 고안해 러스트의 태그드 유니언으로 자동 번역하는 데 성공했다.

러스트는 2015년부터 개발된 프로그래밍 언어다. 운영 체제, 웹 브라우저 개발 등에 쓰인다. 2022년에는 리눅스(Linux) 개발에도 공식 사용되기 시작했다.

C와 달리 프로그램 실행 전에 메모리 문제를 탐지하고 예방할 수 있는 것이 특징이다.

연구진은 지난해 5월과 올해 6월 각각 C의 뮤텍스(mutex)와 출력 파라미터(output parameter)를 러스트로 변환하는 기술을 세계 최초로 개발하고, 국제 학술대회인 국제소프트웨어엔지니어링학회(ICSE)와 프로그래밍언어설계구현학회(PLDI)에서 발표했다.

뮤텍스는 프로그램 동기화에 필요한 기능이다. 출력 파라미터는 계산 결과 전달에 사용되는 기능이다.

KAIST 연구진이 제시한 번역 기법의 전체 과정 도식.

류석영 교수는 "C언어와 러스트의 큰 간극으로 인해 세계적으로도 C-러스트 코드 번역 기술을 성공적으로 개발한 연구팀은 극소수"라며 "그마저도 포인터(pointer)를 변환하는 데 머물고 있다"고 말했다.

류 교수는  “완전한 자동 번역을 위해 아직 풀어야 할 난제가 많다"며 "후속 연구에 매진할 것"이라고 덧붙였다.

관련기사

이 연구결과는 KAIST 전산학부 홍재민 석박사통합과정 학생이 제1 저자로 참여했다. 국제 학술대회인 국제자동소프트웨어엔지니어링학회(ASE)에 채택됐다.

연구는 한국연구재단 선도연구센터 및 중견연구자지원사업, 정보통신기획평가원(IITP), 삼성전자의 지원을 받아 수행됐다.