COMPONENTES BÁSICOS DO COMPUTADOR Carlos Recalde Zarate Jr Um computador típico possui três componentes básicos: a Unidade Central de Processamento (UCP ou CPU, como é mais conhecida); a Memória Principal e um sistema de Entrada e Saída; Armazenamento; Processador A CPU exerce o controle do computador, sendo responsável pela busca (fetching) das instruções (as quais estão em seqüência), pela sua decodificação (ou interpretação) e execução. A busca e a decodificação das instruções são realizadas pela Unidade de Controle, enquanto que a execução fica ao encargo da Unidade Operativa. A unidade operativa, por sua vez , é composta pela Unidade Lógica e Aritmética e por um conjunto de Registradores de uso genérico. Memória A Memória Principal armazena as instruções e os dados a serem processados pela CPU. Dispositivos de entrada e saída O Sistema de Entrada e Saída (I/O - Input/Output system, em inglês) têm como função conectar o computador ao meio externo, a fim de torná-lo verdadeiramente útil ao ser humano. Este sistema é composto por um meio físico de conexão chamado barramento (bus) e um conjunto de dispositivos de entrada e saída, chamados periféricos. Os periféricos geralmente são sistemas mistos, do tipo eletromecânicos, que permitem ao ser humano entrar com os dados ou obter ou visualizar os resultados. Exemplos de periféricos são teclado, vídeo, impressora, mouse, unidades de disco flexível (disquetes), unidades de disco rígido (winchester), unidades de fita magnética,modem, placa de som, scanner, vídeo touch-screen, plotter etc. Alguns periféricos permitem somente a entrada de dados (e.g., teclado), outros só permitem a saída (e.g., vídeo e impressora) e outros permitem tanto a entrada como a saída (e.g., unidades de discos magnéticos e unidades de fitas magnéticas). Associado a cada periférico existente num computador, há um circuito específico de controle de interface de E/S (I/O interface processor), cuja função é adaptar os sinais gerados pelo periférico conforme as necessidades do computador Armazenamento em disco Dispositivo de armazenamento super rápido Gigabyte - GC RAMDISK - i-RAM I-RAM funciona como um disco rígido SATA de regular a teoricamente 1,5 Gb/ s taxa de transferência de dados. utilizando módulos de memória DDR, i-RAM é equipado com quatro 184-pin DIMM slots que aceitará qualquer DDR DIMM e suportam até 4GB.Acima de tudo, o grande problema de dados perdidos após o desligamento é resolvido por i-RAM da bateria backup que é cobrado pelo seu sistema on the fly.i-RAM é o dispositivo de armazenamento mais rápido que você nunca imaginou. HD sem disco Dispositivo de armazenamento mais rápido do mundo - Fusion-io ioDrive O ioDrive é uma placa de armazenamento PCI Express que usa memória flash NAND e atinge taxas de gravação de 368 MB/s e de leitura de 473 MB/s. Em outras palavras, ela é muito, muito rápida. Para se ter uma idéia, isso é quase duas vezes mais do que a velocidade de leitura e aproximadamente cinco vezes mais do que a de gravação do SSD da Intel , que já é rápido. O ioDrive usa a mesma memória flash NAND de um SSD, mas como ele se conecta a um barramento PCI Express (em vez de SATA) e funciona apenas com sistemas 64-bit, pode alcançar velocidades extremamente altas. E, sim, estamos falando de megaBYTEs, não megaBITs. Por enquanto é coisa apenas para empresas – a versão de 80 GB sai por US$ 3.000; a de 320 GB, por US$ 14.400. Caso lhe interesse, o TweakTown publicou um longo artigo sobre o dispositivo. OCZ apresentou sua nova gama Z-Drive m84 de dispositivos de armazenamento sólido que usam o ônibus PCI Express 8x (ainda que como em todos os PCI Express se poderá montar num superior, como um PCIe x16). De acordo que estes dispositivos de armazenamento não são precisamente muito habituais nos computadores de sobremesa, mas dão fé do que pode chegar a correr um SSD.Virá em tamanhos de 256, 512 e 1 TB de armazenamento, todos eles construídos a partir de celas NAND multinivel, um controlador RAID integrado e um tempo médio entre falhas de um milhão de horas, com três anos de garantia. O dado espetacular é o rendimento: 870 e 780 MB/s em leitura e escritura respectivamente para os dois modelos maiores, enquanto o de 256 GB fica nuns “discretos” 750/650 MB/s. Seu preço não se anunciou ainda, mas baratos não serão, isso por certo. CPU As funções possíveis de serem executadas pela CPU estão definidas no seu conjunto de instruções. Um computador típico possui algo entre 50 e 200 instruções distintas. As instruções podem ser divididas em três grupos, conforme sua natureza: instruções de transferência de dados; instruções de processamento de dados e instruções de controle. As instruções de transferência de dados apenas movem as informações, sem alterar seu conteúdo. As transferências podem ocorrer dentro da CPU, entre a CPU e a memória principal, entre algum periférico e a CPU ou entre algum periférico e a memória principal. As instruções de processamento de dados transformam as informações utilizando os recursos de hardware disponíveis na unidade operativa da CPU. Neste grupo encontram-se as instruções aritméticas, tais como adição, subtração, multiplicação e incremento, e as instruções lógicas, tais como adição lógica (ou), multiplicação lógica (e), complementação (ou inversão) e ou-exclusivo. As instruções de controle determinam a seqüência segundo a qual as instruções são executadas, permitindo que o controle seja transferido de uma parte do programa para outra, ou entre diferentes subprogramas. Exemplos de instruções deste tipo são jump (salto), chamada de sub-rotina e retorno de sub-rotina. O que são os componentes Básicos do Computador? Fale sobre o Processador. Fale sobre a memória. Fale sobre o armazenamento em disco. Fale dos dispositivos de entrada e saída. SOFTWARE Sistemas Operacionais Sistema operacional (português brasileiro) é um programa ou um conjunto de programas cuja função é gerenciar os recursos do sistema (definir qual programa recebe atenção do processador, gerenciar memória, criar um sistema de arquivos, etc.), além de fornecer uma interface entre o computador e o usuário. É o primeiro programa que a máquina executa no momento em que é ligada (num processo chamado de bootstrapping) e, a partir de então, não deixa de funcionar até que o computador seja desligado. O sistema operacional reveza sua execução com a de outros programas, como se estivesse vigiando, controlando e orquestrando todo o processo computacional. Segundo alguns autores (Silberschatz et al, 2005; Stallings, 2004; Tanenbaum, 1999), existem dois modos distintos de conceituar um sistema operacional: pela perspectiva do usuário ou programador (visão top-down): é uma abstração do hardware, fazendo o papel de intermediário entre o aplicativo (programa) e os componentes físicos do computador (hardware); ou numa visão bottom-up, de baixo para cima: é um gerenciador de recursos, i.e., controla quais aplicações (processos) podem ser executadas, quando, que recursos (memória, disco, periféricos) podem ser utilizados. A sigla usual para designar esta classe de programas é SO (em português) ou OS (do inglês Operating System). História No início da computação os primeiros sistemas operacionais eram únicos, pois cada mainframe vendido necessitava de um sistema operacional específico. Esse problema era resultado de arquiteturas diferentes e da linguagem de máquina utilizada. Após essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de tarefas (jobs), pois os sistemas eram monousuários e tinham cartões perfurados como entrada (eliminando, assim, o trabalho de pessoas que eram contratadas apenas para trocar os cartões perfurados). O ENIAC foi um exemplo de computador que não utilizava SO. Os sistemas operacionais eram geralmente programados em assembly, até mesmo o Unix em seu início. Então, Dennis Ritchie (também da Bell) criou a linguagem C a partir da linguagem B, que havia sido criada por Thompson. Finalmente, Thompson e Ritchie reescreveram o Unix em C. O Unix criou um ecossistema de versões, onde destacam-se: System V e derivados (HP-UX, AIX); família BSD (FreeBSD, NetBSD, OpenBSD, etc.), Linux e até o Mac OS X (que deriva do Mach e FreeBSD). Na década de 1970, quando começaram a aparecer os computadores pessoais, houve a necessidade de um sistema operacional de utilização mais fácil. Em 1980, William (Bill) Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000, batizam-no de DOS (Disk Operating System) e vendem licenças à IBM. O DOS vendeu muitas cópias, como o sistema operacional padrão para oscomputadores pessoais desenvolvidos pela IBM. IBM e Microsoft fariam, ainda, uma parceria para o desenvolvimento de um sistema operacional multitarefa chamado OS/2. Após o fim da breve parceria, a IBM seguiu sozinha no desenvolvimento do OS/2. No começo da década de 1990, um estudante de computação finlandês postou um comentário numa lista de discussão da Usenet dizendo que estava desenvolvendo um núcleo de sistema operacional e perguntou se alguém gostaria de auxiliá-lo na tarefa. Este estudante chamavase Linus Torvalds e o primeiro passo em direção ao tão conhecido Linux foi dado naquele momento. Sistema operacional em linha de comando. Visão geral Um sistema operativo pode ser visto como um programa de grande complexidade que é responsável por todo o funcionamento de uma máquina desde o software a todo hardware instalado na máquina. Todos os processos de um computador estão por de trás de uma programação complexa que comanda todas a funções que um utilizador impõe à máquina. Existem vários sistemas operativos; entre eles, os mais utilizados no dia a dia, normalmente utilizados em computadores domésticos, são o Windows, Linux e Mac OS X. Gráfico de Pizza, utilização dos SOs Sistemas operacionais modernos Um sistema computacional moderno consiste em um ou mais processadores, memória principal, discos, impressoras, teclado, mouse, monitor, interfaces de rede e outros dispositivos de entrada e saída.Enfim, é um sistema complexo. Um dos Conceitos mais fundamentais dos Sistemas Operacionais Modernos é a distinção entre o programa e a atividade de executá - lo. O programa é apenas um conjunto estático de diretrizes e sua execução é uma atividade dinâmica. Arquitetura de Sistema Operacional O Sistema operacional precisa basicamente de três elementos: Hardware – um computador digital é constituído por um conjunto de componentes interligados, composto por processadores, memória principal, registradores, terminais, impressoras, discos magnéticos, alem de outros dispositivos físicos(hardware). Esses dispositivos manipulam dados na forma digital, o que proporciona uma maneira confiável de representação. Todos os componentes de um computador são agrupados em três subsistemas básicos: unidade central de processamento, memória principal e dispositivos de entrada e saída. Software – o hardware por si só, não tem a menor utilidade. Para torná-lo útil, existe um conjunto de programas, utilizado como interface entre as necessidades do usuário e as capacidades do hardware. A estilização de software adequados as diversas tarefas e aplicações (conceito de chamadas) torna o trabalho dos usuários muito mais simples e eficiente. Dado - Assim como o software, os dados são armazenados no hardware na forma de bits. O sistema deve estar apto a armazenar, localizar e recuperar um dado específico requisitado por um programa. Gerenciamento de processos O sistema operacional multitarefa é preparado para dar ao usuário a ilusão que o número de processos em execução simultânea no computador é maior que o número de processadores instalados. Cada processo recebe uma fatia do tempo e a alternância entre vários processos é tão rápida que o usuário pensa que sua execução é simultânea. São utilizados algoritmos para determinar qual processo será executado em determinado momento e por quanto tempo. Os processos podem comunicar-se, isto é conhecido como IPC (Inter-Process Communication). Os mecanismos geralmente utilizados são: sinais; pipes; named pipes; memória compartilhada; soquetes (sockets); trocas de mensagens. Funcionamento Um sistema operacional possui as seguintes funções: gerenciamento de processos; gerenciamento de memória; sistema de arquivos; entrada e saída de dados. O sistema operacional, normalmente, deve possibilitar o multiprocessamento (SMP ou NUMA). Neste caso, processos diferentes e threads podem ser executados em diferentes processadores. Para essa tarefa, ele deve ser reentrante e interrompível, o que significa que pode ser interrompido no meio da execução de uma tarefa. Gerenciamento de memória O sistema operacional tem acesso completo à memória do sistema e deve permitir que os processos dos usuários tenham acesso seguro à memória quando o requisitam. Vários sistemas operacionais usam memória virtual, que possui 3 funções básicas: assegurar que cada processo tenha seu próprio espaço de endereçamento, começando em zero, para evitar ou resolver o problema de relocação (Tanenbaum, 1999); prover proteção da memória para impedir que um processo utilize um endereço de memória que não lhe pertença; possibilitar que uma aplicação utilize mais memória do que a fisicamente existente. Swapping Dentro de gerenciamento de memoria muitas vezes não é possível manter todos os processos em memoria, muitas vezes por não existir memoria suficiente para alocar aquele processo, para solucionar esse problema existe um mecanismo chamado swapping. A gerencia de memoria reserva uma área do disco para o seu uso em determinadas situações, um processo é completamente copiado da memoria para o disco, este processo é retirado da fila do processador e mais tarde será novamente copiado para a memoria e o processo então ficara ativo na fila novamente. O resultado desse revezamento no disco é que o sistema operacional consegue executar mais processos do que caberia em um mesmo instante na memoria. Swapping impõe aos programas um grande custo em termos de tempo de execução, pois é necessário copiar todo o processo para o disco e mais tarde copiar novamente todo o processo para a memoria. Em sistemas onde o usuário interage com o programa durante sua execução, o mecanismo de swapping é utilizado em ultimo caso, quando não é possível manter todos os processos na memoria. Visto que a queda no desempenho do sistema é imediatamente sentida pelo usuário. Sistema de arquivos A memória principal do computador é volátil, e seu tamanho é limitado pelo custo do hardware. Assim, os usuários necessitam de algum método para armazenar e recuperar informações de modo permanente. Um arquivo é um conjunto de bytes, normalmente armazenado em um dispositivo periférico não volátil (p.ex., disco), que pode ser lido e gravado por um ou mais processos. A Memória Virtual A memória virtual assemelha-se à memória real, mas não é igual. Nos sistemas tradicionais, os programas são carregados inteiramente, a partir de uma biblioteca, diretamente na memória principal, ao passo que em sistemas de memória virtual, é somente partes selecionadas desses programas são paginadas na memória real, para serem executadas. Na verdade, ao examinar programas reais verificou que, em muitos casos, nem todo o código do programa é executado. Por exemplo: • Programas freqüentemente incluem código de tratamento de erro. Como na pratica esses erros ocorrem raramente, ou não ocorrem, essa parte do código quase nunca é executada. • Algumas opções e recursos de programas são usados raramente. Por exemplo, certas rotinas de controle da balança de pagamento de programa instalado nos computadores do governo do Estado Unidos não têm sido usadas ha anos. Interface de uso Os sistemas operacionais fornecem abstração de hardware para que seus recursos possam ser usados de maneira correta e padronizada, mas para ser possível operar um computador, é necessário fornecer também uma interface para que o usuário possa desfrutar dos recursos do sistema. Atualmente existem três tipos de interface: GUI (graphical user interface) ou interface gráfica, TUI (text user interface) ou interface textual, e CUI (command-line user interface) ou interface de linha de comando. Sistema operacional com interface gráfica, no caso, o Linux Ubuntu 10.04 (rodando a interface GNOME) GUI (Graphical user interface) Nesse tipo de interface, o usuário tem a disposição um ambiente de trabalho composto por menus, ícones, janelas e outros itens disponíveis. O usuário interage com esse tipo de interface usando o mouse, podendo também usar o teclado e teclas de atalho. É possível fazer todo tipo de tarefa usandointerface gráfica, como edição de vídeos e imagens, sendo somente alguns tipos muito específicos de tarefas que se saem melhor em linha de comando. Acrescentar facilidade de uso e agilidade é o objetivo da GUI, tendo a desvantagem de consumir muito mais memória que interfaces de linha de comando. Em sistemas unix-likes, existe a possibilidade de escolher o gerenciador de janelas a utilizar, aumentando em muito a liberdade de escolha do ambiente. TUI (Text user interface) Assim como na GUI, a TUI também tem à disposição um ambiente de trabalho composto por menus, janelas e botões, porém essas interfaces não têm a capacidade de reproduzir figuras, salvo as que são tratadas como caracteres ASCII. Essa interface, antes da popularização da GUI, tinha um uso difundido em aplicações baseadas no MS-DOS, que, aliás, nas versões mais recentes contava com um gerenciador de programas e arquivos baseado em TUI (o DOS Shell). As TUIs, ao contrário das GUIs, não dependem de um gerenciador de janelas específico para funcionar, podendo mesmo serem inicializadas a partir da linha de comando. Atualmente essa interface é muito rara, praticamente restrita a sistemas implementados na década de 1980 e início da década de 1990. CUI (Command-line user interface) Além da interface gráfica, existe a interface de linha de comando, que funciona basicamente com a digitação de comandos, sendo nesse relativamente pouco interativa. Os comandos digitados são interpretados por um interpretador de comandos, conhecidos também por shells, bastante comuns em sistemas unix-likes. Um exemplo de interpretador de comandos seria o Bash. Usada geralmente por usuários avançados e em atividades específicas, como gerenciamento remoto, utiliza poucos recursos de hardware em comparação a interface gráfica. Nesse tipo de ambiente, raramente se usa o mouse, embora seja possível através do uso da biblioteca ncurses no desenvolvimento dossoftwares. Aplicativo com interface textual (TUI), rodando no sistema operacional FreeDOS Classificações Em relação ao seu projeto (arquitetura), segundo Tanenbaum (1999): Núcleo monolítico ou monobloco: o núcleo consiste em um único processo executando numa memória protegida (espaço de núcleo) executando as principais funções. Ex.: MAC OS X, OS/2, Windows, Linux, FreeBSD. Micronúcleo ou modelo cliente-servidor: o núcleo consiste de funções mínimas (comunicação e gerenciamento de processos), e outras funções, como sistemas de arquivos e gerenciamento de memória, são executadas no espaço do usuário como serviços; as aplicações (programas) são os clientes. Ex.: GNU Hurd, Mach. Sistema em camadas: funções do núcleo irão executar em camadas distintas, de acordo com seu nível de privilégio. Ex.: Multics. Monitor de máquinas virtuais: fornece uma abstração do hardware para vários sistemas operacionais. Ex.: VM/370, VMware, Xen. Quanto ao gerenciamento de processos, pode-se usar a seguinte classificação: Monotarefa: pode-se executar apenas um processo de cada vez Ex.: MS-DOS. Os sistemas monotarefas permitem que o processador, a memória e os periféricos fiquem dedicados a um único usuário. Nesses sistemas, enquanto o programa aguarda por um evento, como a digitação de um dado, o processador ficará ocioso, sem realizar qualquer tarefa útil. A memória é subutilizada caso o programa não a preencha totalmente, e os periféricos estão dedicados a um único usuário. Multitarefa: além do próprio SO, vários processos de utilizador (tarefas) estão carregados em memória, sendo que um pode estar ocupando o processador e outros ficam enfileirados, aguardando a sua vez. O compartilhamento de tempo no processador é feito de modo que o usuário tenha a impressão que vários processos estão sendo executados simultaneamente. Cada processo recebe um tempo para ser executado. Ao final desse tempo, outro processo é executado. Essa alternância de processos chama-se escalonamento. Ex: OS/2, Windows, Linux, FreeBSD e o Mac OS X. Cabe destacar que processos só podem estar executando simultaneamente caso o sistema seja multiprocessado, já que, em que cada instante de tempo, apenas um processo está em execução em um processador ou núcleo de processamento (core). Multiprocessamento: o SO distribui as tarefas entre dois ou mais processadores. Se os processadores estiverem na mesma máquina fisica, o sistema é chamado de Sistema Multiprocessado Fortemente Acoplado. Caso esteja em máquinas diferentes, trata-se de um Sistema Multiprocessado Fracamente Acoplado. O primeiro (Fortemente Acoplado) se divide em Simétrico, onde todos os processadores executam a mesma tarefa e têm acesso a todos os sistemas da mesma forma, e Assimétrico, em que uma UCP (Unidade Central de Processamento) é responsável por controlar as outras (Master/Slave). Os Sistemas Fracamente Acoplados podem ser Sistemas Operacionais de Rede ou Sistemas Operacionais Distribuídos Quanto à quantidade de usuários que podem utilizar o sistema concorrentemente: Monousuário: apenas um usuário por vez (apesar de poder suportar recursos como troca de usuário). Ex.: Windows. Esse também pode ser acessado por terminais e conexão remota. Multiusuário: vários usuários usam o computador ao mesmo tempo, seja por diversos terminais, seja por conexão remota como o SSH. Ex.: Linux, Unix. Atividades 1. O que é um SO? 2. Existem varias citações do SO, leia e escolha uma delas e fale dela. 3. Fale um pouco da Historia dos SO. 4. Fale dos nomes dos SO mais conhecidos. 5. Fale da arquitetura de um SO. 6. Fale do funcionamento de um SO. 7. O que é swapping. 8. O que é memória virtual.. 9. O que é uma interface de uso. 10. Fale da GUI. 11. Fale da TUI. 12. Fale da CUI. 13. O que é mono tarefa. 14. O que é multitarefa.