최상의 답변
세그먼트는 연속적인 메모리 청크입니다. 세그먼트 메모리 체계에서 프로세스의 모든 메모리는 세그먼트에 있습니다. 최초의 가상 메모리 시스템 (Burroughs B5000, Mulitcs)은 RAM 안팎으로 복사되는 가변 크기 세그먼트를 기반으로했습니다.
프로그램은 각 세그먼트를 세그먼트 레지스터에 대한 오프셋으로 참조합니다. 세그먼트 레지스터의 실제 내용은 시스템에 의해 제어됩니다. 시스템은 세그먼트 레지스터가 사용될 때 세그먼트가 참조되는시기를 인식하고이를 사용하여 가상 메모리를 관리합니다.
이는 페이징
과 대조됩니다. span> 가상 메모리는 오늘날 모든 곳에서 사용되며 여기서 가상 메모리의 퀀텀은 고정 된 크기의 메모리 청크입니다. 페이징은 더 복잡하고 더 많은 하드웨어 지원이 필요합니다.
MIT의 Multics는 현대 컴퓨팅에 막대한 영향을 미쳤습니다 (Unix 및 Linux에 통합 된 많은 아이디어 포함). Fred Pollack은 MIT에서 갓 나온 Intel 286 프로젝트에 참여했습니다. 그는 8086 “세그먼트”레지스터 (실제로는베이스 레지스터)를보고 Multics에서와 같이 이러한 실제 세그먼트 레지스터를 만들기 위해 성공적으로 로비했습니다. (Fred는 나중에 Intel Fellow가되었습니다.)
286의 64KB 세그먼트는 Multics 세그먼트와 동일한 문제를 겪었습니다. 너무 작았습니다. 메모리 구조에 액세스하기 위해 너무 자주 여러 세그먼트가 필요합니다. 즉, 세그먼트 레지스터를 다시로드하고 종종 OS에 관여하게됩니다. 성능 분할에 대한 영향으로 인해 거의 사용되지 않았고 세그먼트 레지스터는 8086 호환 모드에서 기본 레지스터로 사용되었습니다.
32 비트 Intel 386은 세그먼트 체계 (meh ). 64 비트 Intel 아키텍처 모델은 여전히 8086으로 돌아가는 호환성 모드를 가지고 있지만 세그먼트 레지스터를 완전히 제거합니다.
답변
1. 세그먼트 레지스터 란 무엇입니까?
-> 우리 모두는 레지스터가 프로세서에 존재한다는 것을 알고 있습니다. 우리는 메모리에 세그먼트를 생성합니다 (세그먼트).이 세그먼트의 시작 위치를 얻기 위해 세그먼트 레지스터에이 세그먼트의 주소를 저장합니다. 짧은 세그먼트 레지스터는 메모리에있는 세그먼트의 시작 위치, 즉 세그먼트 주소를 저장합니다.
3. 메모리 분할은 어떻게 이루어 지나요?
-> 메모리 분할은 16 비트 주소를 사용하여 수행됩니다. 먼저 세그먼트 주소 (세그먼트 시작)를 제공합니다. 세그먼트 주소를 제공 한 후 해당 세그먼트의 위치에 액세스하기 위해 오프셋 주소 ()를 제공합니다.
세그먼트 주소는 오프셋 주소를 제공 한 후 한 번만 제공합니다.
세그먼트 주소와 프로그래머로서 16 비트 주소의 오프셋 주소.이 주소를 제공 한 후이 주소를 모두 물리적 주소 (실제 주소)로 변환하는 것은 프로세서의 의무입니다.
물리적 주소 = 세그먼트 주소 * 10 + 오프셋 주소
= 1000 * 10 + 2345
= 12345H