Buscar

Arquitetura de Computadores e Sistemas Operacionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 104 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 104 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 104 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ARQUITETURA DE COMPUTADORES E SISTEMAS
OPERACIONAIS – Notas de Aula
Pier-Giovanni Taranti
7 de março de 2013
2
Esta apostila contém notas de aula da disciplina ARQUITETURA DE COMPUTADORES E SISTEMAS
OPERACIONAIS ministrada por Pier–Giovanni Taranti no período 2012.2.
O material tem como fim apoiar as aulas e é resumo das fontes referenciadas no texto. Para uso em trabalhos
sugere-se que as fontes originais sejam consultadas.
A apostila é um material suplementar e não exime o aluno de utilizar o livro texto da disciplina. Da mesma
forma, o conteúdo apresentado em sala de aula e que não conste deste material também é passível de sofrer
avaliação nas provas.
Não é autorizado o uso, cópia ou distribuição deste texto para outro fim que não a participação no curso
citado.
O uso de figuras ou transcrição de textos de outrem que conste neste trabalho é referenciado no intuito de
preservar os diretos dos autores originais. Caso alguma omissão seja percebida, solicita-se informar para que a
correção seja efetuada.
i
ii
Sumário
I Informações gerais sobre a disciplina e Apresentação da Ementa 1
II Introdução Arquitetura de Computadores 3
1 Introdução 5
1.1 Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 Processamento de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.2 Sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.3 Sistemas de Computação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.4 Componentes de um Sistema de Computação . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Representação da Informação 7
2.1 Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Palavra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Caractere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5 Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.6 Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Coversão de Bases 11
3.1 Notação Posicional - Base 10 ou Decimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Outras Bases de Numeração e conversão para Base 10 . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 Exemplo de Conversão para base 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Conversão de Bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.1 Conversão de Bases Potência de 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.2 Decimal para outra base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
iii
4 Aritmética Não-Decimal 17
4.1 Aritmética binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.1 Soma binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.2 Subtração binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.3 Multiplicação Binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.4 Divisão Binária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 Aritmética Hexadecimal e Octadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.1 Soma Hexa/Octadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.2 Subtração Hexa/Octadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 Limites Reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5 Noções sobre Lógica Digital 23
5.1 Portas ou Operações Lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.1.1 Porta AND (“E”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.1.2 Porta OR (“OU”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1.3 Porta NOT (“negação”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1.4 Porta NAND - NOT AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.1.5 Porta NOR - NOT OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.1.6 Porta XOR - “OU Exclusivo” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 Expressões Lógicas – Aplicação de Portas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.2.1 Cálculo com Expressões Lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2.2 Casos particulares - Tautologias, Contradições e Contingências . . . . . . . . . . . . . . . 31
5.2.3 Se...Então . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2.4 ....Se e Somente Se... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.3 Exemplos de Aplicação - Circuitos Integrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 Subsistemas de Memória 37
6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.1.1 Representação da Informação na Memória . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.1.2 Localização dos dados nas memórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.1.3 Operações sobre a memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2 Hierarquia de Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.2.1 Registradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.2.2 Memória Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.2.3 Memória Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.2.4 Memória Secundária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.3 Memória Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.3.1 Organização da Memória Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.3.2 Considerações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
iv
6.3.3 Operações sobre a memória principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.3.4 Capacidade da Memória Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.3.5 Tipos de Memoria Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.4 Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.5 Memória Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.5.1 Utilização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.5.2 Tipos de Memoria de Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7 Unidade Central de Processamento (UCP) 49
7.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.2 Funções Básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 49
7.2.1 Função Processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.2.2 Função Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3 O ciclo de instrução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8 Entrada e Saída de Dados 55
8.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.2 Interfaces de ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.2.1 Transmissão serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.2.2 Transmissão paralela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.3 Dispositivos de ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
III Introdução a Sistemas Operacionais 59
9 Conceitos Básicos 61
9.1 Tipos de Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.1.1 Sistemas Monoprogramáveis /Monotarefa . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.1.2 Sistemas Multiprogramáveis / Multitarefa . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.1.3 Sistemas de Múltiplos Processadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.2 Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.3 Exercício para Sala de Aula - Dia 11/10/2012 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
9.3.1 Tarefa 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
9.3.2 Tarefa 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
9.3.3 Tarefa 03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
10 Concorrência 65
10.1 Interrupção e Exceção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
10.1.1 Interrupção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
10.1.2 Exceção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
v
10.2 Buffering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
10.3 Spooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
10.4 Reentrância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
11 Processos 67
11.1 Bloco de controle do processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
11.2 Estados dos Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
11.3 Mudança de Estados de um Processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
11.4 Subprocessos e Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
11.4.1 Subprocesso ou processo filho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
11.4.2 Thread ou Linha de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
11.5 Comunicação entre Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
12 Gerência do Processador 73
12.1 Escalonamentos Preemptivos e Não-Preemptivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
12.1.1 escalonamento não-preemptivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
12.1.2 escalonamento preemptivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
13 Gerência de Memória 75
13.1 Funções básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
13.2 Alocação Contígua Simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
13.3 Alocação Particionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
13.3.1 Alocação Particionada Estática ou Fixa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
13.3.2 Alocação Particionada Dinâmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
13.4 Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
14 Gerência de Memória Virtual 79
14.1 Paginação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
14.1.1 Politica de busca de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
14.1.2 Politica de Alocação de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
14.2 Segmentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
14.3 Fragmentação de memória virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
15 Sistemas de Arquivos 83
15.1 Gerência de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
15.1.1 Organização de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
15.2 Diretórios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
15.3 Alocação de Espaço em Disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
15.3.1 Alocação Contígua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
15.3.2 Alocação Encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
vi
15.3.3 Alocação Indexada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
16 Gerência de Dispositivos 85
16.1 Operações de Entrada e Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
16.2 Device Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
16.3 Controladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Glossary 91
Acronyms 93
vii
viii
Parte I
Informações gerais sobre a disciplina e
Apresentação da Ementa
1
Parte II
Introdução Arquitetura de Computadores
3
Capítulo 1
Introdução
1.1 Conceitos
A leitura de referencia para o tema é [MON07].
1.1.1 Processamento de Dados
Serie de atividades realizadas ordenadamente, com o objetivo de obter um conjunto de informações (saída)
considerando um determinado conjuntos de informações iniciais (entrada).
1.1.2 Sistemas
Conceito de Sistema (de Engenharia de Sistemas)
1.1.3 Sistemas de Computação
Sistema de Computação = Software Básico + Hardware
Software Básico é SO, software embarcado, driver, etc..
Software de Aplicação ou Programas de Aplicação são outra classe, destinada a solucionar problemas espe-
cíficos de pessoas e/ou organizações.
1.1.4 Componentes de um Sistema de Computação
Observar os componentes apresentados na figura 1.1, obtida em [MON07], página 27.
5
Figura 1.1: Componentes Básicos de Sistema de Computação
6
Capítulo 2
Representação da Informação
A leitura de referencia para o tema é [MON07].
Computadores não “pensam” ou “entendem”. Eles processam informação. São, essencialmente, Máquina de
Estados.
O processamento de informação é possível devido a adoção de padrões para representação da mesma.
Como ponto inicial, considerem que o computador possui a capacidade de diferenciar entre dois estados,
que podem ser tratados por ativado ou não-ativado, diferencial de potencia, ou, em uma representação mais
associada a ciência da computação, 0 e 1.
Esse elemento é então combinado de diversas formas e, tal qualas letras de um alfabeto, forma palavras e
expressões.
A seguir discutiremos como esse elemento pode ser combinado e será apresentada a nomenclatura padrão.
2.1 Bits
O Bit é a representação de um dígito binário, ou seja, de um digito que pode assumir unicamente dois valores.
A escolha do padrão binário tem bases tecnológicas e teóricas:
A representação binária é mais facilmente representada em circuitos eletrônicos, dispositivos ópticos e magné-
ticos. A seleção de valor associa-se a expressões como: ativado/desativado e positivo/negativo. Outros sistemas,
como o decimal, exigiriam da máquina uma capacidade discricionária superior, mais sensível a erros e complexa.
O uso do padrão binário também permite um uso direto da álgebra de Boole ou lógica booleana, que é a
base das estruturas de controle que usamos em programas de computadores.
Contudo, obviamente, a capacidade de expressão de um dígito binário é muito limitada.
No português, usamos o nosso alfabeto, concatenando as letras de forma a representar conceitos que possuem
um entendimento compartilhado pela população.
No caso dos bits, o computador, de forma semelhante, concatena dígitos binários de forma a representar
conceitos que possam ser processados.
7
O conjunto de 8 dígitos concatenados forma um Byte
2.2 Bytes
Como muitos padrões na industria, o Byte foi adotado por uma indústria (IBM), e posteriormente foi adotado
como padrão.
Nos computadores antigos, os processadores trabalhavam com palavras de 8 bits. Esse conjunto era usado
para representar caracteres, instruções de computadores e para trafegar dados em barramentos de hardware.
Até hoje o padrão é usado para medir capacidade de armazenamento e para acesso a informação. Quando
dizemos que um dico pode armazenar 1 GB, isto é abreviatura de Gbytes. O mesmo se aplica a taxas de
transferência de dados, I/O, etc.
Observação:
1KB = 210 bytes = 1.024 bytes = 1.024 * 8 bits (kilobyte)
1MB = 22∗10 bytes = 1.048.576 bytes = 1.048.576 * 8 bits (megabyte)
1GB = 23∗10 bytes (megabyte)
1TB = 24∗10 bytes (terabyte)
1PB = 25∗10 bytes(petabyte)
2.3 Palavra
Conjunto de bits que representa uma informação útil para os computadores. È um conceito relacionado ao
tamanho da informação que trafega pelo I/O da Central processing unit (CPU).
Está associada ao Processador da máquina: 8; 16; 32; 64 bits.
2.4 Caractere
Os carcteres são representados por conjuntos de bits, normalmente organizados em bytes.
Encode:
ASCII – 1 byte - http://pt.wikipedia.org/wiki/Ascii#Tabela_ASCII
ISO-8859-1 – 1 byte - http://en.wikipedia.org/wiki/ISO/IEC_8859
UTF-8- de 1 a 4 bytes
UTF-16 - ........
Importante: é necessário respeitar o encode original de um arquivo, caso ele vá ser usado em outro ambiente
é necessário codificá-lo para o novo encode. Este problema ocorre com frequência no desenvolvimento de
programas Java para multiplataformas.
8
2.5 Arquivos
Os sistemas operacionais organizam os dados de memória em arquivos. Arquivos de dados (ou informações) são
conjuntos de dados (ou informações) de um mesmo tipo ou para uma mesma aplicação.
A estrutura de arquivos é gerenciada pelo Sistema Operacional (ex. Linux, Unix, Solaris, Windows XP,
Windows 7..).
Sistemas de Arquivos estabelecem limitações sobre nomes, tamanho e metadados dos arquivos.
2.6 Registros
Registros são estruturas de dados representadas dentro de determinados arquivos. Um exemplo seriam arquivos
DBF (dBase) ou XLS (excel), nos quais os registros guardam informações sobre as tuplas.
9
10
Capítulo 3
Coversão de Bases
3.1 Notação Posicional - Base 10 ou Decimal
A leitura de referencia para o tema é [MON07]
A representação dos números é necessária para que possamos realizar operações matemáticas.
Dentre as representações, a Notação Posicional é uma forma de representar os números, na qual a posição
relativa de um algarismo (ou dígito) no numeral determina seu valor.
A formação dos números e sua representação, em um sistema Posicional, depende da quantidade de dígitos
disponíveis para esta tarefa. O sistema mais usual é o decimal, ou de Base 10, que possui um conjunto definido
de 10 dígitos para representação numérica:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Valor pela posição? Veja a formula abaixo:
N = dn−1 ∗ bn−1 + dn−2 ∗ bn−2 + ....dn−1 ∗ bn−1 + dn−2 ∗ bn−2 + d1 ∗ b1 + d0.b0
Calculando o valor pela posição:
923010 =
9 ∗ 103 + 2 ∗ 102 + 3 ∗ 101 + 0 ∗ 100 = 9000 + 200 + 30 + 0
A convenção para se representar a Base na qual o numeral está representado é apresentar o numero de dígitos
disponíveis naquela base em subscrito a direita do numeral:
102910
Pergunta: O seguinte numeral é possível? − > 10296
Exemplos:
101111002
4034215
7065438
1239DF16 // // No último exemplo ocorre o uso de letras em substituição a digitos, para completar o
conjunto de 16 caracteres para representar a base 16:
11
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,B,C,D,E, F
3.2 Outras Bases de Numeração e conversão para Base 10
Conforme apresentado, um numero pode ser apresentado em qualquer base numérica.
A notação usual é:
DDDD...DDDB ; ou (DDDD...DDD)B
O calculo do valor em base 10, isto é, base decimal, é simples:
3.2.1 Exemplo de Conversão para base 10
Lembrem da fórmula:
N = dn−1 ∗ bn−1 + dn−2 ∗ bn−2 + ....dn−1 ∗ bn−1 + dn−2 ∗ bn−2 + d1 ∗ b1 + d0.b0 (3.1)
Considerem o número 34657:
34657 = (3 ∗ 73 + 4 ∗ 72 + 6 ∗ 71 + 5 ∗ 70)10
Na ciência da computação, as bases que nos interessam são as de base 2, 8, 16..., ou seja, as potencias de 2.
Por que?
Lembrem-se que as palavras são formadas por potencias de 2, e isto tem origem na representação binária.
A representação de caracteres é outro motivo para nosso interesse.
A conversão de potencias de 2 para base 10 são realizadas pelo mesmo sistema que o apresentado na formula:
100011102 = (1 ∗ 27 + 1 ∗ 23 + 1 ∗ 22 + 1 ∗ 21)10
3.3 Conversão de Bases
3.3.1 Conversão de Bases Potência de 2
Observem cuidadosamente a tabela abaixo:
12
Base 2 Base 8 Base 16 Base 10
0000002 08 016 0
0000012 18 116 1
0000102 28 216 2
0000112 38 316 3
0001002 48 416 4
0001012 58 516 5
0001102 68 616 6
0001112 78 716 7
0010002 108 816 8
0010012 118 916 9
0010102 128 A16 10
0010112 138 B16 11
0011002 148 C16 12
0011012 158 D16 13
0011102 168 E16 14
0011112 178 F16 15
0100002 208 1016 16
0100012 218 1116 17
Atenção aos seguintes fatos:
1. Existe uma relação direta entre o conjunto formado pelos 3 últimos dígitos de um número em base binária
e o último digito em base octal. Esta relação é mantida para o para o penúltimo conjunto de 3 dígitos do
numero em base binaria e o penúltimo digito em base octal, e assim por diante; e
2. Existe uma relação direta entre o conjunto formado pelos 4 últimos dígitos de um número em base binária
e o último digito em base octal. Esta relação é mantida para o para o penúltimo conjunto de 4 dígitos do
numero em base binaria e o penúltimo digito em base octal, e assim por diante.
3.3.2 Conversão de Números de Base 10 para outras bases
A conversão é obtida através da coleção dos restos de divisões sucessivas.
O algoritmo é usualmente aplicado de duas formas que apenas possuem diferença na forma de organizar o
cálculo. A primeira é apresentada na figura 3.1, (fonte: http://www.activeinfo.com.br/curso_programacao/
conversao_entre_bases.html)
A segunda forma é apresentada na figura 3.2 cuja fonte é [MON07].
13
Figura 3.1: Conversão de Base 10 para Base 2
3.3.3 Exercícios
Converta para base 10:
• 67809
• EF016
• 10010011112
• 7258
• 122123
• A3420
• 3478
14
Figura 3.2: Conversão de Base 10 para Base 8
• 2316
• 100001112
Converta para base 2:
• 678016
• EF016
• 11118
• 7258
• 122123
• A3416
• 3478
15
• 2316
• 1011110
Converta para base 8:
• 678016
• EF016
• 72510
• A3416
• 34710
• 234
• 111110
Converta para base 16:• 1111100110012
• 2368
• 111011101101111000112
16
Capítulo 4
Aritmética Não-Decimal
A leitura de referência para o tema é [MON07] - item 3.4
Esta aula apresenta a realização das quatro operações aritméticas (adição, subtração, multiplicação e divisão)
em números que usem a representação posicional e cuja base seja diferente da decimal.
Em todos exemplos são adotados números inteiros positivos.
4.1 Aritmética binária
4.1.1 Soma binária
A execução é semelhante a soma decimal, contudo existe a limitação de apenas dois algarismos na base binária
(0, 1). Sempre que se soma 1 + 1 temos que usar a regra de “ ‘vai 1”. Abaixo a tabela de possibilidades:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0, usando o “vai 1 para próxima posição”
Exemplo (ver figura 4.1).
17
Figura 4.1: Exemplo de soma binária @ [MON07]
4.1.2 Subtração binária
Ocorre da mesma forma que a decimal:
Caso o minuendo seja menor que o subtraendo, utiliza-se uma unidade do número que ocupe a posição mais
a esquerda para efetuar a operação.
Exemplo (ver figura 4.2).
Figura 4.2: Exemplo de subtração binária @ [MON07]
18
4.1.3 Multiplicação Binária
O algoritmo de execução é o mesmo usado na base decimal, no qual se multiplica o multiplicando pelas diversas
ordens do multiplicador e soma-se os resultados.
Exemplo (ver figuras 4.3 e 4.4).
Figura 4.3: Exemplo de Multiplicação binária @ [MON07]
Figura 4.4: Exemplo de Multiplicação binária @ [MON07]
19
4.1.4 Divisão Binária
Exemplo (ver figura 4.5).
Figura 4.5: Exemplo de divisão binária @ [MON07]
4.2 Aritmética Hexadecimal e Octadecimal
4.2.1 Soma Hexa/Octadecimal
Segue o mesmo princípio da Soma Decimal e da Binária.
– Atenção aos exemplos executados em sala de aula
4.2.2 Subtração Hexa/Octadecimal
Segue o mesmo princípio da Subtração Decimal e da Binária
– Atenção aos exemplos executados em sala de aula
4.3 Limites Reais
É importante lembrar que o computador possui limitações na representação de números, estabelecida conforme
a tecnologia que se use. Essas limitações devem-se a, por exemplo, o numero de bytes alocados na memória
20
para cada numero, que varia conforme a linguagem de programação utilizada.
21
22
Capítulo 5
Noções sobre Lógica Digital
A leitura de referência para o tema é [MON07] - Capítulo 4, com ênfase nos itens 4.1, 4.2 e 4.3.
O computador trabalha com valores digitais, representados por 0, 1. Todas suas ações são realizadas através
de operações que utilizam estes valores.
Internamente, essas operações são executadas em microprocessadores. Estes microprocessadores possuem
circuitos que representam as funções que milhares de transistores poderiam realizar, se dispostos em uma
arquitetura adequada.
Estes transistores seriam dispostos em componentes menores, os quais seriam agrupados posteriormente. Estes
componentes são os circuitos flip-flop (figura 5.1). A principal característica deste tipo de circuito é que ele se
apresenta em dois estados, que são nomeados como aberto/fechado; sim/não; 0/1....
A existência destes circuitos, combinada com a possibilidade de se verificar e manipular eletronicamente seus
estados é que permite a construção dos atuais computadores. A manipulação dos valores é realizada por portas
lógicas, capazes de realizar as operações lógicas de negação, E e OU.
Essas portas permitem a implementação e uso da álgebra de Boole, também conhecida como álgebra
booleana, coerente com a dita álgebra de chaveamentos.
Através da combinação das portas, que representam as operações lógicas, e do encadeamento de estados 0, 1
– bit – em bytes e palavras; é possível realizar operações matemáticas e instruções de comando.
Podemos afirmar que esta tecnologia e a teoria aplica é fundamental para construção dos computadores atuais.
23
Figura 5.1: circuito flipflop @http://en.wikipedia.org/wiki/File:Flipflop_by_trexer.png
5.1 Portas ou Operações Lógicas
As portas ou operações definem uma função na qual, para determinados estados de entrada, um estado de saída
específico é apresentado. A figura 5.2 apresenta estas operações.
É interessante citar que as operações podem ser reduzidas a AND, OR e NOT.
24
Figura 5.2: portas lógicas @ [MON07], pag 66
25
5.1.1 Porta AND (“E”)
p q p.q
V V V
V F F
F V F
F F F
P
Q
FAND
Figura 5.3: Porta Logica AND
26
5.1.2 Porta OR (“OU”)
p q p+ q
V V V
V F V
F V V
F F F
P
Q
FOR
Figura 5.4: Porta Logica OR
5.1.3 Porta NOT (“negação”)
p ¬p
V F
F V
P ¬PNOT
Figura 5.5: Porta Logica NOT
27
5.1.4 Porta NAND - NOT AND
p q ¬(p.q)
V V F
V F V
F V V
F F V
P
Q
F
Figura 5.6: Porta Logica NAND
5.1.5 Porta NOR - NOT OR
p q ¬(p+ q)
V V F
V F F
F V F
F F V
P
Q
F
Figura 5.7: Porta Logica NOR
P
Q
F
Figura 5.8: Porta Logica NOR
28
5.1.6 Porta XOR - “OU Exclusivo”
p q p
⊕
q
V V F
V F V
F V V
F F F
P
Q
FXOR
Figura 5.9: Porta Logica XOR
29
5.2 Expressões Lógicas – Aplicação de Portas
Expressão Lógica ou Função Lógica é uma expressão algébrica formada por variáveis logicas (V, F ) e por
símbolos que representem operações lógicas:
.,+,⊕,→,←→.
Ainda podem compor as expressões: o sinal de igualdade (=) e parenteses.
Os símbolos abaixo podem representar NEGAÇÃO:
• ∼ A ;
• A¯; e
• ¬ A.
Adicionalmente, os operadores e e ou podem ser representados por ∧ e ∨, respectivamente.
Exemplo: F = (A+B¯ )⊕ (C.B)
Como já dito, as variáveis (A, B, C) podem assumir valores de Verdadeiro ou Falso (0,1). O diagrama deste
circuito é apresentado na figura 5.10.
A
B
C
NOT
AND
OR
XOR
Figura 5.10: Circuito Lógico
30
5.2.1 Cálculo com Expressões Lógicas
Através de Tabelas Verdade podemos obter o valor da expressão para um dado conjunto de entradas.
Na confecção das tabelas verdade devemos respeitar a ordem de realização dos calculos:
A execução de AND têm prioridade sobre OR; ou seja:
Em (A.B+C), resolver-se-ia primeiro A.B, e após isso o resultado seria utilizado na expressão +C. Em
analogia, é como nas expressões aritméticas, quando a multiplicação deve ser executada antes da soma.
Tabela Verdade Tabelas verdade apresentam as soluções para todas as combinações de entrada de uma
expressão lógica.
A tabela possui um número de linhas exponencialmente relacionado ao número de variáveis da expressão.
Exemplos serão apresentados ao longo do texto.
5.2.2 Casos particulares - Tautologias, Contradições e Contingências
Algumas expressões se caraterizam pelos resultados apresentados em sua tabela verdade, formando tautologias,
contradições ou contingências.
Tautologia
Tautologias são expressões lógicas cujas tabela verdade sempre apresentam valor V erdadeiro na última coluna,
ou, dito de outra forma, para qualquer conjunto de valores de entrada, uma tautologia sempre apresentará valor
verdadeiro na saída.
Exemplo ¬(¬p ∧ p), que é o mesmo que: p.p (figura 5.11)
p ¬p ¬p ∧ p ¬(¬p ∧ p)
V F F V
F V F V
P
NOT
NOTAND
Figura 5.11: Circuito Lógico
31
Contradição
Contradições são expressões lógicas cujas tabela verdade sempre apresentam valor Falso na última coluna, ou,
dito de outra forma, para qualquer conjunto de valores de entrada, uma contradição sempre apresentará valor
Falso na saída.
Exemplo (¬p ∧ p), que é o mesmo que: p.p (figura 5.12)
p ¬p ¬p ∧ p
V F F
F V F
P
NOT
AND
Figura 5.12: Circuito Lógico
Contingências
Contingências são todas as expressões para as quais a tabela verdade apresenta pelo menos uma ocorrência
de V erdadeiro e uma de Falso. Podemos dizer que são todas as expressões que não são Tautologias ou
Contradições.
5.2.3 Se...Então
Se... então, símbolo: →
Exemplo:
• se P então Q
• P → Q
• ¬P ∨Q
32
P Q P → Q
V V V
V F F
F V V
F F V
Observema equivalência com o circuito lógico da figura 5.13.
P
Q
NOT
OR
Figura 5.13: Circuito Lógico
5.2.4 ....Se e Somente Se...
Se... então, símbolo: ←→
Exemplo:
• P se e somente se Q
• P ←→ Q
• (P → Q) ∧ (Q→ P )
• (¬P ∨Q) ∧ (¬Q ∨ P )
P Q P → Q Q→ P P ←→ Q
V V V V V
V F F V F
F V V F F
F F V V V
Observem a equivalência com o circuito lógico da figura 5.14.
33
P
Q
NOT1 OR1
NOT2
OR2
AND
Figura 5.14: Circuito Lógico
Representação com portas
Para representar uma expressão com portas lógicas é necessário reduzi-la ao conjunto de portas utilizados.
Expressões como “se....então” e “....se e somente se....” devem ser convertidas.
5.3 Exemplos de Aplicação - Circuitos Integrados
As portas lógicas podem ser “construídas” com técnicas de engenharia eletrônica, e montadas em circuitos
integrados (fig. 5.15). A complexidade destes circuitos depende de sua aplicação final.
34
Figura 5.15: circuito integrado @http://forum.clubedohardware.com.br
35
36
Capítulo 6
Subsistemas de Memória
6.1 Introdução
Memória é o componente de um computador responsável por armazenar informação que está sendo ou será
utilizada pelo computador.
A prática mostra que não é viável a construção de computadores de razoável complexidade sem utilizar
diferentes tipos de memória, aplicadas a diferentes tarefas.
Diversos fatores corroboram esta decisão arquitetural, entre eles:
• custo da memória;
• tempo de acesso;
• capacidade de reter a informação; e
• capacidade de armazenamento.
As restrições de projetos normalmente se atem as fatores velocidade e capacidade. Um fator importante é
que a velocidade possui alto custo associado.
Para atender a necessidade de memória rápida e de alta capacidade de armazenamento, a solução é o uso de
um conjunto de memórias com diferentes características e que podem se complementar.
Ainda sobre memórias, de forma genérica, pode-se afirmar que as operações que se realizam em memórias
são somente duas: leitura e gravação (read/write; r/w).
Toda posição na memória possui um endereço, que serve como um índice de acesso 1.
O dado não é movido da memória: ele é lido e escrito em outra posição, para a qual o índice para a apontar.
O dado não é apagado da memória: o índice que apontava para ele é apagado; ou a posição que ele ocupava
é sobreescrita com dados diferentes.
1Estes índices de acesso são o endereço de acesso da memória. Em algumas linguagens de Programação, notadamente no C e
no C++, estes índices podem ser manipulados diretamente sob o nome de ponteiros (pointer)
37
6.1.1 Representação da Informação na Memória
Como já apresentado, a menor representação da informação em um sistema de computador é o bit, ou seja: 0/1.
Em dispositivos de memória isto pode representar ausência/presença de diferença de potencial elétrico, campo
eletromagnético ou luz.
Um grupamento de bit na memória se denomina célula. O termo célula é mais usual na memória principal.
Nas demais memórias encontramos definições como bloco, setor, cluster, etc..
Importante é saber que esses blocos são tratados de forma única nas operações sobre a memória, ou seja,
são gravados, movidos, apagados e escritos de forma única.
6.1.2 Localização dos dados nas memórias
A localização é realizada pelo endereçamento da célula de memoria, iniciando a contagem em 0,e terminando
em N − 1, sendo N o número total de células.
6.1.3 Operações sobre a memória
Armazenar − > escrita ou gravação
Retirar − > leitura ou recuperação
A leitura NÃO é destrutiva.
Figura 6.1: Gravação @ [MON07]
38
Figura 6.2: Escrita @ [MON07]
6.2 Hierarquia de Memória
Um computador possui diversas memórias que são utilizadas em uma organização hierarquizada (figura 6.3).
Características importantes para definir o uso da memória são seu tempo de acesso, capacidade, volatilidade,
tecnologia de fabricação, temporariedade e o custo :
tempo de acesso tempo medido entre a requisição da informação e sua disponibilização. A memoria RAM e
ROM tem ordem de grandeza semelhante quanto a tempo de acesso. Memórias como CD-ROM, BD, DVD, HD,
Fita, possuem tempos muito maiores, dependentes da tecnologia. Alguns dispositivos possuem cache própria.2
capacidade é medida em bytes, comumente. A medida de células pode ser adotada, mas não é padrão, pois as
células não possuem tamanho padronizado. O tamanho das células e registradores normalmente é apresentado
em bits.
2O tempo de acesso é medido sobre caso médio. Para sistemas de tempo real esta medida deve ser repensada e deve-se proceder
o estudo do pior caso.
39
Figura 6.3: Hierarquia de Memória @ [MON07]
volatilidade - memorias não-voláteis mantém a informação armazenada mesmo sem provimento de energia
(ex.: DVD, ROM, EPROM...). Já a memória volátil depende de circuito energizado para manutenção da
informação armazenada (ex.: RAM, CACHE; Registradores)
tecnologia de fabricação - este parâmetro envolve uma série de restrições, tais como dimensão, necessidade
de peças móveis, necessidade de manutenção, etc. Ex.: memórias de semicondutores, de meio magnético e meio
óptico.
temporariedade diz respeito ao tempo no qual se garante a manutenção da informação gravada. Memorias
transitórias destinam-se a operações em tempo de execução e permanentes á manutenção dos dados.
custo Fator que tem reduzido muito devido à produção de escala. Porém novas tecnologias tendem a apresentas
elevado custo, como os atuais discos de estado sólido.
40
6.2.1 Registradores
O registrador de instruções tem como finalidade armazenar os dados que são consumidos pelo processador
e seus componentes na execução da computação.
Os registradores se localizam dentro da UCP, e seu tempo de acesso é de um (01) ciclo de memória, o menor
tempo de acesso de um sistema, medido sobre unidades de nanosegundos em um processador de computador.
Os registradores tipicamente possuem poucos bits (8 a 64, por exemplo).
6.2.2 Memória Cache
A cada ciclo de execução da UCP, o computador precisa acessar a memória (principal) uma ou mais vezes.
Como o tempo de acesso a esta memoria (ciclo) é maior do que o ciclo de execução da UCP, a memória passa
a ser um gargalo para desempenho do sistema.
Uma solução adotada para melhorar o desempenho é o uso de memória Cache, que fica em posição inter-
mediária entre a CPU e a memória principal. A CACHE usa tecnologia similar a CPU e tem tempos de acesso
melhores que as RAM.
Os computadores modernos incluem um ou dois níveis de cache dentro do encapsulamento do processador.
Em encapsulamentos de vários núcleos existe o conceito de cache compartilhada e cache individual, sendo
que o arranjo pode ser diferente em liveis também diversos.
6.2.3 Memória Principal
Memória básica de um sistema de computação desde sua concepção teórica. É neste dispositivo que os programas
são “carregados” com seus dados de execução. Aqui a CPU lê as instruções cuja sequencia de execução forma o
programa.
O tempo de acesso deve ser rápido. Normalmente se constitui de memorias RAM. Existem diversos tipos no
mercado, devido principalmente a rápida evolução da tecnologia.
6.2.4 Memória Secundária
Apresenta a maior capacidade de armazenamento, menor custo e normalmente é permanente.
As atuais soluções distribuídas não possibilitam uma clara percepção de onde o dado está armazenado, ou
qual é sua memoria secundária. A nuvem é um conceito que ainda carece de definição.
Dispositivos off line, pendriver, hd externo, HD, microSD são exemplos de memórias secundárias. O tempo
de acesso elevado e baixo custo são características marcantes destas memórias.
41
6.3 Memória Principal
6.3.1 Organização da Memória Principal
Conceitos básicos:
A UCP e a MP trabalham diretamente conectadas por barramentos.
Os programas ficam armazenados para execução na MP, e as instruções são lidas e executadasde forma
sequencial.
palavra - teoricamente a MP deveria ser organizadas em palavras, que seriam acessadas diretamente pelo
processador, contudo isso não ocorre na prática, pois os fabricantes adotam padrão diferente.
endereço, conteúdo e posição são conceitos diferentes.
unidade de armazenamento – são as células de memória, endereçadas inequivocamente. A Unidade de
Armazenamento DEVERIA ser a palavra, porém na prática isto não se verifica real.
Unidade de transferência – pode ser valor diverso da Unidade de Armazenamento e da palavra.
6.3.2 Considerações
A mediada de capacidade mede-se em bytes, mas isso não significa que a memória esteja estruturada em células
de 1 byte.
6.3.3 Operações sobre a memória principal
Leitura
Utiliza:
Barramento de Dados - interliga o Registrador de Dados de Memória (RDM) à MP.
Registrador de Dados de Memória (RDM) Armazena temporariamente a informação a ser transferida
(conteúdo de uma ou mais células). Armazena o conteúdo da palavra.
Registrador de Endereços de Memória (REM) Armazena temporariamente o endereço de acesso a uma
posição da memoria. Este endereço é usado para localizar a informação pelo sistema de controle da MP.
42
Barramento de Endereços interliga o REM a MP para transferência dos bits que representam um endereço.
Barramento de Controle interliga o UCP a MP para transferência de sinais de controle durante leitura e
gravação. É bidirecional e pode enviar sinais solicitando a UCP aguardar a MP.
Passos da leitura ver figura 6.4
1. REM < − de registrador da UCP
2. O endereço vai para o barramento de endereços
3. sinal informado que é operação de leitura entra no barramento de controle
4. decodifica-se o endereço e se localiza a célula
5. RDM < − MP (REM) pelo Barramento de Dados
6. Para outro registrador da UCP < − RDM
43
Figura 6.4: Leitura @ [MON07]
Escrita
Utiliza a mesma estrutura que a leitura. Ver a operação de escrita na figura 6.5, acompanhando com os passos
abaixo:
1. REM < − de registrador da UCP
2. O endereço vai para o barramento de endereços
44
3. RDM < − outro registrador – a UCP coloca o dado a ser escrito
4. sinal informado que é operação de escrita entra no barramento de controle
5. MP (REM)< − RDM – o dado do barramento é escrito na posição indicada por REM na MP
Figura 6.5: Escrita @ [MON07]
45
6.3.4 Capacidade da Memória Principal
Para efeito deste curso considera-se-á as informações dadas no item 2.2, que apresenta o calculo de capacidade
em bytes.
46
6.3.5 Tipos de Memoria Principal
Figura 6.6: RAM - tipos @ [MON07]
47
6.4 Erros
Podem ocorrer erros devido a diversos fatores, principalmente ligados a interferências eletromagnéticas, durante
a transmissão de dados entre memória e UCP.
Para detectar estes erros os dados são submetidos a verificação (seguindo um algorítimo), e caso detectadas
falhas os dados são novamente solicitados.
6.5 Memória Cache
O uso das memórias cache deve-se a necessidade de reduzir o tempo em que a UCP permanece em estado de
espera, aguardando operações da MP e a constatação que a maior parte dos dados lidos pela UCP são dados
que foram acessados em tempo recente (localidade temporal) ou que se encontram em endereço próximo ao que
recentemente foi acessado (localidade espacial)
Desta situação surgiu a solução de engenharia de memórias cache.
6.5.1 Utilização
• Sempre que a UCP tenta buscar um dado, após a busca inicial, ela acessa a cache.
• se o dado estiver na cache, tem-se um acerto
• se não estiver, temos uma perda, neste caso o programa interrompe e transfere parte dos dados da MP
para cache, usando o principio de localidade espacial.
A taxa de acertos é em torno de 80% a 90%.
6.5.2 Tipos de Memoria de Cache
Em relação a CPU < − >MP - cache de RAM (L1, L2, L3)
Em relação a MP< − >MS (Discos) - cache de disco
48
Capítulo 7
Unidade Central de Processamento
(UCP)
7.1 Introdução
A leitura de referencia para o tema é [MON07], capítulo 6
Apresentação básica através de diagrama apresentado na figura 7.1 (acompanhar pelo livro texto):
7.2 Funções Básicas
A UCP é responsável pela execução de todas operações atribuídas ao computador, é o componente que executa
o algorítmo, utilizando dados de entrada e da memória, e apresentando os resultados nos dispositivos de saída.
7.2.1 Função Processamento
Seu nome decorre do motivo de executar operações sobre dados, ou seja, processamento:
• operações aritméticas
• operações lógicas
• desvios (alteração na execução)
• movimentação de dados
• operações de entrada e saída
49
Unidade logica Aritmética
Principal componente do processamento, a UAL executa operações com um dois valores, oferecendo uma saída.
Um barramento interno conduz dados aos registradores, e destes a L1/L2, quando existentes.
Registradores
Armazenam temporariamente dados que são manipulados pela UAL
7.2.2 Função Controle
A UCP possui uma área de controle responsável por manter o controle das instruções que alimentam o proces-
samento da UAL.
Os dispositivos que participam da função de controle são:
• unidade de controle
• decodificador
• Registrador de Instrução (RI)
• Contador de Instrução (CI)
• Relógio
• Registrador de Endereço de Memória (REM)
• Registrador de Dados da Memória (RDM)
Unidade de Controle
Possui a lógica necessária para movimentar dados de e para a UCP. Se conecta aos elementos pelo barramento
de controle.
Relógio
Gerador de pulsos que são usados para controlar os ciclos de execução.
Registrador de Instrução
Armazena da próxima instrução a ser executada pula UCP. Assim que esta instrução é executada, a próxima é
registrada no RI, através do barramento de dados e RDM.
50
Contador de Instrução
Armazena o endereço da próxima instrução a ser executada. Assim que esta instrução é transferida para a UCP
um novo valor é registrado no RCI, indicando a próxima instrução a ser buscada.
Decodificador de Instrução
Recebe a instrução a ser executada (sequencia de bit) e transfere a mesma para a UC, que controla a execução.
Registrador de dados em Memória e de Endereços de Memória
7.3 O ciclo de instrução
Ver figura 7.2
51
Figura 7.1: Esquema básico de UCP @ [MON07]
52
Figura 7.2: Fluxograma do Ciclo de Instrução @ [MON07]
53
54
Capítulo 8
Entrada e Saída de Dados
8.1 Introdução
A leitura de referencia para o tema é [MON07], capítulo 10
Considerem o conjunto MP/UCP. Este é o núcleo do computador, responsável pelo processamento.
Todos dispositivos que não pertencem a este conjunto MP/CPU fica na periferia do computador, ou seja, são
periféricos. Os periféricos são responsáveis por prover e receber informações do conjunto MP/CPU1. Seguindo
o posicionamento de [MON07] manteremos como sinônimos dispositivos de entrada e saída e periféricos.
Estes dispositivos são imprescindíveis para permitir que um computador envie e receba informações de
usuários e de outros sistemas, sejam sistemas computacionais ou fontes de dados. Em um cenário que favorece a
existência de computação distribuída o processamento do computador depende mais e mais desta comunicação.
Como apresentado nas aulas anteriores, a CPU se comunica com a MP através de Barramentos, sejam:
Barramento de Dados, de Endereços e de Controle.
Estes mesmo barramentos são utilizados para acesso aos dispositivos de Entrada e Saída (ES) e suas funcio-
nalidades, conforme apresentado na figura 8.1, obtida em http://www.artigonal.com/tecnologia-artigos/
processadores-evolucao-sem-limites-parte-1-4206067.html:
8.2 Interfaces de ES
O texto até agora vem se referindo a Dispositivo de ES. Ocorre que existe uma enorme diversidade de tipos de
dispositivos e para cada tipo diversos fabricantes e modelos. Esta explosão combinatória impediria construir
CPU que pudesse garantir a comunicaçãocom todas possibilidades.
Para tratar essa questão, a solução de engenharia é utilizar interfaces padronizadas: A CPU/MP nao se
comunica com o dispositivo, somente com a sua interface. Desta forma, a CPU não precisa conhecer as especi-
1Considerando esta definição, vale lembrar que os dispositivos de Memória Secundária (DVD, HD, .. ) também são periféricos
55
Figura 8.1: Barramento de comunicação
ficidades de cada dispositivo.
Esta solução também atende outras duas questões, que são a velocidade (ou taxa) de transferência de dados
e a unidade de transferência (ex. bit, palavra) usada no periférico.
Então, pode-se definir a Interface de ES como um dispositivo intermediário entre a MP/CPU e o Dispositivo
periférico, que é responsável por:
• Controlar e sincronizar o fluxo de dados entre CPU/MP e o dispositivo de ES;
• Realizar a comunicação com a UCP, interpretando suas instruções e sinais de controle para acesso físico;
• Manter memória temporária (buffer) para transito de informações; e
• Realizar a detecção e correção de erros
8.2.1 Transmissão serial
Na transmissão serial os dados são enviados bit a bit (um de cada vez) entre a interface de ES e o Dispositivo
de ES. Isto não afeta a comunicação nos barramentos internos (dados, controle e endereços), que é paralela.
assíncrona
Os bits são precedidos de pulsos de start/stop. A implementação do hardware é mais simples, porém menos
eficiente, atingindo taxas mais baixas. Adequado a dispositivos que nao dependem de velocidade elevada, como
56
mouse e teclado, terminais TTY.
Não é comum nos computadores modernos.
síncrona
Os bits de dados são intercalados com sinais de controle. A transferência de dados ocorre em blocos. Muito
mais eficiente, mas exige controladoras mais “inteligentes”.
Ex: UART; USB.
8.2.2 Transmissão paralela
Os bits são transmitidos em grupos de bits simultaneamente. Existe física limitação sobre o comprimento do
barramento (as conexões seriais normalmente permitem conexões mais longas que as paralelas)
8.3 Dispositivos de ES
Um dispositivo pode realizar somente a função de entrada de dados (ex. mouse), a de saída (ex. teclado) ou
ambas (ex. tela touch)2.
Exemplos de Dispositivos de Entrada e Saída:
1. Mouse
2. Unidades ópticas
3. Discos magnéticos
4. Fitas Magnéticas
5. Impressoras
6. Monitor de Vídeo
7. Teclado
2Lembrando que isto não implica em afirmar que a comunicação seria unidirecional.
57
58
Parte III
Introdução a Sistemas Operacionais
59
Capítulo 9
Conceitos Básicos
Item 01 de [MM04].
O Sistema Operacional (SO) é formado por um conjunto de processos executado pelo processador de forma
semelhante a outros programas.
O Sistema operacional (SO) controla o funcionamento do computador, gerenciando o uso e o compartilha-
mento dos recursos, tais como memória, processador e dispositivos de entrada e saída.
Características de um Sistema Operacional As principais funções do SO são:
1. Facilidade de Acesso aos recursos do Sistema – interface para os recursos
2. Compartilhamento de recursos de forma organizada e protegida – acesso concorrente a disco, impressora,
rede, etc..
Desta forma, um computador que utilize um SO poderá ser vista como uma Máquina de Níveis, com camadas
abaixo enumeradas:
1. Circuitos Eletrônicos
2. Microprogramação
3. Linguagem de Máquina
4. Sistema Operacional
5. Utilitários
6. Aplicações
Para efeito de estudo, os SO podem ser classificados em diferentes tipos, conforme será apresentado a seguir.
61
9.1 Tipos de Sistemas Operacionais
Item 1.5 de [MM04].
Os tipos se relacionam fortemente ao hardware e sua evolução, pois a oferta de nova capacidade computacional
e recursos é que permitiu a construção de sistemas operacionais mais complexos.
9.1.1 Sistemas Monoprogramáveis /Monotarefa
Item 1.5.1 de [MM04].
Permitem a execução de um único programas.
Após inicializar o computador, o programa era carregado na memória principal e executado.
Após iniciar um programa, era necessário esperar seu encerramento, o que implicava em liberar a memória
principal, antes de carregar outro programa. Isto porque o SO dedicava o uso do Processador, Memória Principal
e Dispositivos de Entrada e Saída a este programa.
São mais simples, porque não precisam gerenciar concorrência, porém obviamente subutilizam recursos.
Foram adotados até a década de 60 em computadores de porte e voltaram a ser utilizados durante a década de
70 em Personal Computers (PC) limitados por recursos e que se destinavam a um único programa em execução.
9.1.2 Sistemas Multiprogramáveis / Multitarefa
Item 1.5.2 de [MM04].
Surgiram como uma evolução dos sistemas monotarefa.
Permitem o compartilhamento de recursos, com várias aplicações acessando memória, processador e perifé-
ricos.
Ocorre clara otimização de recursos, porém a implementação destes SO é muito complexa.
Estes sistemas podem ser classificados quanto ao número de usuários que interagem com o SO e quanto a
forma pela qual as aplicações são gerenciadas.
Classificação quanto ao número de Usuários
Sistemas Multiprogramáveis Monousuário são aqueles em que apenas um usuários interage com a má-
quina, porém fica mantida a possibilidade de executar diversas ações simultaneamente, em ambiente multitarefa.
Sistemas Multiprogramáveis Multiusuário são aqueles em que diversos usuários podem interagir simul-
taneamente com a máquina, cada qual executando suas tarefas.
Classificação quanto a forma pela qual as aplicações são gerenciadas
Sistemas Batch Os programas são organizados em jobs que são agendados ou colocados em filas de proces-
samento.
62
Não existe interação com usuários. Os resultados são arquivados para uso posterior.
Sistemas de tempo compartilhado Os programas a serem executados podem ser carregados em memória
durante a execução dos outros. O sistema operacional trata cada programa como uma linha de processamento
e interrompe periodicamente a execução de cada programa para continuar a dos outros. O tempo de execução
é dividido em fatias que são organizadamente distribuídas entre todos programas em execução. A divisão do
tempo de execução em fatias é a técnica conhecida por slice-time.
Essa técnica é conhecida por time- sharing (sinônimo).
Sistemas de tempo real Semelhantes a time-sharing, mas com requisitos de atendimento de tempo agendado
rígidos. A corretude da execução não depende só da lógica de programação, mas também da execução no tempo
previsto para cada ação.
Existe o conceito de Hard and Soft real-time. Esses conceitos dizem respeito ao nível de flexibilidade do erro
admissível na execução do programa.
9.1.3 Sistemas de Múltiplos Processadores
Item 1.5.3 de [MM04].
Sistemas fortemente acoplados Memoria centralizada : existe um endereçamento único de memória prin-
cipal, que é compartilhada por todos os processadores e dispositivos de entrada e saída.
Há um único conjunto de parramentos (barramento de endereços, memória e controle) que é partilhados
pelos componentes do computador.
Sistemas fracamente acoplados Cada processador possui seu conjunto de barramentos (endereços, controle
e dados), bem como acesso dedicado a interfaces de E/S e um conjunto próprio de Memória Principal.
Em outras palavras, a memória principal é segregada por processador, com endereços individualizados, e um
processador não tem acesso a memória dos outros. Existe uma conexão para comunicação entre as CPU.
9.2 Pipelining
Item 2.2.7 de [MM04].
63
9.3 Exercício para Sala de Aula - Dia 11/10/2012
9.3.1 Tarefa 01
Considerando-se as classificações dos sistemas operacionais (itens do resumo: 9.1,9.1.1,9.1.2,9.1.2,9.1.2), classi-
fique os sistemas abaixo:
1. DOS
2. WinXP
3. Win7
4. OSX
5. UNIX
6. BSD
7. Linux OpenSuse
8. VMS
9. QNX
9.3.2 Tarefa 02
Explique adiferença entre sistemas fortemente acoplados e fracamente acoplados (10 linas no máximo)
9.3.3 Tarefa 03
Pesquise o uso de tecnologia de pipeline em sistemas operacionais e resuma em no máximo 20 linhas o que é a
tecnologia e quais vantagens a mesma oferece.
64
Capítulo 10
Concorrência
Item 3 de [MM04].
Os sistemas operacionais podem ser vistos como um conjunto de rotinas que executam concorrentemente de
forma ordenada.
Isto é possível porque o processador executa instruções em paralelo à execução de operações de de E/S.
O conceito de concorrência é a base para implementação de Sistemas Operacionais multiprogramáveis.
O tempo do processador é particionado entre os programas em execução por slice times, e as operações de
E/S executam em paralelo.
Aspecto importante é que os programas são suspensos pela CPU, que passa a atender outro programa,
mas por ocasião do retorno estes programas deve apresentar o mesmo estado que tinham por ocasião da sua
suspensão.
10.1 Interrupção e Exceção
Item 3.2 de [MM04].
A Interrupção e a Exceção são conceitos que representam a interrupção forçada, ou seja, não programada
de um software.
Alguns autores tratam ambos os eventos como sinônimos, porém adotaremos significados diferentes, conforme
as definições a seguir:
10.1.1 Interrupção
Mecanismo no qual se baseia a sincronização do SO para controle de rotinas, programas e dispositivos.
A interrupção propriamente dita é gerada por um evento externo ao programa em execução, portanto in-
depende do programa. Por exemplo, isto ocorre quando um dispositivo notifica p término de uma operação de
65
E/S. Isto forca o processador a interromper a execução de programas para tratar o evento. Ex.: a impressora
notificando q o trabalho enviado esta completo.
Interrupções são eventos assíncronos.
10.1.2 Exceção
A exceção, por sua vez, é gerada internamente no programa e seu lançamento deve-se a ocorrência de um evento
inesperado na execução do programa.
A exceção tem ocorrência dita síncrona. Quando detectada o fluxo de execução é desviado para a rotina
de tratamento da exceção. Estas rotinas são comumente escritas pelo próprio desenvolvedor do programa que
gerou a exceção.
10.2 Buffering
Item 3.3 de [MM04].
Técnica que usa uma área reservada da Memória Principal, denominada buffer, para transferência de dados
entre dispositivos de E/S e a memória principal.
A técnica pode ser ser vista como um “deposito temporário” de dados que permite tratar a questão de
diferença de velocidade de leitura e gravação entre os dispositivos, bem como reservar dados para uso da CPU
enquanto esta ainda não esta liberada para a interrupção e sincronização.
10.3 Spooling
Item 3.5 de [MM04].
A técnica de Spooling (Simultaneous peripheral operation on-line) foi introduzida para aumentar a concor-
rência e eficiência com que dispositivos de E/S são usados.
É um deposito de dados em área da memória (por vezes na memória secundária) pelos programas em
execução, dados que serão posteriormente utilizados para envio a um dispositivo de E/S.
O exemplo mais comum é o spool de impressão, no qual todos programas registram as impressões a ser
realizadas. Este arquivo é lido pelo SO sempre que uma tarefa é concluída, a fim de selecionar a próxima
impressão que será executada.
10.4 Reentrância
Item 3.6 de [MM04].
66
Capítulo 11
Processos
Item 5.1 de [MM04].
A implementação dos SO multiprogramados é baseada no conceito de processos. Uma vez que o processador
não percebe a diferença entre a origem das tarefas que executa, cabe ao sistema operacional gerenciar os
processos que representam diferentes programas em tempo de execução (cada programa esta sempre associado
a um processo).
Cada processo criado pelo SO apresenta necessariamente os contextos de hardware, software e o espaço de
endereçamento (fig. 11.1 ).
Figura 11.1: Contexto de um Processo @ [MM04])
67
Contexto de Hardware Armazena o conteúdo de registradores gerais da UCP, além de registradores de
uso especifico.
Contexto de Software Contém informações sobre:
• Identificação – Principalmente número (PID) de identificação e identificação do processo ou usuário (UID)
que o criou.
• Quotas – Limites de cada recurso do sistema que um processo pode alocar
• Privilégios – o que o processo pode ou não fazer em relação ao sistema e aos outros processos.
Espaço de Endereçamento Contém informações sobre:
• Área da memória do processo onde o programa será executado e para dados utilizados por ele. Esta área
não deve ser compartilhada com outros processos.
11.1 Bloco de controle do processo
O Process Control Block (PCB) é uma estrutura onde o SO guarda todas as informações do processo. O
PCB contem a identificação, prioridade, estado corrente, recursos alocados e informações sobre o programa em
execução (fig. 11.2)
11.2 Estados dos Processos
Item 5.3 de [MM04].
O processo possui 3 estados: espera; pronto e execução.
Execução: o processo esta sendo executado na CPU.
Espera: o processo está esperando algum evento externo ou por algum recurso para poder prosseguir seu
processamento.
Pronto: O processo está pronto e esperando para ser executado pela CPU.
68
Figura 11.2: Bloco de Controle de Processo @ [MM04])
11.3 Mudança de Estados de um Processo
Item 5.4 de [MM04].
Os estados residentes (que se encontram carregados em memória) podem sofre 4 diferentes tipos de transição
de estados (fig. 11.3)
Pronto –> Execução Quando um processo é criado, é colocado em uma lista de processos no estado pronto.
Então é escolhido pelo sistema para ser executado.
Execução –> Espera O processo passa para espera quando aguarda a conclusão de um evento solicitado.
Espera –> Pronto O processo passa para pronto quando a operação solicitada é atendida ou o recurso
esperado é concedido.
Execução –> Pronto O processo passa de execução para pronto por eventos gerados pelo sistema.
Existem processos que são deslocados da MP para MS, normalmente para tornar mais eficiente o uso da MP.
Estes processos são ditos NÃO–RESIDENTES. A figura 11.4 apresenta a transição entre estados não–residentes
e os residentes
69
Figura 11.3: Estados de Processos e Transições [MM04])
11.4 Subprocessos e Threads
Tipos de Processos
Item 5.6 de [MM04].
11.4.1 Subprocesso ou processo filho
• São processos criados por um outro processo, de maneira hierárquica.
• O subprocessos são eliminados quando o processo pai deixa de existir.
• Permite dividir a aplicação para trabalhar de forma concorrente.
• Cada processo e subprocesso possui seu ambiente e recursos alocados.
70
11.4.2 Thread ou Linha de Controle
• No ambiente multi–thread cada processo pode responder a várias solicitações concorrentes ou mesmo
simultaneamente, se houver mais de um processador.
• Threads compartilham o processador da mesma forma que um processo.
• Cada Thread possui seu próprio conjunto de registradores, porém compartilha o mesmo espaço de ende-
reçamento com as demais threads do processo – isso permite uma rápida comunicação entre threads.
• Uma Thread pode alterar os dados de outra Thread (desde que ocupem o mesmo espaço de endereçamento).
11.5 Comunicação entre Processos
Item 5.7, 5.8 e 5.9 de [MM04].
(O ITEM “Comunicação entre Processos” NÃO SERÁ OBJETO DE AVALIAÇÃO )
71
Figura 11.4: Processos Residentes e não-Residentes @ [MM04]
72
Capítulo 12
Gerência do Processador
Item 8 de [MM04].
Considerando a existência de sistemas multiprogramáveis, onde múltiplos processos podem permanecer na
memória principal e competir pelo uso do processador, a gerência do uso deste passou a ser uma das atividades
mais importantes do sistema operacional.
Esta situação é mais complexa em sistemas de múltiplos processadores, pois a gerencia deve considerar o
núcleo de execução dentre os existentes.Para efeito do curso consideraremos máquinas com um único proces-
sador.
Em uma forma simplista, podemos afirmar que a política de escalonamento de um SO é a forma com que
este seleciona os processos que entrarão em estado de execução, dentre os processos que se encontram em estado
de pronto.
Observação: a referencia principal do curso, [MM04], usa o temo escalonador como tradução de scheduler.
A literatura também adota o termo agendador para esta tradução.
Os critérios abaixo são considerados na definição da política de escalonamento:
• Utilização do processador
• Throughput
• Tempo de Processador
• Tempo de Espera
• Tempo de Turnaround
• Tempo de Resposta
• .....
73
12.1 Escalonamentos Preemptivos e Não-Preemptivos
Item 8.4 de [MM04].
A preempção define a capacidade que um SO possui de interromper a execução de um processo em estado
de execução e substituí-lo por outro.
12.1.1 escalonamento não-preemptivo
O escalonamento não-preemptivo foi o primeiro a ser usado, ainda nos sistemas de Batch. A execução somente
para quando o processo se encerra, por haver terminado sua computação, ou quando uma instrução de código
do próprio processo determina esta parada.
12.1.2 escalonamento preemptivo
O escalonamento preemptivo , por sua vez, permite esta interrupção e desta forma gerencia de forma mais
eficiente o tempo de processador. É necessário para existência de sistemas de tempo-real. Hoje a maior parte
dos SO possui escalonamento preemptivo.
74
Capítulo 13
Gerência de Memória
Item 9.1 e 9.2 de [MM04].
A memória era um recurso escasso e caro, e por este motivo projetistas de SO dedicava muito cuidado à
gerência de memória. Apesar da atual redução de custos da memória, esta necessidade ainda persiste.
Isto porque os sistemas modernos devem tratar questões como múltiplos processos, reentrância, agendamen-
tos preemptivos de processos e suas consequências, etc.
13.1 Funções básicas
Os programas são normalmente mantidos e memória secundária (MS), devido ao custo, capacidade e não-
volatilidade da mesma. Contudo o processador somente consegue manipular os dados residentes na memória
principal (MP).
Como a MS possui tempos de acesso muito superiores aos da MP, é razoável que o processador tente manter
o máximo de processos residentes na MP, estejam em estado de pronto ou não (ie. processos residentes).
Mesmo mantendo o máximo de dados na MP, o SO deve ser capaz de transferir novos processos para a
mesma, e isto é possível através de técnicas de transferências de dados entre MP e MS (ex. Swapping).
13.2 Alocação Contígua Simples
Item 9.3 de [MM04].
A alocação contígua simples é uma técnica simplista, utilizada nos primeiros SO quando a memória era
muito reduzida e o sistema monoprogramável.
A memória é dividida em duas áreas: uma para o SO e outra para o programa em execução (que é apenas
um).
O programador deve ter cuidado em não ultrapassar os limites destinados ao programa, o que é possível.
75
Alguns SO utilizaram salvaguarda que, através de um registrador, tentava detectar o acesso à área reservada
e encerrava o programa com uma mensagem de erro.
A implementação da abordagem é simples, porém pouco eficiente para o cenário atual no qual vários GB de
memória estão disponíveis.
13.3 Alocação Particionada
Item 9.5 de [MM04].
Técnica que alocação que permite a existência de diversos programas simultaneamente na memória, geren-
ciado pelo SO.
Não se vislumbra um SO moderno que não suporte estas técnicas.
13.3.1 Alocação Particionada Estática ou Fixa
Tipo mais antigo de particionamento. Quando o SO era inicializado, as PARTIÇÕES de memória eram criadas
com tamanho fixo.
Para alterar o tamanho de uma partição a reinicialização do SO era necessária.
Alocação Particionada Estática Absoluta
Esta técnica previa que o endereçamento usado pelo programa era absoluto em relação a memória. Isso não
permitia o uso de outras partições, pois o programa tinha que ser executado naquela área de endereçamento
específica.
Alocação Particionada Estática Realocável
A evolução das ferramentas de construção dos programas e das linguagens permitiu construir programas que
não faziam mas referencia a um endereço específico, mas sim a posição relativa ao primeiro endereço do bloco
ou partição ocupado pelo código em execução. Aqui se cria o CÓDIGO REALOCÁVEL.
Desta forma o que define a partição aonde um programa será executado é o tamanho da partição, não
existindo amarração direta entre programa e partição.
Para controlar a alocação, são usados dois registradores com posição inicial e final de cada partição.
Fragmentação Interna é o conjunto de áreas de memória não aproveitadas na alocação particionada estática.
13.3.2 Alocação Particionada Dinâmica
Para reduzir a fragmentação interna e melhor aproveitar os recursos do sistema, foi desenvolvida a Alocação
Particionada Dinâmica ou Variável.
76
De maneira resumida, o sistema cria partições dinamicamente com o tamanho adequado ao programa que
será executado, eliminando a Fragmentação Interna. Contudo surge a fragmentação EXTERNA.
13.4 Swapping
Item 9.6 de [MM04].
Técnica que visa o uso da MS em substituição da MP, para sanar ou mitigar as consequências da falta de
recursos.
O objetivo é permitir a execução de programas que esperam a existência de memória principal livre para ser
executado.
Como ocorre:
• O SO escolhe um processo residente com pouca chance de ser executado e o transfere para a MS (Swap
out);
• O programa que estava esperando é executado;
• Quando ocorre liberação de recurso, o processo que estava na Swap é novamente transferido para a MP
(Swap in);
• O processo executa de forma transparente.
Um ponto importante, e que definiu o sucesso da técnica, foi a não necessidade de adaptações dos programas,
ou seja, o SO executa toda tarefa.
77
78
Capítulo 14
Gerência de Memória Virtual
Item 10.1 de [MM04].
As técnicas apresentadas no Capítulo 13 desta apostila se mostraram ineficientes ao longo do tempo, pois
não conseguiam resolver os problemas decorrentes da fragmentação e limitavam o tamanho dos programas a
serem executados.
Em decorrência desta situação, surgiu o conceito de Memória Virtual.
Memória Virtual é uma técnica de gerencia de memória pela qual a memória principal (MP) e a secundária
(MS) são combinadas. A técnica baseia-se em não vincular endereços usados pelos programas a endereços reais
da MP. Isto permite ultrapassar a MP e usar a MS sem que os processos em execução percebam a diferença.
A técnica permite acompanhar mais processos, pois apenas parte destes deverá estar residente na MP (parte
de cada processo poderá estar persistida na MS). Isto permite um uso mais eficiente do processador além de
reduzir o problema da fragmentação.
A seguir serão discutidas as duas principais técnicas de implementação da memória virtual, a paginação e a
segmentação. Conquanto não vá ser abordada, é possível uma implementação mista usando as duas técnicas.
14.1 Paginação
Item 10.4 de [MM04].
Paginação é uma técnica de gerencia de memória na qual a memória virtual e a real são divididas em blocos
do mesmo tamanho chamados páginas. A memória virtual é dividida em páginas virtuais e a real em páginas
reais ou frames.
O mapeamento dos endereços virtuais em reais é realizado através de tabelas de páginas. Cada processo
possui sua própria tabela de páginas, sendo que cada página virtual pertencente a este processo possui uma
entrada na citada tabela de páginas. Isto é necessário para se localizar a informação na memória virtual.
79
Na paginação, cada endereço é formado pelo número de pagina virtual - NPV e pelo deslocamento, que indica
a posição no interior da página.
A exemplo do que acontece com a memória cache, um conjunto de páginas possui cópia na MP. Quando
uma página é buscada,verifica-se primeiro se ela possui cópia na MP. Se a cópia não existir, ocorre um page
fault, e a página é então transferida ma MS para a MP, em um processo conhecido como page in ou paginação.
o numero de ocorrências de page fault por unidade de tempo define, então, a taxa de paginação.
14.1.1 Politica de busca de páginas
Determina quando uma página deve ser carregada para a memória. As políticas são as a seguir:
Paginação por demanda: as paginas são transferidas da MS para a MP somente quando referenciadas por
um processo. A vantagem desta abordagem é que partes do código que não serão executadas como tratamento
de erro, nunca serão carregadas na MP.
Paginação Antecipada: o sistema tenta prever quais paginas serão acessadas e as carrega antecipadamente.
Esta abordagem otimiza os recursos de E/S ao transferir blocos de dados maiores, além de reduzir, em teoria,
a possibilidade de page fault. Contra a abordagem pesa o fato que dados desnecessários são carregados na
memória.
14.1.2 Politica de Alocação de páginas
Determina quantos frames ou paginas reais cada processo pode manter na MP. As políticas são Política de
Alocação Fixa e a Política de Alocação Variável.
14.2 Segmentação
Item 10.5 de [MM04].
A memória virtual por segmentação é uma técnica que divide a memória virtual em segmentos, os quais
podem possuir tamanhos variados em função dos processos e sub rotinas destes.
Um ponto de destaque é que existe uma relação entre o programa e o tamanho dos segmentos: o compilador
é que, normalmente, indicará o tamanho dos segmentos que serão usados em tempo de execução. Os segmentos
de memória pode representar estruturas de dados, vetores, pilhas, rotinas, etc.
Existe um espaço de endereçamento que limita o número máximo de endereços que pode existir, contudo o
tamanho dos segmentos pode variar em tempo de execução.
O mecanismo de mapeamento é semelhante ao de paginação,com os seguintes elementos:
• Tabela de Mapeamento de Segmento (TMS)
80
• Número de Segmento Virtual (NSV) e deslocamento
A principal vantagem desta abordagem em relação à paginação é a facilidade de lidar com estruturas que
variam seu tamanho dinamicamente. Para tirar proveito desta tecnologia os programas devem estar corretamente
modularizados, e o compilador deve considerar a abordagem quando realiza a montagem dos programas.
14.3 Fragmentação de memória virtual
• A paginação sofre fragmentação interna; e
• A segmentação sofre fragmentação externa.
81
82
Capítulo 15
Sistemas de Arquivos
15.1 Gerência de Arquivos
Item 11.2 de [MM04].
A gravação e recuperação de dados de forma permanente é uma atividade importante na computação. A
forma em que essses dados são gravados e gerenciados pelo Sistema Operacional são os Arquivos.
A parte responsável pela gerencia de arquivos é o Sistema de Arquivos.
Arquivos são constituídos por informação logicamente relacionada. Es informações podem representar ar-
quivos executáveis ou de dados. Alguns sistemas operacionais dividiram o nome do arquivo em duas artes,
separadas por um ponto. O sufixo indicava a função exercida por este arquivo. Aplicativos tiraram vantagem
deste padrão para indicar os arquivos que poderiam manipular (ex. .doc, .txt, .docx).
15.1.1 Organização de Arquivos
Item 11.2.1 de [MM04].
A organização de arquivos diz respeito a forma com que os dados são armazenados. A estrutura de dados
utilizada pode variar conforme o fim a que se destina o arquivo ou de acordo com o SO usado.
15.2 Diretórios
Item 11.3 de [MM04].
A Estrutura de Diretórios é o modelo usado pelo sistema operacional para organizar logicamente os arquivos
contidos no disco. O diretório é uma estrutura que reúne dados sobre os arquivos (metadados), tais como
localização nome, etc. .
É a estrutura de diretórios que permite se localizar um arquivo em disco.
83
15.3 Alocação de Espaço em Disco
Item 11.5 de [MM04].
São técnicas sobre como distribuir dados no disco e que afetam a recuperação dos mesmos. As principais
são as abaixo descritas:
15.3.1 Alocação Contígua
15.3.2 Alocação Encadeada
15.3.3 Alocação Indexada
84
Capítulo 16
Gerência de Dispositivos
Item 12.1 de [MM04].
fonte: http://www.cybertechcse.com.br/sistOperacionais/Frame.htm
A gerência de dispositivos é o meio através do qual todos os dispositivos de E/S são controlados a fim
de se obter o maior compartilhamento possível entre os diversos usuários de forma estável e segura. Alguns
dispositivos, tal como os discos, podem ser compartilhados simultaneamente por diversos usuários, sendo o
Sistema Operacional responsável pela integridade dos dados. Já dispositivos como impressoras, por exemplo,
devem ter acesso exclusivo, sendo dever do sistema controlar seu compartilhamento de forma organizada.
Para atender a diversidade de dispositivos de E/S e ao mesmo tempo tratar a complexidade decorrente, a
gerencia de dispositivos utiliza uma arquitetura em camadas, apresentada na figura 16.1.
As camadas se dividem em um grupo que independe de qual dispositivo será acessado, e outro que é depen-
dente deste hardware.
16.1 Operações de Entrada e Saída
Item 12.2 e 12.3 de [MM04].
O sistema Operacional deve permitir o fácil acesos aos dispositivos de E/S pelos processos executados,
devendo se comunicar com qualquer tipo de dispositivo conectado ao computador. Isto significa ser independente
destes dispositivos.
O acesso à dispositivos é realizado através bibliotecas. As atuais linguagens de programação de auto nível
permitem portabilidade.
A independência de dispositivos deve ser realizada através de system calls, chamadas de system calls de
entrada/saída, presentes na camada de mais alto nível implementada pelo sistema operacional.
Resumidamente, o SO permite que o usuário acesse os dispositivos sem se preocupar com detalhes de im-
plementação. A comunicação é feita através das bibliotecas e System Calls são realizadas com passagens de
85
parâmetros. Objetivos da System Calls, neste caso, é esconder do programador características associadas à
programação de cada dispositivo.
16.2 Device Drivers
Item 12.4 de [MM04].
Os Device Drivers comunicação com dispositivos de Entrada/Saída em alto nível de hardware, geralmente
através de controladores, especificando características físicas de cada dispositivo.
Subsistemas de E/S trata de funções que afetam todos os dispositivos e os Drivers tratam apenas dos seus
aspectos particulares.
Cada Device Driver controla apenas um tipo de dispositivo ou grupo de dispositivos semelhantes.
Eles tem a responsabilidade de receber comandos gerais sobre acessos aos dispositivos, geralmente System
Calls, e traduzi-los para comandos específicos para serem executados pelos controladores.
Um mesmo dispositivo normalmente possui diferentes Device Drivers para cada sistema operacional, isto
porque a compilação é dedicada. Quando um novo dispositivo é adicionado, o seu driver deve ser instalado caso
ele já não esteja incluído na distribuição do SO.
16.3 Controladores
Item 12.5 de [MM04].
São componentes eletrônicos responsáveis por intermediar o acesso direto aos dispositivos de E/S. Normal-
mente o SO se comunica com os controladores e não com os dispositivos.
O controlador geralmente possui memória e registradores próprios para poder executar instruções de baixo
nível enviadas pelo driver que são responsáveis pela interface entre o controlador e o dispositivo. O SO, através
do driver, armazena comandos de E/S nos registradores e/ou memória do controlador, possibilitando a UCP
permanecer livre para executar outras tarefas.
86
Figura 16.1: Gerencia de Dispositivos (copia de @ [MM04])
87
88
Referências Bibliográficas
[Dav91] W.S. Davis, Sistemas operacionais; uma visao sistematica, Campus, 1991.
[MM04] F.B. MACHADO and L.P. Maia, Arquitetura de sistemas operacionais, LTC,

Outros materiais