2010-02-07 5 views
2

도스의 기본 메모리 (주먹 640kB)에는 운영 체제, 드라이버 및 실행 프로그램이 포함되어 있습니다. 이러한 프로그램 간의 충돌을 피하기 위해이 메모리를 어떻게 배치합니까? 예를 들어, 해당 주소 공간의 일부가 예약되어 있습니까?도스의 기본 메모리 레이아웃

답변

4

DOS는 EXE가로드 될 때 DOS 의해 지정된 메모리 블록에 대한 올바른 상대적으로 메모리 참조를 재배치 EXE header 정보를 이용하여 프로그램을 메모리에로드

http://www.frontiernet.net/~fys/rombios.htm .

그렇다면 아무 것도 프로그램이 OS, 장치 드라이버 등을 방해하지 못하게한다는 것입니다. 모든 메모리 위치를 읽고 쓸 수 있습니다. 이 기법은 일반적으로 예를 들어. TSR programs (다시 쓰기 interrupt vector table)으로 키보드, 타이머, 마우스 또는 그와 유사한 장치를 연결 한 다음 메모리에 남아있는 동안 종료하십시오.

1

DOS 메모리 레이아웃 here에 대한 자세한 내용은 여기를 참조하십시오.

+0

이 기사가 실제 모드 주소 공간에서의 충돌 문제에 대한 대답이라고 생각하지 않습니다. – abc

1

이 자세히 들어가는

+0

지도가 좋지만 주소 0x900의 653,056 바이트에 관심이 있습니다. 컴파일러는 내 프로그램 (리얼 모드로 실행)이 드라이버를 말하는 것과 충돌하지 않는다는 것을 어떻게 보장합니까? – abc

+1

DOS 자체가 프로그램을 여유 메모리의 맨 아래에로드하고 나머지는 DOS에 멀티 태스킹하지 않으므로 사용할 수있는 여유 메모리가 있습니다. 드라이버, TSR 등에는 프로그램이로드되는 메모리의 최하부 (bottom of memory)를 늘리거나 메모리 상단으로 자르는 메모리가 할당됩니다 (일반적으로 BIOS 확장은이를 수행합니다). C 컴파일러를 사용하는 경우 DOS에 사용 가능한 메모리가 있는지 묻습니다. 어셈블러에서 수행하는 경우 두 번째 16 비트 워드는 프로그램 위에 예약 된 메모리 세그먼트 인 http : //docs.huihoo를 보유합니다. co.kr/help-pc/table-Program_Segment_Prefix.html –

+0

+ vote. 그 의견과 에릭 제이의 대답은 제가 찾고있는 것입니다. 감사. – abc

관련 문제