Interface description language

Ahn9807 (토론 | 기여)님의 2023년 11월 20일 (월) 10:24 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

인터페이스 정의 언어는 서로 다른 컴포넌트 사이에서 통신을 가능하게 하기 위해서, 언어와 독립된, 혹은 컴포넌트와 독립된 방식으로 인터페이스를 묘사하는 방식이다. 예를 들어서, RustC는 서로다른 함수 호출 규약을 가지고 있다. 이러한 경우에, 중간에 IDL로 작성된 Wrapper을 둠으로써, Rust로 작성된 함수를 C에서 호출 할 수 있다.

IDL는 시스템 보안에서도 사용된다. Secure component와 Insecure component사이에, IDL을 둠으로서, 반드시 검증된 작업만을 수행할 수 있도록 하는 방식이 그 예이다. 예를 들어서 LXDs와 같은 경우에는 커널과 디바이스 드라이버가 통신할때, 중간에 IDL을 둠으로서, 동기적으로 분리된 데이터만이 커널과 디바이스 사이에서 움직이도록 하여서, 디바이스 드라이버에서 생긴 문제 (예를 들어서 Resource exhaustion, Dead lock)이 전체 커널로 Propagate되는 것을 막았다.

이러한 IDL은 컴포넌트를 수정없이 (Transparently)하게 glue할 수 있다는 점에서 장점이 있다. 따라서, IDL을 다른 말로 Glue code라고 부르기도 한다.

참고

  1. https://medium.com/@aos2022rnn/please-leave-me-alone-device-driver-isolation-in-monolithic-kernels-73c76ad6daac