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