




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
um pouco mais de conhecimento
Tipologia: Notas de estudo
1 / 153
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































Organização de Computadores
Um computador é organizado basicamente pela UCP, pela Memória e os Dispositivos de Entrada e Saída.
A UCP ou CPU ( Central Processing Unit ) é responsável pelo processamento e execução dos programas armazenados na memória principal. Ela é composta pela UAL (Unidade Aritmética e Lógica) e a UC (Unidade de Controle), que busca, inter- preta e controla as instruções e demais componentes do computador.
Registradores são dispositivos de armazenamento temporário, localizados na UCP, extremamente rápidos, com capacidade para apenas um dado (uma palavra). Está localizado no chip, e os seus dados são voláteis.
Álgebra booleana
Os circuitos lógicos são construídos a partir das portas lógicas, que implementam fisicamente as funções booleanas básicas. A representação padrão destes três blocos lógicos é mostrada a seguir.
Os três principais operadores da álgebra booleana são os operadores NOT, AND e OR.
Existem várias leis descritas pela álgebra de Boole que são úteis no tratamento das equações lógicas:
Além dessas leis existem dois teoremas conhecidos como Teoremas de De Morgan , cuja formulação é:
Sistemas de numeração e representação de dados
A nossa representação de números é baseada em um sistema de 10 algarismos (0 a 9), manipulados em múltiplos de 10. Esta representação é conhecida como a base 10.
Já os computadores utilizam apenas dois símbolos (0 e 1), representados pela voltagem elétrica (ligado ou desligado). Essa unidade de informação é chamada de bit, e é a abreviatura de binary digit , em inglês. Assim, um bit pode representar dois números, o 0 e o 1. Se usarmos dois bits, poderemos representar quatro estados diferentes, com três bits, já são oito estados, e assim por diante. Chamamos de um byte, o conjunto de oito bits, que pode representar 2^8 estados (256), ou os números de 0 a
Aritmética computacional
As palavras de um computador são compostas por bits e podem representar números armazenados na memória. Estes núme- ros podem ter diferentes significados, como inteiros ou reais, serem positivos ou negativos:
Microprocessadores: Componentes
O processador (CPU) é o componente vital de um sistema de computação, responsável pela realização das operações de pro- cessamento (cálculos, entre outros) e de controle durante a execução de um programa.
O ciclo básico de uma instrução é: BUSCA -> DECODIFICÃO -> EXECUÇÃO. Outra divisão (para pipelines ) é: Busca ( fetch ), Decodificação, Busca do Operando, Execução e Armazenamento do resultado.
ção. Quando a CPU é interrompida, ela pára e transfere a execução para um local fixo (rotina de serviço) para tratar a interrupção (divisão por zero, acesso inválido...)
Conceitos de interrupções
Inicialmente, quando começou-se a usar sistemas operacionais, um programa que estivesse sendo executado tomava o contro- le da máquina e só quando o programa encerrava é que o controle era devolvido para o sistema operacional. Quando ocorria algum problema (por exemplo, um erro no programa) não havia meios do sistema operacional retomar o controle da máquina, exceto com o usuário derrubando o sistema e recarregando o sistema operacional. Ficou então evidente a necessidade de ha- ver um meio do sistema operacional poder retomar o controle da máquina, em situações de exceção.
Também ocorreu que as UCP's ficaram mais rápidas e mais eficientes, porém os dispositivos periféricos de E/S compatíveis progrediram menos em velocidade (ou seja, ficaram comparativamente mais lentos).
A resposta a estes problemas foi a utilização do mecanismo de INTERRUPÇÕES. Interrupções são modificações no fluxo de controle causadas por uma ação externa, geralmente relacionada a Entrada ou Saída. Uma interrupção é um sinal de controle enviado por um agente externo (um dispositivo) ao microprocessador, quando um determinado evento é detectado. A inter- rupção é um sinal de hardware.
Este mecanismo força o processador a tratar o evento externo. A detecção de uma interrupção faz com que o processador transfira o controle para uma rotina de tratamento de interrupção ( interrupt handler ). A rotina de tratamento de interrupções faz o processador executar as seguintes ações:
Interrupções de software ( traps ou exceptions ) são devidas a:
Estruturas de endereçamento
Os processadores podem acessar a memória de vários modos diferentes. A flexibilidade em seu acesso garante uma maior facilidade e performance ao trabalhar com variáveis, arrays , registros, ponteiros e outros dados.
Compiladores, Ligadores e Interpretadores.
Existem dois tipos de aplicações para converter um código em uma linguagem para código de máquina:
Gerenciamento de Processos
Um programa é uma seqüência de instruções que descrevem a execução de uma tarefa. Um processo é um programa em execução. O estado de um processo consiste do programa, da próxima instrução a ser executada, os valores das variáveis uti- lizadas, e o status dos dispositivos de entrada e saída.
Para guardar o estado de um processo, é criado um vetor de estado , que armazena todas as partes mutáveis do processo, ou seja, todos citados acima, menos o programa, que é imutável (em boas práticas de programação).
Para evitar que um programa acesse a área de outro, pode ser utilizado um registrador de base e outro de limite, com o espaço de endereçamento lógico do programa em execução. O próprio SO possui um mecanismo para se proteger de processos, que são os bits de proteção (modo usuário e modo privilegiado / monitor).
Processos precisam de tempo de CPU, memória, arquivos e dispositivos de I/O para realizar a sua tarefa. Estes recursos po- dem ser alocados durante a sua criação ou a sua execução. O Sistema Operacional deve:
O escalonamento de CPU tem origem com a introdução de sistemas multiprogramados. Sempre que um processo precisa esperar (E/S), outro processo pode assumir o uso da CPU.
O escalonamento desse tipo é uma função fundamental do sistema operacional. Quase todos os recursos do computador são escalonados antes do uso, e esse escalonamento é vital para o projeto do Sistema Operacional.
Diferentes algoritmos de escalonamento de CPU possuem diferentes propriedades e podem favorecer uma classe dos proces- sos em detrimento de outro. Alguns critérios de escalonamento são:
Ciclo de Burst CPU – E/S: Essa será a medida adotada para caracterizar cada processo em nosso algoritmo. A execução de um processo começa com um burst (surto) de CPU, que é seguido por um burst de E/S, que por sua vez, é seguido por outro burst de CPU, depois outro burst de E/S, e assim por diante. Por fim, o burst de CPU final termina com uma requisição do sistema para terminar a execução.
Alguns algoritmos de escalonamento de processos são:
FCFS (First Come First Served): neste escalonamento, o primeiro processo a chegar na fila é o primeiro a ser atendido, o que maximiza o seu throughput.
Round Robin: no escalonamento RR ou circular, os processos são organizados numa fila segundo sua ordem de chegada, sendo então despachados para execução. No entanto, ao invés de serem executados até o fim (completion), a cada processo é concedido apenas um pequeno intervalo de tempo ( time slice ou quantum). Caso o processo não seja finalizado neste interva- lo de tempo, ocorre sua substituição pelo próximo processo na fila de processos ativos, sendo o processo em execução inter- rompido e novamente colocado na fila de processos prontos, mas em seu fim. Isto significa que ao final de seu intervalo de tempo, isto é, de seu quantum, ocorre a preempção do processador, ou seja, o processador é designado para outro processo
Gerenciamento de Memória
A memória é o local onde os programas e dados são armazenados. A codificação binária ( bits ) foi escolhida para representar a informação, pois é mais confiável (e não mais eficiente!).
Uma célula de memória é a menor unidade endereçável. Cada célula tem um endereço único, e geralmente ocupam um byte , uma palavra, ou outra unidade.
Para evitar que dados sejam interpretados como instruções, ou vice-versa, um bit extra pode ser usado para cada célula para indicar o seu conteúdo. Na verdade vários bits extras podem existir com várias finalidades.
O processador central lê e grava na memória, assim como a controladora de DMA. Os programas devem ser mapeados para endereços absolutos, e instruções e dados são acessados. Além disso, vários programas ficam ao mesmo tempo na memória. O sistema operacional é responsável por:
A CPU se comunica com a memória através dos registradores MAR e MBR, já explicados anteriormente.
A amarração de endereços lógicos ( binding de programas executáveis) com físicos (da memória principal) é feita:
Alocação Contígua Simples
A memória principal é dividida em duas partições: Sistema Operacional (parte baixa) e Processo do Usuário (restante da me- mória). O usuário tem controle total da memória, inclusive da área do SO (Ex.: DOS). A proteção ( bits de proteção) foi poste- riormente incluída, assim como registradores de base e limite.
Relocação é o processo de designar endereços de carga às várias partes do programa, ajustando código e dados para refletir os endereços designados.
Alocação Contígua Particionada
Imposta pela multiprogramação, existem múltiplas partições, e a memória é dividida em blocos. Cada partição pode receber um processo (programa), mas não considera a existência do Swapping. Para corrigir fragmentação interna nas partições, o seu tamanho passou a ser dinâmico, e não fixo. Mas isso também pode gerar fragmentação externa (pedaços livres da memória). Algoritmos para alocação contígua: First Fit (primeiro espaço), Best Fit (menor espaço livre) e Worst Fit (maior espaço).
Swapping: é uma técnica para evitar a fragmentação externa, e lidar com a falta de espaço em memória, já que os processos precisam estar na memória principal para serem executados. Mas nunca deve ocorrer em processos com E/S pendentes.
Segmentação
Paginação
Obs.: Os tempos relativos a unidades ( drivers ) de disquetes são muito maiores que os acima indicados para discos rígidos. Drivers de disquete giram a aproximadamente 300 rpm e o throughput é da ordem de 500 kbytes/s; os tempos de acesso mé- dios são da ordem de 60 a 100 ms.
Após a formatação física, temos um HD dividido em trilhas, setores e cilindros. Porém, para que este disco possa ser reco- nhecido e utilizado pelo sistema operacional, é necessária uma nova formatação, chamada de formatação lógica. A formata- ção lógica consiste em escrever no disco a estrutura do sistema de arquivos utilizado pelo sistema operacional.
Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas que permitem ao sistema operacional controlar o acesso ao disco rígido. Diferentes sistemas operacionais usam diferentes sistemas de arquivos. Os principais são:
Gerenciamento de Dispositivos
O Sistema operacional deve ocultar os detalhes de dispositivos de I/O de usuários. Ele deve:
Para evitar que a CPU fique presa por longos períodos em Entrada e Saída, podem existir processadores especializados de E/S, de baixo custo.
Além disso, o sistema operacional guarda uma tabela de status de dispositivos , com o registro de pedidos de I/O simultâ- neos.
O DMA é utilizado para evitar que transferências de I/O rápidas (síncronas), como fitas, disco ou rede de comunicação, não interrompam o CPU a cada byte transferido. O DMA transfere diretamente para a memória, sem interrupção da CPU. Uma interrupção é gerada apenas a cada bloco, para encontrar um buffer e configurar os registradores (com endereços inicial e fi-
nal). Como a memória só pode transferir 1 palavra / ciclo, a CPU às vezes concorre com o DMA para realizar operações de acesso à memória (apenas um barramento).
O código ASCII é um mapeamento de bits para caracteres de texto, por exemplo: 0 (47), A (65) e a (97).
Concorrência
A programação concorrente pode ocorrer de duas formas diferentes:
Em alguns tipos de aplicações, threads são essenciais, como no caso de aplicativos com interface gráfica, em que o programa pode esperar interação do usuário enquanto processa alguma tarefa. Outro exemplo são servidores que podem esperar por requisições de novos clientes enquanto lidam com requisições já enviadas.
Para que dois ou mais processos possam ter acesso a um mesmo recurso compartilhado, existe um mecanismo que controla este acesso, chamado de mecanismo de sincronização. Enquanto um processo estiver acessando determinado recurso, todos os outros que queiram acessá-lo deverão esperar. Isso se chama Exclusão Mútua.
A tentativa de implementar a exclusão mútua nos programas traz alguns problema. Os mais freqüentes são:
Algumas soluções implementadas para lidar com este problema são:
Concorrência: Deadlocks
Um problema da concorrência é quando métodos sincronizados chamam outros métodos sincronizados. Isso pode causar de- adlock , quando uma thread A espera a liberação de um objeto, que está com a thread B. Mas esta só vai liberar o objeto após uma alteração de outra thread (A, por exemplo), monopolizando-a. Exemplos:
Cenário 1 (Não ocorre deadlock ), saldo do caixa: R$0.
Cenário 2: (Ocorre deadlock ), cliente 2 chega antes de cliente 1
Redes de Computadores
Os primeiros sistemas de computadores eram grandes e caros. Os seus usuários organizavam as tarefas a serem processadas em jobs , e o computador fazia o processamento em lote ( batch ). As tarefas eram executadas uma a uma, organizadas em uma fila de entrada. Na década de 80 surgiram os terminais remotos, que permitiram que os usuários pudessem acessar os compu- tadores através de linhas de comunicação. Nesta mesma época surgiu o conceito de tempo compartilhado ( time sharing ), para otimizar o uso de mainframes. Os terminais passaram a ser ligados ao computador central por cabos e novos recursos surgi- ram utilizando esta interconexão.
As redes modernas têm raízes nos primeiros sistemas de telefones e telégrafos. Para lidar com o aumento no número de usuá- rios, foi preciso criar novos meios de distribuir o processamento e utilização dos outros recursos pelas redes, criando o con- ceito de multi-processamento e sistemas de processamento distribuídos. Na década de 60, o governo dos EUA iniciou o proje- to ARPA ( Advanced Research Project Agency ).
Uma rede de computadores é um conjunto de módulos processadores capazes de trocar informações. Seus objetivos são:
Comunicação de dados
A comunicação de dados em nível global tornou-se uma realidade do nosso tempo. O desafio que a comunicação de voz re- presentou para as gerações passadas volta atualmente, sob a forma de aplicações de telemática, em várias modalidades de troca de informação entre computadores heterogêneos situados em ambientes remotos, interconectados através dos sofistica- dos meios oferecidos pela engenharia de telecomunicações.
A Comunicação de Dados diz respeito ao modo como os dados são manipulados, transformados e transportados entre pontos quaisquer. Exemplos disso são os modos simplex (unidirecional), half-duplex (uma direção de cada vez) e full-duplex de co- municação, as bandas passantes, as modulações de sinais e a criptografia.
As Redes de Computadores são mecanismos que utilizam a comunicação de dados e existem para prover: comunicação entre pontos, compartilhamento de recursos e confiabilidade da integridade dos dados transferidos.
Meios de transmissão
Basicamente existem dois tipos de tecnologias de meios de transmissão:
A transmissão de dados, quando realizada nos dois sentidos é denominada duplex. No caso em que ela se realiza alternada- mente, ou seja, ora num sentido, ora no outro, ela se denomina half-duplex. No caso em que ela se realiza simultaneamente nos dois sentidos, esta será denominada full-duplex.
Os bits podem ser transmitidos de forma paralela , onde são simultaneamente transportados por várias linhas (mais adequado à comunicação entre equipamentos próximos), ou serial , onde os bits são encaminhados através de uma única linha de comu- nicação (ideal para equipamentos muito distantes). A forma de delimitar os bits pode levar em conta duas diferentes filosofias — a transmissão serial síncrona e a serial assíncrona.
Redes locais e de longa distância
As redes são classificadas pela sua escala, que residem basicamente em três grupos:
Topologias
A topologia de uma rede descreve como é o layout do meio através do qual ocorre o tráfego de informações e também como os dispositivos estão conectados a ele. Refere-se ao relacionamento físico e lógico de cada nó da rede (cada ponto de conexão com a rede pode ser chamado de nó, independente da função do equipamento representado por ele), ou seja, a forma como estão dispostos. Temos aqui então a divisão
O ambiente de funcionamento também influencia na escolha da topologia de uma rede. Ambientes ruidosos e com problemas de segurança têm requisitos mais exigentes quanto ao número máximo de nós, a separação máxima e mínima entre nós e a taxa máxima de informação trans- mitida. Alguns protocolos, por e- xemplo, levam em conta a distância máxima entre os nós da rede para seu perfeito funcionamento.
Ao lado estão relacionadas as topo- logias de redes ponto-a-ponto.
O envio de mensagens é feito de forma indireta, de forma que cada estação recebe o conteúdo integral da mensagem até ela alcançar o seu destinatário.
Tipos de
Topologias
Ponto Positivos Pontos Negativos
Topologia Estrela É mais tolerante a falhas Fácil de instalar usuários Monitoramento centralizado
Custo de Instalação maior porque recebe mais cabos
Topologia Anel
( Token Ring )
Razoavelmente fácil de instalar Requer menos cabos Desempenho uniforme
Se uma estação para todas param Os problemas são difíceis de isolar.
Topologia Barra- Simples e fácil de instalar Requer menos cabos
A rede fica mais lenta em períodos de uso intenso.