Buscar

Prévia do material em texto

Prof. ArthurProjeto Lógico de Computadores Nível ISA
Projeto Lógico de Computadores
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Nível da Arquitetura do
Conjunto das Instruções
Conceituação
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Nível ISA
Nível da Arquitetura do Conjunto das Instruções
ou
Nível ISA - Instruction Set Architecture
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Máquina Multinível
Nível Lógico-Digital
Nível da Micro-arquitetura
Nível ISA
Nível do Sistema Operacional
Nível da Linguagem de Montagem
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Quando uma nova máquina chega ao mercado 
surgem, de imediato, pelo menos 3 perguntas:
Nível ISA
1. Essa máquina é compatível com a anterior?
2. Meu sistema operacional antigo roda nesta
máquina?
3. Esta máquina roda todos os meus programas
sem que eu precise fazer qualquer modificação
neles?
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Perguntas desta natureza
geram uma pressão para
que as novas máquinas
sejam compatíveis com
as anteriores.
Nível ISA
Linguagens 
Atuais
Linguagens 
Anteriores
Nível ISA
Nível da Micro-Arquitetura
Nível Lógico-Digital
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Quais as características de um bom projeto de 
Nível ISA?
Nível ISA
• Definir um conjunto de instruções que possa ser 
implementado com eficiência tanto nas 
tecnologias atuais como nas futuras, resultando 
em projetos com uma relação custo-benefício 
adequada para várias gerações de tecnologias.
• Fornecer uma interface eficiente com o 
compilador e com o hardware.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Propriedades do Nível ISA
Nível ISA
Define o aspecto da máquina para um programador
da linguagem de máquina,
ou, em outras palavras,
As instruções do nível ISA são aquelas para as
quais o compilador deve gerar código.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Propriedades do Nível ISA
Nível ISA
• Para fazer com que o compilador gere código para
o nível ISA, o projetista do compilador deve
conhecer muito bem o modelo de memória da
máquina, quais registradores estão implementados,
quais os tipos de dados e de instruções
disponíveis e assim por diante.
• O conjunto de todas essas informações é que
define o nível ISA.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Instruções
Nível ISA
• A principal característica de um nível ISA é o seu
conjunto de instruções de máquina. Essas
instruções controlam tudo aquilo que a máquina
pode fazer.
• Do conjunto de instruções de uma máquina
sempre fazem parte instruções LOAD e STORE,
por exemplo, para permitir o movimento de dados
entre a memória e os registradores.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Formatos de Instruções
Nível ISA
• Um programa é constituído de uma sequência de
instruções, cada uma especificando alguma ação
em particular. As instruções contém,
obrigatoriamente, “códigos de operação” que irão
gerar a ação desejada.
• Muitas instruções contém, ou especificam, o
endereço ou dado a ser usado pela instrução. Por
exemplo: uma instrução que compara duas
informações para checar se são iguais deve
especificar quais caracteres devem ser
comparados.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Formatos de Instruções - Exemplos
Código de Operação
Código de Operação Endereço
Código de 
Operação
Endereço 1 Endereço 2
Nível ISA
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Formatos de Instruções
Nível ISA
• Em algumas máquinas todas as instruções têm o
mesmo tamanho, e em outras pode haver
instruções de diversos tamanhos.
• As instruções de uma máquina podem ser
menores, do mesmo tamanho ou maiores que o
tamanho da palavra da máquina.
• O fato de todas as instruções terem o mesmo
tamanho (mesmo número de bits) simplifica muito
o projeto do hardware.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Formatos de Instruções - Exemplos
Instrução
Instrução
Instrução
Instrução
1 palavra
Instrução
Instrução
Instrução
Instrução
1 palavra
Instrução
Instrução
Instrução
Instrução
Instrução
Instrução
Instrução
1 palavra
Instrução
Nível ISA
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Critérios para a Determinação do
Formato das Instruções
Nível ISA
• Instruções curtas são melhores que as longas, por
serem menos complexas e ocuparem menos
memória.
• Cada memória tem uma determinada taxa de
transferência (medida em bps – bits por segundo),
a qual é maior para instruções mais curtas, o que
aumenta a velocidade de processamento.
• É desejável que o comprimento da palavra seja um
múltiplo inteiro do comprimento das instruções.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação
Nível ISA
• A técnica da expansão dos códigos de operação é
utilizada para permitir que todas as instruções de
um conjunto possam manter o mesmo tamanho.
• Para instruções simples utiliza-se códigos de
operação mais longos, poupando os códigos de
operação mais curtos para as instruções mais
complexas e que, por isso, necessitam de mais
dados no corpo da instrução.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exemplo
Palavra de 16 bits
Nível ISA
Cód. Operação
4
Endereço 1
4
Endereço 2
4
Endereço 4
4
Cód. Operação
8
Endereço 5
4
Endereço 6
4
Cód. Operação
12
Endereço 7
4
Cód. Operação
16
15 instruções
16 instruções
31 instruções
14 instruções
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exemplo
0000
Endereço 1
4
Endereço 2
4
Endereço 4
4
0001
Endereço 1
4
Endereço 2
4
Endereço 4
4
0010
Endereço 1
4
Endereço 2
4
Endereço 4
4
1110
Endereço 1
4
Endereço 2
4
Endereço 4
4
010
110
1º Grupo: 15 instruções
.
.
.
1410
210
Nível ISA
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exemplo
Nível ISA
Código inicial do próximo grupo = código final atual + 1
Código atual = 1110
Código inicial = 1110 + 1 = 1111
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exemplo
2º Grupo: 14 instruções
.
.
.
1310
010
110
210
Nível ISA
1111 0000
Endereço 5
4
Endereço 6
4
1111 0001
Endereço 5
4
Endereço 6
4
1111 0010
Endereço 5
4
Endereço 6
4
1111 1101
Endereço 5
4
Endereço 6
4
Prof. ArthurProjeto Lógico de Computadores Nível ISA
1111 1110 0000
Endereço 7
4
1111 1110 0001
Endereço 7
4
1111 1110 0010
Endereço 7
4
1111 1110 1111
Endereço 7
4
1111 1111 0000
Endereço 7
4
1111 1111 0001
Endereço 7
4
1111 1111 1110
Endereço 7
4
Expansão dos Códigos de Operação - Exemplo
3º Grupo: 31 instruções
.
.
.
1510
010
110
210
.
.
.
1410
Nível ISA
010
110
16 instruções
15 instruções
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exemplo
4º Grupo: 16 instruções
.
.
.
1111 1111 1111 0000
1111 1111 1111 0001
1111 1111 1111 0010
1111 1111 1111 1111
010
110
210
1510
Nível ISA
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exercício
Nível ISA
Projete um código de operação expandido para
permitir que todas as instruções seguintes sejam
codificadas em 15 bits:
• 07 instruções com: código de operação (3), 
endereço-1 (6) e endereço-2 (6)
• 63 instruções com: código de operação (9), 
endereço (3) e constante (3)
• 08 instruções com: código de operação (12) e 
operando (3)
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exercício
Código de
Operação
3
Endereço-1
6
Endereço-2
6
1º Grupo: 7 instruções 000
001
010
110
Nível ISA
.
.
.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exercício
Endereço
3
Código de Operação
9
Constante
32ºGrupo: 63 instruções
111 000 000
111 000 111
.
.
.
Nível ISA
111 001 000
111 001 111
.
.
.
111 010 000
111 010 111
.
.
.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exercício
Nível ISA
Endereço
3
Código de Operação
9
Constante
32º Grupo: 63 instruções
111 000 000 até 111 000 111  8 instruções
111 001 000 até 111 001 111  8 instruções
111 010 000 até 111 010 111  8 instruções
111 011 000 até 111 011 111  8 instruções
111 100 000 até 111 100 111  8 instruções
111 101 000 até 111 101 111  8 instruções
111 110 000 até 111 110 111  8 instruções
111 111 000 até 111 111 110  7 instruções
63 instruções
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Expansão dos Códigos de Operação - Exercício
111 111 111 000
111 111 111 001
111 111 111 010
111 111 111 111
3º Grupo: 8 instruções
Código de Operação
12
Operando
3
Nível ISA
.
.
.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento
Nível ISA
Uma instrução pode ter mais de um endereço
associado a ela.
As formas de se endereçar uma determinada posição
de memória, ou determinado registrador, são
diversas, de acordo com a natureza da operação a
ser executada.
http://images.google.com.br/imgres?imgurl=http://www.getit-4free.co.uk/post office.jpg&imgrefurl=http://www.getit-4free.co.uk/whataretheoffers.html&usg=__lkv5-k-3IfYnGvFYaXp-ofu58Lo=&h=759&w=1000&sz=58&hl=pt-BR&start=10&tbnid=sq5QULD_kdPC0M:&tbnh=113&tbnw=149&prev=/images?q="post+office"&gbv=2&hl=pt-BR&sa=G
http://images.google.com.br/imgres?imgurl=http://www.getit-4free.co.uk/post office.jpg&imgrefurl=http://www.getit-4free.co.uk/whataretheoffers.html&usg=__lkv5-k-3IfYnGvFYaXp-ofu58Lo=&h=759&w=1000&sz=58&hl=pt-BR&start=10&tbnid=sq5QULD_kdPC0M:&tbnh=113&tbnw=149&prev=/images?q="post+office"&gbv=2&hl=pt-BR&sa=G
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento Imediato
Nível ISA
A maneira mais simples de uma instrução especificar
um operando é contê-lo no campo de endereçamento
ao invés de endereçá-lo.
Este tipo de operando é denominado de “operando
imediato” porque é trazido da memória junto com a
instrução e está imediatamente disponível para
execução.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento Imediato
O endereçamento imediato não usa nenhuma outra
referência para buscar o operando.
Código de 
Operação
Operando
Nível ISA
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento Direto
Ocorre quando a
instrução contém o
endereço de memória
onde está o operando
necessário.
Código de 
Operação
Endereço
O operando está
nesta posição
Nível ISA
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento do Registrador
Ocorre quando a
instrução contém
o endereço do
registrador onde
está o operando
necessário.
Nível ISA
Código de 
Operação
Endereço
O registrador está
nesta posição
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento Indireto
Ocorre quando a 
instrução contém 
o endereço de 
uma posição de 
memória a qual 
contém, por sua 
vez, o endereço 
do operando 
necessário.
Nível ISA
Código de 
Operação
Endereço
O endereço do operando
desejado está nesta posição
O operando está
nesta posição
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento Indireto Múltiplo
Ocorre quando a 
instrução contém 
o 1º endereço de 
uma posição de 
memória a qual 
contém outros 
endereços, até 
que o endereço 
do operando 
desejado seja 
alcançado.
Nível ISA
Código de 
Operação
Endereço
O operando está
nesta posição
O 1
o
 endereço desejado está
nesta posição
O 2
o
 endereço desejado está
nesta posição
O n
o
 endereço desejado
está nesta posição
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento por Indexação
O endereço do 
operando é a 
soma da 
constante mais o 
conteúdo do 
registrador 
indicado.
Nível ISA
Código de 
Operação
Número do 
Registrador
de Índice
O registrador está
nesta posição
Constante
O operando está
nesta posição
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento por Base-Deslocamento
• O endereço do operando é a soma da base (que
está num registrador) mais o deslocamento.
• Este caso e o anterior podem coincidir:
 Se o deslocamento tem bits suficientes para
endereçar toda a memória, será designado de
endereçamento por Indexação.
 Caso contrário, será designado por Base-
Deslocamento.
Nível ISA
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento por Base-Deslocamento
Nível ISA
Código de 
Operação
Número do 
Registrador
de Base
O registrador está
nesta posição
Deslocamento
O operando está
nesta posição
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento por Pilha
Nível ISA
• Para economizar espaço na memória e acelerar o
processamento, utiliza-se instruções o mais curtas
possível.
• Se tivermos instruções só com o código de
operação, e sem endereços, usa-se o método de
endereçamento por pilha.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Endereçamento por Pilha
Nível ISA
O Registrador de Topo
de Pilha contém o
endereço do topo da
pilha, e é atualizado a
cada entrada ou saída
de informação na pilha.
Registrador de
Topo de Pilha
Instante t2
Instante t1
Instante t3
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle
Nível ISA
• Entende-se por fluxo de controle a sequência na
qual instruções são dinamicamente executadas no
decorrer de um programa.
• Em geral, na ausência de desvios e de chamadas a
procedimentos, as instruções vão sendo
executadas sucessivamente, a partir de endereços
consecutivos de memória.
• As instruções de chamada a procedimento alteram
o fluxo de controle, fazendo com que o
procedimento corrente pare de ser executado,
começando a execução do novo procedimento.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle
Nível ISA
• As co-rotinas são estruturas parecidas com os
procedimentos e também causam o mesmo tipo de
alteração no fluxo de controle.
• As co-rotinas são úteis na implementação do
paralelismo entre processos.
• As interrupções e os traps também alteram o fluxo
de controle, quando determinadas condições
especiais ocorrem.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle
Nível ISA
• A execução da maioria das instruções de uma
máquina não altera o fluxo de controle. Em geral,
após a execução de uma instrução, o processador
vai à memória para buscar a instrução armazenada
no endereço seguinte àquela que acabou de ser
executada.
• A ordem dinâmica na qual um processador executa
suas instruções é a mesma em que elas aparecem
na listagem do programa.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle
Nível ISA
Processamento sem desvios no fluxo de controle
Tempo
Registrador
PC
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle
Nível ISA
• Se um programa contiver desvios, essa relação
simples entre a ordem em que a instrução aparece
na memória e a ordem de sua execução desaparece.
• Quando existem desvios, o valor armazenado no
registrador PC não é mais uma função linear no
tempo.
• Como resultado disso, torna-se difícil visualizar a
sequência de execução das instruções a partir da
listagem do programa.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle
Nível ISA
Processamento com desvios no fluxo de controle
Tempo
Registrador
PC
Desvios
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Procedimentos
Nível ISA
• O procedimento (sub-rotina) é a técnica mais importante
para a estruturação de programas.
• De um lado, uma chamada a procedimento altera o fluxo
de controle exatamente do mesmo modo que um desvio,
mas o procedimento, ao contrário do desvio, quando
termina sua tarefa retorna o controle para o comando ou
instrução seguinte à instruçãode chamada.
• Uma sub-rotina é um grupo de instruções que executa
alguma tarefa, e pode ser chamada em vários pontos do
programa. Ao final da sub-rotina há uma instrução de
retorno ao programa chamador.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Sub-rotinas
Nível ISA
Programa
Sub-rotina A
Sub-rotina BInstruções
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Sub-rotinas
Nível ISA
Instruções
Programa
Sub-rotina A1
a
 chamada
2
a
 chamada
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Sub-rotinas
Nível ISA
Instruções
Programa
Sub-rotina A
Sub-rotina B
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Sub-rotinas Recursivas
Nível ISA
Instruções
Programa
Sub-rotina
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Co-Rotinas
Nível ISA
Consideremos um procedimento A (chamador) que
chama um procedimento B (chamado):
Programa A Programa B
Instruções
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Co-Rotinas
Nível ISA
• Os dois procedimentos podem considerar um ao
outro como procedimento chamador e chamado.
• Quando uma co-rotina é retomada, a execução
começa no comando suspenso anteriormente, e não
no início.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Traps
Nível ISA
• Um trap é uma chamada a procedimento automática,
iniciada sempre que ocorrer alguma condição
específica causada pela execução de um programa.
• Por exemplo:
 Divisão por zero
 Violação de proteção
 Código de operação inválido
 Tentativa de acessar periférico de E/S que não
existe
 Etc.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Traps
Nível ISA
• O trap é disparado para evitar que uma anormalidade
cause danos ao processamento.
• O trap detecta o problema para o qual foi planejado,
pára o processamento e alerta para a ocorrência.
• O trap não tem, contudo, recursos para uma eventual
recuperação do problema e nem para reiniciar o
processamento.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Interrupções
Nível ISA
• As interrupções são modificações no fluxo de
controle de um programa causadas por um evento
externo ao processamento do programa, usualmente
relacionados a operações de E/S.
• Por exemplo, um programa pode instruir o disco para
iniciar uma transferência de informações, e programá-
lo de maneira que ele gere uma interrupção tão logo a
transferência se conclua.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Interrupções
Nível ISA
• Da mesma forma que ocorre com os traps, as
interrupções também param o processamento do
programa atual e transferem o controle para uma
rotina de tratamento de interrupção, que executa
ações apropriadas.
• Quando esta rotina termina sua execução, o controle
retorna ao programa que teve seu processamento
interrompido, o qual reinicia exatamente do ponto em
que havia parado.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle - Interrupções
Nível ISA
• As interrupções têm como funções principais:
 Disparar programas interruptores
 Controlar as prioridades dentro da máquina
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Fluxo de Controle – Interrupções x Traps
Nível ISA
• A diferença essencial entre um trap e uma interrupção
é o fato de que os traps são síncronos com o
programa, e as interrupções são assíncronas.
• Se um programa for processado milhões de vezes,
com as mesmas entradas, os traps vão ocorrer nos
mesmos instantes relativos, a cada nova execução do
programa.
• A ocorrência das interrupções irá variar a cada
processamento, dependendo das ações dos
dispositivos de E/S a cada instante.
Prof. ArthurProjeto Lógico de Computadores Nível ISA
Projeto Lógico de Computadores
Prof. Arthur
arthur.battaglia@docente.unip.br 
2018
Nível da Arquitetura do
Conjunto das Instruções
Conceituação
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível da Arquitetura do
Conjunto das Instruções (ISA)
Exercícios
Projeto Lógico de Computadores
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Projete um código de operação expandido para
permitir que as instruções seguintes sejam
codificadas em 36 bits:
• 07 instruções com: código de operação (3), 
endereço-1 (15), endereço-2 (15) e número de 
registrador (3)
• 500 instruções com: código de operação (18), 
endereço (15) e número de registrador (3)
• 50 instruções com: código de operação (36)
Exercício 1:
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
07 instruções com: código de operação (3), endereço-1 
(15), endereço-2 (15) e número de registrador (3)
Exercício 1: 1º grupo
000
001
010
011
100
101
110
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
500 instruções com: código de operação (18), endereço 
(15) e número de registrador (3)
Exercício 1: 2º grupo
111000000000000000
111000000000000001
111000000000000010
111000000111110011
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
50 instruções com: código de operação (36)
Exercício 1: 3º grupo
111000000111110100000000000000000000
111000000111110100000000000000000001
111000000111110100000000000000110000
111000000111110100000000000000110001
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Projete um código de operação expandido para
permitir que as instruções seguintes sejam
codificadas em 12 bits:
• 04 instruções com: código de operação (3), 
endereço-1 (3), endereço-2 (3) e endereço-3 (3)
• 255 instruções com: código de operação (9) e 
número de registrador (3)
• 16 instruções com: código de operação (12)
Exercício 2:
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
04 instruções com: código de operação (3), endereço-1 
(3), endereço-2 (3) e endereço-3 (3)
Exercício 2: 1º grupo 
000
001
010
011
111111000
111111001
111111010
111111011
111111100
111111101
111111110
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
255 instruções com: código de operação (9) e número de 
registrador (3)
Exercício 2: 2º grupo 
100000000
100000001
100000010
100000011
100000100
100000101
100000110
100000111
100001000
100001001
100001010
100001011
100001100
100001101
100001110
100001111
25410
111111111000
111111111001
111111111010
.
.
.
111111111111
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
16 instruções com: código de operação (12)
Exercício 2: 3º grupo 
Não é possível codificar o número
15 em 3 bits.
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Conhecidas as características de memória mostradas
na tabela a seguir, a serem usadas em uma máquina
de um endereço com acumulador, pergunta-se: quais
valores serão carregados no acumulador após a
execução das instruções que seguem?
Exercício 3:
Endereço Conteúdo
20 40
30 50
40 60
50 70
60 90
Projeto Lógico de ComputadoresNível ISA Prof. Arthur
Nível ISA
Exercício 3:
A) LOAD IMMEDIATE 20
Endereço Conteúdo
20 40
30 50
40 60
50 70
60 90
Resposta: 20
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Exercício 3:
B) LOAD DIRECT 20
Resposta: 40
Endereço Conteúdo
20 40
30 50
40 60
50 70
60 90
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Exercício 3:
C) LOAD INDIRECT 20
Resposta: 60
Endereço Conteúdo
20 40
30 50
40 60
50 70
60 90
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Exercício 3:
D) LOAD IMMEDIATE 30
Resposta: 30
Endereço Conteúdo
20 40
30 50
40 60
50 70
60 90
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Exercício 3:
E) LOAD DIRECT 30
Resposta: 50
Endereço Conteúdo
20 40
30 50
40 60
50 70
60 90
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Exercício 3:
F) LOAD INDIRECT 30
Resposta: 70
Endereço Conteúdo
20 40
30 50
40 60
50 70
60 90
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA
Exercício 3:
F) LOAD INDIRECT TWICE 20
Resposta: 90
Endereço Conteúdo
20 40
30 50
40 60
50 70
60 90
Prof. Arthur
 arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível da Arquitetura do
Conjunto das Instruções (ISA)
Exercícios
Projeto Lógico de Computadores
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível da Arquitetura do
Conjunto das Instruções (ISA)
Interrupções
Projeto Lógico de Computadores
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA - Interrupções
1. O controlador do dispositivo ativa uma linha de
interrupção no barramento do sistema para iniciar
a sequência de interrupção.
2. Tão logo esteja pronto para tratar a interrupção, o
processador ativa no barramento um sinal de
reconhecimento da interrupção.
Ações do Hardware
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA - Interrupções
3. Quando o controlador do dispositivo enxerga o
reconhecimento do sinal de interrupção, coloca
um pequeno valor inteiro nas linhas de dados,
para identificação dele próprio. Esse número é
conhecido como vetor de interrupção.
4. O processador remove o vetor de interrupção do
barramento e salva seu valor temporariamente.
Ações do Hardware
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA - Interrupções
5. Em seguida o procedimento coloca na pilha o
conteúdo do registrador Contador de Programa e
do registrador contendo a PSW (Program Status
Word).
Ações do Hardware
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA - Interrupções
6. Depois disso o processador localiza um novo
Contador de Programa com a ajuda do vetor de
interrupção que funciona como um índice para
uma tabela situada na parte baixa da memória.
Muitas vezes a PSW é carregada e modificada
(como no caso de ser necessário desabilitar
outras interrupções por algum tempo).
Ações do Hardware
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA - Interrupções
1. A primeira coisa que a rotina de tratamento de
interrupção deve fazer é salvar o conteúdo de
todos os registradores a fim de possibilitar que
eles sejam restaurados mais tarde. Esses valores
podem ser salvos na pilha ou em uma tabela do
sistema.
Ações do Software
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA - Interrupções
2. Cada vetor de interrupção é compartilhado por
todos os dispositivos de um mesmo tipo, de
maneira que nesse momento ainda não se
conhece qual dos terminais causou a interrupção.
O número do terminal será conhecido a partir da
leitura de um registrador do dispositivo.
3. Qualquer outra informação sobre a interrupção,
como códigos de estado, pode ser obtida a partir
desse momento.
Ações do Software
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA - Interrupções
4. Caso tenha ocorrido algum erro de E/S, ele poderá
ser tratado agora.
5. Se necessário, é gerado um código especial para
informar ao dispositivo ou ao controlador do
dispositivo que uma interrupção está sendo
processada.
6. Todos os valores originais dos registradores são
restaurados.
Ações do Software
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível ISA - Interrupções
7. É executada a instrução RETURN FROM
INTERRUPT, colocando o processador de novo no
modo e no estado que ele tinha imediatamente
antes da ocorrência da interrupção. O
processador continua o processamento do
programa como se nada tivesse acontecido.
Ações do Software
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível ISA Prof. Arthur
Nível da Arquitetura do
Conjunto das Instruções (ISA)
Interrupções
Projeto Lógico de Computadores
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Projeto Lógico de Computadores
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Nível do Sistema Operacional
Conceituação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Máquina Multinível
Nível Lógico-Digital
Nível da Micro-arquitetura
Nível ISA
Nível do Sistema Operacional
Nível da Linguagem de Montagem
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Um Sistema Operacional - SO é um
programa que, do ponto de vista do
programador, adiciona um conjunto de
novas instruções e de funcionalidades, além
daquelas suportadas no nível ISA.
• Normalmente um SO é implementado por
software, mas nada impede que ele o seja
por hardware.
Nível do SO
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• O conjunto de instruções do nível do SO é
aquele que está disponível para os
programadores de aplicações.
• Uma Chamada de Sistema ativa um
determinado serviço prestado pelo SO ao
nível da aplicação.
• Um exemplo de uma chamada de serviço é o
comando de leitura de um dado num
arquivo.
Nível do SO
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Memória Virtual
• Em tempos passados as máquinas tinham
memórias pequenas e caras.
• A busca do programador não era pelo
melhor algoritmo, mas sim pelo algoritmo
que coubesse na memória.
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Memória Virtual
• Nesta época surgiu a técnica dos “overlays”,
os quais eram totalmente controlados pelo
programador.
• Os “overlays” eram pedaços de um
programaque ficavam em disco, e eram
chamados para a memória no momento de
serem executados.
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Overlays
Programa
Memória
Overlays
Carga na memória
Retorno
Disco
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Overlays
Programa
Memória
Overlays
Carga na memória
Retorno
Disco
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• O método dos “overlays” era muito
trabalhosa para o programador.
• Surgiu, então, um método para processar os
“overlays” automaticamente, sem que o
programador precisasse saber da sua
existência.
• Este método ficou conhecido como
Paginação.
Memória Virtual
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
A memória virtual opera com base na técnica
da paginação a qual, por sua vez, vem do
conceito de espaço de endereçamento.
Memória Virtual
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Vamos definir espaço de endereçamento como
sendo o número de palavras endereçáveis.
• Se tivermos 16 bits para endereçamento, teremos
216 = 65.536 endereços possíveis, portanto o
espaço de endereçamento compreende os
endereços de zero a 65.535.
• Vamos considerar uma memória com 4 KB, ou seja,
se cada palavra for do tamanho de um byte,
teremos uma memória de 4.096 palavras.
Espaço de Endereçamento
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Espaço de 
endereçamento
0
4.095
8.191
65.535
Memória de 
4KB
0
4.095
Espaço de Endereçamento
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Esta técnica de “overlay” automático é
denominada paginação, e o conjunto de
endereços lidos do disco é chamado de
página.
• A memória física pode ser, então, menor que
o espaço de endereçamento.
• Retomando o exemplo anterior, as páginas
serão blocos de 4 KB que serão carregados
na memória na medida da necessidade.
Paginação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
A memória principal contém sempre 4 KB de
informação, mas não necessariamente os
primeiros 4 KB do espaço de endereçamento,
mas qualquer bloco de 4 KB.
Espaço de 
endereçamento
0
4.095
8.191
65.535
Memória de 
4KB
0
4.095
Paginação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• A paginação é, na prática, mais complexa,
uma vez que uma determinada memória
física pode abrigar mais de um bloco de
dados.
• Retomando novamente o exemplo anterior,
com páginas de 4 KB, temos:
Paginação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Paginação
Espaço de 
endereçamento
0
4.095
8.191
65.535
4 KB
Frame 2
0
4.095
Página 0
Página 1
Página 16
4 KB
Frame 1
4 KB
Frame 0
Memória
de 12 KB
8.191
12.287
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
O controle deste processo ocorre através de
uma Tabela de Paginação:
Página no
Indicador de
paginação
Endereço
no disco
Frame no
Paginação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Voltando ao exemplo anterior:
Página no
Indicador de
paginação
Endereço
no disco Frame no
0 1 xxx 2
1 1 yyy 0
16 0 zzz
Espaço de 
endereçamento
0
4.095
8.191
65.535
4 KB
Frame 2
0
4.095
Página 0
Página 1
Página 16
4 KB
Frame 1
4 KB
Frame 0
Memória
de 12 KB
8.191
12.287
Paginação
Indicador de Paginação:
0 – A página não está na memória
1 – A página está na memória
Tabela de Paginação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Se por sorte o programa do usuário e seus
dados couberem exatamente em um número
inteiro de páginas, não haverá desperdício
de espaço de memória quando essas
informações estiverem armazenadas na
memória principal.
• Por outro lado, se tais informações não
puderem ser acomodadas em um número
inteiro de páginas, haverá espaço disponível
(não utilizado) na última página.
Fragmentação Interna
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Por exemplo, se um programa e seus
respectivos dados ocuparem 26.000 bytes
em uma máquina com 4.096 bytes por
página (4 KB), as seis primeiras páginas
estarão cheias, e a última conterá apenas
1.424 bytes.
• Este tipo de problema é denominado
fragmentação.
Fragmentação Interna
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Página 6
Páginas de
4 KB cada
Página 0
Página 1
Página 5
Página 4
Página 3
Página 2
Páginas repletas: 6 x 4.096 = 24.576 bytes
Portanto: 26.000 – 24.576 = 1.424
1.424 bytes ocupados
Fragmentação Interna
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• O sistema de memória virtual visto até agora
é unidimensional, pois os endereços variam
consecutivamente de zero até um endereço
máximo.
• Na solução de alguns problemas é
conveniente a existência de mais de um
espaço de endereçamento.
Segmentação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Por exemplo, um compilador gera muitas
tabelas que precisam ser construídas na
medida em que o processo de compilação
evolui.
• Destas tabelas pode-se citar:
 A tabela de símbolos, contendo o nome e os atributos das
variáveis.
 A tabela com o código fonte.
 Uma tabela contendo todas as constantes.
 Uma tabela analítica, contendo a análise sintática do programa.
 Etc.
Segmentação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Segmentação
Espaço de
endereçamento
Símbolos
Código fonte
Análise sintática
Constantes
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Estas tabelas vão sendo preenchidas na
medida em que o processo de compilação
avança.
• Se o espaço de endereçamento for único, as
faixas destinadas às diversas tabelas podem
estourar sua capacidade:
Segmentação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Segmentação
Espaço de
endereçamento
Símbolos
Código fonte
Análise sintática
Constantes
Instante “t” do 
processo de 
compilação
Faixa estourada
O que fazer?
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Segmentação
Instante “t” do 
processo de 
compilação
Símbolos
Código fonte
Constantes
Análise Sintática
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• A solução é segmentar o espaço de
endereçamento em vários espaços
independentes entre si.
• Desta forma, os espaços podem crescer, ou
diminuir, na medida da necessidade.
• Além disto, é possível atribuir níveis
diferentes de segurança para cada espaço.
Segmentação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Comparando
Consideração Paginação Segmentação
O programador precisa saber que o 
sistema usa esta técnica?
Quantos espaços lineares de 
endereços existem?
O espaço de endereçamento virtual 
pode exceder o tamanho da 
memória?
As tabelas de tamanho variável 
podem ser tratadas com 
facilidade?
Por que esta técnica foi inventada?
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Comparando
Consideração Paginação Segmentação
O programador precisa saber que o 
sistema usa esta técnica? Não Sim
Quantos espaços lineares de 
endereços existem?
O espaço de endereçamento virtual 
pode exceder o tamanho da 
memória?
As tabelas de tamanho variável 
podem ser tratadas com 
facilidade?
Por que esta técnica foi inventada?
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Comparando
Consideração Paginação Segmentação
O programador precisa saber que o 
sistema usa esta técnica? Não Sim
Quantos espaços lineares de 
endereços existem? 1 Muitos
O espaço de endereçamento virtual 
pode exceder o tamanho da 
memória?
As tabelas de tamanho variável 
podem ser tratadas com 
facilidade?
Por que esta técnica foi inventada?Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Comparando
Consideração Paginação Segmentação
O programador precisa saber que o 
sistema usa esta técnica? Não Sim
Quantos espaços lineares de 
endereços existem? 1 Muitos
O espaço de endereçamento virtual 
pode exceder o tamanho da 
memória?
Sim Sim
As tabelas de tamanho variável 
podem ser tratadas com 
facilidade?
Por que esta técnica foi inventada?
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Comparando
Consideração Paginação Segmentação
O programador precisa saber que o 
sistema usa esta técnica? Não Sim
Quantos espaços lineares de 
endereços existem? 1 Muitos
O espaço de endereçamento virtual 
pode exceder o tamanho da 
memória?
Sim Sim
As tabelas de tamanho variável 
podem ser tratadas com 
facilidade?
Não Sim
Por que esta técnica foi inventada?
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Comparando
Consideração Paginação Segmentação
O programador precisa saber que o 
sistema usa esta técnica? Não Sim
Quantos espaços lineares de 
endereços existem? 1 Muitos
O espaço de endereçamento virtual 
pode exceder o tamanho da 
memória?
Sim Sim
As tabelas de tamanho variável 
podem ser tratadas com 
facilidade?
Não Sim
Por que esta técnica foi inventada?
Para simular 
memórias 
grandes
Para permitir o 
uso de vários 
espaços de 
endereçamento
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• A segmentação pode ser implementada de
duas maneiras:
Por “swapping”
Por paginação
Segmentação
Figura: http://lzanuz.sites.uol.com.br/mem_swapping.jpg
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• No “swapping” um conjunto de segmentos
deve estar na memória principal em um
certo instante.
• Se ocorrer uma referência a um segmento
que não está na memória principal, este
segmento deve ser trazido do disco para a
memória.
• Se não houver espaço para ele na memória,
um ou mais segmentos devem ser retirados
da memória e escritos de volta no disco.
Segmentação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Em certo sentido, a segmentação
implementada por “swapping” não é muito
diferente da paginação por demanda: os
segmentos vão e vem do disco para a
memória principal, e vice-versa, na medida
em que são necessários.
• Há, contudo, uma diferença essencial entre
os dois métodos: as páginas têm tamanho
fixo, e os segmentos não.
Segmentação
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• A fragmentação externa ocorre entre
segmentos, e não dentro deles.
• A sucessiva troca de segmentos numa
memória principal cria intervalos ociosos
que representam um desperdício deste
recurso.
• Este problema é tratado através da
compactação dos intervalos ociosos.
Fragmentação Externa
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Fragmentação Externa
Segmento 4
7 KB
Segmento 3
8 KB
Segmento 2
5 KB
Segmento 1
8 KB
Segmento 0
4 KB
Segmento 4
7 KB
Segmento 3
8 KB
Segmento 2
5 KB
Segmento 0
4 KB
3 KB
Segmento 7
5 KB
3 KB
Segmento 5
4 KB
Segmento 3
8 KB
Segmento 2
5 KB
Segmento 0
4 KB
3 KB
Segmento 7
5 KB
t1 t2 t3
3 KB
Segmento 5
4 KB
Segmento 2
5 KB
Segmento 0
4 KB
3 KB
Segmento 7
5 KB
Segmento 6
4 KB
4 KB
t4
Compactação
10 KB
Segmento 5
4 KB
Segmento 2
5 KB
Segmento 0
4 KB
Segmento 7
5 KB
Segmento 6
4 KB
t5
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
A compactação consome tempo de máquina
para executar sua tarefa e não pode ser
executada a cada movimentação de
segmentos, mas somente a determinados
intervalos de tempo.
Fragmentação Externa
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Para alocar área para um arquivo em disco, o
SO utiliza, habitualmente, dois métodos:
Controle de Espaço em Disco
• A Lista Livre
• O Mapa de Bits
Tomemos como exemplo a figura do um disco
que segue:
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Controle de Espaço em Disco
Trilha 0
Trilha 1 Trilha 2
Trilha 3
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Controle de Espaço em Disco
Setor 4
Setor 0
Setor 1Setor 2
Setor 3
Setor 5 Setor 6
Setor 7
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Controle de Espaço em Disco
0
1
2
3
4
5 6
7
0
1
2
3
Setor gravado
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Lista Livre
0
1
2
3
4
5 6
7
0
1
2
3
Setor gravado
Trilha Setor No de setores livres
0 0 2
0 3 2
0 6 2
1 0 1
1 2 4
1 7 1
2 0 3
2 4 1
2 6 2
3 0 2
3 3 1
3 5 3
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Mapa de Bits
0
1
2
3
4
5 6
7
0
1
2
3
Setor gravado
S0 S1 S2 S3 S4 S5 S6 S7
T0 0 0 1 0 0 1 0 0
T1 0 1 0 0 0 0 1 0
T2 0 0 0 1 0 1 0 0
T3 0 0 1 0 1 0 0 0
0 – Área livre
1 – Área gravada
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
• Quando um programa roda, ele o faz como
parte de algum processo.
• Os sistemas operacionais modernos permite
a criação, e destruição, dinâmica de
processos.
Criação de Processos
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Há duas possibilidades:
Criação de Processos
1. O processo-pai cria, e mantém controle, sobre
o processo-filho (total ou parcial).
1.1. Há necessidade de instruções virtuais
para permitir que o processo-pai possa parar
e retomar a execução de um processo-filho.
1.2. Idem, para examiná-lo e terminá-lo.
2. O processo-pai cria o processo-filho e este
torna-se um processo independente.
Prof. ArthurProjeto Lógico de Computadores Nível do Sistema Operacional
Projeto Lógico de Computadores
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Nível do Sistema Operacional
Conceituação
Projeto Lógico de Computadores
Nível do Sistema Operacional
Memória Virtual no Pentium II
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Introdução – Paginação por Demanda
É possível iniciar a executar um programa em uma
máquina com memória virtual sem que nenhuma de
suas páginas esteja na memória principal.
A tabela de páginas desse programa indica que todas
as suas páginas estão na memória secundária.
Quando o processador tentar buscar a primeira das
instruções do programa, haverá a geração de uma
falta de página, que fará com que a página contendo a
primeira instrução seja carregada na memória
principal.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Introdução – Paginação por Demanda
Então a primeira instrução pode ser executada. Se
essa instrução referenciar dois endereços, e esses
endereços estiverem em páginas diferentes daquela
onde está a instrução, serão geradas mais duas faltas
de páginas, e mais duas páginas serão trazidas do
disco, antes que a execução da instrução tenha
terminado.
A próxima instrução poderá causar ainda mais faltas
de página, e assim por diante.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Introdução – Paginação por Demanda
Este método de operação de um sistema de memória
virtual é conhecido como paginação por demanda.
Nesta situação, as páginas são trazidas para a
memória principal em função de requisições
explícitas para cada uma delas, e não
antecipadamente.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Introdução – Paginaçãopor Demanda
A questão da adequação da utilização da paginação
por demanda só é relevante na fase inicial da
execução de um programa.
Na medida em que o programa já estiver rodando há
algum tempo, as páginas necessárias à sua execução
já deverão ter sido coletadas da memória secundária
estando, portanto, residentes na memória principal.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
O Pentium II tem um sistema muito sofisticado de
memória virtual que suporta:
• A paginação por demanda
• A segmentação pura
• A segmentação com paginação
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
O coração da memória virtual está situado em duas
tabelas:
• A LDT (Local Descriptor Table – Tabela de
Descritores Locais)
• A GDT (Global Descriptor Table – Tabela de
Descritores Globais)
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Cada programa tem sua própria LDT, mas só existe
uma única GDT, compartilhada por todos os
programas que rodam no processador.
A LDT descreve os segmentos locais a cada um dos
programas, incluindo seu código, seus dados, sua
pilha e assim por diante, enquanto que a GDT
descreve os segmentos do sistema , inclusive os
segmentos do próprio sistema operacional.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Para acessar um segmento, um programa precisa
primeiro carregar um seletor para esse segmento em
um dos registradores de segmento.
Durante a execução do programa, um registrador
guarda o seletor do segmento de código, e outro
registrador guarda o seletor do segmento de dados, e
assim por diante.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Cada seletor é um número de 16 bits:
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Um dos bits do seletor informa se o segmento é local
ou é global.
Treze bits especificam o número da entrada na LDT
ou na GDT.
Dois bits estão ligados à proteção.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Cada programa ativo tem um diretório de páginas
composto de 1.024 entradas de 32 bits cada. Esse
diretório localiza-se em um endereço apontado por
um registrador global.
Cada entrada nesse diretório aponta para uma tabela
de páginas, que também contém 1.024 entradas de 32
bits cada.
As entradas da tabela de páginas apontam para
molduras de páginas.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Mapeamento de um endereço linear em um endereço físico:
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
Proteção:
O Pentium II suporta
4 níveis de proteção,
sendo o nível 0 (zero)
o mais privilegiado e
o nível 3 o menos
privilegiado.
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Memória Virtual no Pentium II
A cada instante, o programa que estiver rodando está
em um determinado nível, identificado por um campo
de 2 bits de sua PSW (Program Status Word – Palavra
de Estado de Programa).
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Memória Virtual no Pentium II
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Exemplos de Sistemas Operacionais
Parte 1
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
UNIX
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
O UNIX foi desenvolvido no início dos anos 1970 na
Bell Labs por Ken Thompson.
UNIX
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
O UNIX foi escrito em C, linguagem projetada e
desenvolvida por Dennis Ritchie.
UNIX
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
A Universidade de Berkeley, na Califórnia, adquiriu o
código fonte original do UNIX e os seus cientistas
aprimoraram-no substancialmente.
UNIX
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Foram criadas no UNIX as seguintes funcionalidades:
• Portabilidade
• Memória virtual paginada
• Extensão de nomes de arquivos com até 255
caracteres
• Criação do protocolo TCP/IP
UNIX
Estrutura do Sistema Operacional
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Em função das várias implementações do UNIX é
difícil falar sobre uma estrutura única, mas a figura a
seguir se aplica à maioria delas:
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Na parte inferior da figura existe uma camada que
suporta os drivers de dispositivos, que faz a interface
do sistema de arquivos com o hardware da máquina.
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Originalmente, cada driver de dispositivo era
programado como sendo uma entidade independente,
separada de todas as outras.
Esse esquema levava a muito esforço duplicado, pois
os drivers precisavam tratar com o fluxo de controle
do programa, precisam tratar erros, prioridades,
separar os dados do controle, e assim por diante.
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Acima dos drivers de dispositivos está o sistema de
arquivos. Esse sistema gerencia os nomes dos
arquivos e de diretórios, a alocação de blocos de
disco, a proteção, etc.
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
A cache de blocos faz parte do sistema de arquivos,
com a função de armazenar os blocos lidos mais
recentemente do disco, para o caso deles serem
necessários novamente em breve.
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de ComputadoresNível do Sistema Operacional Prof. Arthur
A outra parte do kernel do UNIX é responsável pela
gerência dos processos.
Entre suas diversas funções, ela trata da
comunicação entre os processos (IPC – Inter Process
Communication), que permite que os processos se
comuniquem uns com os outros, para estabelecer
uma sincronização de suas execuções.
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
A gerência da memória também é implementada na
parte relativa à gerência de processos.
A maioria dos sistemas UNIX suporta memória virtual
com base na paginação por demanda, às vezes com
algumas características extras, como a capacidade de
permitir que vários processos compartilhem a mesma
região do espaço de endereçamento.
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
As primeiras versões do UNIX tinham interface com o
usuário totalmente baseada em texto.
Essa interface era tratada por um programa
conhecido como shell, que rodava no nível do
usuário, cuja comunicação com o usuário era feita
por intermédio de comandos de linha .
O shell não fazia parte do kernel, sendo portanto
muito fácil programar um shell e incorporá-lo ao
UNIX.
UNIX
Estrutura de um sistema UNIX típico
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Com o surgimento das interfaces gráficas, as janelas
foram incorporadas ao shell.
UNIX
Estrutura do Kernel do UNIX
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Exemplos de Sistemas Operacionais
Parte 1
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Exemplos de Sistemas Operacionais
Parte 2
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Windows NT
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Com o passar dos anos, o MS-DOS continuou a
ganhar novas características, mas nunca deixou de
ser um sistema operacional orientado a comandos de
linha.
Windows NT
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
A Microsoft, inspirada no sucesso do sistema
Macintosh da Apple, decidiu dar ao MS-DOS uma
interface gráfica, à qual deu o nome de Windows.
Windows NT
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
As primeiras três versões do Windows, inclusive a
versão Windows 3.x, não eram sistemas operacionais
na acepção da palavra, mas simplesmente interfaces
gráficas com o usuário no topo do MS-DOS, que
ainda era o responsável pelo controle da máquina.
Todos os programas rodavam no mesmo espaço de
endereçamento e um problema ocorrido em um deles
poderia derrubar todo o sistema.
Windows NT
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Windows NT
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
O Windows NT trabalhava com 32 bits, e não sofreu
influência de qualquer outro sistema.
Por esta razão, a sigla NT significa: New Technology.
O NT era vendido em duas versões: servidor (server)
e estação de trabalho (workstation).
Windows NT
Introdução
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
As duas versões eram geradas a partir do mesmo
código fonte.
A versão servidor era voltada para máquinas que
rodavam o sistema de arquivos de redes locais e que
atuavam como servidores de impressão, tendo um
gerenciamento mais elaborado do que aquele
exercido pela versão estação de trabalho.
O NT suportava multiprogramação, permitindo com
que vários usuários trabalhassem simultaneamente.
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
O nível de abstração de hardware tem a função de
apresentar ao resto do sistema operacional
dispositivos abstratos de hardware, livres das
características específicas de cada módulo existentes
no hardware real.
Exemplos: caches implementadas fora do chip,
temporizadores, barramentos de E/S, controladores
de interrupções, etc. Isto facilitava a portabilidade do
NT para diferentes máquinas.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
O microkernel e os drivers de dispositivos têm
acesso direto ao hardware.
O microkernel suportava objetos básicos do kernel,
as interrupções, os traps, o tratamento de exceções,
o escalonamento de processos e a sincronização
entre processos, a sincronização de vários
processadores e o gerenciamento do tempo do
processador.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
O propósito do microkernel era tornar o resto do
sistema operacional completamente independente do
hardware propiciando, portanto, a portabilidade
independentemente da arquitetura do computador.
O código do microkernel permanecia residente na
memória não podendo sofrer preempção, ou seja,
esse código não podia, em hipótese alguma, sair da
memória principal.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Drivers de dispositivos
Cada driver controlava um ou mais dispositivos de
E/S, mas um driver podia realizar tarefas que não
estejam diretamente relacionadas com um dispositivo
específico, como criptografar um stream de dados ou
prover acesso a estruturas de dados do kernel.
Havia a necessidade de tomar cuidado com os
drivers, pois como as pessoas podiam instalar novos
drivers, e como eles tinham acesso ao kernel, havia a
possibilidade de corromper a estrutura do kernel.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Executivo
Este módulo era totalmente independente da
arquitetura e, portanto, podia ser portado para outras
máquinas.
Era composto por três níveis com várias funções em
cada um deles.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Executivo
Sistema de arquivos
Suportava o uso dos arquivos e dos diretórios.
Gerente de objetos
Tratava os objetos conhecidos do kernel: processos,
threads (processos simples que rodam dentro de um
único espaço de endereçamento),arquivos,
diretórios, semáforos, temporizadores, etc.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Executivo
Gerente de E/S
Provia um ambiente para possibilitar o controle dos
dispositivos de E/S.
Gerente da cache
Mantinha na memória principal os blocos do disco
mais recentemente usados para acelerar o acesso a
eles no caso deles serem novamente necessários.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Executivo
Gerente da memória virtual
Implementava a arquitetura da memória com base na
paginação por demanda.
Gerente de processos e de threads
Tratava dos processos e das threads, incluindo sua
criação e sua destruição.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Executivo
Gerente de segurança
Era responsável pela aplicação do mecanismo de
segurança: autenticação do login e controle de
acesso.
Gerente da interface gráfica
Tratava das questões relativas às imagens do monitor
e da impressora. Fazia, também, o gerenciamento das
janelas.
Estrutura do sistema NT
Windows NT
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur
Executivo
Serviços do sistema
Sua função era implementar uma interface para o
Executivo, aceitando as chamadas de sistema do NT
e chamando as outras partes do Executivo para
executá-las.
Estrutura do sistema NT
Projeto Lógico de Computadores
Nível do Sistema Operacional
Exemplos de Sistemas Operacionais
Parte 2
Prof. Arthur
arthur.battaglia@docente.unip.br
2018
Projeto Lógico de Computadores Nível do Sistema Operacional Prof. Arthur

Mais conteúdos dessa disciplina