FBV CursosOperador de Micro Computador – Básico e Avançado TRABALHO DE APERFEIÇOAMENTO DE 120 HORAS VICTOR REGIS LYRA BESERRA DA SILVA 2014 Os computadores surgiram com o intuito de automatizar tarefas que demandam muito tempo para os homens. As primeiras versões dos computadores foram utilizados para guerras militares. A palavra “computador” foi registada pela primeira vez como sendo utilizados em 1613, e foi originalmente foi usada para descrever um ser humano, que foram realizados cálculos ou cálculos. A definição de um computador permaneceu o mesmo até o final do século 19, quando as pessoas começaram a perceber as máquinas nunca se cansa e pode realizar cálculos muito mais rápido e com mais precisão do que qualquer equipe de computadores humanos jamais poderia. Primeiro computador mecânico ou automático conceito motor computing. Em 1822, Charles Babbage começou a desenvolver o motor de diferença, considerado o primeiro motor de computação automática, que foi capaz de computar vários conjuntos de números e fazer cópias dos resultados. Infelizmente, por causa do financiamento que ele nunca foi capaz de completar uma versão funcional em grande escala desta máquina. Em junho de 1991, o Museu da Ciência de Londres completou a Difference Engine º 2 para o ano do bicentenário do nascimento de Babbage e mais tarde concluído o mecanismo de impressão em 2000. Analytical EngineLater, em 1837 Charles Babbage propôs o primeiro computador mecânico geral, a Máquina Analítica. A Máquina Analítica continha uma unidade lógica e aritmética (ULA), controle de fluxo básico, e de memória integrado e é o primeiro computador conceito de propósito geral. Infelizmente, devido a problemas de financiamento este computador foi também nunca construiu enquanto Charles Babbage estava vivo. Em 1910, Henry Babbage, filho mais novo de Charles Babbage foi capaz de completar uma parte da máquina e foi capaz de realizar cálculos básicos. Primeiro computador programável. O Z1, originalmente criado por Konrad Zuse na Alemanha na sala de estar dos seus pais em 1936, para 1938 e é considerado o primeiro eletro-mecânico programável binária (moderna) do computador e realmente o primeiro computador funcional. Os primeiros conceitos de o que nós consideramos um computador moderno. A máquina de Turing foi primeiramente proposto por Alan Turing em 1936 e se tornou a base para as teorias sobre computação e informática. A máquina foi impresso um dispositivo que símbolos em fita de papel de forma que uma pessoa emulado na sequência de uma série de instruções lógicas. Sem estes fundamentos, não teríamos os computadores que usamos hoje. O primeiro computador programável elétrico, O Colossus foi o primeiro computador programável elétrico e foi desenvolvido por Tommy Flowers e demonstrou pela primeira vez em dezembro de 1943. The Colossus foi criado para ajudar os decifradores de códigos britânicos ler mensagens alemãs cifradas. O primeiro computador digital, Abreviação de Atanasoff-Berry Computer, o ABC começou a ser desenvolvido pelo professor John Vincent Atanasoff e estudante Cliff Berry em 1937 e continuou a ser desenvolvido até 1942 no Colégio Estadual de Iowa (agora Iowa State University). O ABC foi um computador elétrico que usou tubos de vácuo para a computação digital, incluindo matemática binária e lógica booleana e não tinha CPU. Em 19 de outubro de 1973, os EUA Juiz Federal Earl R. Larson assinou sua decisão que a patente ENIAC por J. Presper Eckert e John Mauchly era inválido e nomeado Atanasoff o inventor do computador digital eletrônico. O ENIAC foi inventado por J. Presper Eckert e John Mauchly, da Universidade da Pensilvânia e iniciou a construção em 1943 e não foi concluída até 1946. Ele ocupava cerca de 1.800 metros quadrados e usado cerca de 18.000 tubos de vácuo, pesando cerca de 50 toneladas. Embora o juiz determinou que o computador ABC foi o primeiro computador digital, muitos ainda consideram o ENIAC para ser o primeiro computador digital, porque era totalmente funcional. Um Sistema Operacional é um conjunto de rotinas executadas pelo processador, da mesma forma como qualquer outro programa.Sua principal função é controlar o funcionamento do computador, gerenciando os diversos recursos disponíveis no sistema. O Sistema Operacional executa basicamente duas funções : • Facilita o acesso as recursos do sistema • Compartilha de forma organizada e protegida os recursos do sistema O Sistema Operacional torna a interação entre o usuário e o computador mais simples, confiável e eficiente. Conceitos Básicos Hardware : Um computador é constituido por um conjunto de dispositivos interligados , composto por processadores, memória principal e dispositivos fisicos ( hardware).Estes componentes podem ser sub-divididos em 3 sub-sistemas básicos : • Unidade Central de Processamente ( U.C.P.) • Memória Principal • Dispositivos de Entrada e Saida ( I /O ) Unidade Central de Processamento ( C.P.U.) : A principal função da Unidade Central de Processamento é unificar todo o sistema, controlando as funções realizadas por cada unidade funcional. Ela é também responsável pela execução de todos os programas do sistema, que obrigatoriamente deverão estar armazenados na memória principal. Um programa é composto por uma série de instruções ordenadas logicamente, que são executadas sequencialmente pela CPU. Ela busca cada instrução na memória principal e interpreta para a sua execução. A CPU é composta por dois componentes básicos : Unidade de Controle e Unidade Lógica e Aritmética. A Unidade de Controle é responsável por controlar as atividades de todos os componentes do computador, emitindo sinais elétricos gerado pelo dispositivo denominado Clock. Este sinal pode ser para a gravação de um dado no disco ou para uma busca de intrução na memória. A Unidade Lógica e Aritmética é responsável pela realização de operações lógicas (testes e comparação) e aritméricas ( soma ou subtração). A velocidade de processamento de uma CPU é determinado pelo número de instruções que o processador executa por unidade de tempo, normalmente segundo. Esta denominação pode ser MIPS (u Milhões de Instruções por Segundo) ou MFLOPS/GFLOPS (Milhões / Bilhões de Instruções por ponto flutuante por segundo ). Clock : É um dispostivo que esta localizado na CPU e que gera pulsos elétricos síncronos em um determinado intervalo de tempo. O sinal de Clock é utilizado pela Unidade de Controle para execução das instruções. A frequência do Clock de um processador é medida em Hertz ( Hz). Registradores : Os registradores são dispositivos de alta velocidade, que estão localizados dentro da CPU e que armazenam dados temporarios. Cada processador possui um determinado número de registradores.Alguns registradores são de uso específico e outros de uso geral. Memória Principal : Também conhecida como memória primária, é o local onde são armazenados as instruções e os dados.Ela é composta por unidades de acesso denominadas células, sendo que cada uma desta célula é composta por um determinado número de bits. O bit é a unidade básica da memória , podendo assumir o valor 0 e 1. O acesso de cada célula é realizada com a especificação de um número denominado endereço. Desta forma quando um programa escrever ou ler um dado em uma célula deve especificar primeiro qual o endereço de memória desejado, para depois realizar a operação. A memória principal pode ser classificada de acordo com a sua volatilidade que é a capacidade da memória em preservar o seu conteúdo mesmo sem uma fonte de alimentação. As memórias voláteis se caracterizam por poderem ser lidas e gravadas, como por exemplo as memórias RAM ( Random Acess Memory ). Outro tipo de memória não volátil é a memória ROM ( Read Only Memory ) , que já vem gravada do fabricante , geralmente com algum programa e seu conteúdo é mantido inalterado mesmo quando a alimentação é desligada. Memória Cache : Trata-se de uma memória volátil de alta velocidade.Toda vez que o processador busca um dado na memória principal , ele “olha” primeiramente para a memória cache. Se este dado estiver armazenado nela, não existe a necessidade do acesso da memória principal. Memória Secundaria : A memória secundária é um meio não volátil de armazenamento de programas e dados. O acesso a este tipo de dispositivo é lento se compararmos a memoria principal ou a memória cache, porém o seu custo é baixo e a sua capacidade de armazenamento, na maioria das vezes , é muito maior. Dispositivos de Entrada e Saida : Os dispositivos de entrada e saida tem permitem a comunicação entre o computador e o mundo externo. Através desses dispositivos, a CPU e memória principal podem se comunicar tanto com o usuário como a memória secundária, para realizar qualquer tipo de processamento. Estes dispositivos de Entrada e Saída podem ser divididos em duas categorias : • Aqueles que são utilizado como memória secundário como discos e fitas magnéticas e que tem um custo bem menor em relação a memória principal, armazenam um quantidade maior de informações , porém possuem uma velocidade de acesso menor. • Aqueles que são utlizados como interface homem-maquina , como teclado , monitores, impressoras , etc. Com o avanço da tecnologia , estes dispositivos tem se tornado bastante amigáveis, possibilitando que usuários com pouco conhecimento de informática, possam utilizar o computador de forma bastante satisfatória. Barramento : A CPU, a memória principal e os dispositivos de E/S são interligados através de linhas de comunicação denominadas barramentos , barras ou vias. Um barramento ( BUS ) é um conjunto de fios paralelos onde trafegam informações como dados , endereços ou sinais de controle. Os barramentos podem ser classificados como Unidirecional ( transmitem em um única direção ) ou Bidirecional ( transmitem em duas direções ). Na ligação entre CPU e Memória Principal , são necessários a ligação de 3 barramentos : • Barramento de Dados : onde trafegam as informações entre a CPU e a Memória Principal • Barramento de Endereço : onde a CPU especifica o endereço da célula que irá ser acessada • Barramento de Controle : onde a CPU envia pulsos de controle relativos a leitura e gravação Pipelining : O conceito de Pipelining se assemelha a de um linha de produção , onde uma tarefa é sub-dividida em outras sub-tarefas , executadas em diferentes estágios, dentro de uma linha de produção. A execução de uma instrução pode ser dividida em sub-tarefas , como as fases de busca de instrução de operandos, execução e armazenamento de resultados. O processador através de unidades funcionais pipeline , permite que enquanto a instrução se encontra na fase de execução , possa estar em fase de busca simultaneamente. Ativação e Desativação do Sistema : O Sistema Operacional é essencial para o funcionamento do Computador. Sem ele grande parte dos recursos do sistema não estariam disponíveis. Toda vez que um computador é ligado é necessário que o computador seja carregado da memória secundaria para a memória principal. Este processo, denominado ativação do sistema ( boot ) , é realizado por um programa localizado em um local específico do disco ( disco block ) , sendo geralmente o primeiro bloco. Este procedimento de ativação varia em função do equipamento, podendo ser realizado através de teclado, de um terminal , ou de chaves em um um painel. Além da carga do Sistema Operacional, a ativação do sistema tambem consiste na execução de arquivos de inicialização. Na maioria dos sistemas existe o processo de desativação denominado Shutdown . Este procedimento permite que as aplicações e componentes sejam desativados de maneira ordenada, garantindo a integridade do sistema. Arquitetura RISC e CISC Um processador com arquitetura RISC ( Reduced Instruction Set Computer) se caracteriza por ter poucas instruções de máquina , bastante simples e que são executadas diretamente pelo hardware.Na sua maioria , estas instruções não acessam a memória principal , trabalhando principalmente com os registradores, que neste tipo de processador, se apresentam em grande número. Um processador com arquitetura CISC ( Complex Instrution Set Computer ) já possuem instruções que já interpretadas por microprogramas.O número de registradores é pequeno e qualquer instrução pode referenciar a memória principal. Software : O Hardware sozinho não tem a menor utilidade. Para torna-lo útil é necessário que um conjunto de programas que fazem a interface entre as necessidades do usuário e a capacidade do hardware. A utlização de softwares adequados às diversas tarefas e aplicações , torna o trabalho do usuario muito mais simples e eficiente. Tradutor : No inicio, quando o computador surgiu, o ato de programar era extremamente complicado, pois o programador tinha que ter conhecimento de hardware ainda fazer a programação através de paineis de fios. Estes programas eram desenvolvidos em linguagem de máquina e carregados diretamente na memória principal para execução. Com o surgimento das primeiras linguagens de montagem ( assembly languages) , e ainda com o surgimento das linguagens de alto nível, os programadores deixaram de se preocupar com aspectos pertinentes ao hardware. O tradutor pode ser chamado de Montador ou Compilador. Compilador : É um programa responsável por gerar , a partir de de um programa escrito em linguagem de alto nível, um programa em linguagem de máquina, não executável. As linguagens de alto nível não possuem nenhuma relação direta com a máquina, ficando esta preocupação para o Compilador. Interpretador : Interpretador é considerado um tradutor que não gera código objeto. A partir de um programa fonte, escrito em linguagem de alto nível , o interpretador ,no momento da execução do programa, traduz cada instrução e a executa em seguida. Loader : também denominado carregador, é responsável por colocar fisicamente na memória um programa para execução. Depurador : é um utilitário que permite o usuário controlar a execução de um programa a fim de detectar erros na sua estrutura. Linguagem de Controle : também conhecida como Linguagem de Comando, é a forma direta do usuário se comunicar com o Sistema Operacional. Esta linguagem é oferecida por cada Sistema Operacional, para que os usuários possam ter acesso à rotinas específicas do sistema. Interpretador de Comandos ( Shell) : O Sistema Operacional é um código executor de chamadas de sistema. Os editores, compiladores, montadores e interpretadores não fazem parte do Sistema Operacional. Quando um comando é digitado pelo usuário, o Shell interpreta, verifica a sua sintaxe , envia mensagens de erro e faz chamadas de rotinas do sistema. Desta forma o usuário dispõe de uma interface interativa com o Sistema Operacional para realizar tarefas como copiar um arquivo ou disco ou ainda consultar um diretório. Linguagem de Máquina : é a linguagem que realmente o processador consegue entender.Cada processador possui um conjunto único de instruções ( set de instruções ) de máquina, que são definidas pelo próprio fabricante. Microprogramação Um programa em linguagem de máquina é executado diretamente pelo hardware em processadores com arquitetura RISC, porem em processadores com arquitetura CISC isso não acontece.Entre os níveis de linguagem de programação e harware, existe ainda a microprogramação. Os microprogramas definem a linguagem de máquina de cada computador.Uma máquina posse aproximdamente 25 microinstruções básicas , que são interpretadas pelos circuitos eletrônicos. Processos Um processo é basicamente um programa em execução , sendo constituido do código executável , dos dados referente ao código. Chamadas de Sistema Os programas dos usuários solicitam serviços do Sistema Operacional através da execução de chamadas de sistema. A cada chamada corresponde um procedimento de uma biblioteca de procedimentos que o programa do usuário pode chamar. Arquivos Arquivos são mecanismos de abstração que fornece uma forma de armazenar e recuperar informações em disco. Isso deve ser feito de uma forma que mantenha o usuário isolado dos detalhes a respeito de como as informações são armazenadas e de como os discos efetivamente trabalham. Tipos de Sistemas Operacionais A evolução do hardware está intimamente relacionada com o surgimento de novos Sistemas Operacionais e das aplicações por ele suportadas. A evolução dos Sistemas Operacionais para computadores pessoais e estações de trabalho popularizou termos conceitos e técnicas antes conhecidas somente em ambientes de grande porte.Com isso surgiram novos termos para conceitosjá conhecidos, que foram apenas adaptados para a nova realidade. Sistemas Monoprogramáveis / Monotarefas Os primeiros Sistemas Operacionais eram tipicamente voltados para a execução de um único programa ( job) . Qualquer outro programa, para ser executado, deveria aguardar o termino do programa corrente. Os sistemas monoprogramáveis , como vieram a ser conhecidos, se caracterizam por permitir que o processador, a memória e os periféricos permaneçam dedicados apenas para a execução de um único programa. Neste tipo de sistema, quando enquanto um programa aguarda por um evento ( por exemplo a digitação de um dado ), o processador permanece ocioso, sem realizar qualquer tipo de processamento.A memória acaba sendo sub-utilizada quando o programa não a utiliza totalmente e os periféricos ( discos e impressoras ) acabam sendo utilizados por um único usuário. Comparando com outros sistemas , os sistemas monoprogramáveis são de simples implementação e não existe praticamente preocupação com problemas de proteção. Sistemas Multiprogramáveis / Multitarefas Os sistemas multiprogramáveis que vieram a substituir os monoprogramáveis são mais complexos e eficientes. Enquanto no monoprogramável existe apenas um programa utilizando todos os seus recursos, nos multiprogramáveis vários programas dividem esses mesmo recursos.A vantagem neste tipo de sistema é que a aumenta a produtividade de seus usuários e ocorre a redução de custos com a possibilidade do compartilhamento dos mesmos recursos do sistema. A partir do número de usuários que interagem com o sistema, podemos classificar os sistemas multiprogramáveis como monousuário ou multiusuário. O uso de computadores pessoais possibilita que um único usuário (monousuário) possa executar varias tarefas concorrentemente ou simultaneamente. Os sistemas multitarefas permite que um usuário edite um texto, imprima um arquivo , copie um arquivo pela rede , etc. Sistemas Batch Os sistemas batch ( lote ) foram os primeiros sistemas multiprogramáveis a serem implementados e caracterizam-se por terem seus programas , quando submetidos, armazenados em disco ou fita, onde esperam para ser executados sequencialmente. Normalmente os programas ( jobs ) não exigem interação com o usuário, lendo e gravando dados em discos e fitas. Sistemas de Tempo Compartilhado Os sistemas de tempo compartilhado ( time-sharing ) permitem a interação dos usuários com o sistema, basicamente através de terminais que incluem video , teclado e mouse. Desta forma o usuário pode interagir diretamente com o sistema em cada fase de desenvolvimento de suas aplicações e, se preciso, modificá-las imediatamente. Devido a este tipo de interação , estes sistemas também são conhecidos como sistemas on-line. Para cada usuário, o sistema aloca uma fatia de tempo (time slice) do processador.Caso o programa do usuário não seja concluído nesse intervalo de tempo , ele é substituido por outro usuário e fica esperando po outra fatia de tempo.Não é só o processador que é compartilhado, mas também a memória e os periféricos, como discos e impressoras.O sistema cria para o usuário um ambiente de trabalho próprio , dando a impressão que todo o sistema esta exclusivamente dedicado a ele. Sistemas de tempo compartilhado são de implementação complexa , porém se levado em consideração o tempo de desenvolvimento e depuração de uma aplicação , aumentam consideravelmente a produtividade de seus usuários , reduzindo os custos de utilização do sistema. Sistemas de Tempo Real Os sistemas de tempo real (real time) são bem semelhantes em implementação aos sistema de tempo compartilahdo. A maior diferença~é no tempo de resposta exigido no processamento das aplicações.Enquanto em sistemas de tempo compartilhado , o tempo de resposta pode variar sem comprometer as aplicações em execução, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rígidos , que devem ser obedecidos , caso contrário poderão ocorrer problemas irreparáveis. Não existe a idéia de fatia de tempo , um programa detém o processador o tempo que for necessário até que apareça outro prioritário em função da sua importância no sistema. Esta importância ou prioridade de execução é controlada pela própria aplicação e não pelo Sistema Operacional , como nos sistemas de tempo compartilhado. Estes sistemas são utilizados em aplicaçõe onde o tempo de resposta é fator fundamental. Sistemas de Múltiplos Processadores Os sistemas de múltiplos processadores caracterizam-se por possuir duas ou maios UCPS ( CPUs) interligadas, trabalhando em conjunto. Um fator chave no desenvolvimento de um sistema com múltiplos processadores é a forma de comunicação entre a UCP e o grau de compartilhamento da memória e dos dispositivos de entrada e saída. Em função desses fatores podemos classificar os sistemas em fortemente acoplados ou fracamente acoplados. Sistemas Fortemente Acoplados Nos sistemas fortemente acoplados ( tightly coupled) existem vários processadores compartilhando um única memória e gerenciados por um único Sistema Operacional. Múltiplos processadores permitem que vários programas sejam executados ao mesmo tempo , ou que um programa seja dividido em sub-programas , para a execução simultânea em mais de um processador. Desta forma é possível aumentar a capacidade de computação de um sistema, adicionando novos processadores com um custo muito inferior em relação a aquisição de novos computadores. Sistemas Assimétricos Na organização assimétrica ou mestre / escravo (master / slave) somente um processador (mestre) pode executar serviços do Sistema Operacional. Sempre que um processador do tipo escravo necessitar executar uma operação , terá que requisitar ao processador mestre.Dependendo do número de operações efetuados pelos processadores escravo, o sistema pode se tornar ineficiente devido ao elevado número de interrupções tratadas pelo mestre. Se o processador mestre falhar , todo o sistema ficará incapaz de continuar o processamento.Neste caso o sistema deverá ser reconfigurado, fazendo que um processador escravo assuma o papel de mestre. Sistemas Simétricos Neste tipo de processamento todos os processadores executam a mesma função. Apenas poucas funções ficam ao cargo de um processador, como por exemplo a inicialização do sistema. Neste tipo de sistema, um programa pode ser executado por qualquer processador, inclusive por vários processadores ao mesmo tempo ( paralelismo ). Além disso, quando um processador falha o sistema continua em funcionamento, porém com um capacidade menor de processamento. Os sistemas simétricos são mais poderosos do que os sistema assimétricos , permitindo um maior balanceamento do processador e das operações de entrada e saída. Multiprocessamento Desde a sua criação, os computadores são vistos como máquinas sequenciais , onde a UCP executa as instruções de um programa, uma de cada vez. Porém na realidade isto não é totalmente verdadeiro pos múltiplos sinais são ativos simultaneamente , o que pode ser entendido como uma forma de paralelismo. Com a implementação de múltiplos processadores, o conceito de simultaneidade ou paralelismo pode ser expandido a um nível mais amplo , denominado multiprocessamento, onde uma tarefa pode ser divida e executada, ao mesmo tempo, por mais de um processador.