x86 memory map 에 관한 공식 문서는?

link9의 이미지

OS 구조와 원리 책, 인텔 system programming guide 문서를 같이 보면서
처음으로 OS 에 대해 공부중인 학생입니다.

책에 보니 부트로더는 바이오스에 의해 0x7c00 주소에 올려진다.
비디오카드 메모리의 주소가 0xa0000 부터 0xaffff 까지다.

이런식으로 간단히 나와있는데 저런 주소는 누가 정해놓은걸까 하는궁금증이 생겨서 질문합니다.

위와 같은 '메모리 맵'은 누가 정의했고 표준화 한 것 인가요?
그리고 그런 스펙에 대한 공식 문서가 있나요?
( 예를 들면 PE 파일은 microsoft 홈페이지에서 specification 문서를 다운로드 할 수 있지요.. )

읽어주셔서 감사합니다.

ifree의 이미지

어흑. 저걸 보니 예전에 비디오 메모리에 직접 접근해서 프로그래밍 하던 기억이.

PC를 IBM 이 만들었으니 그 사람들이 정하지 않았을 까요?
16비트 시절에 64K 단위의 세그먼트를 16개 붙여서 1M를 만들었죠.
그 중 세그먼트 하나를 비디오 카드 메모리와 매핑시키는 방식.

그런데 지금도 저렇게 하나요?

Necromancer의 이미지

표준 vga까지는 지금도 똑같이 돌아가구요. 386, 486시절 많이 본 320x200x256, 640x480x16 까지.

일단 320x200x256까지는 64k 하나로 전부 커버됩니다.
그리고 640x480x16은 비트 플레인이라는 골때리는 방식을 씁니다. 윈래 1pixel당 4bit가 필요한데 MMIO 영역에는 1pixel당 1bit만 매핑시켜놓고, vga 레지스터로 색상 4bit 중 어느 비트를 바꿀건지 셋팅... 640x480x16은 일대일 매핑시키면 150k 정도 필요.
님이 말씀하신 64k 블럭 선택 방식이 super vga에서 많이 쓰는 bank switching인데, 이거 vga칩마다 bank 선정방법이 다 다르죠. VESA VGA도 이방식입니다.

지금 전용드라이버들 보면 32bit MMIO 를 하는거 같더군요. (기회 되면 X.org 로그나 윈도 vga 드라이버들의 메모리 사용영역 확인해 보시면 아실듯. 거의 0xf0000000 같은 32bit 끝주소를 쓰고 있음)

------------
p.s.
이 구조를 정의한 문서를 찾을려면 ibm에서 찾아야 할겁니다.
옛날 애플이 개인용 컴퓨터 내놓은 다음 ibm도 이 시장 먹을려고 pc를 만들었는데, 그때 그 구조를 전부 다 공개해서 이후 수많은 업체들이 이걸로 컴퓨터 만들고, 여기에 각종 기술이 추가되서 오늘날까지 온게 우리가 쓰는 컴퓨터입니다.
추가로 피닉스사 홈페이지에 바이오스 규격을 담은 PDF문서가 있는데 여기에 메모리 구조 관련 내용을 상당수 얻을 수는 있을겁니다. 이외에도 ralf brown's interrupt list라는 문서가 있고요. (x86, 도스 어셈블리 프로그래머라면 반드시 가지고 있어야 할 필수문서)

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

opt의 이미지

1. Programmer's Technical Reference for MSDOS and the IBM PC (흔히 DOSREF 라는 파일명으로 많이 불렀던 것)
: 내용 중 일부는 http://www.o3one.org/hwdocs/bios_doc/dosref22.html 에 있습니다.
2. HelpPC (MS-DOS용 프로그램으로 레퍼런스 상세 기록함).
3. Ralf Brown's interrupt list

http://www.synchrondata.com/pheaven/www/area72.htm 여기 뒤지면 나올 지도...

----
LUX ET VERITAS | Just for Fun!

----
LUX ET VERITAS | Just for Fun!

tj의 이미지

이 스팩 저 스팩에 퍼져있는 것들이라서 하나로 잘 정리된 공식 문서가 있을 거 같진 않습니다. PC 아키택쳐 정리해놓은 건 다음 책이 제일 나은 거 같구요. 왠만한 건 다 정리해놔서 이 책 읽는 게 PC 아키택쳐 익히는 데는 제일 편한 방법일 것 같습니다.

http://www.amazon.com/Indispensable-PC-Hardware-Book-4th/dp/0201596164

link9의 이미지

와.. 다들 대단하세요.
이곳은 정말 Geek(?) 분들이 많은것 같아요. ㅎㅎ
답변 정말 감사합니다.

cuky의 이미지

PC INTERN !

댓글 달기

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