가상머신, 바이트코드 질문.

livey의 이미지

sqlite 를 공부중인데 sql문이 컴파일되면 바이트코드로 변환되어 sqlite 만의 가상머신VDBE 에서 실행된다고하는데 가상머신이라는건 자바나 닷넷 vmware 등만 생각했는데 sqlite 에도 가상머신이 있다는게 좀 놀라웠습니다.

플랫폼 독립적인 처리를 위해 바이트코드로 변환되어 가상머신에서 작동하는걸로만 알고있는데
몇가지 궁금한거 적어봅니다.


1. 바이트코드/가상머신 사용시 플랫폼 독립적인 장점 외에 또 다른 장점이 있는건지.
2. 바이트코드/가상머신 구조와 작동원리.
2. 제가 알고있는것 외에 가상머신, 바이트코드를 어떤곳에 활용할 수 있는지
4. 직접 간단하게 가상머신을 만드는것도 가능한지


갑자기 궁금해졌는데 자세히 좀 알고싶습니다. (__)

익명 사용자의 이미지

> 1. 바이트코드/가상머신 사용시 플랫폼 독립적인 장점 외에 또 다른 장점이 있는건지.

실행시간최적화(runtime optimization)가 유리하다는 정도? 물론 가상머신 없이도 실행시간최적화를 할 수 있겠지만
가상머신이 있는 쪽이 훨씬 편리하겠지요. 예를 들어 자바의 경우 대부분의 중요한 최적화는 컴파일타임이 아니라 런타임에 가상머신이 수행합니다.

> 2. 바이트코드/가상머신 구조와 작동원리.

책 한권 쓸 주제네요.

> 2. 제가 알고있는것 외에 가상머신, 바이트코드를 어떤곳에 활용할 수 있는지

알고계신 것이 무엇인지 분명치 않군요. 가상머신은 프로그램을 수행합니다.
당연히 컴퓨터 프로그램이 할 수 있는 모든 일을 할 수 있겠지요.

> 4. 직접 간단하게 가상머신을 만드는것도 가능한지

물론 가능합니다. 상상력을 동원해서 간단한 명령어 집합만 갖는 가상머신을 만들어보세요.
오픈소스 가상머신이 많이 있으니까 찾아보시는 것도 괜찮겠지요.
간단한 가상머신 만드는 블로그 시리즈나 책도 있을겁니다. 검색해보세요.
(우리말보다는 영어로 된 자료가 훨씬 많을겁니다.)

mirheekl의 이미지

해당 과목에선 가상 환경을 만들고 거기에 맞는 어셈블러를 직접 제작하게 되는데요
그 자체가 훌륭한 가상 머신입니다. 단지 과목내에서 어셈블러랑 링커 제작만 하고 그것을 실제로 동작시켜볼 수 있는 가상머신 제작을 하지 않을 뿐.. (물론 대개 이미 다른사람이 만들어놓긴 했지요.)
이미 배우셨으면 한번 다시 책을 들춰보시는 것도 좋을 듯

자바, 닷넷, SQL외의 바이트코드 용례라면..
옛날 게임 등을 에뮬레이팅하는 에뮬레이터도 (개념은 좀 다르지만) 비슷한 로직이 들어감을 알 수 있습니다.
즉, 과거에 쓰인 게임 플랫폼에서 사용했던 기계어 코드들이 마치 요새 말하는 바이트 코드처럼 쓰여지는 셈이죠. 그래서 플랫폼별로 거의 동일하게 동작하게 되는 것입니다.
써놓고 보니 이미 VMWARE를 언급하셨군요. :)

--

livey의 이미지

어셈블러도 가상머신이 될수있는거군요.
자료 찾아봐야겠습니다 답변감사합니다~ ^^

익명 사용자의 이미지

오해하신듯합니다. 어셈블러가 가상머신인 것은 아니지요.
가상머신을 만들고, 그 가상머신의 어셈블러를 작성하는겁니다.

livey의 이미지

잘 모르니까 복잡하네요 ㅎㅎ 지적감사합니다 :)

mirheekl의 이미지

윗분 말씀대로 어셈블러가 가상머신이란게 아니고 과목에서 배우는 가상의 환경 자체가 가상머신이라는 뜻이었습니다.

--

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.