메모리 맵, 부트스트랩 관련 질문입니다.

maner07의 이미지

x86계열의 컴퓨터에서..
처음 컴퓨터가 시작되면 바이오스의 내용을 읽고 실행합니다.
그런데 이때 실행 되는 바이오스 코드는 RAM으로 읽어들여서
실행되는 것인가요? 아니면 그냥 CPU가 읽고 실행하는 것
뿐인가요?

그리고 책에 보면 다음과 같은 메모리 맵이 있는데
| |
~~~~~~~~~~~
| 확장 메모리 영역 |
---------------------- FFFF:FFFF
| 롬 바이오스 영역 |
---------------------- C000:0000
| 컬러 텍스트 모드 |
| 비디오 메모리 |
---------------------- B800:0000
| 흑백 텍스트 모드 |
| 비디오 메모리 |
---------------------- B000:0000
| 그래픽 모드 |
| 비디오 메모리 |
---------------------- A000:0000

여기서 쓰여 있는 주소는 실제 RAM의 주소를 말하는 것인가요?
요즘에 "만들면서 배우는 OS 커널의 구조와 원리"라는 책을
보고 있는데.. 보호모드의 인터럽트 관련 내용 중에 IDT가
메모리(RAM)의 0번 주소에 저장하는 코드가 있었습니다.
RAM의 0번은 IDT 관련 내용이 고정되어 저장되고 사용되는
것인가요?

답변, 관련 자료 뭐든지 정말 감사하게 받겠습니닷.
절실해요..ㅜ_ㅜ

정태영의 이미지

maner07 wrote:
x86계열의 컴퓨터에서..
처음 컴퓨터가 시작되면 바이오스의 내용을 읽고 실행합니다.
그런데 이때 실행 되는 바이오스 코드는 RAM으로 읽어들여서
실행되는 것인가요? 아니면 그냥 CPU가 읽고 실행하는 것
뿐인가요?

원래 mmaped I/O 는 CPU 가 바로 읽어들이는 겁니다만... pc 에서는 bios shadow 등의 방법을 통해 RAM 에서 읽어들이게도 할 수 있는걸로 압니다 ;)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

maner07의 이미지

정태영 wrote:

원래 mmaped I/O 는 CPU 가 바로 읽어들이는 겁니다만... pc 에서는 bios shadow 등의 방법을 통해 RAM 에서 읽어들이게도 할 수 있는걸로 압니다 ;)

음.. bios shadow라는 기법에 대해 찾아 보았습니다. RAM의 일부분을 ROM의 mirror 형태로 만들어서 그 영역을 CPU가 ROM
처럼 사용하는 것으로 설명이 되어 있더군요. 그럼 ROM의 코드가
올라가는 RAM의 영역(주소)이 고정되어 있는 것인가요? 또 그 영역은
나중에 커널이 올라가면 사라지게 되는 것인가요?

정태영의 이미지

memory mapped I/O 는 소프트웨어 적이 아니라 하드웨어 적으로 구성되는 것인데... OS 가 올라가고 말고랑은 상관 없지 않나요?

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

maner07의 이미지

음.. memory mapped I/O에 대해 좀더 공부하고 질문 드리겠습니다.

Necromancer의 이미지

memory mapped I/O는 메모리 특정어드레스를 CPU가 접근할 경우 실제 메모리가
아닌 어떤 장치로 날라가는거죠.. 일례로 비디오 메모리가 있죠. (0xa0000~
0xbffff사이에 데이터를 쓰게 되면 화면에 뭐가 쓰여지게 되죠)

memory mapped I/O 하드웨어쪽에서도 지원을 해 줘야 합니다.
해 줘야 합니다.

bios shadow 기술은
rom이 느리기 때문에 rom의 내용을 먼저 ram으로 복사해놓고 그걸 실행하는
걸로 알고 있습니다.

Written By the Black Knight of Destruction

댓글 달기

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