Escolar Documentos
Profissional Documentos
Cultura Documentos
Compilador
Editor de texto
Browser
Quake
Sistema operacional
Hardware
2 Multiprogramao
Memria Principal Sistema Operacional (256 Kbytes) Programa Usurio 1 (160 Kbytes) Programa Usurio 2 (64 Kbytes) Programa Usurio 3 (32 Kbytes) 3FFFF H 40000 H 67FFF H 68000 H 77FFF H 78000 H 7FFFF H Figura 2.1 - Memria em um sistema com multiprogramao. Endereos 00000 H
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
Trmino Destruio
Chamada de sistema
Bloqueado
Figura 2.4 - Diagrama de estados de um processo.
Trmino Destruio
Chamada de sistema
Retorno imediato
Erro
Bloqueado
Exec uta
L resulta d o
Figura 2.7 - Linha de tempo quando interrupo usada para implementar E/S.
Int 10
Int 5
Esperando Executando
Tempo
Tipo 0 1 2 3
Memria Principal
Instruo "passa p/ modo usurio" (retorno de interrupo) Interrupo (perifrico) Interrupo (proteo) Interrupo de software (chamada de sistema)
Memria Principal 00000 H Sistema Operacional 3FFFF H 40000 H Processo Usurio 1 67FFF H 68000 H Processo Usurio 2 77FFF H 78000 H Processo Usurio 3 7FFFF H Registrador Limite Inferior 68000 H Registrador Limite Superior 77FFF H
Processador
<
>
Memria
3 Programao Concorrente
Arquivo Processo Impressora fsica
Tempo
10
Arquivo
Processo Leitor
Buffer
Processo Impressor
Impressora fsica
Disco Processo
Leitor
Processo
Impressor
Impressora
Tempo
PC
Usurios
PC
PC
Servidor de Impresso
11
Receptor
Transmissor
Protocolo
Escritor
Leitor
Impressor
12
13
A lo d o p a i
c re a te _ p ro c e s s
A lo d o f i lh o
c re a te _ p ro c e s s
e x it
A lo d o f i lh o
w a it_ p r o c e s s f 1
e x it
f il h o 1 m o r r e u w a it_ p r o c e s s f 2
f il h o 2 m o r r e u
e x it
/* 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 ); wait_process( f1); printf("Filho 1 morreu\n"); f2 = create_process( codigo_do_filho ); wait_process( f2); printf("Filho 2 morreu\n"); exit(); } /* Funcao executada pelos dois processos filho */ codigo_do_filho() { printf("Alo do filho\n"); exit(); } /* Cria filho 1 */
/* Cria filho 2 */
14
/* Programa principal */ main() { printf("Alo do pai\n"); Parbegin /* Define conjunto de execues 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"); }
15
memria fsica
memria fsica
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 no vazia */ fim->proximo = registro_novo; fim = registro_novo; } }
16
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" */
inicio
abc
(A)
fim
inicio
(B)
fim
abc
inicio
(C)
fim novo
abc
inicio
(D)
fim novo
abc
17
X:
ACC de P1:
ACC de P2:
ACC de P1:
ACC de P2:
ACC de P1:
ACC de P2:
ACC de P1:
ACC de P2:
ACC de P1:
ACC de P2:
ACC de P1:
ACC de P2:
ACC de P1:
ACC de P2:
Pr xim a in se r o
Dado 4 Dado 3
Dado 1 Dado 2
Pr xim a re m o o
18
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 = false consumidor_esperando = false while( true ) { Receive( &id_processo_remetente, mensagem ) if( id_processo_remetente == id_processo_produtor ) /* do produtor */ if( consumidor_esperando ) { consumidor_esperando = false Send( id_processo_consumidor, mensagem ) Send( id_processo_produtor, confirmacao ) } else{ coloca mensagem no buffer circular if( buffer cheio ) produtor_esperando = true else 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 = false Send( id_processo_produtor, confirmacao ) } else{ if( buffer vazio ) consumidor_esperando = true else{ Retira dado do buffer circular Send( id_processo_consumidor, dado_do_buffer) }
19
P3
P1
P2
R1
R2
R3
P4
P5
4 Gerncia do Processador
A B C D 0 12 20 35 40
Prioridade 3 4 2
1
22
A B C D 0 5 20 32 40
A B C D 0 3 6 9 12 15 18 23 28 34 40
24
5 Entrada e Sada
E/S nvel de usurio
Software
Sistema operacional
E/S independente do dispositivo Interface padro para drivers de dispositivos (API) driver SCSI driver EIDE driver floppy driver rede driver teclado
Hardware
Figura 5.1 Estrutura em camadas do subsistema de entrada e sada.
25
Cilindro Imaginrio
Trilha Setor
Transfer time
Trilha
Cabeote leituraescrita /
Latency time
26
14
RAID 0
A1 B1 C1 D1
A2 B2 C2 D2
A3 B3 C3 D3
A4 B4 C4 D4
Disco 4
RAID 3
A1 B1 C1 D1
Disco 1
A2 B2 C2 D2
Disco 2
A3 B3 C3 D3
Disco 3
PA PB Pc PD
Disco 4
A1 B1 C1 D1
A1 B1 C1 D1
RAID 5
A1 B1 C1 PD
Disco 1
A2 B2 Pc D1
Disco 2
A3
PB C2 D2
Disco 3
PA
Disco 1 Disco 2
B3 C3 D3
Disco 4
6 Gerncia de Memria
.
Endereo Lgico
Endereo Fsico
Processador
MMU
Memria
28
100
799
123
Processador
<
no
>
123
no Memria
200
500
123
Processador
>
sim
no
623
Memria
Figura 6.3 - Mecanismo de proteo para a memria com registradores de base e limite.
Memria Fsica
29
30
Memria Fsica
Sistema Operacional 225 Kbytes Processo 4 85 Kbytes
Memria Fsica
Sistema Operacional 225 Kbytes
(a )
(b )
31
.
Memria Lgica
000 00 000 01 000 10 000 11 001 00 001 01 001 10 001 11 010 00 010 01 010 10 010 11
X1 X2 X3 X4 Y1 Y2 Y3 Y4 Z1 Z2 Z3 Z4
Memria Fsica
Z1 Z2 Z3 Z4
X1 X2 X3 X4
End.Lgico de Y2 001 01
End.Fsico de Y2 101 01
Tabela de Pginas
Pg.Lgica 000 001 010 Pg.Fsica 010 101 000
Y1 Y2 Y3 Y4
000 00 000 01 000 10 000 11 001 00 001 01 001 10 001 11 010 00 010 01 010 10 010 11 011 00 011 01 011 10 011 11 100 00 100 01 100 10 100 11 101 00 101 01 101 10 101 11
32
. .
33
p.f.
Tabela de Pginas
C1 C2 C3 C4 C5 C6
Tabela de Segmentos
Segmento 00 01 10 Base 01000 00000 10100 Limite 0110 0100 0011
34
p.f.
7 Memria Virtual
Memria Lgica 0 A 1 2 3 4 5 6 7
B C D E F G H
Memria Fsica 0 1 2 3 4 5
D G
Disco
A B C D E F G
Tabela de Pginas i 0 1 2 10 3 3 4 5 6 7
4 i v v i i v i
6 7 8 9 10 11 12 13 14 15
C
36
0 1 2 3
A B C D
0 1 2 3
1 5
v v i Memria Fsica
Disco
A B C D
0 1 2 3 4 5
D A F E G B
E F G H
0 1 2 3
E F G H
0 1 2 3
3 2 4
v v v i
0 1 2 3
A B C D
0 1 2 3
1 5
v v i Memria Fsica
Disco
A B C D
0 1 2 3 4 5
D A F E H B
E F G H
0 1 2 3
E F G H
0 1 2 3
3 2
v v i
37
String referncia
Pgina fsica 0 Pgina fsica 1 Pgina fsica 2 Pgina fsica 3 Pgina lgica a ser substituda tempo
2 2
3 2 3
1 2 3 1
a 2 3 1 a
2 4
b b 3 1 a
3 5
3 b 3 1 a
3 6
1 b 3 1 a
3 7
1 b 3 1 a
3 8
c b c 1 a
1 9
d b c d a
a
1 b c d 1
b
a a c d 1
c
2 1
2 2
2 3
10 11 12
String referncia
Pgina fsica 0 Pgina fsica 1 Pgina fsica 2 Pgina fsica 3 Pgina lgica a ser substituda tempo
2 2
3 2 3
1 2 3 1
a 2 3 1 a
2 4
b b 3 1 a
3 5
3 b 3 1 a
1 6
1 b 3 1 a
a 7
1 b 3 1 a
a 8
c b 3 1 c
b 9
d d 3 1 c
3
1 d 3 1 c
3
a d a 1 c
c
2 1
2 2
2 3
10 11 12
38
Pginas Acessadas
P3 P1 P3 P1 P2 P0 P1 P2 P7 P2 P7 P0 P6
Tempo Amostra P0 0 P1 1 P2 0 P3 1 P4 0 P5 0 P6 0 P7 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Amostra P0 1 0 P1 1 1 P2 1 0 P3 1 1 P4 0 0 P5 0 0 P6 0 0 P7 0 0
0 0 0 0 0 0 0 0
Amostra P0 0 1 P1 1 1 P2 1 1 P3 0 1 P4 0 0 P5 0 0 P6 0 0 P7 1 0
0 1 0 1 0 0 0 0
Amostra P0 1 P1 0 P2 1 P3 0 P4 0 P5 0 P6 1 P7 1
0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0
= 10 ...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...
Pginas {1, 2, 5, 6, 7} Pginas ={ 3,4}
t1
t2
.
= 10 ...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...
Working set={1, 2, 5, 6, 7} Working set ={ 1,2,3,4} t2
t1
39
16 bits Seletor
32 bits Deslocamento
13 bits ndice
1 bit T
2 bits RPL
0 = Seletor da GDT (Global Descriptor Table) 1 = Seletor da LDT (Local Descriptor Table)
40
32 bits Registrador GDT Base GDT 16 bits Seletor p/LDT 16 bits Seletor p/CS Seletor p/DS Seletor p/SS Seletor p/ES Seletor p/FS Seletor p/GS
16 bits Limite GDT Registrador Sombra Descritor da LDT Registrador Sombra Descritor do CS Descritor do DS Descritor do SS Descritor do ES Descritor do FS Descritor do GS
Registrador LDT
Figura 7.11 - Byte associado com controle de acesso em segmentos de cdigo e de dados.
41
10 bits tabela
CR3
Tabela de Pginas
Diretrio de Pginas
42
8 Sistema de Arquivos
Arquivo A B C D E F ... Ler Arquivo A Ler Arquivo B Ler Arquivo C
43
Arquivo A B C D E F
... Ler Arquivo, posio 2 C Ler Arquivo, posio 4 E Ler Arquivo, posio 0 A
A rq u ivo A B C D E F
44
TDAA 0 Arquivo A 1
0 1 Pos. Cor. 55
Leit. & Escr.
45
a b c d e f g h i j
Posio Corrente
46
47
Disco
Bloco 0 Fsico
1 2 3 4 5 6 7 8 9 10 11 12 13
BL 0 BL 1 BL 2 BL 3 BL 4 BL 5
Descritor
Incio: 3 Tamanho: 6
Disco
Bloco 0 Fsico
1 2 3 4 5 6 7 8 9 10 11 12 13
BL 3
Descritor
Incio: 3 Tamanho: 6
BL 0
BL 2
BL 4 BL 1
11 5
BL 5
-1
48
Disco
Bloco 0 Fsico
Descritor
BL 3
1 2 3 4 5 6 7 8 9 10 11 12 13
Tamanho: 6 Indices: 0
3
BL 0
BL 2
BL 4 BL 1
BL 5
1 8 2 5 3 1 4 7 5 11 6 7 8 9
49
10 * 4K
0 1 2 3 4 5 6 7 8 9 10 11 12
1024 * 4K
...
1024 * 1024 * 4K
...
... ...
...
...
...
...
...
...
...
50
Disco
Bloco 0 Fsico
BL 5
Descritor
Tamanho: 6
1 2 3 4 5 6 7 8 9 10 11 12 13
BL 3 BL 4 BL 0 BL 1 BL 2
End. N. Blocos
0 2 3 4 5 6 7 8 9
3 2 1
1 10
0
51
Tabela com descritores virtuais dos arquivos abertos ... tipo contador de uso dados dependentes ... tipo contador de uso dados dependentes ... Tab. descritores Sist. Arq. 1 tamanho localizao direitos etc ... ...
Descritor do S.A. 2 open read Tab. descritores Sist. Arq. 2 tamanho localizao direitos etc ... ... write ... tab. descritores dados
LRU - inc io
LRU - fim
52
Disco
Bloco 0 Fsico 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Mapa de Bits. 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0
Bloco Fsico 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Disco 2 4 6 7
8 9 10 11
14 15
53
etc
usr
bin
passwd
hosts
joao
maria
ls
who
so
teste
teste
trab
trab1
trab2
passwd
trab1
trab2
54
"passwd" atributos localizao "hosts" atributos localizao contedo do arquivo "/usr" contedo do arquivo "/bin"
sistema de arquivos flat 0 1 2 3 4 5 atributos localizao atributos localizao atributos localizao atributos localizao atributos localizao atributos localizao
9 Linux
.
Endereo virtual
Nivel_1
Nivel_2
Nivel_3
deslocamento
Diretrio global
Diretrio intermedirio
Tabela de pginas
Pgina
56
Free_area (antes)
0 1 2 3 4 5 6 7
32K 64K
16K
16K
32K
Free_area (depois)
0 1 2 3 4 5 6 7
Bloco de boot
grupo 0
grupo n
Super Descritores Bitmap Bitmap Tabela Blocos de dados bloco de grupo bloco dados i-nodos de i-nodos 1 bloco n blocos 1 bloco 1 bloco n blocos n blocos
Captulo 9 - Linux
57
Modo Informaes Tamanho Timestamps Dados Dados blocos diretos Dados Dados Indireo simples Indireo dupla Indireo tripla Dados Dados Dados
Processo 1
Processo 2
Processo n
tty0
tty1
Impressora
Disco IDE
Disco IDE
58
Nome
Tipo
Major
Minor
Descrio
2 2 3 3 3 3 3
0 1 0 1 2 64 65 0 1 1
Unidade de disquete 0 (driver A) Unidade de disquete 1 (driver B) Disco IDE primrio Primeira partio do disco IDE primrio Segunda partio do disco IDE primrio Segundo disco IDE Primeira partio do disco IDE secundrio terminal Impressora paralela teclado
caractere 3 caractere 4
/dev/console caractere 1
10 Windows 2000
Modo Usurio Processos do Sistema Controlador de Servios WinLogon Gerenciador de Sesso Servios Replicador Alerta RPC Registro de Eventos POSIX OS/2 Win32 Active Directory NT5 Subsistemas do ambiente Aplicaes
Executivo API do Executivo Gerncia de E/S Sist. de Arquivos Drivers de dispositivos HAL: Hardware Abstraction Layer Interfaces de hardware (barramento, I/O, interrupes, temporizadores, etc.) Gerncia de LPC Gerncia de Memria Virtual Gerncia Plug&Play Monitor de Gerncia de de (E/S) Segurana Energia Processos NT5 NT5 Gerenciador de Objetos/Bibliotecas do Executivo Ncleo Gerncia de Janelas Driver de dispostivo grfico
60
Apto
Execuo Trmino
Trmino
Prioridade 31 Prioridade 30
Prioridade 16
Prioridade 15 Prioridade 14
Classe varivel
Prioridade 0
61
Processo 1
Processo 1
Processo n
Bloco descritor de processo ndice do diretrio de pgina ndice da tabela de pgina ndice o byte
Byte desejado Page Frame Num. Pgina desejada Entrada da tabela de pgina
Entrada do diretrio de pgina Diretrio de pgina: um por processo, 1024 entradas. Tabelas de pgina: at 512 tabelas para processo e at 512 tabelas para o sistema, 1024 entradas por tabela.
Figura 10.5 Esquema de traduo de endereo virtual para endereo fsico em arquiteturas Intel
Fonte
Montador/Carregador
Memria
Fonte
Montador
Executvel
Carregador (SO)
Memria
64
Mdulo A
Mdulo B
Montador
Montador
Objeto A
Objeto B
Objeto C
Ligador
Executvel
Carregador (SO)
Memria
Formato 1:
Opcode
Formato 2:
Formato 3:
65
Opcode Simblico ADD SUB MUL DIV JMP JMPN JMPP JMPZ COPY LOAD STORE INPUT OUTPUT STOP
Opcode Numrico 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Tamanho 2 2 2 2 2 2 2 2 3 2 2 2 2 1
Nmero de Operandos 1 1 1 1 1 1 1 1 2 1 1 1 1 0
Ao ACC ACC + mem(OP) ACC ACC mem(OP) ACC ACC mem(OP) ACC ACC mem(OP) PC OP se ACC<0 ento PC OP se ACC>0 ento PC OP se ACC=0 ento PC OP mem(OP2) mem(OP1) ACC mem(OP) mem(OP) ACC mem(OP) entrada sada mem(OP) Suspende execuo
Processador de Macros
Montador
66
Mdulo B
SUBROT: ...