美 국방부도 해결 못한 프로그래밍 문제, 한국이 먼저 풀었다

머니투데이 박건희 기자 2024.08.13 10:31
글자크기

KAIST 연구팀, '전 세계 극소수' 프로그래밍 언어 번역 기술 개발

유니언을 사용하는 C 코드의 기존 번역 결과와 제안한 기법을 적용한 번역 결과. 기존 번역 결과는 유니언을 태그드 유니언으로 대체하지 않아 메모리 문제를 방지하지 못했다. 반면, 제안한 기법을 적용한 번역 결과는 유니언을 태그드 유니언으로 대체해 메모리 문제를 방지했다. /사진=KAIST유니언을 사용하는 C 코드의 기존 번역 결과와 제안한 기법을 적용한 번역 결과. 기존 번역 결과는 유니언을 태그드 유니언으로 대체하지 않아 메모리 문제를 방지하지 못했다. 반면, 제안한 기법을 적용한 번역 결과는 유니언을 태그드 유니언으로 대체해 메모리 문제를 방지했다. /사진=KAIST


국내 전산학 연구팀이 미국 국방부에서도 뾰족한 해결책을 찾지 못한 것으로 알려진 프로그래밍 언어 번역 기술을 개발했다.

KAIST(카이스트)는 류석영 전산학부 연구팀(프로그래밍 언어 연구실)이 C언어의 핵심 기능에서 메모리 문제가 생기지 않도록 방지하는 'C-러스트 코드 번역 기술'을 개발했다고 13일 밝혔다. 이번 연구 결과는 국제 학술대회 '국제 자동 소프트웨어엔지니어링학회(ASE)'에 채택됐다.

프로그래밍 언어는 컴퓨터의 소프트웨어를 작동시키기 위한 언어를 말한다. 이중 C언어는 실행 속도가 빠르고 유지·보수도 쉬운 언어로 알려졌다. C언어의 핵심 기능 중 하나는 여러 종류의 데이터를 같은 공간에 보관해 메모리의 효율을 높이는 '유니언'이다. 하지만 유니언은 보관 중인 데이터가 어떤 종류인지 구분할 수 없기 때문에 메모리 관리에 치명적인 문제가 있다.



이를 해결하는 기술이 '태그드 유니언(tagged union)'이다. 같은 공간에 보관된 여러 종류의 데이터에 태그(표시)를 붙여 구분할 수 있도록 한다. 프로그래밍 언어의 하나인 '러스트(Rust)'에 바로 이런 태그드 유니언 기술이 접목돼 있다.

연구팀은 기존 C언어의 유니언을 러스트 코드로 번역하는 기술을 개발했다. 연구팀에 따르면 C언어와 러스트의 간극이 매우 커, C-러스트 코드 번역 기술을 성공적으로 개발한 팀은 전 세계적으로 극소수다.



C-러스트 코드 번역은 각 유니언의 태그 값이 저장된 위치를 찾아 복잡한 구조체 속에서도 관련 정보를 알아내는 분석 기법을 기반으로 한다. 프로그램 전체가 아닌 유니언이 사용되는 부분만 분석할 수 있게 해 효율성을 높였다. 때로 분석이 부정확하더라도 태그값의 위치는 정확히 찾을 수 있도록 새로운 알고리즘을 도입했다. 연구팀은 "이를 실제 C프로그램 번역에 적용한 결과 성공적인 결과를 확인했다"고 말했다.

KAIST는 "올해 2월 미국 백악관에서도 C언어의 사용을 중단할 것을 촉구했고, 미국 국방고등연구계획국(DARPA)에서도 C언어로 작성된 코드를 러스트로 자동 번역하는 기술을 개발하는 내용의 연구 과제를 발표했다"며 "이같은 연구를 국내 연구진이 이미 선제적으로 개발하고 선도한 것"이라고 설명했다.

연구를 이끈 류 교수는 "안전한 소프트웨어 제작을 목표로 연구하며 C-러스트 코드 번역의 중요성을 일찍 깨닫고, 각종 프로그래밍 언어 기법들을 코드 번역에 적극적으로 도입해 이같은 결과를 낼 수 있었다"고 말했다. 연구팀은 '완전 자동 번역' 단계에 이르기 위한 후속 연구를 진행할 계획이다.


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

류석영 KAIST 전산학부 교수 /사진=KAIST 류석영 KAIST 전산학부 교수 /사진=KAIST

이 기사의 관련기사

TOP