Projeto Logico de Computadores   04   Nivel do Sistema Operacional
49 pág.

Projeto Logico de Computadores 04 Nivel do Sistema Operacional


DisciplinaProjeto Lógico do Sistema: Lógica5 materiais3 seguidores
Pré-visualização2 páginas
Projeto Lógico de Computadores
Nível do Sistema Operacional
Projeto Lógico de Computadores
Prof. Arthur
arthur@unip.br
2016
Nível do Sistema Operacional
Conceituação
Prof. Arthur
Projeto 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. Arthur
Projeto 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. Arthur
Projeto 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. Arthur
Projeto 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. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Memória Virtual
Nesta época surgiu a técnica dos \u201coverlays\u201d, os quais eram totalmente controlados pelo programador.
Os \u201coverlays\u201d eram pedaços de um programa que ficavam em disco, e eram chamados para a memória no momento de serem executados.
Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Overlays
Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Overlays
Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
O método dos \u201coverlays\u201d era muito trabalhosa para o programador.
Surgiu, então, um método para processar os \u201coverlays\u201d automaticamente, sem que o programador precisasse saber da sua existência.
Este método ficou conhecido como Paginação.
Memória Virtual
Prof. Arthur
Projeto 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. Arthur
Projeto 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. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Espaço de Endereçamento
Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Esta técnica de \u201coverlay\u201d 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. Arthur
Projeto 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.
Paginação
Prof. Arthur
Projeto 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. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Paginação
Prof. Arthur
Projeto 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. Arthur
Projeto 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
Paginação
Indicador de Paginação:
0 \u2013 A página não está na memória
1 \u2013 A página está na memória
Tabela de Paginação
Prof. Arthur
Projeto 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. Arthur
Projeto 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. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Páginas repletas: 6 x 4.096 = 24.576 bytes
Portanto: 26.000 \u2013 24.576 = 1.424
Fragmentação Interna
Prof. Arthur
Projeto 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. Arthur
Projeto 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. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Segmentação
Prof. Arthur
Projeto 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. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Segmentação
Instante \u201ct\u201d do processo de compilação
Faixa estourada
O que fazer?
Prof. Arthur
Projeto Lógico de Computadores
Nível do Sistema Operacional
Segmentação
Instante \u201ct\u201d do processo de compilação
Prof. Arthur
Projeto 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. Arthur
Projeto 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. Arthur
Projeto 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