Fundamentos da computação

 

Arquitetura de Computadores


 

  • Visão geral
    • Arquitetura de computadores
      • projeto das partes do sistema do computador visíveis pelo programador;
      • tipos de dados, operações e características de cada nível;
    • Computador digital
      • circuitos eletrônicos que são utilizados para resolver problemas por meio da execução de instruções de um programa de computador;
      • organizado em um sistema de componentes (processador, memória e interface de entrada e saída) interconectados por barramento;
    • Circuitos de computador (circuitos eletrônicos, processadores, controladores)
      • reconhecem e executam diretamente um conjunto limitado de instruções que são codificadas em linguagem de máquina;
      • esse conjunto deve ser coerente com os requisitos de utilização e de desempenho do computador a fim de reduzir o custo de seus circuitos;
      • as instruções são operações simples como cálculos aritméticos, verificação de condição ou cópia de dados da memória;
    • Programa de computador
      • são sequências de instruções que descrevem como executar uma determinada tarefa;
      • é escrito por meio de uma linguagem de programação que deve ser convertida para o conjunto de instruções do processador;
      • o conjunto de instruções embutidas pelo computador, ou seja, aquelas que ele pode executar, formam a sua linguagem de máquina;
    • Máquina multinível
      • computador construído em níveis de abstrações de objetos e operações para a redução da complexidade;
      • cada nível agrega novas instruções àqueles fornecidas por níveis inferiores que são traduzidas ou interpretadas para o nível N-1;
  • Arquiteturas da Máquina Multinível
    • Nível 5 → linguagens orientadas a solução de problemas (C, Java, etc);
      • Tradução por compilador;
    • Nível 4 → linguagem de montagem (assembly);
      • Tradução por montador (assembler);
    • Nível 3 → sistema operacional (escalonamento para multitarefa);
      • Interpretação parcial;
    • Nível 2 → arquitetura do conjunto de instruções (ISA) da CPU;
      • Interpretação (microprograma – CISC) ou execução direta (circuitos de execução em hardware – RISC);
    • Nível 1 → microarquitetura (circuitos digitais);
      • Hardware;
    • Nível 0 → lógica digital (portas lógicas implementadas por chips);
  • Modos de execução de um programa de computador
    • Visão geral
      • Execução de um programa
        • programas escritos na linguagem do nível N são traduzidos ou interpretados para o nível N-1;
      • Programador de sistema
        • especializado no projeto de níveis de máquina, bem como nos níveis 1, 2 e 3;
      • Programador de aplicações
        • especializado na resolução de problemas do cotidiano, bem como nos níveis 4 e 5;
      • Linguagem numérica
        • linguagem formada por uma série (sequência) de números, voltada para as máquinas, como nos níveis 1, 2 e 3;
      • Linguagem não-numérica
        • linguagem formada por palavras e abreviações, voltada para as pessoas, como nos níveis 4 e 5;
      • Tradução e Interpretação
        • ambos os modos executam uma sequencia de instruções equivalentes em código do nível subsequente;
    • Tradução
      • o programa de computador é inteiramente convertido para linguagem do nível subsequente e armazenado;
      • o programa resultante é suficiente para sua execução e estará no controle;
      • a execução do programa resultante é independente do código fonte;
    • Interpretação
      • um interpretador examina e decodifica o código do programa para instruções do nível subsequente;
      • cada instrução decodificada é executada imediatamente conforme é interpretada (programa executado a partir do código fonte);
      • o interpretador está no controle e cada execução depende do acesso ao código fonte;
      • realiza a execução do código subsequente ao processo de análise do código fonte, sem gerar códigos intermediários;
      • podem ser implementados em hardware, como o processador que é um interpretador por meio de sinais elétricos;
    • Híbrido

      • possui uma fase de compilação (javac/JDK) que traduz o código fonte em código intermediário e uma fase de interpretação (JVM/JRE);
      • a tradução da linguagem-fonte em linguagem-objeto-intermediária contribui para a portabilidade;
      • possui melhor desempenho e portabilidade que linguagens interpretadas;

 

Contexto do Nível da Linguagens – Linguagens e Tradução

 

  • Nível da Linguagem de ProgramaçãoNível 5
    • modelo afastado do nível de máquina, linguagem de alto nível;
    • estruturadas de forma a melhor refletir os processos humanos de solução de problemas;
    • conjunto de instruções mais conveniente para pessoas usarem;
  • Nível da Linguagem de Montagem ou simbólica (assembly) – Nível 4

    • modelo centrado no computador, dependente da arquitetura da máquina e do processador;
    • associação de um mnemônico (MOV, ADD, …) ao respectivo código da operação (opcode) do processador (arquitetura) alvo;
    • relação de 1 para 1 entre o código programado e as instruções resultantes (linguagem de máquina);
    • os endereços reais em memória (localização dos operandos) são indicados referências simbólicas (nome, label);
    • Diretivas (não são instruções) → orientam o montador quanto a alocação das instruções em segmento de código (.text), de dados (.data), etc;
    • Linguagem de máquina → linguagem de computador primitiva que é diretamente e individualmente executada pelos circuitos do processador;
    • Meta-assembler → uma linguagem para montagem traduzível para distintas arquiteturas (linguagens de máquina);
  • Tradução

    • Compiladorproduz linguagem de montagem a partir da tradução do código fonte (relação 1:N);
      • Pré-processamento
        • substitui as macros por código fonte;
        • identifica o posicionamento original das linhas de código para sua referência em mensagens de aviso/erro;
      • Análise → cria uma representação intermediária do código fonte em estruturas de programação (tokens, tabela de símbolos e árvore sintática);
        • Análise léxica (scanner)
          • processamento do código fonte para divisão das instruções em símbolos (tokens);
          • verifica-se a pertinência da entrada em relação ao alfabeto da linguagem;
          • despreza comentários e espaços em branco;
          • produz a tabela de símbolos (tokens) com palavras reservadas, delimitadores e identificadores;
          • os símbolos (tokens) são conversíveis para linguagem de montagem;
        • Análise sintática (parser)
          • a tabela de símbolos (tokens) também pode ser produzida nesta fase;
          • processamento da tabela de símbolos para organização em árvore sintática (árvore hierárquica ou de derivação);
          • a árvore sintática determina a sequência de execução;
        • Análise semântica
          • processamento da árvore sintática para identificação de incoerências semânticas;
          • tipos de variáveis incompatíveis, verifica erros de significado, compatibilidade entre operandos e operadores nas expressões, etc;
      • Síntese (não ocorre em linguagens interpretadas) → prepara as instruções em linguagem de montagem a partir da representação intermediária;
        • Geração de código intermediário
        • Otimização do código
        • Geração do código em linguagem de montagem
    • Montador (assembler)
      • produz código objeto (módulo-objeto ou programa-objeto) a partir da tradução da linguagem de montagem (relação 1:1);
      • converte cada instrução em linguagem de montagem em uma instrução equivalente em linguagem de máquina, sendo dependente da arquitetura;
      • verifica se a sintaxe está correta e resolve as referências simbólicas em endereços reais de memória;
      • substitui o mnemônico pelo código da operação (opcode) em binário, com respectivos operandos;
    • Ligador (link editor)

      • produz código de máquina (código executável, módulo de carga) a partir da ligação de um ou mais códigos objetos (bibliotecas, rotinas);
      • examina o código objeto e substitui as referências externas não resolvidas por código de rotinas ou chamada e passagem de endereços de dados (parâmetros);
      • Ligação estática → incorporado ao executável resultante, o código objeto de rotinas é embutido dentro do executável gerado;
      • Ligação dinâmica → referenciado em execução, o código objeto de rotinas é referenciado, sendo acessado durante a execução;
    • Carregador (loader)
      • tarefa do sistema operacional para carregar o executável em memória, para o espaço de endereçamento de um novo processo, e executá-lo;
      • Carregador absoluto → o executável possui referências a endereços da memória real;
      • Carregador relocável → o executável faz referência a endereços de memória virtual, relativos a zero, sendo realocados pelo carregador para endereços reais;
    • Empacotador (packer)
      • compacta, cifra e ofusca e produz outro executável a partir do executável original;
      • remove referências ao compilador utilizado;
      • permite a decifragem do código conforme a execução do programa;

 

Contexto do Nível das Linguagens – Paralelismo em Nível de Multicomputadores

 

  • Paralelismo em Nível de ProcessamentoMulticomputadores de troca de mensagens sem memória compartilhada
    • Visão geral

      • pares processador-memória interconectados por rede de mensagens (interligados por um sistema de comunicação);
      • cada estação possui sistema operacional próprio e memória privada;
      • CPUs fracamente acoplados em relação ao multiprocessador, com menor taxa de transferência entre processador e memória;
    • Arquiteturas
      • Cluster
        • conjunto de computadores gerenciados por um controlador central que funcionam como um único sistema centralizado;
        • atuam como uma máquina única, de baixo custo, escalável e tolerante à falhas para obtenção de resultados imediatos;
        • CPUs fortemente acoplada em relação a Grid;
        • Alta disponibilidade → distribuição de processamento entre os nós redundantes em failover (tolerante à falhas);
        • Balanceamento de carga → distribuição de processamento de maneira uniforme entre nós conhecidos e disponíveis;
        • Alto desempenho → distribuição de processamento para execução paralela entre os nós (processamento distribuído);
      • Grid
        • ambiente cooperativo de múltiplas máquinas fracamente acopladas em relação ao cluster;
        • Computação oportunista → utiliza períodos de ociosidade de computadores pessoais;
    • Sistemas distribuídos
      • rotinas intimamente relacionadas preparadas para execução em ambientes de multicomputadores;
      • utiliza módulos autônomos para processamento descentralizado de rotinas que comporão um resultado (objetivo) comum;
      • Padrões de desenvolvimento
        • Common Object Request Broker Architecture (CORBA)
        • Object Linking and Embedding (OLE)

 

Contexto do Nível do Sistema Operacional

 

  • Nível do Sistema OperacionalNível 3

    • implementação de memória virtual em que a memória endereçada pelo programa de computador é traduzida para o endereço real de memória;
    • implementação de escalonador para a execução simultânea de programas (multitarefa);
    • Comportamento híbrido
      • instruções recebidas em linguagem de máquina (instruções idênticas ao Nível 2) são repassadas diretamente pelo Nível 2;
      • fornece novas instruções (chamadas do sistema) que são interpretadas para a linguagem de máquina para serem executadas pelo Nível 2;

 

Contexto do Nível do Conjunto de Instruções – Instruções

 

  • Nível do Conjunto de Instruções (ISA) – Nível 2

    • conjunto de instruções embutidas no processador, ou seja, aquelas que ele pode executar e formam a sua linguagem de máquina;
  • Arquitetura de Von Neumann
    • Componentes → arquitetura centrada na memória, não utiliza um barramento único (que surgiu apenas no minicomputador PDP-8);
      • Memória principal → armazena dados e instruções, e têm tempos típicos de acesso de dezenas de nanossegundos;
      • Unidade Lógica e Aritmética (ULA) → executa operações lógicas e aritméticas (somar, subtrair, comparar, …);
      • Unidade de Controle (UC) → gera sinais para a busca (na memória), decodificação e execução da instrução;
      • Unidade de Entrada e Saída (E/S) → permite a interação com o usuário;
    • Visão geral
      • computador digital que armazena seus programas no mesmo espaço de memória que os dados;
      • utiliza um barramento entre a memória e o processador que é compartilhado para dados e instruções;
      • desempenho limitado pelo barramento (gargalo de Von Neumann);
      • executa aritmética binária, realizada a partir da distinção de dois valores de uma quantidade física contínua (tensão ou corrente elétrica);
  • Arquitetura de Harvard
    • dois barramentos externos independentes para dados e instruções (memórias/cache distintas);
    • leitura de instruções e de dados de forma distinta e simultânea;
    • maior custo e maior desempenho (maior número de instruções por ciclo de clock);
  • Instruções
    • Formato de instruções → código da operação + operandos (dados);
      • a instrução é composta do código da operação e zero, um ou mais operandos;
      • o código da operação (opcode) identifica a operação a ser realizada pelo processador;
      • os operandos referenciam (modos de endereçamento) os dados que serão operados;
      • há instruções que não necessitam de operando (desvio, parada, etc);
    • Operações
      • operações de movimentação de dados (↔) entre componentes da arquitetura (ULA, memória principal e dispositivos de E/S);
      • operações lógicas, aritméticas, de complemento e de deslocamento;
      • operações de controle de sequência de execução (desvio, parada, etc);
    • Modos de endereçamento → forma de localização dos dados do operando;
      • Modo imediato → o operando (#1) contém o dado (não há ciclo para buscá-lo em memória, porém é limitado pelo número de bits do operando);
      • Modo direto → o operando (AEh→#2) contém o endereço de memória onde está o dado;
      • Modo indireto → o operando (AEh→AFh→#3) contém um endereço de memória que contém outro endereço de memória onde está o dado;
      • Modo por registrador
        • direto → o operando (EDX→#4) referencia um registrador onde está o dado;
        • indireto → o operando (EBX→AEh→#5) referencia um registrador que contém um endereço de memória onde está o dado;
    • Principais Registradores →  podem conter dados, endereços de memória ou código de condição;
      • Program Counter – PC (Contador de programa – CP ou Contador de instruções – CI)
        • contém o endereço de memória da próxima instrução a ser buscada/executada;
      • Instruction Register – IR (Registrador de instrução – RI)
        • contém a última instrução buscada (instrução em execução);
      • Memory Address Register – MAR (Registrador de endereço de memória)
        • contém um endereço de memória;
      • Memory Data/Buffer Register – MBR (Registrador de dados da memória)
        • contém a palavra de dados a ser escrita na memória ou a última palavra lida;
      • Program Status Word – PSW
        • contém informações de estado do processador encapsuladas em uma palavra;
        • código de erro e códigos de condição: flag (1 bit) de interrupção (ativada, desativada) e flag (1 bit) de modo (supervisor, user);
    • Estágios de execução da instrução (ciclo de execução de instrução ou ciclo buscar-decodificar-executar)
      • Instruction Fetch (IF)
        • obtém a instrução da cache a partir do endereço de memória armazenado no registrador Contador de instruções – CI;
        • a instrução obtida é armazenada no Registrador de instruções – RI;
        • atualiza o registrador Contador de Instruções – CI para o endereço de memória da próxima instrução a ser executada;
      • Instruction Decode (ID)
        • decodifica a instrução que está no Registrador de Instruções – RI para determinar seu tipo e o endereçamento dos operandos;
        • obtém os dados do(s) operando(s), de acordo com o modo de endereçamento utilizado, e os armazena em registradores;
      • Execute (EX) → processamento da instrução pela Unidade Lógico e Aritmético (caminho de dados);
        • Instruções registrador-registrador (um ciclo de clock) → adição, subtração, comparação e operações lógicas;
        • Instruções de referência a memória (dois ciclos de clock) → carregamento (load) e armazenamento (store) na memória;
        • Instruções de multi-ciclos de clock → multiplicação e divisão de inteiros, operação de ponto flutuante;
      • Memory Access (MEM)
        • acesso à memória para obter resultado do processamento;
      • Writeback (WB)
        • gravação em registradores;
    • Transferência entre os estágios
      • Assíncrono
        • utiliza sinais de handshaking para comunicação entre estágios;
        • indica a disponibilidade de dados para o próximo estágio (Ready) e liberação do estágio anterior (Ack);
        • maior velocidade de operação e implementação mais complexa;
      • Síncrono
        • utiliza registradores para armazenar as instruções entre os estágios;
        • a transferência é controlada por sinal de relógio cujo tempo está relacionado ao estágio mais lento;
    • Técnicas de otimização de performance
      • Predição de desvios → carrega antecipadamente uma possível instrução após o desvio;
      • Execução fora de ordem → antecipa a execução de instruções independentes;
      • Execução especulativa → execução de código independentemente da necessidade;
  • Arquitetura do conjunto de instruções
    • Arquitetura CISC (Complex Instruction Set Computer)
      • instruções interpretadas por meio de microcódigo interno ao processador;
      • muitas instruções, de tamanho variável e com formato e decodificação complexos (vários ciclos p/ execução de uma instrução);
      • instruções do tipo registrador-memória (resultado armazenado em memória pela instrução);
      • acesso à memória por qualquer instrução e com muitos modos de endereçamento;
      • poucos registradores, com mais acessos à memória e menor eficiência;
      • não utiliza ou faz pouco uso de pipelining;
      • compilador mais simples em que a tradução da linguagem de alto nível resulta em menos código (devido as instruções complexas);
      • hardware mais complexo com frequências mais baixas;
    • Arquitetura RISC (Reduced Instruction Set Computer)
      • instruções executadas diretamente pelo circuito do processador (hardwired), sem interpretação por microcódigo;
      • poucas instruções, de tamanho fixo e com formato e decodificação simples (executa uma instrução por ciclo);
      • instruções do tipo registrador-registrador (resultado em registrador para armazenamento em memória por store);
      • acesso à memória somente por load e store e com endereçamento por registrador;
      • muitos de registradores, inclusive para operandos;
      • projetada para a utilização de pipeline;
      • compilador mais complexo em que a tradução da linguagem de alto nível resulta em mais código (devido as instruções simples);
      • hardware mais simples com frequências mais altas;
    • Arquitetura híbrida
      • instruções comuns são executadas diretamente por hardware (em um único ciclo do caminho de dados);
      • instruções complexas são interpretadas por meio de microcódigo;

 

Contexto do Nível do Conjunto de Instruções – Paralelismo em Nível de Instrução

 

  • Paralelismo → execução simultânea de instruções;
    • Nível de instrução → paralelismo de estágios (pipelining) de execução de instruções de processador;
    • Nível de multiprocessadores → paralelismo de processadores;
    • Nível de multicomputadores → paralelismo de computadores (processamento de sistemas distribuídos);
  • Paralelismo em Nível de Instrução
    • Visão geral
      • paralelismo de estágios (pipelining) de execução simultânea de instruções no processador;
      • tempo de ciclo é o tempo para a instrução percorrer um estágio do pipelining;
      • latência é o tempo para a instrução percorrer todos os estágios do pipelining;
      • número de instruções por segundo é calculado por: MIPS = 1.000/tempo de ciclo em nanossegundos;
    • Arquiteturas
      • Pipelining
        • execução concorrente de instruções em estágios distintos (IF, ID, EX, MEM, WB) por ciclo de clock em um único pipelining;
        • uma unidade funcional (hardware) é dedicada a cada estágio para execução em paralelo de uma instrução de cada estágio;
        • o tempo de execução de uma operação isoladamente é ligeiramente maior, obtendo-se desempenho superior sob um conjunto de operações;
      • Superescalar
        • execução concorrente de instruções em estágios com unidades funcionais (IF, ID, (EX,EX), (MEM,MEM), WB) em um único pipelining;
        • estágios do pipelining foram otimizados para executar múltiplas instruções por meio de distintas Unidades Lógico-Aritmética;
      • Superpipelined
        • execução concorrente de instruções em dois estágios (IF, ID, (EX, MEM), (MEM, WB), WB) por ciclo de clock;
        • permite a execução de dois estágios de pipelining a cada ciclo de clock;
    • Limitações → impedem a execução da próxima instrução simultaneamente;
      • Dependência real de dados
        • se uma instrução utiliza como entrada um resultado de outra instrução;
      • Dependência procedural
        • se há presença de desvio (goto), desvio condicional ou instruções de tamanho variáveis (necessita de decodificação antes da execução da próxima instrução);
      • Conflito de recursos
        • se há requisição de acesso a um mesmo recurso (área de memória, cache, barramentos, unidades, etc.) por distintas instruções em execução paralela;
      • Dependência da saída (leitura-escrita)
        • se duas instruções armazenam resultado no mesmo registrador;
        • despacho de instruções em ordem com finalização fora de ordem;
      • Antidependência (escrita-escrita)
        • se a saída de uma instrução sobrescreve um valor ainda não usado como entrada de outra instrução;
        • despacho de instruções fora de ordem com finalização fora de ordem;

 

Contexto do Nível de Microarquitetura

 

  • Nível da Microarquitetura (circuitos digitais) – Nível 1
    • a ULA opera os registradores por meio do caminho de dados;
    • o caminho de dados pode ser controlado por um microprograma (interpretador) ou diretamente por hardware;

 

Contexto do Nível Lógico Digital – Circuitos

 

  • Visão geral
    • circuitos digitais utilizam somente dois valores lógicos (0 e 1) que são representados por duas faixas de sinais de tensão (0–0,5V e 1–1,5V);
    • as portas podem ser combinadas para formar uma memória de 1 bit;
    • as memórias de 1 bit podem ser combinadas em grupos para formar registradores;
  • Transistor de comutação (Transistor bipolar TTL/ECL ou Semicondutor de óxido metálico – MOS)
    • portas lógicas são circuitos simples com: um transistor por entrada (Ve), uma saída (Vs), uma alimentação contínua (Vc=1,5V) e o terra;
    • transistores que realizam comutação eletrônica por meio do chaveamento (ligado↔desligado) a partir do valor da tensão de entrada;
    • quando o transistor está desligado ou aberto (Ve<1V) a alimentação contínua é direcionada para a saída (Vs=Vc);
    • quando o transistor está ligado ou fechado (Ve>1V) a saída é igual a zero (Vs=0), pois a entrada e alimentação contínua são direcionadas para o terra;
  • Portas lógicas → circuitos simples baseados em transistor de comutação;
    • Porta NOT (inversor) → utiliza um transistor em que a entrada “1” ativa o terra que gera saída “0”;
    • Porta NAND → utiliza dois ou mais transistores em série em que somente a entrada “1” em ambos ativa o terra e gera saída “0”;
    • Porta NOR → utiliza dois ou mais transistores em paralelo com terra independente, em que a entrada “1” em qualquer um gera saída “0”;
    • Porta AND → utiliza um porta NAND com uma porta NOT ligada a saída;
    • Porta OR → utiliza um porta NOR com uma porta NOT ligada a saída;
  • Buffers → comutador eletrônico de 3 estados, com uma entrada e uma saída que estabelece e interrompe a conexão a partir da entrada de controle;
    • Buffer inversor → inversor (porta NOT) com entrada de controle para conexão (1) e desconexão (0) da linha;
    • Buffer não inversor → buffer apenas para abertura do circuito, com entrada de controle para conexão (1) e desconexão (0) da linha;
  • Função booleana
    • representação abstrata que pode ser construída por meio de portas lógicas (circuitos);
    • representa um circuito combinatório pois produz saída que depende somente dos valores de entrada, ou seja, sem estado;
    • a tabela verdade de 2^n linhas descreve os resultados possíveis de uma função booleana de n variáveis de entrada;
    • requer somente a especificação das combinações de entrada em que a saída seja 1;
    • utiliza sobrelinha para negação, multiplicação implícita para AND (AB) e + para OR (A+B);
    • pode ser construída somente com portas NAND ou portas NOR (portas completas) de duas entradas (não viável pois exige muitos pinos);
    • duas funções ou dois circuitos são equivalentes quando tem a mesma saída para todas as entradas possíveis;
  • Circuitos combinatórios
    • De uso geral

      • Multiplexadores
        • combina 2^n entradas de dados com n entradas de controle que ativam 1 das entradas de dados para a saída;
        • implementa qualquer função booleana com número variáveis igual ao número de entradas de controle;
        • implementa um conversor de dados paralelo para serial chaveando sequencialmente as entradas para a saída;
      • Decodificadores
        • combina n entradas de seleção de função que ativam 1 das 2^n saídas;
        • implementa a seleção do caminho que receberá a entrada;
      • Comparadores
        • combina n entradas de dados que produzem 1 se forem iguais e 0 se forem diferentes;
    • Aritméticos
      • Deslocadores
        • combina n entradas em n saídas com uma entrada de controle;
        • a entrada de controle determina se o deslocamento das entradas ocorrerá à esquerda ou à direita;
      • Somadores
        • combina n entradas em uma saída e implementa o vai-um e o vem-um para realizar a soma;
      • Unidade lógica e aritmética
        • combina circuito decodificador que direciona a entrada para uma unidade lógica ou para um somador (unidade aritmética);
  • Circuitos de memória → circuito cuja saída não depende somente da entrada, ou seja, mantém o estado;
    • Latch
      • memória de 1 bit que armazena a entrada quando ocorre um pulso na linha de clock (acionado pelo nível);
      • circuito que utiliza duas entradas e duas saídas complementares (O e Ō) e mantém o estado da entrada que foi ativada por último;
      • Latch SR (setting/resetting) utiliza duas entradas (S e R) para definir o estado da saída, S=1 ∴ O=1 e R=1 ∴ O=0;
      • torna-se não determinístico quando ambas entradas são 1 e produz ambas saída iguais 0, em vez de serem complementares;
      • Latch D com clock utiliza uma entrada e o seu complemento (com um inversor) e não sofre a limitação do Latch SR;
    • Flip-flop D

      • memória de 1 bit que armazena a entrada quando ocorre a transição no pulso na linha de clock de 0 para 1 ou 1 para 0 (acionado pela transição);
      • circuito que utiliza uma entrada e o seu complemento (com um inversor) e um clock e o seu complemento (com outro inversor);
      • o inversor utilizado para obter o complemento do clock gera um pequeno atraso que ligado em uma porta AND com o clock gerar um pulso curto;
  • Organização da memória
    • Quantidade de palavras (endereçamento) e largura da palavra (quantidade de bits de entrada e saída)
      • memória com quantidade de palavras (qP) de determinada largura em bits (tP) formada por entradas de dados, de endereços e de controle;
      • a quantidade de palavras é definida pela quantidade de entradas de endereço ∴ qP=2^qE (4 palavras precisam de 2 entradas de endereços);
      • a largura da palavra (tamanho) é definida pela quantidade de entrada de dados ∴ tP=qD (palavra de 3 bits utiliza 3 entradas de dados);
      • as entradas de controle tem função de seleção de chip (cs), habitação de escrita (wa) e ativação de saída (oe);
    • Endereçamento em dois ciclos
      • memória endereçada por linha e coluna em dois ciclos (RAS  e CAS) formada por entrada de dados, de endereços, de controle;
      • a entrada RAS ativa a leitura da linha pela entrada de endereços (um ciclo);
      • a entrada CAS ativa a leitura da coluna pela entrada de endereços (outro ciclo);
      • a matriz não necessariamente é quadrada, assim as entradas ou RAS ou CAS não necessitam utilizar todas as entradas de endereço;

 

Contexto do Nível Lógico Digital – Componentes do computador

 

  • Processador
    • Visão geral

      • a dissipação de calor (dc∝t²) é um desafio para o funcionamento em clocks mais altos (requerem tensão mais altas);
      • a melhoria do desempenho tem sido obtida com mais núcleos e caches maiores embutidas;
    • Hyper-threading
      • simulação de dois processadores lógicos em um único processador físico;
      • cada processador lógico recebe possui um controlador de interrupção e um conjunto de registradores;
      • memória cache, unidade lógica e aritmética e barramentos são compartilhados entre os processadores lógicos;
    • Pacotes de circuitos integrados (chips) → pacotes de plástico ou cerâmica que contém substrato;
      • Dual Inline Packages (DIP) → pacote retangular com duas fileiras de pinos;
      • Pin Grid Arrays (PGA) → pacote quadrado com pinos nos quatro lados fixado por uma alavanca de pressão do socket;
      • Land Grid Arrays (LGA) → pacote quadrado com contatos no chip, não possuem pinos;
    • Componentes
      • Unidade de controle (UC)
        • busca, interpreta e controla as instruções por meio do decodificador e do temporizador;
        • comanda o funcionamento da ULA;
      • Unidade lógica e aritmética (ULA)
        • circuito combinatório que executa as instruções a partir de entradas e produz uma saída;
        • as entradas são provenientes de registradores e o resultado é armazenado em memória ou em registrador (ciclo do caminho de dados);
        • utiliza um circuito decodificador para ativar o caminho da entrada à unidade lógica ou à unidade aritmética (somadora);
      • Registradores
        • memória interna ao processador;
      • Barramentos
        • permite a conexão multiplexadas entre dois elementos do computador para tráfego de dados, endereços e controle;
      • Controlador DMA
        • controlador de acesso direto à memória por dispositivos de entrada e saída;
      • Unidade de gerenciamento de memória (MMU)
        • composto pela unidade de segmentação e pela unidade de paginação;
        • transforma endereços lógicos (virtuais) em endereços físicos;
        • mapeamento em tempo de execução de páginas lógicas em quadros de páginas físicas da memória real;
      • Unidade de ponto flutuante
        • cálculo de números reais e operandos maiores;
      • Circuito oscilador (clock)
        • fornece sinal de sincronismo para a transferência de dados entre elementos do computador;
        • emite pulsos consecutivos em série com precisão e medidos por frequência, em hertz (ciclos por segundo);
        • circuitos adicionais podem ser usados para aumentar a precisão e adicionar mais eventos em um único tempo de ciclo de clock;
        • um clock secundário inicia com atraso, deslocado em fase em relação do primeiro e fornece quatro referências de tempo;
  • Memórias
    • Visão geral
      • a hierarquia de memórias é uma solução para o armazenamento de grandes quantidades de dados;
      • cada nível abaixo da hierarquia implica em maior tempo de acesso, maior capacidade de armazenagem e menor preço;
      • chips de estrutura interna bidimensional repetitiva;
    • Características das memórias
      • Tempo de acesso → tempo decorrido para recuperação ou persistência do valor de um endereço de memória para o processador;
      • Capacidade → quantidade de informação que pode ser armazenada;
      • Volatilidade → retém (não-volátil) ou não (volátil) a informação armazenada quando não há energia elétrica;
      • Tecnologia e custo → tipo da memória com consumo específico de energia e respectivo custo;
    • Memórias não voláteis → memórias para o armazenamento não volátil de programas para a inicialização (boot) do hardware;
      • Memória somente leitura (ROM) → conteúdo programado durante a fabricação do circuito integrado, somente leitura;
      • Memória programável somente de leitura (PROM) → programável apenas uma vez por máquinas específicas, somente leitura;
      • Memória programável apagável somente de leitura (EPROM) → apagável por máquinas específicas com luz ultravioleta, reutilizável;
      • Memória programável apagável eletronicamente somente de leitura (EEPROM) → apagável por instruções do processador, reutilizável;
  • Registradores (memória de registro)
    • Visão geral
      • memória interna ao processador de alta velocidade que funciona na frequência do processador;
      • utilizado como fronteira do processador para entrada e saída de valores intermediários armazenados temporariamente;
      • quantidade e função variam de acordo com a arquitetura do processador;
      • conjunto de flip-flops alimentados por um sinal de clock, que armazenam a respectiva entrada quando o clock fizer uma transição;
      • o inversor utilizado no sinal de clock é tem a função de amplificador para a alimentação de todos os flip-flops do registrador;
    • Classificação
      • Registradores visíveis ao usuário → atualizados pelo programa para o armazenamento de informações que estão sendo processadas;
      • Registradores de controle e estado → atualizados pela unidade de controle para controlar a operação da UCP e a execução de programas;
    • Classificação por propósito
      • Propósito geral → recebem resultados de operação, referenciam operando e endereço, armazenam instrução;
      • Propósito específico
        • Registradores de Dados → contém apenas dados;
        • Registradores de Endereços → contém apenas endereços (Registrador de segmento, Registrador de índices, Apontador de topo de pilha);
        • Registradores de Código de condição → atualizados pelo processador e lidos pelos usuários (indicam erro, overflow, divisão por zero, etc);
  • Memória cache
    • Visão geral
      • Static RAM (SRAM), memória volátil e estática (não requer refresh – conserva os valores enquanto houver energia);
      • mais cara, mais rápida, baseada em flip-flops D, com ao menos 6 transistores por bit e tempo de acesso de 1 nanossegundo ou menos;
      • localização lógica entre o processador e a memória principal;
      • distintos níveis de alta velocidade de acordo com a localização física;
      • mantém cópia de dados da memória principal (minimiza o gargalo da memória principal) para otimizar o tempo de acesso;
      • quando uma palavra referenciada não está na cache (cache miss), a linha de cache associada (conjunto de células de memória) é atualizada;
    • Acesso
      • Unificado → instruções e dados usam a mesma cache, não permite acesso paralelo, utilizada na arquitetura de Von Neumman;
      • Dividido → instruções em uma cache e dados em outra, dois barramentos com acesso paralelo, utilizada na arquitetura de Havard;
    • Níveis de cache
      • L1 → memória do processador interna ao núcleo, mais rápida e cara;
      • L2 → memória do processador externa ao núcleo (compartilhada entre os núcleos);
      • L3 → memória externa ao processador, de maior tamanho e menor rapidez;
    • Técnicas de implementação
      • Modo exclusivo → o conteúdo de L1 não está presente nos demais níveis de cache;
      • Modo inclusivo → o conteúdo de L1 está presente nos demais níveis de cache;
    • Técnicas de otimização de cache
      • Referência de localidade temporal → armazena endereços acessados recentemente;
      • Referência de localidade espacial → armazena endereços próximos aqueles acessados recentemente;
    • Técnicas de mapeamento da cache
      • Mapeamento direto → uma determinada área da memória principal está associada a uma linha de cache;
      • Mapeamento associativo de dois caminhos → uma determinada área da memória principal está associada a duas linhas de cache;
      • Mapeamento associativo em grupo → uma determinada área da memória principal está associada a um grupo de linhas de cache;
    • Política de substituição de dados da cache → preserva informações que podem ser requeridas no futuro próximo;
      • Least-Frequently Used (LFU) → descarta os dados menos frequentemente usados (utiliza um contador a cada acesso ao dado);
      • Least Recently Used (LRU) → descarta os dados menos recentes (utiliza uma marca de tempo do último acesso ao dado);
      • Random → aleatoriamente seleciona linhas de cache para descarte;
    • Política de escrita de bloco que está na cache (cache write hit → atualizar um bloco que está na cache);

      • Write through → escreve na cache; atualiza a memória principal imediatamente; só confirma a operação de I/O quando a memória principal for atualizada;
      • Write back (behind) → escreve na cache; posterga a atualização da memória principal; confirma a operação de I/O antes de atualizar a memória principal;
      • Write once → atualiza a memória principal imediatamente para a primeira escrita (write through); atrasa para as escritas subsequentes (write back);
    • Política escrita de bloco que não está na cache (cache write miss → atualizar um bloco que não está na cache);
      • Write allocate → atualiza na memória principal e copia o valor para a cache;
      • No write allocate (Write around) → atualiza na memória principal e não copia o valor para a cache; somente a operação de leitura traz o dado para a cache;
  • Memória principal
    • Visão geral

      • Dynamic RAM (DRAM), memória volátil e dinâmica (requer refresh – renovação periódica dos valores para preservar a informação);
      • memória endereçada diretamente pelo processador;
      • utiliza um transistor e um capacitor por bit, e tem tempo de acesso de dezenas de nanossegundos;
      • o tempo de acesso independe do endereço acessado, uma vez que é o mesmo para qualquer endereço;
      • célula é a menor unidade endereçável, possui tamanho fixo (em bits), é identificada por um endereço numérico único (0 até n-1 células);
      • o número de bits para endereços depende do número de células endereçadas diretamente e independe do número de bits por célula;
      • pares de módulos de memória RAM de tamanho, frequência e temporização idênticas podem usar dois canais de transferência de dados (duplica a velocidade);
    • Empacotamento → grupo de chips de memória em linha em uma placa de circuito impresso;
      • Single Inline Memory Module (SIMM) → chips só de um lado da placa, com 72 contatos em apenas um lado, 32 bits por ciclo de clock;
      • Dual Inline Memory Module (DIMM) → chips em ambos os lados da placa, com 120 contatos por lado, 64 bits por ciclo de clock;
    • Evolução
      • Fast Page Mode (FPM) → memória endereçada por linha e coluna, em matriz de bits, com seleção de linha (RAS) e de coluna uma a uma (CAS);
      • Extended Data Output (EDO) → permite um segundo acesso antes do término do anterior, de forma paralela, para aumentar a largura de saída;
      • Synchronous DRAM (SDRAM) → utiliza o clock do sistema para controlar a quantidade de ciclos para transferência de dados;
      • Double Data Rate (DDR SDRAM) → dobra a taxa de transferência com transmissão em meio ciclo de clock (borda ascendente e borda descendente);
        • DDR → 200 Mhz; DDR2 → 533 Mhz; DDR3 → 1067 Mhz;
  • Memória  secundária
    • Visão geral
      • memória não volátil que não pode ser endereçada diretamente pelo processador;
      • o tempo de acesso depende do endereço acessado, uma vez que varia de acordo com o endereço;
    • Discos magnéticos
      • Estrutura
        • pratos de alumínio de dupla superfície com revestimento magnetizável por meio da passagem de corrente (+/–) a partir do cabeçote;
        • trilha é a sequência circular (concêntrica uniforme) de bits de uma rotação completa que é dividida em uma quantidade de setores;
        • há menos setores nas trilha da área (zona) mais interna do disco, bem como há mais setores nas trilha da área (zona) mais externa do disco;
        • setores são formados por um preâmbulo para sincronização do cabeçote, os dados e um código de correção de erros;
        • os setores são separados por um lacuna de intersecção não utilizável;
        • cilindro é formado por todas as trilhas dos discos que estão na mesma posição radial (uma trilha de cada superfície na projeção vertical);
      • Acesso aos setores
        • o controlador do disco é um chip responsável por aceitar comandos de software, controlar o cabeçote, corrigir erros e converter bits em corrente;
        • busca é o deslocamento do cabeçote até a posição da trilha (posição radial), ~5ms;
        • latência rotacional é o atraso até que o setor gire sob o cabeçote, ~3ms;
      • Endereçamento dos setores
        • o endereçamento de um setor (CHS) é feito pelo número do cabeçote (ref. a superfície), número do cilindro (ref. a trilha) e número do setor;
        • o endereçamento por blocos lógicos (LBA) numera os setores de 0 até (2^28)-1, sendo convertido pelo controlador para cabeçote, cilindro e setor;
    • Discos em estado sólido
      • conjunto de células de memória flash, em que cada célula é formada por um único transistor flash que mantém a carga sem alimentação;
      • o transistor possui porta flutuante para programação por alta tensão (12V) injetada por uma porta de controle;
      • sua falha está relacionada com a durabilidade da porta flutuante, que pode ser escrita por cerca de 100 mil vezes;
      • o processo de nivelamento de desgaste aumenta a vida útil da porta flutuante, realocando os blocos escritos em blocos não usados recentemente;
      • a busca é instantânea, com zero tempo de busca;
    • Discos ópticos
      • CD (Red Book)
        • CD de áudio com 12 cm de diâmetro, 1,2 mm de espessura e orifício de 15 mm;
        • depressões físicas com diâmetro de 0,8 mícron e profundidade de 0,195 mícron;
        • depressões são criadas a partir de um molde com utilização de policarbonato fundido;
        • leitura realizada por meio de um laser vermelho com λ de 0,78 mícron (potência de 0,5 mW) e velocidade linear constante;
        • a taxa de rotação é reduzida (530 para 200 RPM) conforme a leitura é realizada da parte mais externa do CD;
        • as transições plano-depressão ou depressão-plano representam o bit 1 e a sua ausência representam o bit 0;
        • byte codificado em 14 bits (símbolo) com código de correção de erro, agrupados em quadros de 588 bits;
      • Sistema de arquivos ISO 9660
        • Nível 1 → nomes de arquivos de 8 caracteres com extensão de 3 caracteres e arquivos contíguos;
        • Nível 2 → nomes de arquivos de 32 caracteres;
        • Nível 3 → permite arquivos não contíguos;
        • Extensões Rock Ridge → nomes longos, atributos (usuário proprietário e grupo) e links simbólicos;
      • CD-ROM (Yellow Book)
        • CD de dados de computador com estrutura física e forma de produção idêntica ao CD de aúdio;
        • setor formado 98 quadros (98×588/8 = 7.203 bytes) com carga útil de 2.352 bytes;
        • modo 1 divide o setor em preâmbulo (16 bytes) e dados (2.336 bytes), sem código de correção de erro;
        • modo 2 divide o setor em preâmbulo (16 bytes), dados (2.048) e código de correção de erro (288 bytes);
        • utiliza o código de correção de erro Reed-Solomon de 288 bytes com combinação cruzada;
        • a velocidade do driver é múltipla de 75 setores por segundo;
        • disco de 703,12 MB com 360 mil setores;
      • CD-R (Orange Book)
        • CD gravável com depressões e planos simulados por meio de camada de corante (queimada pelo laser a 8-16mW);
        • com sulco de 0,6 mm, desvio senoidal de 0,3 mm, frequência de 22,05 kHz e espaçamento entre trilhas de 1,6 mícron;
        • CDROM XA permite multi trilhas com a gravação de uma VTOC (tabela de conteúdo) a cada trilha;
        • a VTOC da última trilha gravada contém as informações sobre o estado de todos os arquivos disponíveis;
        • a omissão de um arquivo da VTOC mais recentemente gravada simula que este arquivo foi apagado;
        • gravação do tamanho incorreto dos arquivos ou códigos de correção de erro incorretos foram usados para evitar cópias;
      • CD-RW
        • CD regravável com depressões e planos simulados por fusão (cristalina ou amorfo) de uma liga de metais e semimetais;
        • as depressões são representadas por baixa refletividade (amorfo) e os planos por alta refletividade (cristalino);
        • utiliza laser em três potências: baixa para leitura, média para planos e alta para depressões;
      • DVD
        • depressões físicas com diâmetro de 0,4 mícron e espaçamento entre trilhas de 0,74 mícron;
        • leitura realizada por meio de um laser vermelho com λ de 0,65 mícron e velocidade linear constante;
        • permite duas camadas (8,5 GB) em uma face, uma camada refletiva embaixo coberta por outra semirefletiva;
        • a camada inferior utiliza depressões e planos maiores, possui assim uma capacidade menor;
        • discos de dupla face utilizam dois discos de 0,6 mm;
        • classificação de cenas impróprias para controle da exibição e recorte de extremidades para ajuste a tela (Pan-and-Scan);
        • incompatibilidade intencional de discos entre continentes e seis canais de som;
      • Blu-Ray
        • depressões físicas com diâmetro de 0,15 mícron, espaçamento entre trilhas de 0,32 mícron e camada protetora larga;
        • leitura realizada por meio de um laser azul com λ de 0,405 mícron com lentes duplas;
        • permite duas camadas (50 GB) em uma face;
        • velocidade de transferência de dados (1x) é de 36 Mbit/s (54 Mbps para BD-ROM);
        • Blu-ray 4K permite discos com: 50 GB com 82 Mbit/s, 66 GB com 108 Mbit/s e 100 GB com 128 Mbit/s;
  • Barramento
    • Visão geral
      • condutor elétrico ou de luz em que a largura de banda fixa é compartilhada entre os dispositivos conectados;
      • permite a comunicação de dados, endereços e sinais de controle entre componentes do computador;
      • barramentos externos à CPU permitem a comunicação entre o processador e dispositivos de E/S;
      • torna desnecessária conexões diretas entre o processador e cada dispositivos de entrada e saída;
      • o chip árbitro de barramento resolve conflitos de requisições simultâneas de uso do barramento;
      • roubo de ciclo da CPU dá-se pela prioridade de utilização do barramento por dispositivos de E/S;
    • Tipos de barramento
      • Barramento de endereço → unidirecional, processador envia o endereço a ser utilizado pela memória ou por dispositivos de E/S;
      • Barramento de dados → bidirecional, processador envia e recebe dados para a memória ou dispositivos de E/S;
      • Barramento de controle → bidirecional, processador envia e recebe sinais de controle (dado disponível no barramento, ler ou gravar no endereço de memória);
    • Organização hierárquica
      • Northbridge (maior velocidade) → CPU, vídeo e RAM;
        • ↓↑ interligadas pelo barramento Intel Quick Path InterConnect ou AMD HyperTransport;
      • Southbridge (menor velocidade) → PCI, USB, BIOS;
    • Padrões de barramento

      • Firewire 400 IEEE 1394 (High Performance Serial Bus) → comunicação serial até 400 Mbps em 6 vias de até  63 dispositivos em série;
      • Firewire 800 IEEE 1394b (High Performance Serial Bus) → comunicação serial até 800 Mbps em 9 vias de até 63 dispositivos em série;
      • SCSI (Small Computer System Interface) → comunicação paralela até 320 MB/s de 15 dispositivos em série; hot-swap;
      • SAS (Serial Attached SCSI) → comunicação serial até 1200 MB/s; hot-swap;
      • SATA (Serial Advanced Technology Attachment) → comunicação serial até 300 MB/s de um único dispositivo ponto a ponto; 0,5V p/ sinalização;
      • PCI (Peripheral Component Interconnect)
        • comunicação paralela síncrona sujeita a distorção (skew), utiliza um barramento único compartilhado e autoconfiguração Plug and Play;
        • o dispositivo de E/S pode controlar o barramento (Bus Mastering) e fazer acesso a memória sem deixar o CPU ocupado;
        • Versão 1.0 → velocidade 132 MB/s com taxa de clock de 33 MHz e palavra de 32 bits;
        • Versão 2.0 → velocidade 264 MB/s com taxa de clock de 33 MHz, palavra de 64 bits e alimentação de 3,3V ou 5V;
        • Versão 2.1 → velocidade 528 MB/s com taxa de clock de 66 MHz, palavra de 64 bits e alimentação de 3,3V;
      • PCI Express
        • comunicação ponto a ponto entre o complexo raiz ou switch e o dispositivo por até 32 lanes (2 pares de fios cada);
        • comumente até 16 conexões seriais (caminhos) por pacote simultâneas com taxa de clock de 8 GHz;
        • o número de conexões (lanes) é automaticamente negociado durante a inicialização para a maior mutuamente suportada;
        • há compatibilidade entre os slots, sendo a transmissão bidirecional (Full-duplex);
        • Versão 1.0 → velocidade por conexão de 250 MB/s (1x), até 4GB/s (16x) e codificação 8b/10b;
        • Versão 2.0 → velocidade por conexão de 500 MB/s (1x), até 8GB/s (16x) e codificação 8b/10b;
        • Versão 3.0 → velocidade por conexão de 985 MB/s (1x), até 15,75 GB/s (16x) e codificação 128b/130b;
        • Versão 4.0 → velocidade por conexão de 1.969 MB/s (1x), até 31,51 GB/s (16x) e codificação 128b/130b;
      • USB (Universal Serial Bus) → comunicação serial de até 127 dispositivos com compartilhamento da velocidade, 4 vias e alimentação de 5V;
        • USB 1.1 → 1,5 até 12 Mbps half-duplex;
        • USB 2.0 → 480 Mbps half-duplex;
        • USB 3.0 → 4,8 Gbps full-duplex;
  • Interface de entrada e saída (E/S)

    • Formas de comunicação
      • Comunicação serial
        • o dado é desmembrado em bits que são transmitidos sequencialmente um a um (serializados) por uma via de comunicação;
      • Comunicação paralela
        • o dado é desmembrado em bits que são transmitidos simultaneamente (paralelizados) por um conjunto de vias de comunicação;
        • mínimas diferenças físicas do condutor provocam diferentes velocidades de propagação de sinais em cada via (skew);
        • o dado transmitido não é reconhecido quando o atraso entre as vias atinge um limite específico;
        • o comprimento máximo do cabo está relacionado com limite de atraso entre os bits transmitidos;
    • Transferência de dados → entre a memória e a interface de E/S;
      • Polling (programada)
        • o processador arbitra o fluxo entre memória, registrador, barramento de dados e interface de E/S;
        • o dado é enviado ao registrador de dados para ser transferido e o processador envia à interface de E/S um comando;
        • a interface de E/S atualizará um registrador de estado (done bit) quando o dado for transferido (disponibilidade à nova transmissão);
        • polling é o teste periódico do registrador de estado, implementado por software em que um loop ocupa o processador;
        • implementação simples e ineficiente;
      • Interrupção
        • o processador arbitra o fluxo entre memória, registrador, barramento de dados, controlador de interrupção, interface de E/S;
        • o dado é enviado ao registrador de dados para ser transferido, em seguida o processador envia à interface de E/S um comando;
        • a interface de E/S emitirá uma interrupção quando o dado for transferido, deixando o processador disponível (não ocupa);
        • a interrupção é emitida pelo controlador do dispositivo de E/S;
        • ao receber uma interrupção, o processador atende ao dispositivo com uma rotina específica (device driver, device handle);
        • implementação menos ineficiente, porém há tempo de latência de interrupção por ser controlada pelo processador;
        • Controlador de interrupção
          • atribui um número e prioridade para cada interface de E/S;
          • determina qual interrupção será atendida em caso de pedidos simultâneos;
          • identifica a interrupção para que o processador determine qual rotina (device driver) está associada;
          • o processador consulta a tabela de vetores de interrupção em memória e obtém um ponteiro para a rotina (device driver);
          • técnica para identificação da interrupção daisy chain;
      • Acesso direto à memória (DMA)
        • o controlador DMA que arbitra o fluxo entre memória, barramento de dados, interface de E/S (elimina o tempo de latência);
        • o processador apenas informa os endereços dos dados e sentido (memória para E/S ou E/S para memória) ao controlador DMA;
        • o processador fica em hold state e impedido de acessar o barramento;
        • implementação mais eficiente;

 

Contexto do Nível Lógico Digital – Paralelismo em Nível de Multiprocessadores

 

  • Paralelismo em Nível de ProcessadorMultiprocessadores com memória compartilhada
    • Visão geral
      • paralelismo de 2 ou mais processadores se comunicam por escrita em uma memória compartilhada;
      • escalonamento com seleção do processo e processador; compartilhamento por tempo, por espaço ou híbrido;
      • CPUs fortemente acoplados em relação a multicomputadores;
    • Multiprocessamento
      • Simétrico (Symmetric MultiProcessor)
        • processadores realizam a mesma função;
        • a inicialização do sistema operacional pode ser realizada por um processador principal;
        • há cópia do sistema operacional na memória em que qualquer processador pode executá-lo;
      • Assimétrico
        • somente um processador executa serviços do sistema operacional;
        • processadores secundários (escravos) requisitam serviços do processador principal (mestre);
        • processador principal susceptível a gargalo de interrupções;
      • SIMD (Single Instruction, Multiple Data)
        • processador para cálculos de alta regularidade (gráficos, laços e matrizes);
        • grande número de processadores idênticos que executam a mesma instrução sobre diferentes conjuntos de dados;
        • utilizado em unidades de processamento gráfico (GPUs);
    • Arquiteturas
      • Uniform Memory Access (UMA) → acesso à memória com latência igual a qualquer processador;
        • Interconexão por barramento
          • barramento único compartilhado para comunicação entre os processadores e a memória (gargalo);
          • utilização de cache interna ou próxima ao processador;
          • utilização de de memória exclusiva (privada) interligada a cada processador por um barramento dedicado;
        • Interconexão por chave crossbar
          • rede matricial de comunicação entre processadores e memórias;
          • a comunicação ocorre por pontos de comutação (crosspoint);
          • rede não bloqueante, exceto quanto a utilização dois processadores requisitam o mesmo módulo de memória;
        • Interconexão por rede de comutação multiestágio

          • chaves de comutação definem a comunicação entre os processadores e as memórias (gargalo);
          • a comunicação entre determinado processador e determinada memória pode ocorrer por caminhos distintos (embaralhamento perfeito);
          • rede bloqueante (ômega);
      • Non Uniform Memory Access (NUMA) → acesso à memória com latência distinta por processador (Distributed shared memory);
        • há conjuntos de processadores e memórias interligados por switchs de interconexão;
        • espaço de endereçamento único;
        • uso coerente de barramentos e switchs para redução de gargalos;
        • CC-NUMA (Coerent Cache) → sincronização da cache com a memória principal;
        • NC-NUMA (No-cache) → sem cache;

 

Arquiteturas de baixo nível – RFID e Microcontroladores


 

  • Identificação por radiofrequência (RFID) – Computadores descartáveis
    • Visão geral
      • a etiqueta (tag) é um chip que contém um transponder de um único número de 128 bits com 0,5mm de espessura;
      • a leitora é uma antena que induz energia ao transponder para que transmita, sendo o dado repassado ao controlador RFID;
      • o controlador processar as informações brutas dos leitores persistindo apenas resultados significativos e de alto-nível;
      • chips passivos não possuem alimentação interna, alimentando-se do sinal de rádio de entrada para transmitir um único número;
      • chips ativos podem possuir alimentação interna e são capazes de fazer cálculos (smart cards) e transmiti-los;
      • chips que utilizam baixas frequências tem uma menor taxa de transferência sendo utilizados em grandes distâncias;
      • chips que utilizam altas frequências tem uma maior taxa de transferência sendo utilizados em pequenas distâncias;
    • Utilização
      • identificação de produtos por tipo e método antifurto para o comércios;
      • identificação de produtos por item específico para controle de estoque;
      • identificação de animais domésticos para rastreamento, bovinos para controle, etc;
      • identificação de competidores em esportes;
      • identificação de veículos particulares e caminhões para rastreamento e pagamento em trânsito (cobrança de pedágios);
      • identificação de malas em meios de transporte;
      • identificação de manufaturados em linhas de produção;
  • Microcontroladores
    • Visão geral
      • computadores pequenos e baratos com processador, memória interna e funções especializadas de E/S;
      • em geral funcionam em tempo real com resposta instantânea a partir de interações de E/S;
      • software armazenado em memória somente leitura (memória de programação);
      • preço relacionado a quantidade de bits do microcontrolador: 4, 8 ,16 ou 32 bits e seus componentes;
      • são concebidos para aplicações (sistemas) embarcadas,
      • compartilham as restrições do sistema embutido que fazem parte, seja: tamanho, peso, consumo de energia;
    • Componentes
      • temporizadores;
      • oscilador de clock de tempo real;
      • oscilador de clock interno programável;
      • comparador analógico;
      • canais de conversão analógico-digital;
      • canais de modulação de largura de pulso;
      • interface serial I2C para sensores;
      • receptor e transmissor serial;
    • Arduino
      • plataforma prototipagem eletrônica, implementação ou emulação do controle de sistemas interativos (plataforma de controle embutido);
      • microcontrolador RISC de 8 bits de arquitetura AVR (Atmega8, Atmega 328p) com programação armazenada em memória flash;
      • CPU pode ser interligada a módulos expansivos (shields);
      • projeto de hardware de fonte aberta e placa única que fornece ferramentas (Arduino IDE) e bibliotecas (Wiring) para desenvolvedores;
      • Arduino IDE é uma aplicação multiplataforma escrita em Java que utiliza o compilador avr-gcc;
      • a biblioteca “Wiring” (#include<WProgram.h>) é utilizada para programação em C/C++;
      • a biblioteca “Wiring” implementa funções básicas: digitalWrite(), delay(), pinMode(int,int) Serial.print();
      • o programa necessita implementar os métodos setup() para inicializar configuração e loop() para o algoritmo e para desligamento;

 

Organização de Computadores


 

  • Representação dos dados
    • Bit
      • um digito binário, unidade básica de memória, pode assumir o valor 0 ou 1;
      • representado pela distinção de dois valores de uma quantidade física contínua (tensão ou corrente elétrica);
    • Byte
      • grupo ordenado de 8 bits (octeto);
      • representa uma unidade de armazenamento;
    • Palavra
      • valor fixo e constate vinculado ao processador (16, 32 ou 64 bits);
      • representa uma unidade de transferência para processamento de uma instrução e seus operandos (barramento de dados);
      • overflow ocorre quando o resultado de uma operação é maior do que o suportado pela palavra do processador;
    • Posição dos bits em um byte
      • os bits são sempre posicionados a partir da ordem baixa do byte, do bit mais a direita para a esquerda (7[10] = …00000111[2]);
    • Ordenação dos bytes em uma palavra
      • Little Endian (Intel) → palavra com bytes numerados a partir da ordem baixa, do byte mais a direita p/ a esquerda: 3 2 1 0;
        • Número inteiro → 7[10] = …00000111[2]; sempre a direita com byte0=00000111;
        • Cadeia de caracteres → ABCD = 01000100 (D) 01000011 (C) 01000010 (B) 01000001 (A)
      • Big Endian (mainframe) → palavra com bytes numerados a partir da ordem alta, do byte mais a esquerda p/ a direita: 0 1 2 3;
        • Número inteiro → 7[10] = …00000111[2]; sempre a direita com byte3=00000111 (byte3 para palavra de 32 bits);
        • Cadeia de caracteres → ABCD = 01000001 (A) 01000010 (B) 01000011 (C) 01000100 (D)
    • Código de Hamming
      • bits extras que podem ser adicionados a cada palavra para correção de erros, denominada palavra de código;
      • o algoritmo de Hamming adiciona bits extras nas posições que são potência de 2 (palavra de 32bits: 1, 2, 4 ,8, 16, 32);
      • o tamanho da palavra (32bits) somado ao tamanho dos bits extras (6bits) formam o tamanho da palavra de código (38bits);
      • a distância de Hamming é o número de bits diferentes (ou número de erros) entre duas palavras de código (válidas);
      • operação realizada no momento de admissão da palavra com a inclusão de bits extras;
      • processo inverso realizado no acesso a palavra com a remoção de bits extras para obtenção da palavra original;
  • Códigos de caracteres
    • Visão geral
      • tabela com mapeamento de caracteres para valor escalar (números inteiros);
      • cada inteiro é denominado ponto de código ou código;
      • espaço de código é o conjunto dos números inteiros que possuem representação em determinada codificação;
    • ASCII e Latin-1
      • o padrão ASCII utiliza 7 bits (espaço de código de 0 até 127) armazenados em 1 byte, já os códigos 128 a 255 não são utilizados;
      • o padrão Latin-1 (IS 646) utiliza 8 bits (0 até 255 ou 256 pontos de código) em que foram adicionadas letras latinas acentuadas;
      • códigos de 0 até 31 são caracteres de controle, sem representação gráfica, a maioria para transmissão de dados (em desuso);
    • IS 8859
      • o padrão IS 8859 definiu a página de código, com 8 bits para cada idioma ou conjunto de idiomas;
      • IS 8859-1 é o próprio Latin-1, IS 8859-5 para russo e sérvio, IS 8859-9 para turco, até IS 8859-16 para romeno e esloveno;
      • o padrão IS 8859 não permite misturar as páginas de código, nem suporta idiomas com ideogramas;
    • Unicode (link)
      • Visão geral
        • Unicode é um padrão de codificação de caracteres projetado de ser universal, eficiente, seguro e não ambíguo;
        • define uma forma consistente de codificação para multi línguas em conformidade com IS 10646:2014;
        • provê capacidade para codificar todos os caracteres (alfabéticos, ideograma e símbolos) usados para escrita no mundo;
        • associa um valor numérico imutável e um nome para cada caractere, além de planos à identidade, comportamento e direção;
        • fornece especificação para manipulação de texto: divisão de palavras, ordenação, formatos de números, datas, horas, direção;
        • permite combinação dinâmica de n-caracteres com representação equivalente ao caractere seguido do acento (e’=é);
        • utiliza 3 formas de codificação: UTF-8, UTF-16 e UTF-32;
      • Planos
        • utiliza 17 planos de 16 bits (0 até 1.114.111), o plano multilíngue básico (plano 0) e 16 planos suplementares (até 10[16]);
        • 5 bits identificam os planos seguidos de 16 bits para cada plano (espaço de código até 10FFFF);
        • o plano multilíngue básico (65.536 pontos de código) possui a maioria dos caracteres comuns as línguas do mundo;
      • Esquemas
        • utiliza 7 esquemas da codificação: UTF-8, UTF-16BE, UTF-16LE, UTF-16, UTF-32BE, UTF-32LE e UTF-32;
        • esquemas de codificação estão relacionados com a ordenação dos bytes (Little ou Big Endian);
        • os esquemas de codificação UTF-16 e UTF-32 utilizam uma marca de ordem de byte (BOM) para identificar a ordem;
        • os esquemas de codificação UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE definem explicitamente a ordem e não usam BOM;
        • o esquema de codificação UTF-8, por ser orientado a byte, é equivalente em Little ou Big Endian, logo não usa BOM;
      • UTF-8
        • o padrão UTF-8 permite identificar 2,14 bilhões pontos de código (2^31 = 2.147.483.648) em um formato orientado a byte;
        • utiliza tamanho variável de 7, 11, 16, 21, 26 ou 31 bits armazenados em 1, 2, 3, 4, 5 ou 6 bytes, respectivamente;
        • código auto sincronizável, pois os bytes não iniciais começam por ’10’, tornando identificável o inicio do próximo caractere;
        • os bits de maior ordem (esquerda para direita) do primeiro byte determinam quantos bytes (1 a 6 bytes) formam o caractere;
        • os bits de dados (d) são utilizados para representar os 17 planos do padrão Unicode (21 bits – 1.114.112 pontos de código);
        • caractere de 1 byte, 7 bits úteis → 0ddddddd; (compatível com padrão ASCII);
        • caractere de 2 bytes, 11 bits úteis → 110ddddd 10dddddd;
        • caractere de 3 bytes, 16 bits úteis → 1110dddd 10dddddd 10dddddd;
        • caractere de 4 bytes, 21 bits úteis → 11110ddd 10dddddd 10dddddd 10dddddd; (suficiente para suportar o Unicode);
        • caractere de 5 bytes, 26 bits úteis → 111110dd 10dddddd 10dddddd 10dddddd 10dddddd;
        • caractere de 6 bytes, 31 bits úteis → 1111110d 10dddddd 10dddddd 10dddddd 10dddddd 10dddddd;
  • Representação numérica com sinal (números positivos e negativos)
    • Sinal e magnitude (valor)
      • Sinal → o bit mais à esquerda de um número binário indica se é positivo ou negativo (0: positivo, 1: negativo);
      • Magnitude → valor absoluto do número formado pelos demais bits à direita;
      • o número zero possui duas representações;
    • Complemento de 1
      • inverte-se todos os bits do número;
      • o número zero possui duas representações;
    • Complemento de 2
      • inverte-se todos os bits do número;
      • soma-se 1 ao número invertido;
      • o número zero possui apenas uma representação;
      • 10000010 (-2 em sinal magnitude);
      • 111111110 (-2 em complemento de 2); → inverte-se os bits após o primeiro bit 1 da direita para esquerda, exceto o bit de sinal;
  • Conversão de base numérica

    • Base
      • define cada sistema numérico;
      • indica a quantidade de símbolos existentes;
    • Conversão para base decimal
      • soma da multiplicação cada algarismo pela base elevada a sua potência (posição);
      • 1101[2] = (1*2³)+(1*2²)+(0*2¹)+(1*2^0) = 13[10] → base binária para base decimal;
      • 111[2] = (1*2²)+(1*2¹)+(1*2^0) = 7[10] → base binária para base decimal;
      • 321[8] = (3*8²)+(2*8¹)+(1*8^0) = 209[10] → base octal para base decimal;
      • F71[16] = (15*16²)+(7*16¹)+(1*16^0) = 3.953[10] → base hexadecimal para base decimal;
    • Conversão a partir da base decimal

      • concatenar os restos de forma inversa da divisão do número pela base;
      • 200[10] = 200/2=100 {0}; 100/2=50 {0}; 50/2=25 {0}; 25/2=12 {1}; 12/2=6 {0}; 6/2=3 {0}; 3/2=1 {1}; {1}; = 11001000[2]
      • 230[10] = 230/8=28 {6}; 28/8=3 {4}; {3} = 346[8]
      • 260[10] = 260/16=16 {4}; 16/16=1 {0}; {1} = 104[16]
    • Conversão de base binária para base de potência de 2

      • agrupar sequencias de algarismos da esquerda para direita e substituí-lo pelo seu equivalente;
      • 111101110001[2] = 111 101 110 001 = 7561[8]
      • 111101110001[2] = 1111 0111 0001 = F71[16]

 

Sistemas Operacionais


 

  • Visão geral
    • controla os recursos do computador (tempo de processador, memória e dispositivos de E/S);
    • provê uma camada adicional de abstração, que simplifica a utilização dos recursos, acessível por meio de chamadas de sistema;
    • protege a execução do núcleo do sistema;
  • Tratamento de interrupções
    • evento (externo) gerado por um dispositivo e independe da instrução que está sendo executada;
    • paralisa a execução do programa em execução;
  • Tratamento de exceções
    • evento (interno) gerado pela falha de uma instrução do programa que está sendo executado (divisão por zero);
    • paralisa a execução do programa em execução;
  • Gerenciamento de processos
    • Visão geral
      • executa, controla e finaliza os programas do computador;
      • fornece um escalonamento do tempo de utilização do processador e dos dispositivos;
      • fornece chamadas de sistemas (system calls) com instruções interpretadas pelo sistema operacional;
    • Processo
      • programa é uma sequência da instruções ordenadas;
      • processo é a instância em execução de um programa e não compartilha um recurso simultaneamente com outro processo;
      • multitarefa é a execução escalonada de processos com o compartilhamento do tempo do processador;
      • apenas um processo pode estar em execução em cada núcleo do processador;
    • Thread
      • partes distintas e independentes de um processo que podem compartilhar recursos entre si, com acesso e execução concorrente;
      • troca de contexto preemptiva, é controlada pelo sistema operacional (pode interromper a thread em momento indevido);
      • troca de contexto cooperativa, cada thread determina o momento de interromper a sua execução (pode assumir o processador por muito tempo);
    • Troca de contexto
      • substituição do processo ou thread em execução, com a preservação do seu estado, por outro;
      • ocorre quando termina o tempo do processo em execução, quando há uma interrupção ou exceção, ou quando o modo de execução é alterado;
    • Estados de um processo
      • Pronto (espera) → estado inicial de criação do processo ou após sua substituição por troca de contexto;
      • Executando → durante a execução até que ocorra a troca de contexto que o coloca em estado de espera;
      • Bloqueado → até a conclusão da execução de uma instrução externa do programa (como operação de E/S), quando será colocado em estado de espera;
    • Comunicação entre processos
      • FIFO → mecanismo gerenciado pelos programas em que apenas um escreve dados para o segundo consumi-los;
      • PIPES → mecanismo gerenciado pelo sistema operacional em que apenas um escreve dados para o segundo consumi-los;
      • Troca de mensagens → mecanismo gerenciado pelo sistema operacional com mensagens identificadas e acesso seletivo por identificador;
      • Memória compartilhada → mecanismo gerenciado pelos programas com mensagens identificadas e acesso seletivo por identificador;
    • Sincronização em processos cooperativos
      • Visão geral
        • mecanismos para assegurar manipulação de dados por processos concorrentes;
        • a fim de manter a validade lógica do sequenciamento das instruções ao evitar a condição de corrida;
      • Travas (lock)
        • xxx
      • Semáforos
        • variável de controle que indica quantos processos podem utilizar determinado recursos;
        • deverá ser protegido por uma trava e instrução TSL para assegurar que somente uma CPU acesse o buffer do semáforo;
        • a instrução down executada com valor 0 faz o processo entrar em modo de espera;
      • Mutexes
        • variável compartilhada que pode assumir os valores travada ou destravada;
        • controlada por meio de rotina que assegura o acesso por um único processo e define a trava por meio da instrução TSL;
        • quando o mutex está travado os demais processos que solicitarem acesso serão bloqueados até seu destravamento;
      • Leitura-cópia-atualização (algoritmo alternativo para travas)
        • xxx
      • Barreiras
        • sincronização de grupos de processos em que cada um computa uma parte do cálculo;
        • quando cada processo conclui sua parte, ele executa uma barreira para aguardar no estado bloqueado os demais processos;
        • quando todos atingem a barreira, então são liberados para iniciar um novo cálculo;
        • nenhum processo prossegue até que todos atinjam a barreira;
    • Impasses (deadlock)

      • quando dois ou mais processos aguardam um recurso que nunca será liberado, devido a uma dependência circular;
      • a prevenção deve ocorrer com a não alocação de recursos por tempo indeterminado, com pré-alocação e alocação de modo sequencial;
      • o tratamento deve terminar os processos e reiniciá-los de forma sequencial;
  • Gerenciamento de memória
    • Visão geral
      • permite a utilização da memória para o armazenamento de instrução e dados de programas;
      • isolamento (proteção) da área de memória utilizada por cada processo a fim de evitar que falhas afetem outros processos;
      • compartilhamento de área de memória para comunicação entre processos;
    • Memória virtual
      • mapeamento da memória real alocada de formada fragmentada para uma visão contínua por processo (memória virtual);
      • a tabela de paginação (única ou por processo) contém o relacionamento entre endereço físico e endereço de memória virtual;
      • os espaços de endereçamento são um conjunto de páginas de memória;
      • cada página é uma área contínua de dados (não fragmentada);
    • Paginação
      • a paginação realiza a transferência de dados inativos em memória principal para a memória secundária (Page-Out);
      • a requisição de dados que não estão na memória principal (Page Fault) provoca sua transferência para a memória principal (Page-In);
      • a troca de página (Page Swap) ocorre quando é necessário fazer um Page-Out para liberar espaço em memória para que um Page-In ocorra;
      • a paginação não altera o endereço virtual;
      • não podem sofrer paginação as páginas que contém: a tabela de paginação, rotinas para tratamento de interrupção e as que são acessadas via DMA;
      • endereços de relocação são gerados pelo programa em execução (endereço de espaço virtual);
    • Segmentação
      • segmentos são espaços de endereçamento independentes que dividem da área de memória de um programa tamanhos distintos;
      • cada segmento pode alocar mais páginas ou desalocá-las (tamanho flutuante) de forma independente sem afetar um ao outro;
      • cada segmento pode ser utilizado para armazenar uma rotina, uma pilha, um conjunto de variáveis (mas não uma mistura desses);
      • a utilização de segmentos para cada rotina simplifica a ligação dessas rotinas separadamente (cada rotina iniciará do endereço zero);
      • cada segmento possui um identificador, um conjuntos de páginas de endereçamento linear e determinada permissão de acesso;
      • as permissões envolvem: somente execução, somente leitura/escrita, proibição de leitura ou armazenamento dele;
      • fragmentação externa é o desperdício de memória em lacunas entre os segmentos, ocasionada pelo tamanho flutuante;
  • Gerenciamento de dispositivos
    • controle da utilização dos dispositivos;
    • um driver de dispositivo é um conjunto de instruções para controle de um dispositivo;
  • Gerenciamento de arquivos
    • Visão geral
      • provê recursos de alto nível para armazenamento de dados;
      • fornece chamadas para criação, edição e exclusão de arquivos por meio de um sistema de arquivos;
    • Sistemas de arquivos
      • Classificação
      • Propriedades do arquivo
      • Metadados
      • Windows NTFS
      • Linux Ext
  • Gerenciamento de usuários

    • autenticação e autorização do usuário;
    • execução de programas a partir da permissão do usuário;
    • acesso a informações armazenadas por usuários ou programas autorizados;
  • Protocolos de rede
    • provê recursos de alto nível para comunicação de rede;
    • encapsula a informação por meio de protocolos de rede para transmissão pelo dispositivo de rede;

 

Windows

 

  • Visão geral
    • Windows Server – versão, memória e cpus;
      • Windows Foundation → 4Gb/x86, 8Gb/x64, 1cpu;
      • Windows Standard → 4Gb/x86, 32Gb/x64, 4cpus;
      • Windows Webserver → 32Gb/x86, 2Tb/x64, 4cpus;
      • Windows Enterprise → 32Gb/x86, 2Tb/x64, 8cpus;
      • Windows Datacenter → 64Gb/x86, 2Tb/x64, 32cpus/x86, 64cpus/x64;
    •  Powershell
      • shell de linha de comando para automação de rotinas de administração do Windows e aplicativos por meio das APIs do Windows e do .NET.
    • Clustering failover
      • computadores independentes que trabalham em conjunto para aumentar a disponibilidade e escalabilidade dos serviços clusterizados.
    • Network access protection (NAP)
      • restringe computadores que não estão de acordo com requisitos de “saúde” definidos pelo administrador por meio de diretivas.
    • BitLocker
      • sistema de criptografia de volume em múltiplos drivers.
    •  Hyper-V
      • permite criar um ambiente virtual para aumentar a eficiência dos recursos de computação e de hardware, por meio da execução simultânea de vários sistemas operacionais.

 

Linux

 

  • Liberdades do software livre
    • Liberdade para executar o programa para qualquer propósito;
    • Liberdade de estudar como o programa funciona e adaptá-lo a suas necessidades;
    • Liberdade de redistribuir cópias de modo que você possa ajudar seu próximo;
    • Liberdade de aperfeiçoar o programa e liberar seus aperfeiçoamentos de modo que toda a comunidade de beneficie.

 

Sistemas de arquivos

 

  • Conceitos
    • Sistema de arquivos → é um conjunto de estruturas lógicas e de rotinas para o controle de acesso ao disco.
    • Setor → é a menor unidade física de armazenamento.
    • Cluster → é a menor unidade lógica de armazenamento do disco, é formada por um conjunto de setores. O tamanho de cada cluster varia de acordo com o sistema de arquivos. Um arquivo pode ser armazenado em um conjunto de cluster, mas ocupará ao menos um.
    • Journaling → área dedicada para armazenamento das ações que serão feitas nos arquivos, pode ser a nível de metadados ou incluir o arquivo em si, para restaurar a estrutura do sistema de arquivos em casos de falhas.
    • FHS (Filesystem Hierarchy Standard) → é a padronização da organização do sistema de arquivos de sistemas Linux, como a localização dos arquivos executáveis de usuários comuns (/bin), dos arquivos de conteúdo variável (/var) como logs, caixas postais, base dados, etc, e dos arquivos de configuração (/etc);
  • FAT é um índice (catálogo, mapa) que contém o endereçamento dos clusters e sua associação com cada arquivo armazenado.
    • FAT16 → 16 bits para endereçamento e nome do arquivo de 8 caracteres com extensão de 3 caracteres.
    • FAT32 → 32 bits para endereçamento, nome de arquivos até 255 caracteres, partições até 32Gb.
  • NTFS → partições maiores que 32Gb, capacidade de compactar arquivos, gestão de fragmentação, controle de permissões, capacidade de criptografia EPS, faz journaling para recuperação de erros;
  • NFS é um sistema de arquivos de compartilhamento em rede configurável no arquivo /etc/exports, como: /home 192.168.0.10(rw), sendo necessário usar o comando exportfs após realizar alteração na configuração;
    • mount -t nfs 192.168.0.1:/home /home

 

Serviços de rede

 

  • Active Directory
    • Tipos de objetos
      • recursos físicos → informações sobre servidores, estações de trabalho e impressoras;
      • serviços disponíveis → informações sobre serviços, como correio eletrônico e servidor de impressão;
      • contas → informações sobre usuários e permissões de uso de recursos físicos e serviços;
    • Banco de dados → %SystemRoot%\NTDS\ntds.dit
      • Ntds.dit → banco de dados do Active Directory;
      • Edb.log → contém todas as transações realizadas no AD.
      • Edb.chk → contém o checkpoint que controla as transações no arquivo Edb.log e comitadas na base (Ntds.dit);
      • Res1.log → backup das transações a fim de recuperar erros de gravações na base (Ntds.dit) em caso de falta de espaço em disco;
      • Res2.log → backup das transações a fim de recuperar erros de gravações na base (Ntds.dit) em caso de falta de espaço em disco;
    • Estrutura
      • Estrutura lógica → gerencia objetos da organização;
        • Objetos →
        • Unidades →
        • Unidades Organizacionais →
        • Domínio →
        • Árvores de domínio e floresta →
      • Estrutura física → otimiza o tráfego de rede
        • Domain controllers →
        • Sites →

 

 

 

 

Reinaldo Gil Lima de Carvalho