2010-11-20 2 views
1

가상 머신을 쓰고 있습니다. Virtualbox와 같은 기존 아키텍처 에뮬레이터가 아니라 JVM 또는 BEAM과 같은 자체 명령어 세트, 메모리 모델 등을 사용합니다. 결국에는 매우 작고 단순한 (재미있게하기 위해) 바이트 코드로 컴파일 될 고급 언어 (튜링 완료) 고급 언어.가상 머신에서 I/O를 구현하는 더 나은 방법은 무엇입니까?

물론 기계에는 I/O에 대한 지원이 있어야하지만 stdin/stdout을 사용한 조작에만 국한시키고 싶지는 않습니다. VM이 런 타임에로드하고 표준 인터페이스를 통해 VM과 통신 할 수 있도록 공유 라이브러리로 구현 될 수있는 모듈 형 "가상 장치"와 같은 것을 상상해보십시오. 예를 들어이 방법을 사용하면 표준 입력/출력, 그래픽 (VM 프로그램에서 SDL 창 내부에 물건을 그릴 수있는 가상 장치를 상상해보십시오) 또는 심지어 네트워크까지도 "가상 장치"를 가질 수 있습니다.

질문 : VM 용으로 작성된 프로그램을 가상 장치와 어떻게 통신해야합니까? 실제 하드웨어와 함께 사용되는 기술을 모방하고 포트 기반 I/O 및 메모리 매핑 I/O에 대해 알게되었습니다. 그러나, 나는 그들 중 어느 쪽이 나의 목표에 더 적합한 지 모르겠습니다. 어느 쪽이 더 좋을지 또는 입/출력을 다루는 완전히 다른 기술을 지적 해 주시겠습니까?

미리 감사드립니다.

답변

0

메모리 매핑 및 포트 기반은 대부분의 I/O에 적합하지 않습니다.

블록 복사가있는 DMA 요청이 일반적으로 원하는 것입니다.

관련 문제