16비트 기반의 DOS 환경에서 사용할 수 있는 물리적 메모리는 1MB인 것에 비해 주소를 참조하는 것은 당시 2^16=64KB 영역에서 밖에 접근을 못 했다. 

한 줄 요약 : 사용자가 접근할 수 있는 메모리 영역이 64KB 밖에 안된다.


여기서 1MB는 2^20이므로 사용할 수 있는 레지스터의 범위가 확장되어야 한다. 사람들은 어떻게 하면 레지스터를 확장할까 고민했고 이에 대한 결론으로 2개의 레지스터를 활용하는 방안이 채택됐다. 하지만 매번 2개의 레지스터를 활용하면 32비트만큼 중 20비트만 사용하기 때문에 12비트의 자원이 낭비하는 일이 발생하게 됐다.


그래서 사람들은 이를 대체하기 위해 세그먼트라는 현재 사용할 수 있는 메모리 영역을 정하고 내부에서 오프셋이라는 개념을 사용하여 추가적으로 메모리를 세밀하게 접근할 수 있도록 규정했다. 이를 이용하여 16비트 기반의 환경에서도 1MB만큼의 메모리 영역을 참조하는 것이 가능해졌다.


세그먼트 예시 ) 5000:1234h -> 51234h (실제 주소)


WRITTEN BY
흉내지빠귀

트랙백  0 , 댓글  0개가 달렸습니다.
secret