1 Introdução - UFRGS

66
1 Introdução Usuário 1 Usuário 2 Usuário 3 Usuário n . . . Compilador Editor de texto Browser Quake Sistema operacional Hardware Figura 1.1 - Sistema computacional. Hardware Microkernel Kernel Aplicações chamadas de sistema serviços do microkernel Figura 1.2 – Organização do sistema em kernel e microkernel.

Transcript of 1 Introdução - UFRGS

Page 1: 1 Introdução - UFRGS

1 Introdução

Usuário1

Usuário2

Usuário3

Usuárion. . .

Compilador Editor detexto

Browser Quake

Sistema operacional

Hardware

Figura 1.1 - Sistema computacional.

Hardware

Microkernel

Kernel

Aplicaçõeschamadas de

sistemaserviços domicrokernel

Figura 1.2 – Organização do sistema em kernel e microkernel.

Page 2: 1 Introdução - UFRGS
Page 3: 1 Introdução - UFRGS

2 Multiprogramação

Programa Usuário 2

Programa Usuário 1

Sistema Operacional

Programa Usuário 3(32 Kbytes)

(64 Kbytes)

(256 Kbytes)

(160 Kbytes)

00000 H

3FFFF H40000 H

67FFF H68000 H

77FFF H78000 H

7FFFF H

Memória Principal Endereços

Figura 2.1 - Memória em um sistema com multiprogramação.

P1

P3 P4P2

P6 P7P5 P8 P9 P10

Figura 2.2 - Hierarquia de processos.

.

Page 4: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 4

Processador

Processo 1 Processo 3Processo 2

Figura 2.3 - Fila de processos esperando pelo processador.

Criação Apto Executando Destruição

Bloqueado

Ocorrênciade evento

(interrupçao)

Seleção Término

Chamada desistema

Figura 2.4 - Diagrama de estados de um processo.

Criação Apto Executando Destruição

Bloqueado

Ocorrênciade evento

(interrupçao)

Seleção Término

Tempo

Chamada desistema

Retornoimediato

Erro

Figura 2.5 – Novo diagrama de estados de um processo

Page 5: 1 Introdução - UFRGS

Capítulo 3 – Programação Concorrente 5

Processador

Processo 1

Impressora

Disco - unidade 0

Disco - unidade 1

Processo 3Processo 2

Processo 5Processo 4

Processo 6

Figura 2.6 - Filas do sistema operacional

Tempo

+ Periférico

Esc revec omando

Processador

Controlador

Exec utaLêresultado

Exec uta

Status LivreOcupado

Interrupç ão

Figura 2.7 - Linha de tempo quando interrupção é usada para implementar E/S.

Page 6: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 6

Programa original

Tratador do tipo 10

Tratador do tipo 5

TempoEsperando

Executando

Int 10 Int 5

Figura 2.8 - Ativação em cascata de tratadores de interrupção.

Memória PrincipalVetores de Interrupção

1

2

0

3

Tipoxxx

xxxyyy

yyy

TratadorTipo 0

TratadorTipo 1

Figura 2.9 - Tabela dos vetores de interrupção.

Sistema Operacionalem Modo Supervisor

Processo de Usuárioem Modo Usuário

Instrução "passa p/ modo usuário" (retorno de interrupção)

Interrupção de software (chamada de sistema)

Interrupção (periférico)

Interrupção (proteção)

Figura 2.10 - Modos de operação do processador.

Page 7: 1 Introdução - UFRGS

Capítulo 3 – Programação Concorrente 7

Processo Usuário 2

Processo Usuário 1

Sistema Operacional

Processo Usuário 3

00000 H

3FFFF H40000 H

67FFF H68000 H

77FFF H78000 H

7FFFF H

Memória Principal

Registrador Limite Inferior

Registrador Limite Superior

68000 H

77FFF H

Figura 2.11 - Proteção de memória com registradores de limite.

Processador

Registrador LimiteInferior

Registrador LimiteSuperior

Memória< >

Interrupção(Endereço Ilegal)

Interrupção(Endereço Ilegal)

Figura 2.12 - Hardware para verificação dos endereços.

Page 8: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 8

Page 9: 1 Introdução - UFRGS

Capítulo 3 – Programação Concorrente 9

3 Programação Concorrente

Arquivo Processo Impressorafísica

Figura 3.1 - Programa seqüencial acessando arquivo e impressora.

Disco

Processo

Impressora

TempoEsperando

Executando

Enviando dados

Figura 3.2 - Linha de tempo do programa seqüencial da Figura 3.1.

Page 10: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 10

Arquivo Processo

Impressorafísica

Processo

Leitor

Impressor

Buffer

Figura 3.3 - Programa concorrente acessando arquivo e impressora.

Disco

Processo

Impressora

TempoEsperando

Executando

Enviando dados

Processo

Leitor

Impressor

Figura 3.4 - Linha de tempo do programa concorrente da Figura 3.3.

PCPC PC

Usuários Servidor de Impressão

Figura 3.5 - Rede local incluindo um servidor de impressão dedicado.

.

Page 11: 1 Introdução - UFRGS

Capítulo 3 – Programação Concorrente 11

Receptor Transmissor

Protocolo

Escritor

Leitor Impressor

Figura 3.6 - Servidor de impressão como programa concorrente.

Figura 3.7 - Exemplo contendo os comandos create_process, exit e wait_process.

.

/* Programa principal */main(){

int f1; /* Identifica processo filho 1*/int f2; /* Identifica processo filho 2*/

printf("Alo do pai\n");

f1 = create_process( codigo_do_filho ); /* Cria filho 1 */

f2 = create_process( codigo_do_filho ); /* Cria filho 2 */

wait_process( f1);printf("Filho 1 morreu\n");

wait_process( f2);printf("Filho 2 morreu\n");

exit();}

/* Funcao executada pelos dois processos filhos */codigo_do_filho(){

printf("Alo do filho\n");exit();

}

Page 12: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 12

Figura 3.8 - Diagrama de tempo associado com o programa da Figura 3.7.

Figura 3.9 - Diagrama de tempo associado com o programa da Figura 3.7.

Page 13: 1 Introdução - UFRGS

Capítulo 3 – Programação Concorrente 13

A lo d o p a i

c r e a te _ p r o c e s s

c r e a te _ p r o c e s s A lo d o f i lh o

e x it A lo d o f i lh o

e x i tw a i t_ p r o c e s s f 1

f i lh o 1 m o r r e u

w a i t_ p r o c e s s f 2

f i lh o 2 m o r r e u

e x i t

Figura 3.10 – Grafo de precedência para o programa da Figura 3.7.

Figura 3.11 - Programa do exemplo 3.7 alterado.

/* Programa principal */main(){

int f1; /* Identifica processo filho 1*/int f2; /* Identifica processo filho 2*/

printf("Alo do pai\n");

f1 = create_process( codigo_do_filho ); /* Cria filho 1 */wait_process( f1);printf("Filho 1 morreu\n");

f2 = create_process( codigo_do_filho ); /* Cria filho 2 */wait_process( f2);printf("Filho 2 morreu\n");

exit();}

/* Funcao executada pelos dois processos filho */codigo_do_filho(){

printf("Alo do filho\n");exit();

}

Page 14: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 14

Figura 3.12 - Exemplo contendo os comandos Parbegin e Parend.

/* Programa principal */main(){

printf("Alo do pai\n");

Parbegin /* Define conjunto de execuções paralelas */codigo_do_filho(); /* Cria um filho */codigo_do_filho(); /* Cria outro filho */

Parend;

printf("Filho 1 morreu\n");printf("Filho 2 morreu\n");

}

/* Funcao executada pelos dois processos filho */codigo_do_filho(){

printf("Alo do filho\n");}

Page 15: 1 Introdução - UFRGS

Capítulo 3 – Programação Concorrente 15

Processo 1 Processo 2 Processo 1 Processo 2

(a) Compartilhamento total (b) Compartilhamento parcial

memória física

memórialógica

memórialógica

memórialógica

memórialógica

memória física

Figura 3.13 – Compartilhamento de memória.

Figura 3.14 - Código do processo Escritor.

void escritor( void){

struct registro *registro_novo;

... /* Novo registro é apontado por "registro_novo" */

/* Novo nome é sempre inserido no fim da fila */registro_novo->proximo = NULL;

if( inicio == NULL ){ /* Fila vazia */

inicio = registro_novo;fim = registro_novo;

}else

{ /* Fila não vazia */fim->proximo = registro_novo;fim = registro_novo;

}}

Page 16: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 16

Figura 3.15 - Código do processo Leitor.

inicio

fim

inicio

fim

inicio

fim

novo

inicio

fim

novo

(A)

(B)

(C)

(D)

abc

abc

abc

abc

Figura 3.16 - Diversos momentos da fila de nomes.

void leitor( void){

struct registro *ler;

...

/* Espera até existir algum nome na fila */while( inicio == NULL )

;

/* Retira o primeiro nome da fila */ler = inicio;inicio = inicio->proximo;

/* Se era o único, acerta apontador de fim da fila */if( inicio == NULL )

fim = NULL;

... /* Lê o arquivo cujo nome é indicado por "ler" */}

Page 17: 1 Introdução - UFRGS

Capítulo 3 – Programação Concorrente 17

X: ACC de P1: ACC de P2:0 ?

P1 executa MOVE X,ACC

X: ACC de P1: ACC de P2:0 0 ?

P1 executa INC ACC

X: ACC de P1: ACC de P2:0 1 ?

P2 executa MOVE X,ACC

X: ACC de P1: ACC de P2:0 1 0

P2 executa INC ACC

X: ACC de P1: ACC de P2:0 1 1

P2 executa MOVE ACC,X

X: ACC de P1: ACC de P2:1 1 1

P1 executa MOVE ACC,X

X: ACC de P1: ACC de P2:1 1 1

?

Figura 3.17 - Problema de seção crítica envolvendo uma única variável.

Pró xim a inse rç ã o

Pró xim a re m o ç ã o

Dado 1

Dado 2Dado 3

Dado 4

Figura 3.18 - Buffer circular com 4 entradas ocupadas.

Page 18: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 18

Figura 3.19 - Problema do Produtor-Consumidor com semáforos.

struct tipo_dado buffer[N];int proxima_insercao = 0;int proxima_remocao = 0;...semaphore exclusao_mutua = 1;semaphore espera_vaga = N;semaphore espera_dado = 0;...void produtor( void){ ...

P( espera_vaga );P( exclusao_mutua );buffer[ proxima_insercao ] = dado_produzido;proxima_insercao = ( proxima_insercao + 1 ) % N;V( exclusao_mutua );V( espera_dado );...

}...void consumidor( void){ ...

P( espera_dado );P( exclusao_mutua );dado_a_consumir = buffer[ proxima_remocao ];proxima_remocao = ( proxima_remocao + 1 ) % N;V( exclusao_mutua );V( espera_vaga );...

}

produtor_esperando = falseconsumidor_esperando = false

while( true ){ Receive( &id_processo_remetente, mensagem )

if( id_processo_remetente == id_processo_produtor ) /* do produtor */if( consumidor_esperando )

{ consumidor_esperando = falseSend( id_processo_consumidor, mensagem )Send( id_processo_produtor, confirmacao )}

else{ coloca mensagem no buffer circularif( buffer cheio )

produtor_esperando = trueelse Send( id_processo_produtor, confirmacao)}

else if( produtor_esperando ) /* do consumidor */{ Retira dado do buffer circular

Send( id_processo_consumidor, dado_do_buffer )produtor_esperando = falseSend( id_processo_produtor, confirmacao )}

else{ if( buffer vazio )consumidor_esperando = true

else{ Retira dado do buffer circularSend( id_processo_consumidor, dado_do_buffer)}

}

Page 19: 1 Introdução - UFRGS

Capítulo 3 – Programação Concorrente 19

Figura 3.20 - Processo intermediário no problema dos produtores e consumidores.

P4

P3

P5

P2P1

R1 R2 R3

Figura 3.21 - Gráfico representando processos e recursos.

Page 20: 1 Introdução - UFRGS
Page 21: 1 Introdução - UFRGS

4 Gerência do Processador

A

0 12 20 35 40

BCD

Figura 4.1 – Diagrama de tempo usando FIFO.

A

0 40

BCD

5 13 25 Figura 4.2 – Diagrama de tempo usando SJF.

.

Processo Prioridade Duração do próximo ciclo de processador A 3 12 (Unidades de tempo) B 4 8 " C 2 15 " D 1 5 "

Page 22: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 22

A

0 40

BCD

5 20 32 Figura 4.3 – Diagrama de tempo usando prioridades.

A

0 40

BCD

3 6 9 12 15 18 2823 34 Figura 4.4 – Diagrama de tempo usando fatias de tempo

Page 23: 1 Introdução - UFRGS
Page 24: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 24

5 Entrada e Saída

driverteclado

driverSCSI

driverEIDE

driverfloppy

driverrede

Hardware

E/S independente do dispositivo

E/S nível de usuário

Interface padrão para drivers de dispositivos (API)

Software

Sist

ema

oper

acio

nal

Figura 5.1 – Estrutura em camadas do subsistema de entrada e saída.

Figura 5.2 - Organização física do disco magnético.

Page 25: 1 Introdução - UFRGS

Capítulo 5 – Entrada e Saída 25

CilindroImaginário

Setor

Trilha

Figura 5.3 - Organização lógica da unidade de disco.

Cabeçoteleitura/escrita

Seek time

Trilha

Setor

Transfertime

Latencytime

Figura 5.4 – Componentes do tempo de acesso a um disco.

Page 26: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 26

01

234

56

8 79

1011

1213

1415 0

1

23

4

5

6

8

7

9

10 11

12

13

14

15

Fator de entrelaçamento = 0Disco 1 Disco 2

Fator de entrelaçamento = 2

Figura 5.5 - Trilha com 16 setores e diferentes fatores de entrelaçamento.

1A

1B

1C

1DDisco 1 Disco 2

RAID 1

1A

1B

1C

1D

2A

2B

2C

2D

3A

3B

3C

3D

4A

4B

4C

4DDisco 1 Disco 2 Disco 3 Disco 4

RAID 0

1A

1B

1C

1D

1A

1B

1C

1D

2A

2B

2C

2D

3A

3B

3C

3D

AP

BP

cP

DPDisco 1 Disco 2 Disco 3 Disco 4

RAID 3

1A

1B

1C

DP

2A

2B

cP

1D

3A

BP

2C

2D

AP

3B

3C

3DDisco 1 Disco 2 Disco 3 Disco 4

RAID 5

Figura 5.6 – Configurações RAID mais comuns.

Page 27: 1 Introdução - UFRGS

6 Gerência de Memória

.

MemóriaMMU

Endereço EndereçoLógico Físico

Processador

Figura 6.1 - Diagrama incluindo a MMU entre o processador e a memória.

.

Page 28: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 28

Processador

Registrador LimiteInferior

Registrador LimiteSuperior

Memória< >

Interrupção(Endereço Ilegal)

Interrupção(Endereço Ilegal)

123 123

100 799

sim

não não

sim

Figura 6.2 - Mecanismo de proteção para a memória com registradores de limite.

Processador

Registrador de Limite Registrador de Base

Memória> +

Interrupção(Endereço Ilegal)

123 623

200 500

sim

não

Figura 6.3 - Mecanismo de proteção para a memória com registradores de base e limite.

Memória Física

Sistema Operacional - 225 Kbytes

Partição 1 - 200 Kbytes

Partição 2 - 100 Kbytes

Partição 3 - 50 Kbytes

Partição 4 - 25 Kbytes

Figura 6.4 - Memória física dividida em partições fixas.

Page 29: 1 Introdução - UFRGS

Capítulo 6 – Gerência de Memória 29

.

Page 30: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 30

Memória Física

Sistema Operacional

Processo 1 - 174 Kbytes

Processo 2 - 98 Kbytes

Processo 3 - 23 Kbytes

Lacuna - 80 Kbytes

Processo 4

85 Kbytes225 Kbytes

Memória Física

Sistema Operacional

Processo 1 - 174 Kbytes

Processo 4 - 85 Kbytes

Processo 3 - 23 Kbytes

Lacuna - 80 Kbytes

225 Kbytes

(a ) (b )

Lacuna - 13 Kbytes

Figura 6.5 - Memória física dividida em partições variáveis.

Page 31: 1 Introdução - UFRGS

Capítulo 6 – Gerência de Memória 31

.

Memória Lógica Memória Física000 00000 01000 10000 11001 00001 01001 10001 11010 00010 01010 10010 11

000 00000 01000 10000 11001 00001 01001 10001 11010 00010 01010 10010 11

100 00100 01100 10100 11

011 00011 01011 10011 11

101 00101 01101 10101 11

X1X2X3X4Y1Y2Y3Y4Z1Z2Z3Z4

X1X2X3X4

Y1Y2Y3Y4

Z1Z2Z3Z4

Tabela de PáginasPág.Lógica Pág.Física

000

001

010

010

101

000

End.Lógico de Y2

001

End.Físico de Y2

101 01 01

Figura 6.6 - Mecanismo básico de paginação.

Page 32: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 32

.

.

Page 33: 1 Introdução - UFRGS

Capítulo 6 – Gerência de Memória 33

dpt dp.f.

Diretório das Tabelasde Páginas

Tabela de Páginas

Tabela de Páginas

Figura 6.7 - Tabela de páginas organizada em dois níveis.

Memória LógicaMemória Física

000000000100010000110010000101

000000000100010000110010000101001100011101000010010101001011

10000100011001010011

01100011010111001111

10100101011011010111

C1C2C3C4

P1P2P3

D1D2D3D4

Tabela de SegmentosSegmento Base

00

01

10

01000

00000

10100

C1C2C3C4C5C6

Limite

C5C6

0110

0100

0011

00000000010001000011

D1D2D3D4

000000000100010

P1P2P3

Segmento 00 - Código

Segmento 01 - Dados

Segmento 10 - Pilha

Page 34: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 34

Figura 6.8 - Gerência de memória baseada em segmentos.

dps dp.f.

Tabela de Segmentos

Tabela de Páginas

Tabela de Páginas

do Segmento 0

do Segmento 3

Figura 6.9 - Esquema clássico para segmentação paginada.

.

Page 35: 1 Introdução - UFRGS

7 Memória Virtual

Memória Lógica

A

B

C

D

E

F

G

H

Memória Física

C

D

G

Disco

A

B

C

D

E

F

G

H

Tabela de Páginas

01234567 0

1234567

0123456789

101112131415

i

i

i

i

i

v

v

v10

3

4

Figura 7.1 - Mecanismo básico da paginação por demanda.

Page 36: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 36

Memória Lógica

A

B

C

D

Memória Física

E

G

Disco

A

B

C

D

Tabela de Páginas

0123

0123

012345

i

v

v

0

5

Memória Lógica

E

F

G

H

0123

do Processo 1

do Processo 2Tabela de Páginas

0123 i

v

v4

3

do Processo 2

do Processo 1

E

F

G

H

F

A

B

D

1

v

2

v

Figura 7.2 - Sistema hipotético com dois processos.

Memória Lógica

A

B

C

D

Memória Física

E

H

Disco

A

B

C

D

Tabela de Páginas

0123

0123

012345

i

v

v

0

5

Memória Lógica

E

F

G

H

0123

do Processo 1

do Processo 2Tabela de Páginas

0123

i

v

v4

3

do Processo 2

do Processo 1

E

F

G

H

F

A

B

D

1

v

2

v

Figura 7.3 - Sistema da Figura 7.2 após uma substituição de página.

Page 37: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 37

String referência 2 3 1 a b 3 1 1 c d 1 a Página física 0 2 2 2 2 b b b b b b b a Página física 1 3 3 3 3 3 3 3 c c c c Página física 2 1 1 1 1 1 1 1 d d d Página física 3 a a a a a a a 1 1

Página lógica a ser substituída 2 2 2 2 3 3 3 3 1 a b c tempo 1 2 3 4 5 6 7 8 9 10 11 12

Figura 7.4 – Algoritmo FIFO para substituição de páginas.

String referência 2 3 1 a b 3 1 1 c d 1 a Página física 0 2 2 2 2 b b b b b d d d Página física 1 3 3 3 3 3 3 3 3 3 3 a Página física 2 1 1 1 1 1 1 1 1 1 1 Página física 3 a a a a a c c c c

Página lógica a ser substituída 2 2 2 2 3 1 a a b 3 3 c tempo 1 2 3 4 5 6 7 8 9 10 11 12

Figura 7.5 – Algoritmo LRU para substituição de páginas.

Page 38: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 38

Histórico dos Bits de Referência após cada amostragem

Tempo

P0P1P2P3P4P5P6P7

Amostra

P3 P1

Amostra AmostraAmostra

P3 P1 P2 P0 P1 P2 P7 P2 P7 P0 P6

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

1

0

0

0

0

1

0

0

1

0

0

0

0

1

0

1

1

1

0

0

0

1

0

1

1

1

0

0

0

1

0

1

1

1

0

1

0

0

0

1

1

0

0

1

0

0

0

1

1

0

0

1

1

0

0

1

0

1

Páginas Acessadas

P0P1P2P3P4P5P6P7

P0P1P2P3P4P5P6P7

P0P1P2P3P4P5P6P7

Figura 7.6 - Construção do histórico de bits de referência.

.

...2 6 1 5 7 7 7 7 5 1 6 2 2 6 1 2 3 4 4 4 4 3 4 3 4 4 4 1 3 2 3 4...

t1 t2Páginas {1, 2, 5, 6, 7} Páginas ={ 3,4}

τ = 10

Figura 7.7 – Algoritmo ótimo (local).

.

...2 6 1 5 7 7 7 7 5 1 6 2 2 6 1 2 3 4 4 4 4 3 4 3 4 4 4 1 3 2 3 4...

t1 t2Working set={1, 2, 5, 6, 7} Working set ={ 1,2,3,4}

τ = 10

Figura 7.8 – Algoritmo local Working set.

.

Page 39: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 39

Seletor Deslocamento16 bits 32 bits

Índice T RPL1 bit 2 bits13 bits

0 = Seletor da GDT (Global Descriptor Table)1 = Seletor da LDT (Local Descriptor Table)

Figura 7.9 - Formato de um seletor no Intel 386.

Page 40: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 40

Registrador GDT

Registrador LDT

Base GDT Limite GDT

32 bits 16 bits

Seletor p/LDT Descritor da LDT16 bits

Registrador CS Seletor p/CS Descritor do CS16 bits

Registrador DS Seletor p/DS Descritor do DS

Registrador SS Seletor p/SS Descritor do SS

Registrador ES Seletor p/ES Descritor do ES

Registrador FS Seletor p/FS Descritor do FS

Registrador GS Seletor p/GS Descritor do GS

Registrador Sombra

Registrador Sombra

Figura 7.10 - Registradores sombra no Intel 386.

P DPL 1 1 C R A

Byte de acesso para Segmento de Código

P DPL 1 0 ED W A

Byte de acesso para Segmento de Dados

Figura 7.11 - Byte associado com controle de acesso em segmentos de código e de dados.

Page 41: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 41

Endereço Linear10 bits 10 bits 12 bits

deslocamentopáginatabela

CR3

Diretório de Páginas

Tabela de Páginas

Tabela de Páginas

20 bits 12 bitsdeslocamentopágina física

Endereço Físico

Figura 7.12 - Esquema de paginação do 80386.

Page 42: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 42

8 Sistema de Arquivos

Arquivo

A

B

C

D

E

F

Ler Arquivo...

A

Ler ArquivoB

Ler ArquivoC

Figura 8.1 - Acesso seqüencial.

.

Page 43: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 43

Arquivo

A

B

C

D

E

F

Ler Arquivo, posição 2...

C

Ler Arquivo, posição 4E

Ler Arquivo, posição 0A

Figura 8.2 - Acesso relativo.

Arquivo

A

B

C

D

E

F

Le rA i

...

C

Le rA i

E

Le rA i

A

Po sic io n a r e m 4

Po sic io n a r e m 0

Po sic io n a r e m 2

Figura 8.3 - Acesso relativo usando o conceito de posição corrente.

Page 44: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 44

TDAAPos. Cor. 12Leitura

TAAP do processo 0

Pos. Cor. 10Leitura

TAAP do processo 1

Pos. Cor. 55Leit. & Escr.

Arquivo A

Arquivo B

0

1

2

3

0

2

2 4

0

1

0

Figura 8.4 - Emprego conjunto das tabelas TAAP e da tabela TDAA.

Page 45: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 45

ab

cd

ef

gh

ij

Posição

Arquivo no DiscoREAD( Handle, Var, 4 )

Correntecd

ef

gh

Memória do Memória doSistema Operacional Processo

defg

Var:

Figura 8.5 - Montagem e desmontagem de blocos lógicos.

Page 46: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 46

.

Page 47: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 47

DiscoBlocoFísico 0

123456789

10

1211

13

BL 0

BL 1

BL 2

BL 3

BL 4

BL 5

DescritorInício: 3

Tamanho: 6

Figura 8.6 - Alocação contígua de arquivos.

DiscoBlocoFísico 0

123456789

10

1211

13

BL 0

BL 1

BL 2

BL 3

BL 4

BL 5

DescritorInício: 3

Tamanho: 68

5

1

7

11

-1

Figura 8.7 - Alocação encadeada de arquivos.

Page 48: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 48

DiscoBlocoFísico 0

123456789

10

1211

13

BL 0

BL 1

BL 2

BL 3

BL 4

BL 5

Descritor

Indices:

Tamanho: 6

8

5

1

7

11

30123456789

Figura 8.8 - Alocação indexada de arquivos.

Page 49: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 49

0123456789

101112

... ...

Bloco de dados (4 Kbytes)

... Bloco de apontadores( 1024 apontadores de 4 bytes)

...

...

...

...

...

...

...

...

...

...

...

...

1024 * 4K

1024 * 1024 * 4K

...

...

1024 * 1024 * 1024 * 4K

...

10 * 4K

... ...

Figura 8.9 - Emprego de apontadores diretos e indiretos.

Page 50: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 50

DiscoBlocoFísico 0

123456789

10

1211

13

BL 0

BL 1

BL 2

BL 3

BL 4

BL 5 DescritorTamanho: 6

10

0 1

2

30123456789

3

End. N. Blocos

Figura 8.10 - Alocação indexada-contígua de arquivos.

Page 51: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 51

Tabela com descritores virtuaisdos arquivos abertos

tipocontador de usodados dependentes

. . .

tipocontador de usodados dependentes

. . .

. . .

Descritor do S.A. 1openreadwrite

dados

tab. descritores. . . Tab. descritores

Sist. Arq. 1tamanholocalizaçãodireitosetc

. . .

. . .

Descritor do S.A. 2openreadwrite

dados

tab. descritores. . . Tab. descritores

Sist. Arq. 2tamanholocalizaçãodireitosetc

. . .

. . .

Figura 8.11 - Estrutura de dados para suportar múltiplos sistemas de arquivos.

HASH( partiç ão, número do b loc o )

conteúdo do blocoinformações adicionais

LRU - iníc io LRU - fim

Page 52: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 52

Figura 8.12 - Cache do sistema de arquivos.

DiscoBlocoFísico

0123456789

10

1211

13

Mapa de Bits.

1415

0 0 1 0 1 0 1 0

0 0 1 1 0 0 0 0

Figura 8.13 - Gerência do espaço livre através de mapa de bits.

DiscoBlocoFísico

0123456789

10

1211

131415

2467

89

1011

1415

Figura 8.14 - Gerência do espaço livre através de lista de endereços.

Page 53: 1 Introdução - UFRGS

Capítulo 8 – Sistema de Arquivos 53

usretc bin

whols Mailpasswd mariajoao

so teste

hosts

trabteste

trab2trab1

Figura 8.15 - Diretório organizado na forma de árvore.

usretc bin whols Mail

passwd

mariajoão

so testehosts

trabteste

trab2trab1

Partição 1 Partição 3Partição 2

Figura 8.16 - Montagem de uma partição em um subdiretório.

Page 54: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 54

"etc"

"usr"

"bin"

atributoslocalização

atributoslocalização

atributoslocalização

conteúdo doarquivo "/usr"

conteúdo doarquivo "/bin"

"passwd"

"hosts"

atributoslocalização

atributoslocalização

conteúdo doarquivo "/etc/passwd"

conteúdo doarquivo "/etc/hosts"

Figura 8.17 - Diretórios contendo descritores de arquivos.

"etc"

"usr"

"bin"2

3

conteúdo doarquivo "/usr"

conteúdo doarquivo "/bin"

"passwd"

"hosts"4

5

conteúdo do "/"

conteúdo do "/etc"atributoslocalização

atributoslocalização

atributoslocalização

atributoslocalização

atributoslocalização

atributoslocalização

0

1

2

3

4

5

conteúdo doarquivo "/etc/passwd"

conteúdo doarquivo "/etc/hosts"

1

sistema de arquivos flat

Figura 8.18 - Diretórios contendo apenas nomes e endereços de descritores de arquivos

Page 55: 1 Introdução - UFRGS

9 Linux

.

deslocamentoNivel_2 Nivel_3Nivel_1

Endereço virtual

Diretóriointermediário

Tabela depáginas

PáginaDiretórioglobal

Figura 9.1 – Paginação a três níveis

Page 56: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 56

64K32K

32K

16K

16K

0

1

2

3

4

5

6

7

Free_area (antes)

0

1

2

3

4

5

6

7

Free_area (depois)

Figura 9.2 – Alocação de memória (página física) no Linux.

Bloco deboot grupo 0 grupo n

Superbloco

Descritoresde grupo

Bitmapbloco dados

Bitmapi-nodos

Tabelade i-nodos Blocos de dados

1 bloco n blocos 1 bloco 1 bloco n blocos n blocos

Figura 9.3 – Organização de blocos em uma partição ext2.

Page 57: 1 Introdução - UFRGS

Capítulo 9 - Linux 57

Indireção duplaIndireção tripla

Indireção simples

blocos diretos

Timestamps Tamanho

Informações Modo

Dados

Dados

Dados

DadosDados

Dados

Dados

Figura 9.4 – Estrutura de i-nodos do sistema de arquivos ext2.

Impressora Disco IDE Disco IDEtty0 tty1

Drivertty

Driverimpressora

Driverdisco

Dispositivos blocoDispositivos caractere

Virtual File System

Chamadas de sistema (API)

Processo 1 Processo 2 Processo n

Figura 9.5 – Organização em camadas da gerência de entrada e saída.

Page 58: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 58

Nome Tipo Major Minor Descrição

/dev/fd0 bloco 2 0 Unidade de disquete 0 (driver A)

/dev/fd1 bloco 2 1 Unidade de disquete 1 (driver B)

/dev/hda bloco 3 0 Disco IDE primário

/dev/hda1 bloco 3 1 Primeira partição do disco IDE primário

/dev/hda2 bloco 3 2 Segunda partição do disco IDE primário

/dev/hdb bloco 3 64 Segundo disco IDE

/dev/hdb1 bloco 3 65 Primeira partição do disco IDE secundário

/dev/tty0 caractere 3 0 terminal

/dev/lp1 caractere 4 1 Impressora paralela

/dev/console caractere 1 1 teclado

Tabela 9.1 – Exemplos de arquivos de dispositivo.

Page 59: 1 Introdução - UFRGS

10

Windows 2000

Modo Kernel

Modo Usuário

Controlador deServiços

WinLogon

Gerenciador deSessão

Processos do Sistema

Replicador

Alerta

RPC

Serviços

Registro deEventos

POSIX

OS/2

Win32

Subsistemas do ambiente

ActiveDirectory

NT5

Aplicações

Usuários

DLLs

Interfaces de hardware (barramento, I/O, interrupções, temporizadores, etc.)

Executivo

HAL: Hardware Abstraction Layer

Drivers de dispositivos Núcleo

Sist. deArquivos

Gerência deE/S

API do Executivo

Gerenciador de Objetos/Bibliotecas do Executivo

Gerênciade LPC

Gerênciade

MemóriaVirtual

Gerênciade

Processos

Plug&Play(E/S)

NT5

Monitor deSegurança

Gerência deEnergia

NT5

Gerência deJanelas

Driver dedispostivo gráfico

Figura 10.1 – Componentes da estrutura do Windows 2000

Page 60: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 60

Término

Ativo

ExecuçãoAptoPreempção

Chaveamento decontexto

Escalonamento

EsperaTransição Término

Bloquear/suspender

Desbloquear(recurso não disponível)

Desbloquear(recurso disponível)

Recursodisponível

Figura 10.2 – Diagrama de estados de threads no Windows 2000

Prioridade 0

Prioridade 15

Prioridade 14

Prioridade 16

Prioridade 31

Prioridade 30

ClasseTempo real

Classevariável

Figura 10.3 – O esquema de prioridade do Windows 2000

Page 61: 1 Introdução - UFRGS

Capítulo 10 – Windows 2000 61

FFFFFFFF

7FFFFFFF80000000

00000000

Espaço de endereçamentodefault do Windows 2000

Espaço destinadoao

Processo usuário

Espaço destinadoao

Sistema Operacional

Processo 1 Processo 1 Processo n

iii

Figura 10.4 – Layout do espaço de endereçamento virtual do Windows 2000

Índice do diretório depágina

Índice da tabela depágina

Índice o byte

Diretório de página:um por processo,1024 entradas.

Bloco descritorde processo

Page Frame Num.

Entrada do diretóriode página

Tabelas de página: até512 tabelas para

processo e até 512tabelas para osistema, 1024

entradas por tabela.

Page Frame Num.

Entrada databela de

página Memória física(paginada)

Páginadesejada

Bytedesejado

Figura 10.5 – Esquema de tradução de endereço virtual para endereço físico em arquiteturas Intel

Page 62: 1 Introdução - UFRGS
Page 63: 1 Introdução - UFRGS

Anexo A Montadores, Ligadores e

Carregadores

Fonte Montador/Carregador Memória

Figura A.1 - Montador/Carregador.

Fonte

Montador

Executável Carregador (SO) Memória

Figura A.2 - Montador e Carregador independentes.

Page 64: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 64

Módulo A

Montador

Executável Carregador (SO) Memória

Objeto A

Módulo B

Montador

Objeto B Objeto C

Ligador

Figura A.3 - Montador, Ligador e Carregador independentes.

.

Opcode

Endereço do operando

Opcode

Endereço do primeiro operando

Opcode

Endereço do segundo operando

Formato 1:

Formato 2:

Formato 3:

Figura A.4 – Formatos de instruções da máquina hipotética.

Page 65: 1 Introdução - UFRGS

Capítulo 10 – Windows 2000 65

Opcode Simbólico

Opcode Numérico

Tamanho Número de Operandos

Ação

ADD 01 2 1 ACC ← ACC + mem(OP) SUB 02 2 1 ACC ← ACC − mem(OP) MUL 03 2 1 ACC ← ACC × mem(OP) DIV 04 2 1 ACC ← ACC ÷ mem(OP) JMP 05 2 1 PC ← OP JMPN 06 2 1 se ACC<0 então PC← OP JMPP 07 2 1 se ACC>0 então PC← OP JMPZ 08 2 1 se ACC=0 então PC← OP COPY 09 3 2 mem(OP2) ← mem(OP1) LOAD 10 2 1 ACC ← mem(OP) STORE 11 2 1 mem(OP) ← ACC INPUT 12 2 1 mem(OP) ← entrada OUTPUT 13 2 1 saída ← mem(OP) STOP 14 1 0 Suspende execução

Tabela A.1 – Conjunto de instruções da máquina hipotética.

Fonte com macros

Processador de Macros

Fonte sem macros Montador

Figura A.5 - Processador de macros.

Page 66: 1 Introdução - UFRGS

Sistemas Operacionais – Rômulo de Oliveira, Alexandre Carissimi, Simão Toscani 66

Módulo A

CALL SUBROT

. . .

. . .

Módulo B

SUBROT:

. . .

. . .

Figura A.6 - Exemplo de referência cruzada.