15. 옛날 옛적 Segment
1982년 인텔은 80286 CPU를 출시
Proteced Mode(보호 모드) 추가
어드레스 버스 24bit, 16MB 메모리 사용 가능
세그먼트 디스크립터가 추가
- 세그먼트 레지스터가 세그먼트 셀렉터 바뀜
가상 메모리 관리 가능 -
세그먼트 limit 체크
Read-only and execute-only 세그먼트 옵션
4단계 권한 레벨
16. 옛날 옛적 Segment
1985년 인텔은 80386 CPU를 출시
레지스터, 어드레스 버스 모두 32bit
4GB의 물리 메모리 지원
MMU(Memory Management Unit) 포함
- 메모리 관리 및 메모리 할당을 하드웨어에서 어느정도 제공
20. Segment Selector
Index : 8192개의 세그멘트 디스크립터 중 하나를 선택한다. Index * 8을 GDT의 Base 주소에 더함
TI : 이 셀렉터가 가리키는 세그먼트 디스크립터가 GDT에 있는지, LDT에 있는지를 나타낸다
RPL : 특권 레벨
25. Segment Descriptor
Granularity : 비트가 세팅 (1) 되어 있을 경우 단위가 4KB가 되어
세그먼트 한계 주소는 4GB 가 된다. 반대로 G 비트가 클리어 (0)
되었을 경우 단위는 1Bit가 되어 최대 1MB 의 한계 값을 가진다.
26. Segment Descriptor
Present : 세팅 (1) 되어 있을 경우 해당 세그먼트는 물리 메모리
에 올라와 있어 접근 가능함을 의미
클리어 (0) 되었을 경우 해당 세그먼트 디스크립터가 가리키는 메
모리는 접근할 수 없다
27. Segment Descriptor
default operation size/default stack pointer size and/or upper bound
이전 프로세서들과의 호환성을 위한 특징 중 하나
386의 보호모드에서 286 코드가 실행되는 것을 가능하게 하는데 만약 세그먼트를 코드가 사용하고
이 때 D 비트가 0인 경우 프로세서는 그 코드의 내용을 16비트 코드로 해석. 1이면 32비트 코드로 해석
데이터 혹은 스택 세그먼트로 사용되어질 경우 D 비트가 0인 스택 세그먼트에서는 16비트 폭으로 SP가 증가,
감소하게 되며 1일 경우 32비트 폭으로 증가, 감소하게 된다
28. Segment Descriptor
Type : 시스템(S) 비트 연관되어 해당 세그먼트의 특성을 나타내는 역할을 한다. S 비트가
Clear ( 0 ) 되어 있으면 해당 세그먼트는 시스템 세그먼트로 사용되고, Set ( 1 ) 되어 있
으면 해당 세그먼트는 코드 또는 데이터 세그먼트로 사용된다.
Type Field 의 최상위 비트는 해당 세그먼트가 데이터 세그먼트인지 ( 0 ) 코드 세그먼트
인지 ( 1 ) 나타낸다.
30. Global Descriptor Table(GDT)
세그먼트 디스크립터는 모든 Task에 전역적으로 존재할 수 있는 그룹
과 어떤 한 Task에 종속적으로 존재할 수 있는 그룹이 있을 수 있으며
이러한 그룹을 디스크립터 테이블(DT)라 부른다
DT에는 여러 디스크립터들이 순차적인 배열 형태로 저장되어 있다
GDT : 모든 프로그램이 참조할 수 있는 세그먼트 디스크립터들의 모임
LDT : 멀티태스킹 환경에서 각 Task 단위로 정의할 수 있는 것
36. CR(Control Register)3
Windows 운영체제뿐만 아니라 멀티스레딩을 지원하는 운영체제에서
CR3 레지스터는 매우 중요한 역할을 하게 되는데, 바로 이 레지스터에
의하여 각각의 프로세스가 독립적인 메모리 주소 공간을 가질 수 있기
때문이다
즉, Windows에서는 프로세스의 스위칭이 일어날 때마다 CR3 레지스
터의 페이지 디렉토리 주소를 바꿔줌으로써 해당 프로세스가 사용하
는 가상 메모리를 전혀 다른 물리적 주소와 매핑시킬 수 있게 한다
45. Page Table
D (Dirty) : 해당 페이지의 내용이 수정될 경우 자동으로 세트된다.
indicates whether software has written to the 4-KByte page
referenced by this entry
46. Page Table
PAT : PAT 플래그가 세팅되어 있으면 메모리 타입을 결정할 수 있다
If the PAT is supported, indirectly determines the memory type
used to access the 4-KByte page referenced by this entry.
otherwise, reserved (must be 0)
47. Page Table
G (Global) : if CR4.PGE = 1, determines whether the translation
is global (see Section 4.10); ignored otherwise
48. Page Table
G (Global) : 이 비트와 CR4의 PGE(Page Gloal Enable) 플래그가 세트
되어 있을 경우 운영체제에서 CR3 레지스터를 변경하여 메모리 변환에
사용되는 페이지 디렉토리를 변경한다 할지라도 TLB의 내용에서 이 페이
지에 대한 정보를 리셋하지 않도록 해준다.
이러한 행위는 커널 코드와 같이 모든 프로세스에서 공통적으로 사용되
는 내용에 대하여 새로운 TLB의 내용으로 갱신을 수행하지 않게 하므로
프로세스의 메모리 변환을 보다 효율적으로 만들어주게 된다.