Fundamentos da computação
- Arquitetura de Computadores Multinível
- Contexto do Nível das Linguagens – Linguagens e Tradução
- Contexto do Nível das Linguagens – Paralelismo em Nível de Multicomputadores
- Contexto do Nível do Sistema Operacional
- Contexto do Nível do Conjunto de Instruções – Instruções
- Contexto do Nível do Conjunto de Instruções – Paralelismo em Nível de Instrução
- Contexto do Nível de Microarquitetura
- Contexto do Nível Lógico Digital – Circuitos
- Contexto do Nível Lógico Digital – Componentes do computador
- Contexto do Nível Lógico Digital – Paralelismo em Nível de Multiprocessadores
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;
- Arquitetura de computadores
- 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);
- Nível 5 → linguagens orientadas a solução de problemas (C, Java, etc);
- 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;
- Execução de um programa
- 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;
- Visão geral
Contexto do Nível da Linguagens – Linguagens e Tradução
- Nível da Linguagem de Programação – Ní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
- Compilador → produz 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;
- Análise léxica (scanner)
- 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
- Pré-processamento
- 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;
- Compilador → produz linguagem de montagem a partir da tradução do código fonte (relação 1:N);
Contexto do Nível das Linguagens – Paralelismo em Nível de Multicomputadores
- Paralelismo em Nível de Processamento – Multicomputadores 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;
- Cluster
- 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)
- Visão geral
Contexto do Nível do Sistema Operacional
- Nível do Sistema Operacional – Ní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);
- Componentes → arquitetura centrada na memória, não utiliza um barramento único (que surgiu apenas no minicomputador PDP-8);
- 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);
- Program Counter – PC (Contador de programa – CP ou Contador de instruções – CI)
- 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;
- Instruction Fetch (IF)
- 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;
- Assíncrono
- 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;
- Formato de instruções → código da operação + operandos (dados);
- 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;
- Arquitetura CISC (Complex Instruction Set Computer)
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;
- Pipelining
- 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;
- Dependência real de dados
- Visão geral
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;
- Multiplexadores
- 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);
- Deslocadores
- De uso geral
- 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;
- Latch
- 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;
- Quantidade de palavras (endereçamento) e largura da palavra (quantidade de bits de entrada e saída)
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;
- Unidade de controle (UC)
- Visão geral
- 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;
- Visão geral
- 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);
- Visão geral
- 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;
- Visão geral
- 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;
- Visão geral
- 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;
- Estrutura
- 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;
- CD (Red Book)
- Visão geral
- 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;
- Northbridge (maior velocidade) → CPU, vídeo e RAM;
- 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;
- Visão geral
- 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;
- Comunicação serial
- 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;
- Polling (programada)
- Formas de comunicação
Contexto do Nível Lógico Digital – Paralelismo em Nível de Multiprocessadores
- Paralelismo em Nível de Processador – Multiprocessadores 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);
- Simétrico (Symmetric MultiProcessor)
- 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);
- Interconexão por barramento
- 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;
- Uniform Memory Access (UMA) → acesso à memória com latência igual a qualquer processador;
- Visão geral
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;
- Visão geral
- 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;
- Visão geral
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)
- Little Endian (Intel) → palavra com bytes numerados a partir da ordem baixa, do byte mais a direita p/ a esquerda: 3 2 1 0;
- 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;
- Bit
- 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;
- Visão geral
- Visão geral
- 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;
- Sinal e magnitude (valor)
- 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]
- Base
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;
- Visão geral
- 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;
- Visão geral
- 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;
- Visão geral
- 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
- Visão geral
- 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.
- Windows Server – versão, memória e cpus;
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 →
- Estrutura lógica → gerencia objetos da organização;
- Tipos de objetos
Reinaldo Gil Lima de Carvalho