옛날 PC 메모리/IO 맵이 있지요 - 640kbytes 기본 메모리, 비디오 카드 메모리, PC 바이오스, 그외 ISA 호환 어댑터들의 롬과, IO 영역등.
요샌 누가 ISA 관련해서 뭐 만들려고 하지를 않기 때문에 이런 지식들은 알아봐야 별 쓸모없는 것들이랍니다. 그런데 또 제대로 알려고 하면 시간도 많이 걸리는 것들이구요. 굳이 아시고 싶으시다면, 도서관이나 헌 책방에서 'IBM PC XT/AT architecture' 이런 종류의 책을 찾아서 보시면 되지만...
0xa0000 아래와 위로 나뉘는데 0xa0000위는 시스템영역이고, 그 아래는
도스가 쓰는 데이터영역입니다. 소위 도스의 640k 메모리 제한이 여기에서
나온거죠.
(0xa0000은 메모리 절대주소를 말한겁니다. 0xa0000을 10진수로 환산하게
되면 딱 640k가 됩니다.)
대충 알기로는 0xa0000-0xbffff 영역은 비디오램과 대응됩니다. 대응방법은
비디오카드종류나 모드별로 틀리고요. 이거를 생각없이 액세스하게 되면
화면이 깨져 나오죠 :lol:
0xc0000부터가 비디오카드 바이오스
시스템 바이오스는 0xf0000에 위치하는데, 바이오스마다 위치가 다 틀립니다.
나머지 0xd0000 영역은 다른 장치 바이오스나 드라이버들이 위치합니다.
안쓰면 비어있는거고요.
(예전 도스시절에 UMB라고 불리는 영역이었죠. 640k 확보한답시고 여기다
드라이버나 램상주 프로그램들을 올렸었죠. 주로 0xd0000에 집중됐던 거 같은데)
그리고 0xa0000아래 (640k 아래 영역이죠.)중에 바이오스가 쓰는 영역이 있다면
0-0x3ff까지는 int 벡터 테이블이고, 0x400부터는 바이오스 데이터 기록 영역이
있습니다. (크기가 생각 안나네요.) 얘네들 잘못건들면 시스템 크래쉬됩니다.
그리고 바이오스 종류 중 몇가지는 640k 끝부분의 1-2K 정도를 잡아먹는게
있습니다.
먼저, 자세한 답변에 감사합니다. 의외로 그부분에 대한 데이터가 없더라구요 ^^ 정말 감사합니다.
그리고 죄송한데, 추가질문!! ^^;
흠 그럼 그 H/W Reserved 되어 있는 영역에는 실제 물리 메모리가 없는건가요? 아니면 Mapping 되어있는 그런 형식인가요? 만약 mapping 되어 있다면, 커널을 mapping하지 않게 수정하거나 다른영역으로 mapping 하게 한다면 그 부분을 실제로 사용할 수 있을까요?
옛날 PC 메모리/IO 맵이 있지요 - 640kbytes 기본 메모리,
옛날 PC 메모리/IO 맵이 있지요 - 640kbytes 기본 메모리, 비디오 카드 메모리, PC 바이오스, 그외 ISA 호환 어댑터들의 롬과, IO 영역등.
요샌 누가 ISA 관련해서 뭐 만들려고 하지를 않기 때문에 이런 지식들은 알아봐야 별 쓸모없는 것들이랍니다. 그런데 또 제대로 알려고 하면 시간도 많이 걸리는 것들이구요. 굳이 아시고 싶으시다면, 도서관이나 헌 책방에서 'IBM PC XT/AT architecture' 이런 종류의 책을 찾아서 보시면 되지만...
0xa0000 아래와 위로 나뉘는데 0xa0000위는 시스템영역이고, 그
0xa0000 아래와 위로 나뉘는데 0xa0000위는 시스템영역이고, 그 아래는
도스가 쓰는 데이터영역입니다. 소위 도스의 640k 메모리 제한이 여기에서
나온거죠.
(0xa0000은 메모리 절대주소를 말한겁니다. 0xa0000을 10진수로 환산하게
되면 딱 640k가 됩니다.)
대충 알기로는 0xa0000-0xbffff 영역은 비디오램과 대응됩니다. 대응방법은
비디오카드종류나 모드별로 틀리고요. 이거를 생각없이 액세스하게 되면
화면이 깨져 나오죠 :lol:
0xc0000부터가 비디오카드 바이오스
시스템 바이오스는 0xf0000에 위치하는데, 바이오스마다 위치가 다 틀립니다.
나머지 0xd0000 영역은 다른 장치 바이오스나 드라이버들이 위치합니다.
안쓰면 비어있는거고요.
(예전 도스시절에 UMB라고 불리는 영역이었죠. 640k 확보한답시고 여기다
드라이버나 램상주 프로그램들을 올렸었죠. 주로 0xd0000에 집중됐던 거 같은데)
그리고 0xa0000아래 (640k 아래 영역이죠.)중에 바이오스가 쓰는 영역이 있다면
0-0x3ff까지는 int 벡터 테이블이고, 0x400부터는 바이오스 데이터 기록 영역이
있습니다. (크기가 생각 안나네요.) 얘네들 잘못건들면 시스템 크래쉬됩니다.
그리고 바이오스 종류 중 몇가지는 640k 끝부분의 1-2K 정도를 잡아먹는게
있습니다.
640k에서 이들을 제외한 나머지가 실제 쓸 수 있는 영역이 됩니다.
Written By the Black Knight of Destruction
저도 찾아본다하면서 전부터 미루고 있었는데 흑기사님덕에 알게되서 감사합니
저도 찾아본다하면서 전부터 미루고 있었는데 흑기사님덕에 알게되서 감사합니다.
먼저, 자세한 답변에 감사합니다. 의외로 그부분에 대한 데이터가 없더라구
먼저, 자세한 답변에 감사합니다. 의외로 그부분에 대한 데이터가 없더라구요 ^^ 정말 감사합니다.
그리고 죄송한데, 추가질문!! ^^;
흠 그럼 그 H/W Reserved 되어 있는 영역에는 실제 물리 메모리가 없는건가요? 아니면 Mapping 되어있는 그런 형식인가요? 만약 mapping 되어 있다면, 커널을 mapping하지 않게 수정하거나 다른영역으로 mapping 하게 한다면 그 부분을 실제로 사용할 수 있을까요?
/ / / // // / /// / / / // // / // // // / / / ////// // /
/ / // // / /// / / / // // / // // // / / / /// // // / /
/ / // // / /// / / / // // / // // // / // //...rainbird
요새는 거의 다 mapping 형식으로 알고 있습니다. 대응되는 영역의
요새는 거의 다 mapping 형식으로 알고 있습니다. 대응되는 영역의 시스템
램은 존재하지만 안쓰는거죠.
하지만 그 부분을 어떻게 구현하는가에 대해서는 정해져 있지 않습니다.
따라서 저장용으로는 안 건드는게 좋죠.
shadow 기능이 있는 바이오스들은 시작시에 자기 자신을 롬에서 시스템
메모리로 복사합니다.
그리고 참조할 만한 문서로는 ralf brown's interrupt list라는게 있습니다.
한번 검색해 보시기 바랍니다. 바이오스를 건들거나 16bit 프로그래밍을 해야 할
경우 반드시 필요한 자료입니다.
단, 이 문서는 도스시절에 쓰였던 각종 interrupt service를 백과사전식으로
나열한 거여서 자료 찾기가 힘들기 때문에 처음 답글 다신 분이 소개한 책을
보셔야 할겁니다.
답변 달아주신분들 정말 감사합니다 ^^;좋은하루들 되세요! 많은 도움
답변 달아주신분들 정말 감사합니다 ^^;
좋은하루들 되세요! 많은 도움이 될듯합니다.
애매한 문제들이 조금씩 해결될 기미가 보이네요 ^^
다시한번 감사드립니다.
/ / / // // / /// / / / // // / // // // / / / ////// // /
/ / // // / /// / / / // // / // // // / / / /// // // / /
/ / // // / /// / / / // // / // // // / // //...rainbird
댓글 달기