Disciplina: Introdução à informática Profª Érica Barcelos CAPÍTULO 3 1. ARQUITETURA DO COMPUTAÇÃO- SOFTWARE Vimos nos capítulos anteriores que durante muitas décadas vários projetos foram realizados para alcançar o que conhecemos como computador. Porém, precisamos compreender que essa máquina, indispensável para nossas atividades, é constituída de muitas partes. Todas organizadas de maneira harmoniosa, cada qual com objetivo bem definido e esse conjunto forma o que chamamos de sistema de computação. A cada década novas tecnologias despontam permitindo a ampliação do conceito de computador e consequentemente do conceito de informática, contudo todo sistema de computação preserva uma arquitetura fundamental. A grosso modo, podemos compará-lo ao corpo humano onde a evolução não modificou a estrutura de funcionamento (Cérebro, coração, pulmão, estômago etc.). Por mais recursos que a vida moderna nos ofereça, ainda somos mantidos vivos graças ao bom funcionamento dessas partes que trabalham em conjunto. Atualmente estamos vivenciando a geração dos Tablets, Smartphones, Ipods, Netbook, Notebooks. Todos derivados dos conceitos herdados dos computadores eletrônicos constituídos de Chips (Geração do circuito integrado) sendo assim, embora haja particularidades, também são constituídos da mesma base dos microcomputadores. A partir deste capítulo serão apresentadas as partes constituintes da arquitetura funcional de um computador, os softwares e hardwares envolvidos nesse processo, contudo antes de analisarmos amplamente essas arquiteturas alguns conceitos necessitam de uma breve descrição: Arquivos- Informações lógicas constituídas de códigos que seguem um determinado padrão. Os arquivos são armazenados em discos através do seu nome e uma combinação de três letras chamada de extensão, exemplo: Casa.doc. Programas- É uma sequencia lógica de instruções que determina ao computador o que ele deve fazer. Eles são executados pelos processadores e seus códigos podem ser armazenados em disco em forma de arquivos. 26 1.1. SOFTWARES Chamamos de softwares o conjunto de códigos organizados logicamente capazes de instruir o processador sobre como tratar uma determinada instrução ou pedido feito pelo usuário. Os softwares possuem diferentes formatos e objetivos, eles podem ser programas aplicativos, sistema operacional, arquivo, compilador, interpretador, etc. Para facilitar os estudos iremos dividi-los em três grupos: Básicos, utilitários e aplicativos. SOFTWARES BÁSICOS UTILITÁRIOS APLICATIVOS 1.1.1. Básicos Os softwares relacionados a essa categoria são extremante importantes, pois formam a base de comunicação entre os componentes físicos (periféricos, memórias, placas) e o usuário. Os representantes mais importantes desse grupo são: Sistema operacional e tradutores. O desenho abaixo ilustra essa distribuição e suas subdivisões: BÁSICOS SISTEMA OPERACIONAL TRADUTORES Monotarefa Montador Multitarefa Compilador Interpretador 27 • Sistema Operacional O sistema operacional organiza e gerencia o funcionamento do computador, também proporciona a interface de comunicação entre o usuário e a máquina. Sem ele os usuários necessitariam de um profundo conhecimento dos equipamentos o que tornaria o trabalho complexo e lento. Ao longo das décadas surgiram diferentes sistemas operacionais, os primeiros permitiam que todos os recursos (memória, processador e periféricos) fossem exclusivos de uma única tarefa (Monotarefa) e utilizados por um único usuário (Monousuário). Um representante dessa geração de sistema operacional foi o MS DOS da Microsoft. Os sistemas conhecidos como multiprogramáveis ou multitarefas, permitem que os recursos do computador sejam compartilhados entre várias aplicações (tarefas), pois enquanto um programa aguarda por uma operação de leitura ou gravação, o outro pode estar sendo processado neste intervalo de tempo. Nesse sistema a forma de interação do usuário pode ser monousuário (Computadores pessoais) ou multiusuário (Servidor de uma rede de computadores). Os sistemas multitarefas são mais complexos, pois são mais propensos a erros de processos, os mais populares são: LINUX, Windows, OS/2. A tabela abaixo relaciona os tipos de sistemas em função do número de usuários: Tipo Monoprogramação/ Monotarefa Multiprogramação/ Multitarefa Um usuário Dois ou mais usuários SIM NÃO SIM SIM Devida às necessidades do mercado foram desenvolvidos diferentes sistemas multitarefas: o Sistema batch: 28 Foram implementados na década de 60, também chamados de Jobs, eram submetidos para execução através de cartões perfurados e a forma de armazenamento era em disco ou fita. Não exigem a interação do usuário, todas as entradas e saídas são fornecidas por um tipo de memória secundária. Foram utilizados para Backups e cálculos numéricos. Tempo Compartilhado (time-sharing): o Permitem que vários programas sejam executados a partir da divisão de tempo do processador utilizando a ideia de fatia de tempo, onde cada aplicação tem uma porção do tempo de forma variada. Eles permitem a interação dos usuários através de terminais que incluem vídeo, teclado e mouse. A comunicação com esse sistema é através de comandos e isso além de agilizar as respostas reduz o custo. Tempo real (real-time) o Sua diferença em relação ao anterior está no tempo exigido no processamento das aplicações. Enquanto nos sistemas de tempo compartilhado o tempo podia variar, nesse sistema ele é definido de forma rígida não há a ideia de fatia de tempo. Eles estão presentes em sistemas de controles como: Controle de tráfego aéreo, controle de usinas nucleares ou qualquer aplicação onde à variação de tempo pode ser fatal. • Tradutores Programa fonte Tradutor Programa Objeto Os computadores reconhecem instruções binárias também conhecidas como linguagem de máquina. Os programadores modernos utilizam como meio 29 comunicação letras, palavras, símbolos etc. Para que haja a comunicação entre programador e computador é necessário que ocorra uma conversão. Os tradutores leem uma linguagem de programação (programa fonte) e a transforma para uma linguagem de máquina (programa objeto). Ao longo dos anos foram desenvolvidos diferentes tradutores, vejamos o que cada um faz: o Montador Responsável pela montagem do programa fonte, gerando assim o programa objeto, ou seja, monta um programa em linguagem de baixo nível de forma que se obtém um programa em linguagem de máquina. Podemos citar como exemplo o montador Assembler que é um software que traduz programas escritos na linguagem Assembly. o Compilador Gera uma linguagem de máquina, não executável, a partir de um programa escrito em linguagem de alto nível como Pascal, FORTRAN, COBOL. o Interpretador É considerado um tradutor que não gera módulo objeto, ele executa uma linguagem de alto nível imediantamente. Algumas linguagens tipicamente interpretadas são Basic e Perl. 30 Comparação entre compilador e interpretador : Compilador Interpretado r Linguagem de alto nível Linguagem de alto nível Programa Objeto Execução Execução 1.1.2. Utilitários Os softwares incluídos nessa categoria complementam o sistema operacional e muitos deles, supri deficiências encontradas nas programações dos sistemas ou previnem futuros problemas. Não são utilizados de maneira corriqueira pelo usuário, são específicos e normalmente acionados por profissionais especializados. Um exemplo de software utilitário é o antivírus, tornou-se comum em virtude do número de sistemas infectados. Contudo, não é de uso corriqueiro trabalhando em silêncio com o intuído de prevenção de ameaças. Além dos antivírus também são exemplos de software utilitários os compactadores de arquivos, programas para backups, programas para limpeza de registros e alguns específicos para computadores de grande porte. 1.1.3. Aplicativos Diferentemente dos utilitários, os softwares aplicativos são desenvolvidos para o dia a dia do usuário. Atendem a uma necessidade do cotidiano e são desenvolvidos pensando no usuário final, podendo ser empresarial, de simulação, para escritórios, educacionais etc. 31 Quando desejamos que o computador faça algo acionamos os programas aplicativos esses, interagem com os softwares básicos, que por sua vez, direciona o hardware para executar as tarefas solicitadas. Eles são desenvolvidos de duas maneiras: Aplicativo proprietário (Destinado a resolver um problema único e específico, geralmente criado para organizações) e aplicativo padronizado (Comprado, alugado ou licenciado de uma empresa especializada em desenvolvimento). Os aplicativos evoluíram com o sistema operacional, portanto adquiriram facilidades oriundas dos sistemas como, por exemplo, o uso do mouse para gerar comandos, a estrutura de janelas para acessar recursos, linguagem de comunicação gráfica rica em ícones. 32 BIBLIOGRAFIA DO CAPÍTULO MACHADO, Francis B.; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. Editora LTC, 3ª edição. 33