가상머신, 바이트코드 질문.
글쓴이: livey / 작성시간: 금, 2014/01/10 - 7:51오후
sqlite 를 공부중인데 sql문이 컴파일되면 바이트코드로 변환되어 sqlite 만의 가상머신VDBE 에서 실행된다고하는데 가상머신이라는건 자바나 닷넷 vmware 등만 생각했는데 sqlite 에도 가상머신이 있다는게 좀 놀라웠습니다.
플랫폼 독립적인 처리를 위해 바이트코드로 변환되어 가상머신에서 작동하는걸로만 알고있는데
몇가지 궁금한거 적어봅니다.
1. 바이트코드/가상머신 사용시 플랫폼 독립적인 장점 외에 또 다른 장점이 있는건지.
2. 바이트코드/가상머신 구조와 작동원리.
2. 제가 알고있는것 외에 가상머신, 바이트코드를 어떤곳에 활용할 수 있는지
4. 직접 간단하게 가상머신을 만드는것도 가능한지
갑자기 궁금해졌는데 자세히 좀 알고싶습니다. (__)
Forums:
> 1. 바이트코드/가상머신 사용시 플랫폼 독립적인
> 1. 바이트코드/가상머신 사용시 플랫폼 독립적인 장점 외에 또 다른 장점이 있는건지.
실행시간최적화(runtime optimization)가 유리하다는 정도? 물론 가상머신 없이도 실행시간최적화를 할 수 있겠지만
가상머신이 있는 쪽이 훨씬 편리하겠지요. 예를 들어 자바의 경우 대부분의 중요한 최적화는 컴파일타임이 아니라 런타임에 가상머신이 수행합니다.
> 2. 바이트코드/가상머신 구조와 작동원리.
책 한권 쓸 주제네요.
> 2. 제가 알고있는것 외에 가상머신, 바이트코드를 어떤곳에 활용할 수 있는지
알고계신 것이 무엇인지 분명치 않군요. 가상머신은 프로그램을 수행합니다.
당연히 컴퓨터 프로그램이 할 수 있는 모든 일을 할 수 있겠지요.
> 4. 직접 간단하게 가상머신을 만드는것도 가능한지
물론 가능합니다. 상상력을 동원해서 간단한 명령어 집합만 갖는 가상머신을 만들어보세요.
오픈소스 가상머신이 많이 있으니까 찾아보시는 것도 괜찮겠지요.
간단한 가상머신 만드는 블로그 시리즈나 책도 있을겁니다. 검색해보세요.
(우리말보다는 영어로 된 자료가 훨씬 많을겁니다.)
4번의 경우는 대학에서 배우는 시스템 프로그래밍에서 비슷한걸 다룹니다.
해당 과목에선 가상 환경을 만들고 거기에 맞는 어셈블러를 직접 제작하게 되는데요
그 자체가 훌륭한 가상 머신입니다. 단지 과목내에서 어셈블러랑 링커 제작만 하고 그것을 실제로 동작시켜볼 수 있는 가상머신 제작을 하지 않을 뿐.. (물론 대개 이미 다른사람이 만들어놓긴 했지요.)
이미 배우셨으면 한번 다시 책을 들춰보시는 것도 좋을 듯
자바, 닷넷, SQL외의 바이트코드 용례라면..
옛날 게임 등을 에뮬레이팅하는 에뮬레이터도 (개념은 좀 다르지만) 비슷한 로직이 들어감을 알 수 있습니다.
즉, 과거에 쓰인 게임 플랫폼에서 사용했던 기계어 코드들이 마치 요새 말하는 바이트 코드처럼 쓰여지는 셈이죠. 그래서 플랫폼별로 거의 동일하게 동작하게 되는 것입니다.
써놓고 보니 이미 VMWARE를 언급하셨군요. :)
--
그렇군요
어셈블러도 가상머신이 될수있는거군요.
자료 찾아봐야겠습니다 답변감사합니다~ ^^
오해하신듯합니다. 어셈블러가 가상머신인 것은
오해하신듯합니다. 어셈블러가 가상머신인 것은 아니지요.
가상머신을 만들고, 그 가상머신의 어셈블러를 작성하는겁니다.
아..
잘 모르니까 복잡하네요 ㅎㅎ 지적감사합니다 :)
제가 조금 애매하게 적긴 했네요
윗분 말씀대로 어셈블러가 가상머신이란게 아니고 과목에서 배우는 가상의 환경 자체가 가상머신이라는 뜻이었습니다.
--
댓글 달기