Baixe o app para aproveitar ainda mais
Prévia do material em texto
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 “overlays”, os quais eram totalmente controlados pelo programador. Os “overlays” 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 “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. 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 “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. 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 – A página não está na memória 1 – 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 – 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 “t” 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 “t” 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 Quantosespaç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 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. 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 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. 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 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. 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 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. Arthur Projeto 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. Arthur Projeto 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. Arthur Projeto 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. Arthur Projeto 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. Arthur Projeto Lógico de Computadores Nível do Sistema Operacional Fragmentação Externa Prof. Arthur Projeto 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. Arthur Projeto 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. Arthur Projeto Lógico de Computadores Nível do Sistema Operacional Controle de Espaço em Disco Prof. Arthur Projeto Lógico de Computadores Nível do Sistema Operacional Controle de Espaço em Disco Prof. Arthur Projeto Lógico de Computadores Nível do Sistema Operacional Controle de Espaço em Disco Prof. Arthur Projeto Lógico de Computadores Nível do Sistema Operacional Lista Livre Trilha Setor Node 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. Arthur Projeto Lógico de Computadores Nível do Sistema Operacional Mapa de Bits 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. Arthur Projeto 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. Arthur Projeto 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. Arthur 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 � � � Programa Memória� Overlays� Carga na memória� Retorno� Disco � � � Programa Memória� Overlays� Carga na memória� Retorno� Disco � � Espaço de endereçamento 0 4.095 8.191 65.535 Memória de 4KB� 0 4.095 � � Espaço de endereçamento 0 4.095 8.191 65.535 Memória de 4KB� 0 4.095 � � 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 � � 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 � Página 1� Página 0� Página 6� Página 5� Página 4� Página 3� Página 2� Páginas de 4 KB cada � 1.424 bytes ocupados� � Código fonte� Símbolos� Análise sintática� Constantes� Espaço de endereçamento � Código fonte� Símbolos� Análise sintática� Constantes� Espaço de endereçamento � � Símbolos� Código fonte� Constantes� Análise Sintática� � � 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� 3 KB� Segmento 0 4 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� 4 KB� Segmento 2 5 KB� Segmento 0 4 KB� 3 KB� Segmento 7 5 KB� Segmento 6 4 KB� t4 Compactação� 10 KB� Segmento 5 4 KB� Segmento 2 5 KB� Segmento 0 4 KB� t5 Segmento 7 5 KB� Segmento 6 4 KB� � � Trilha 0� Trilha 1� Trilha 2� Trilha 3� � � � Setor 4� Setor 0� Setor 1� Setor 2� Setor 3� Setor 5� Setor 6� Setor 7� � � 0� 1� 2� 3� 0 4� 5� 6� 7� 1 2 3 Setor gravado � � 0� 1� 2� 3� 0 4� 5� 6� 7� 1 2 3 Setor gravado � � 0� 1� 2� 3� 0 4� 5� 6� 7� 1 2 3 Setor gravado
Compartilhar