Build segmented 32-bit memory size

Should a 32-bit operating system operating with a segmented memory model still have a 4 GB limit ?

I read the Intel Pentium Processor Family Developer's Guide, and he claims that up to 64 TB can be mapped using a segmented memory model .

“In a segmented organization memory model, the logical address space consists of 16383 segments of up to 4 gigabytes each, or just 2 ^ 46 bytes (64 terabytes). The processor maps this 64 terabyte logical address space to the physical address space of the address translation mechanism described in Chapter 11. Application programmers can ignore the details of this mapping.The advantage of a segmented model is that the offset within each address space can be individually verified and access to each segment can be ndividualno under control.

alt text

This is not a difficult question. I just want to be sure that I understand the text correctly. If Windows or any other OS worked in a segmented model rather than a flat model, would the memory limit be 64 TB?


Update:

alt text

Intel System Documentation 3-2 3a.


alt text

http://pdos.csail.mit.edu/6.828/2005/readings/i386/c05.htm


. SELECTOR .

A: B . Real, A , B . > 32 . 32 0 4 . B 0 4Gb, 4Gb ( , ). . A . A . , (GDT). GDT . , .

, .

[ ] , . , , . x86-64 ( 0 0xFFFFFFFF), .

, , x86. . , , - .

, . 0x00000000 0xFFFFFFFF ( ). , , , .

- http://www.jamesmolloy.co.uk/tutorial_html/4.-The%20GDT%20and%20IDT.html

GDT, , , :

GDT

GDT[0] = {.base=0, .limit=0, .type=0};             
// Selector 0x00 cannot be used
GDT[1] = {.base=0, .limit=0xffffffff, .type=0x9A}; 
// Selector 0x08 will be our code
GDT[2] = {.base=0, .limit=0xffffffff, .type=0x92}; 
// Selector 0x10 will be our data
GDT[3] = {.base=&myTss, .limit=sizeof(myTss), .type=0x89}; 
// You can use LTR(0x18)

http://wiki.osdev.org/GDT_Tutorial#What_should_i_put_in_my_GDT.3F

- , . (PAE) - , 64 .

. : , 4 . 64TB Intel Pentium.

+3
5

: , " 4 " () , . , 4 - .


, :

16383 4

, " Intel® 64 IA-32 Architect Volume 1: " ( PDF ):

, , .

, ( 32- ) 4 . , .

+2
? DOS x86 64kb ? FAR ? ? XMS? , . .

, 32 , ? . 32- , 4Gb , .

, 32- 4 , , 4 ( 2 3 ).

+2

64 . , , , .

, 16 , 1 2 , 8 192 (13 ) , 8 192 4 32 GDT ( ) LDT (Local Descriptor Table). 64 , GDT, LDT 16384 .

, , " 4 ", "". 32- , , 512 (CS), 1 (SS) 4 (DS).

, 64 , , . - . , 32 . 32- Linux, , 4 ( /). , 4 .

, , . , . 32- . , , .

+1

AFAIK, "" - . , . ... ...

PAE. , , , 64- , , Kentucky Straight Bourbon Whisky.

0

Intel 16384 . , . , . , , 64- . , , , ( , , ) .., , 64- .

-1

Source: https://habr.com/ru/post/1771849/


All Articles