모브(Mob) 코어 언어와 추상 머신: 서비스 지향 모바일 에이전트의 형식적 기반
초록
모브는 서비스‑지향 모바일 에이전트를 위한 고수준 스크립팅 언어로, LSD π‑계산을 기반으로 설계되었습니다. 에이전트는 서비스 제공·요구를 동적으로 바인딩하고, 이동·멀티스레드·잠금·외부 호출 등의 프리미티브를 제공하며, 모든 연산은 기본 π‑계산으로 인코딩되어 형식적 검증과 언어 보안을 확보합니다.
상세 분석
이 논문은 기존 모바일 에이전트 시스템이 갖는 “구현‑이론 격차”를 해소하기 위해, 프로세스 계산인 LSD π‑계산 위에 고수준 스크립팅 레이어인 Mob를 구축한 점이 가장 큰 공헌이다. Mob는 서비스‑지향 모델을 채택해, 에이전트가 provides와 requires 키워드로 서비스 인터페이스를 선언하고, 런타임에 bind 프리미티브를 통해 네트워크 레졸버와 동적으로 매칭한다. 이러한 설계는 컴파일 시 타입 검증을 가능하게 하여 메서드 호출 시 인터페이스 불일치 오류를 사전에 차단한다는 의미에서 언어 보안의 한 축을 담당한다.
Mob의 핵심 구문은 객체 지향과 스레드 기반의 동시성을 결합한다. new 로 객체·에이전트를 생성하고, fork, join, wait, notify 로 멀티스레드 제어를 수행한다. 공유 자원에 대한 배타적 접근은 lock/unlock 으로 구현되며, 이는 힙 기반 주소 공간을 공유하는 스레드들 사이의 데이터 경쟁을 방지한다. 이동 메커니즘은 go(host) 로 표현되며, 이는 에이전트 전체 가상 머신과 상태를 목표 호스트로 직렬화·전송한 뒤 투명하게 재개한다.
형식적 의미론은 두 단계로 정의된다. 첫째, Mob 프로그램을 구문적으로 정의한 뒤, 각 구문을 LSD π‑계산의 프로세스로 변환하는 인코딩 함수를 제시한다. 둘째, 변환된 π‑프로세스의 전이 규칙을 이용해 추상 머신의 상태 전이(에이전트 풀, 스레드 풀, 힙, 바인딩, 레졸버 등)를 기술한다. 이러한 두 단계 인코딩은 Mob의 연산이 기본 π‑계산의 정규성, 교환성, 보존성을 그대로 물려받음으로써, 언어 자체의 사운드니스와 교착 상태 방지를 형식적으로 증명할 수 있게 만든다.
또한, Mob는 TyCO 런타임 위에 구현되어 JVM의 이식성을 활용한다. TyCO는 LSD π‑계산을 실제 실행 가능한 바이트코드로 컴파일하는 기존 시스템이며, Mob의 프론트엔드 컴파일러는 Mob 소스를 TyCO 소스 코드로 변환한다. 이를 통해 기존 TyCO 기반 인프라(네트워크 레졸버, 가상 머신 마이그레이션, 가비지 컬렉션 등)를 그대로 재사용하면서도, 개발자는 Java‑like 문법이 아닌 간결한 스크립팅 구문으로 모바일 에이전트를 기술할 수 있다.
마지막으로, 외부 서비스 연동을 위한 exec 프리미티브와 host() 함수가 제공되어, SMTP, FTP, HTTP, 데이터베이스 등 기존 웹·네트워크 서비스와의 통합을 가능하게 한다. 이러한 설계는 Mob가 순수 모바일 에이전트 언어를 넘어, 이기종 시스템을 오케스트레이션하는 고수준 코디네이션 언어로 확장될 여지를 보여준다.
댓글 및 학술 토론
Loading comments...
의견 남기기