Skip to main content
QUICK REVIEW

[논문 리뷰] Design and Implementation of Dynamic Memory Management in a Reversible Object-Oriented Programming Language

Martin Holm Cservenka|arXiv (Cornell University)|2018. 04. 12.
Cloud Computing and Resource Management인용 수 3
한 줄 요약

이 논문은 역행 가능한 객체 지향 언어 Roopl의 확장인 Roopl++을 제안하며, Buddy Memory 레이아웃을 통해 동적 메모리 관리를 가능하게 하여 이중 연결 리스트와 이진 트리와 같은 비단순한 역행 가능한 데이터 구조를 지원한다. 이 접근법은 Pisa에서의 역행 가능한 어셈블리 번역을 통해 쓰레기 생성 없이 계산을 보장하며, 복잡하고 표현력 있는 데이터 구조가 역행 가능한 계산의 원칙을 위반하지 않고도 역행 가능한 계산 패러다임 내에서 실현 가능하다는 것을 보여준다.

ABSTRACT

The reversible object-oriented programming language (ROOPL) was presented in late 2016 and proved that object-oriented programming paradigms works in the reversible setting. The language featured simple statically scoped objects which made non-trivial programs tedious, if not impossible to write using the limited tools provided. We introduce an extension to ROOPL in form the new language ROOPL++, featuring dynamic memory management and fixed-sized arrays for increased language expressiveness. The language is a superset of ROOPL and has formally been defined by its language semantics, type system and computational universality. Considerations for reversible memory manager layouts are discussed and ultimately lead to the selection of the Buddy Memory layout. Translations of the extensions added in ROOPL++ to the reversible assembly language PISA are presented to provide garbage-free computations. The dynamic memory management extension successfully increases the expressiveness of ROOPL and as a result, shows that non-trivial reversible data structures, such as binary trees and doubly-linked lists, are feasible and do not contradict the reversible computing paradigm.

연구 동기 및 목표

  • 역행 가능한 객체 지향 언어 Roopl에 동적 메모리 관리와 고정 크기의 배열을 통합하여 표현력을 향상시키는 것.
  • 쓰레기를 생성하지 않으면서도 복잡한 데이터 구조를 지원하는 역행 가능한 메모리 관리 시스템을 설계하는 것.
  • Roopl++의 의미론, 타입 체계, 계산의 보편성을 공식적으로 정의하는 것.
  • 쓰레기 없는 실행을 가능하게 하기 위해 Roopl++의 구문을 역행 가능한 어셈블리 언어 Pisa로 번역하는 것.
  • 이중 연결 리스트와 이진 트리와 같은 비단순한 역행 가능한 데이터 구조가 역행 가능한 계산 모델 내에서 실현 가능한지 보여주는 것.

제안 방법

  • 역행 가능한 메모리 할당을 보장하는 결정론적이고 역행 가능한 메모리 관리 패턴을 확보하기 위해 Buddy Memory 레이아웃을 채택한 것.
  • 언어의 표현력을 향상시키기 위해 배열 지원, 객체 인스턴스화, 로컬 블록을 Roopl에 확장한 것.
  • 환경-스토어 판단과 역행 가능한 스토어 변환을 사용하여 Roopl++의 형식적 타입 체계와 운영 의미론을 정의한 것.
  • 스토어를 변경하지 않으면서도 역행 가능성을 유지하는 새로운 배열 원소 접근 표현식 규칙을 도입한 것.
  • Roopl++ 프로그램을 역행 가능한 어셈블리 언어 Pisa로 번역하여 역행 실행과 쓰레기 없는 계산을 가능하게 한 것.
  • 이중 연결 리스트와 이진 트리의 역행 가능한 버전을 구현하고 검증함으로써 접근법을 검증한 것.

실험 결과

연구 질문

  • RQ1역행 가능한 객체 지향 언어에 동적 메모리 관리를 통합할 수 있는가, 이때 역행 가능성 원칙을 위반하지 않는가?
  • RQ2어떤 메모리 레이아웃 전략이 분할과 쓰레기 생성을 최소화하면서도 역행 가능한 할당 및 해제를 가능하게 하는가?
  • RQ3이중 연결 리스트와 이진 트리와 같은 복잡한 데이터 구조가 역행 가능한 언어에서 완전한 계산 보편성을 갖는 채로 실현 가능한가?
  • RQ4역행 가능한 언어에서 배열 접근 및 객체 조작 중에 역행 가능한 의미론을 어떻게 유지할 수 있는가?
  • RQ5고수준의 역행 가능한 프로그램을 역행 가능한 어셈블리 코드로 번역하는 것이 가능한가, 이때 완전한 역행 실행을 지원하는가?

주요 결과

  • Buddy Memory 레이아웃은 결정론적이고 역행 가능한 할당 및 해제 패턴을 지닌 바람직한 메모리 관리 전략으로 선정되었다.
  • Roopl++는 이중 연결 리스트와 이진 트리와 같은 비단순한 역행 가능한 데이터 구조를 성공적으로 지원하며, 완전한 역행 가능성을 확보했다.
  • Roopl++를 Pisa 역행 가능한 어셈블리 언어로의 번역은 쓰레기 없는 계산과 완전한 역행 실행을 가능하게 한다.
  • 언어 확장은 일대일 변환을 유지하여 모든 연산이 국소적으로 역행 가능하고 정보 손실이 없음을 보장한다.
  • Roopl++의 형식적 의미론과 타입 체계는 역행 가능한 계산 프레임워크 내에서 타입 안정성과 계산 보편성을 보장한다.
  • 본 연구는 동적 메모리 관리가 역행 가능한 계산과 호환됨을 보여주며, 오직 정적 또는 단순한 데이터 구조만이 역행 가능하다는 가정을 도전한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.