ebx bh bl ss cs 3 ecx ch cl eax ah al...
TRANSCRIPT
03-11-2010
1
06/03/2005
51
3rd Generation Processor 386
• P3 (386) = 3rd Generation Processor
• Introduced: 10/1985
• Full 32b processor(32b registers. 32b internal and external databus. 32b address bus)
• 275k transistors. CMOS. 132-pin PGA package.(Supply current Icc=400mA. Roughly the same as 8086 !)
• Clock speeds: 16-33MHz
• P3 processors were far ahead of their time:It took 10 years before 32b operating systems became mainstream!
• First 386 PCs early 1987(COMPAQ)
06/03/2005
52
80386 Features
• 32b general and offset registers
• 16B prefetch queue
• Memory management unit with segmentation unit and paging unit
• 32b address and data bus
• 4GB physical address space
• 64TB virtual address space
• i387 numerical coprocessor
• Implementation of real, protected and virtual 8086 modes
Intel 80386 80386 Register Set
EIP IP
31 16 15 0
FLAG
31 16 15 E0
EFLAG
AH
31 16 15 0
AL
78
BH BL
EAX
EBX
CH CLECX
DH DLEDX
SIESI
DIEDI
BPEBP
SPESP
Instruction Pointer EFLAG Register
General-Purpose RegistersSegment Registers
15 0
CS
SS
DS
ES
FS
GS
06/03/2005
55
80386 Operating Modes
• Protected Mode for Multitasking support– Processes can run in Virtual 8086 mode.
• Real Mode (native 8086 mode)– Processor powers up in Real Mode
• System Management Mode– Power management or system security
– Processor switches to separate address space, while saving the entire context of the currently running program or task
06/03/2005
56
Coprocessor: i387
• The hardware implementation of floating
point processing in the i387 means floating
point operations run at much higher speed.
• The i386 can execute all mathematical
expressions using software emulation of the
i387.
03-11-2010
2
Sistema 386DX Endereçamento 386
Base
Índice
Escala1,2,4,8
Deslocamento
Endereço Efectivo
Base Índice Escala Deslocamento
EAXECXEDXEBXESPEBPESIEDI
EAXECXEDXEBXEBPESIEDI
0deslocamento de 8 bits
deslocamento de 32 bits
1248
MOV EAX, [EBX+ESI*4+46]
XCHG BX, [EBP+EDI*2]
Exemplo de Endereçamento 386typedef struct
{
float x;
float y;
} Ponto2D;
Ponto2D Hexagono[6];
…
float xi = Hexagono[i].y;
x0
y0
x1
...
xi
...
yi
Hexagono
i y
sizeof(Ponto2D)
Pode ser compilado para:
mov eax, [ EBX+ ESI*8 + 4 ]
Segmentação
Segmentação
Endereço lógico
Segmentação
16 32
Registo de base detabela de segmentos
Tabela de segmentos
Endereço linear
Descritor de Segmento
03-11-2010
3
Memória segmentada Registos Descritores
Protecção LDT / GDT
Requester Privilege Level
Níveis de Privilégio
CPL (Current Privilege Level) – Privilégio do código em execução
RPL (Request Privilege Level) – Privilégio solicitado para acesso à memória.
EPL (Efective Privilege Level ) = MAX(CPL,RPL)
Níveis de Privilégio
03-11-2010
4
Protecção de dados
CPL
>
RPL
EPL<=DPL
EPL>DPL
EPL
Acesso permitido
Acesso negado
Protecção de dados
Protecção de dados – exemplo 1
O programa do code segment A consegue aceder ao data segment Eutilizando o selector de segmento E1
• porque: EPL = MAX ( CPL=2, RPL=2 ) = 2 <= DPL = 2
Protecção de dados – exemplo 2
O programa do code segment B consegue aceder ao data segment Eutilizando o selector de segmento E2
• porque: EPL = MAX ( CPL=1, RPL=1 ) = 1 <= DPL = 2
Protecção de dados – exemplo 3
O programa do code segment C não consegue aceder ao data segment Eutilizando o selector de segmento E3
• porque: EPL = MAX ( CPL=3, RPL=3 ) = 3 > DPL = 2
Protecção de dados – exemplo 4
O programa do code segment D não consegue aceder ao data segment Eutilizando o selector de segmento E3
• porque: EPL = MAX ( CPL=0, RPL=3 ) = 3 > DPL = 2
03-11-2010
5
Conforming segment
• contém código que pode ser chamado a partir de diversos níveis de privilégio mas é executado com o nível de privilégio do chamador.
• Numa chamada a uma rotima num segmento “conforming”, o CPL não é alterado.
• Nestes casos, o CPL (do CS) pode ficar diferente do DPL .
Protecção de código
Call Gate Call Gate
Task Gate/ TSS
Task State Structure
Segmentação / Paginação
03-11-2010
6
Alocação de memória linear 1
OS
process 5
process 8
process 2
OS
process 5
process 2
OS
process 5
process 2
OS
process 9
process 2
process 9
process 10
OS OS
process 5
OS
process 5
process 2
Alocação
Alocação de memória linear 2 Algoritmos de Alocação
bloco alocado
bloco livre
bloco a alocar ( )16K
22K6K
6K
6K
8K
8K
2K
12K
20K
12K
6K
22K
8K
8K
18K
12K
36K
12K
Next Fit
LastAllocatedBlock (14K)
Best Fit
First Fit
Wost Fit
First FitA lista de blocos livres é percorrida sequencialmente desde o início.
É selecionado o primeiro bloco de tamanho suficiente.
Next FitGuarda a posição da última alocação
Pesquisa sequencialmente para a frente.
Best FitSeleciona o menor bloco livre suficiente
Worst Fit
Seleciona o maior bloco livre.
BuddyCom partição binária do espaço de memória
Buddy Alocation Memória Paginada
page# frame#
A memória física é dividida em frames.
A memória linear é dividida em páginas da mesma dimensão.
A tabela de páginas identifica a frame de cada página.
A Paginação permite que blocos de memória linear sejam
alocados em zonas não contínuas da memória física
03-11-2010
7
Paginação Paginação
4
5
6
Alocação de memória paginada 1 Alocação de memória paginada 2
Paginação a 2 níveis
Physical memory
Paginação a 2 níveis
03-11-2010
8
Paginação 386
Paginação
10 10 12
Endereço linear
Memória física
Página
Tabela de páginas
Directório de tabelas de páginas
Registo de base dedirectório de páginas
Page Table Entry
P - Present
P = 1 A página está presente e pode ser acedida
P = 0 A página não está presente.Os restantes 31 bits pode ser utilizadospara,por exemplo, indexar a página no disco.
A -Accessed
D -Dirty
U / S - User / Supervisor
R / W - Read Write
Valid bit
• With each page table entry a valid–invalid bit is associated(1 in-memory, 0 not-in-memory)
• Initially valid–invalid but is set to 0 on all entries.
• Example of a page table snapshot.
• During address translation, if valid–invalid bit in page table entry is 0 page fault.
1
1
1
1
0
0
0
Frame # valid-invalid bit
page table
TLB 386