하드디스크 관련 프로그래밍을 하는데 궁금한게 있습니다.
글쓴이: binoopang / 작성시간: 목, 2009/04/30 - 10:58오후
안녕하세요 :)
제가 NTFS 하드디스크가 부팅되는 과정을 분석하고 있습니다 +_+
MBR에서 BR로 넘어와서 OS가 부팅된다고 하더군요 ..
궁금한게 ..
MBR에도 일련의 x86으로 된 기계어 코드들이 있고 BR 섹터의 가장 첫 번째
3바이트 또한 기계어 코드더라구요..
가장 궁금한건 BR에서 첫 번째 3바이트가 점프 코드였습니다. EB 52 90 인데 ..
이게 지금 가상메모리 공간을 뜯어볼 수 있다면 쉽게 이해 하겠는데 아무래도
이 기계어 코드가 해석될 때 가상메모리 상황을 모르니 어디로 정확히 점프하는지
알 수가 없네요 ..
아니 아직 운영체제가 부팅되기 전이니까 가상메모리가 아닌건가요?
그럼 혹시 이 순간에 하드디스크의 몇 번째 섹터가 메모리에 매핑되는지 알 수 있을까요?
그러면 매핑된 섹터의 시작점으로 부터 0x9052 만큼 떨어진 곳으로 가보면 부팅 코드가 있을까요??
궁금합니다 +_+
Forums:
점프 명령 EB는 +127 ~ -128 바이트 범위의 상대 점프입니다.
EB 52라고 되어 있으면 그 다음 위치(그러니까 시작점에서 2 바이트 이후 지점)에서 +0x52 바이트 뒤 지점을 가리킵니다. (즉, 시작점에서 0x54 바이트 이후 위치입니다) 그 사이 공간에는 디스크 할당 정보가 들어 있습니다. EB 52 다음의 90은 NOP 명령입니다.
그리고 부트 레코드의 512바이트 코드 내에서는 가상 메모리 개념을 동원할 필요가 없습니다. 리얼 모드로 부팅하므로 20비트 주소 계산만 주의하시면 큰 문제가 없을겁니다.
아하 .. 그런거였군요 +_+
EB가 .. 뒤 2바이트 전체를 가지는 줄 알았는데 1바이트만이었나요?? ㅠㅠ
감사합니다 .. 많은 도움 되었네요 헤헷 ///
-------- 시그내쳐 ---------
열심히 열심히 열심히 ..
음악을 하는것 처럼!!
댓글 달기