리눅스에서 virtual address를 사용하는 이유 및 몇가지 궁금증

naruto0202의 이미지

리눅스에서 가상주소를 굳이 사용하는 이유가 뭐죠? 장단점이 궁금합니다.
그리고, vmlinux.lds 화일을 보면 메모리맵이 설정이 되어있는데 이주소는 가상주소인가요 아니면 물리주소인가요?
ELF 화일을 로드해서 보이는 주소는 가상주소인가요?
실제 flash에 binary를 다운로드 할 경우에는 물리주소가 필요할텐데요. 만일 ELF 화일이 포함하고 있는것이 가상주소라면 binary 변환시 어떻게 물리주소로 매핑이 되는거죠? 물리주소 매핑은 일단 프로그램이 돌면서 MMU function이 돌아주어야 가능한 것 아닌가요?

Hyun의 이미지

흠... 가상주소는 page 를 이용한 메모리관리를 하면서 생긴건데(?) 메모리를 효율적으로 관리할 수 있게 해주죠... 대신 MMU라는 조금은 복잡한 메모리관리하드웨어를 요구하구요... OS에서도 조금은 복잡한 알고리즘의 메모리 관리정책이 필요하죠...
각각의 독립된 프로세스마다 독립된 메모리 영역을 제공해주기도 하지요...

흠... 글 쓰신걸 보니깐 임베디드 개발을 하시는거 같은데 커널(vmlinux)가 올라가는 메모리는 실제 물리주소는 0x00000000부터 올라가구요 이게 가상주소로 0xc0000000으로 매핑되죠...(실제 주소는 아키텍쳐마다 틀립니다)
부트로더가 압축된 vmlinux를 물리주소인 0x00000000에 압축을 풀어주고 그쪽(0x00000000)의 entry point로 점프해주면 vmlinux의 시작부분에서 mmu를 초기화 하고 자기자신을(0x00000000)을 0xc0000000으로 매핑시키죠...

흠... 가상주소나 page 메모리 관리는 컴퓨터과학등의 운영체제 과목에 자세히 나오구요... 아마 인터넷에 찾아봐도 자료가 많을 듯 합니다...
그리고 임베디드 아키텍쳐의 동작은... 실제 소스를 따라가면서 이해하는게 빠를 듯 합니다...

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.