Sistemas Operativos Endereços reais e virtuais

Propaganda
Sistemas Operativos
Memória partilhada
Endereços reais e virtuais
!
Endereçamento real – o endereço indicado pelo programa é
exactamente o que é acedido na memória física da máquina
–
–
!
Endereçamento virtual – os endereços gerados pelos
programas são convertidos (em tempo de execução) em
endereços físicos (os endereços vistos pelo programador
deixam de ter relação directa com a memória existente na
máquina)
–
–
2
Único tipo de endereçamento suportado pelos primeiros
computadores
Uma, de várias, desvantagens é a dimensão dos programas ser
limitada pela dimensão da memória física do computador
A palavra referenciada pelo endereço virtual pode estar em
memória primária ou memória secundária
Resolve vários problemas do endereçamento real
Luísa Jorge
Sistemas Operativos
1
Memória partilhada
!
!
!
Parte do espaço de endereçamento virtual de um
processo pode corresponder a uma região de
memória comum a vários processos – memória
partilhada
A utilização de memória partilhada não se restringe
a processos com grau de parentesco directo
A sincronização no acesso à zona de memória
partilhada, pelos vários processos, tem que ser
explicitamente programada (é comum controlar os
acessos através de semáforos)
3
Luísa Jorge
Sistemas Operativos
Utilização de memória partilhada
1.
2.
3.
Uso de uma primitiva que permite criar uma região de
memória partilhada e que simultaneamente lhe atribui um
identificador
A primitiva de associação devolve um ponteiro, no espaço
de endereçamentos virtual do processo, a partir do
identificador
O identificador pode ser usado por outro processo que
pretenda usar a região de memória criada, utilizando a
primitiva de associação
–
4.
4
a primitiva de associação devolve um ponteiro, no espaço de
endereçamentos virtual do processo, que corresponde à mesma
região de memória física a que o 1º processo acede
Uso de outra primitiva que permite eliminar a região de
memória
Luísa Jorge
Sistemas Operativos
2
Sistemas Operativos
Memória partilhada –
primitivas em Unix
Criar ou identificar uma zona de
memória partilhada – primitiva shmget
!
É necessário fornecer:
–
O valor da chave
!
!
–
O tamanho da zona de memória partilhada (em bytes)
–
Combinação (ou lógico bit-a-bit) :
!
!
!
6
A constante IPC_PRIVATE ou
Outro nº inteiro
– Geralmente fornecido em hexadecimal (ex: 0x1a2b3c4d)
– Pode ser construído usando a função ftok
do valor das permissões de acesso com
a indicação de se pretender criar uma nova zona de memória ou
a indicação de se pretender criar uma zona de memória, mas no caso
de esta já existir, obter apenas a identificação
Luísa Jorge
Sistemas Operativos
3
Criar ou identificar uma zona de
memória partilhada – primitiva shmget
!
Obtém-se:
–
O identificador da zona de memória
partilhada criada (nº inteiro que passa a
ser usado para referir a zona criada)
! Este
identificador pode diferir entre diferentes
execuções do programa mesmo se for usada
a mesma chave
7
Luísa Jorge
Sistemas Operativos
Permissões de acesso e outros
valores
!
Permissões de acesso de leitura/escrita, em octal
–
!
Combinadas com:
–
–
–
8
Ex: 0400, 0200, 0600 permissão de leitura, escrita ou
leitura/escrita pelo utilizador, respectivamente; 0440
permissão de leitura pelo utilizador e pelo grupo
IPC_CREAT - criar uma zona de memória partilhada se
ainda não existe, caso contrário fornece a identificação da
zona de memória partilhada existente
Ou com, IPC_CREAT e IPC_EXCL – se se pretende criar
uma nova zona de memória partilhada (erro se já existir)
Estes valores são ignorados se a chave usada for
IPC_PRIVATE
Luísa Jorge
Sistemas Operativos
4
Download