08_sistemas_operacionais.pdf

Full Transcript

Sistemas Operacionais Bruno Cardoso Coutinho Curso Técnico em Informática ISBN: Sistemas Operacionais Bruno Cardoso Coutinho Colatina - ES 2010 ...

Sistemas Operacionais Bruno Cardoso Coutinho Curso Técnico em Informática ISBN: Sistemas Operacionais Bruno Cardoso Coutinho Colatina - ES 2010 Presidência da República Federativa do Brasil Ministério da Educação Secretaria de Educação a Distância © Instituto Federal de Educação, Ciência e Tecnologia do Espírito Santo Este Caderno foi elaborado em parceria entre o Instituto Federal de Educação, Ciência e Tecnologia do Espírito Santo e a Universidade Federal de Santa Catarina para o Sistema Escola Técnica Aberta do Brasil – e-Tec Brasil. Equipe de Elaboração Design Instrucional Instituto Federal do Espírito Santo – IFES Alessandro Poleto Oliveira/IFES Coordenação do Curso Web Master Joao Henrique Caminhas Ferreira/IFES Rafaela Lunardi Comarella/UFSC Professores-autores Web Design Bruno Cardoso Coutinho/IFES CEAD/IFES Comissão de Acompanhamento e Validação Diagramação Universidade Federal de Santa Catarina – UFSC Edison Patto/UFSC Guilherme Ataide Costa/UFSC Coordenação Institucional Juliana Tonietto/UFSC Araci Hack Catapan/UFSC Revisão Coordenação do Projeto Luciane Ferreira Lacerda/IFES Silvia Modesto Nassar/UFSC Projeto Gráfico Coordenação de Design Instrucional e-Tec/MEC Beatriz Helena Dal Molin/UNIOESTE e UFSC Coordenação de Design Gráfico Carlos Antônio Ramirez Righi/UFSC C871s Coutinho, Bruno Cardoso Sistemas operacionais : Curso Técnico em Informática / Bruno Cardoso Coutinho. – Colatina: CEAD / Ifes, 2010. 78 p. : il. 1. Sistemas operacionais (Computadores). 2. Siste- mas de computação. 3. Material didático. I. Instituto Federal NSTITUTO do Espírito Santo. II. Título. FEDERAL IO GRANDE DO SUL CDD: 005.43 Apresentação e-Tec Brasil Prezado estudante, Bem-vindo ao e-Tec Brasil! Você faz parte de uma rede nacional pública de ensino, a Escola Técnica Aberta do Brasil, instituída pelo Decreto nº 6.301, de 12 de dezembro 2007, com o objetivo de democratizar o acesso ao ensino técnico público, na mo- dalidade a distância. O programa é resultado de uma parceria entre o Minis- tério da Educação, por meio das Secretarias de Educação a Distancia (SEED) e de Educação Profissional e Tecnológica (SETEC), as universidades e escolas técnicas estaduais e federais. A educação a distância no nosso país, de dimensões continentais e grande diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao garantir acesso à educação de qualidade, e promover o fortalecimento da formação de jovens moradores de regiões distantes, geograficamente ou economicamente, dos grandes centros. O e-Tec Brasil leva os cursos técnicos a locais distantes das instituições de en- sino e para a periferia das grandes cidades, incentivando os jovens a concluir o ensino médio. Os cursos são ofertados pelas instituições públicas de ensino e o atendimento ao estudante é realizado em escolas-polo integrantes das redes públicas municipais e estaduais. O Ministério da Educação, as instituições públicas de ensino técnico, seus servidores técnicos e professores acreditam que uma educação profissional qualificada – integradora do ensino médio e educação técnica, – é capaz de promover o cidadão com capacidades para produzir, mas também com auto- nomia diante das diferentes dimensões da realidade: cultural, social, familiar, esportiva, política e ética. Nós acreditamos em você! Desejamos sucesso na sua formação profissional! Ministério da Educação Janeiro de 2010 Nosso contato [email protected] 3 e-Tec Brasil Indicação de ícones Os ícones são elementos gráficos utilizados para ampliar as formas de linguagem e facilitar a organização e a leitura hipertextual. Atenção: indica pontos de maior relevância no texto. Saiba mais: oferece novas informações que enriquecem o assunto ou “curiosidades” e notícias recentes relacionadas ao tema estudado. Glossário: indica a definição de um termo, palavra ou expressão utilizada no texto. Mídias integradas: sempre que se desejar que os estudantes desenvolvam atividades empregando diferentes mídias: vídeos, filmes, jornais, ambiente AVEA e outras. Atividades de aprendizagem: apresenta atividades em diferentes níveis de aprendizagem para que o estudante possa realizá-las e conferir o seu domínio do tema estudado. 5 e-Tec Brasil Sumário Aula 1 – Visão geral de Sistemas Operacionais 15 1.1 Conceitos básicos 15 1.2 Funções principais 16 1.3 Máquina de níveis 19 Aula 2 – Histórico e classificação 23 2.1 Histórico 23 2.2 Tipos de Sistemas Operacionais 27 Aula 3 – Elementos de hardware e software – Parte I 31 3.1 Hardware 31 3.2 Software 37 Aula 4 – Elementos de hardware e software – Parte II 43 4.1 Linguagem de controle 43 4.2 Programas de sistema ou utilitários 44 4.3. Linguagem de máquina 45 4.4. Mecanismo de interrupção 45 4.5. Operações de Entrada e Saída (E/S) 47 4.6. Sistemas em lote 51 4.7. Escalonamento de tarefas e multiprogramação 52 4.8. Serviços de Sistemas Operacionais 54 Aula 5 – Arquitetura do Sistema Operacional 57 5.1. Modos de acesso 57 5.2. System calls (Chamadas ao sistema) 59 5.3. Arquiteturas do núcleo (kernel) 62 5.4. Interpretador de comandos 66 Aula 6 – Introdução à gerência de processos, memória e arquivos 69 6.1. Gerência de processos 69 6.2. Gerência de memória principal 70 6.3. Gerência de arquivos 72 6.4. Gerência de dispositivos 74 7 e-Tec Brasil Referências 77 Currículo do professor-autor 78 e-Tec Brasil 8 Sistemas Operacionais Palavra do professor-autor Olá, Meu nome é Bruno Cardoso Coutinho, formado em Ciência da Computa- ção com mestrado em Informática pela UFES. Sou professor do IFES campus Colatina desde janeiro de 2009, onde tenho ministrado disciplinas como Sis- temas Operacionais Locais e de Rede. Ultimamente, além das minhas ativi- dades de professor, tenho me aventurado em pesquisas científicas nas áreas de redes de computadores, ambientes distribuídos e otimização. A disciplina de Sistemas Operacionais é de extrema importância para seu curso e para sua carreira profissional, já que se trata do sistema gestor de qualquer computador. O Sistema Operacional é que organiza a execução dos aplicati- vos, aloca espaço em memória para uma execução mais rápida, envia e recebe dados de dispositivos e os trata para serem utilizados pelos aplicativos dos usuários, além de muitas outras atividades. Em suma, o Sistema Operacional protege a máquina do usuário e protege o usuário da máquina. Por ser uma matéria essencial para seu curso, empenhe-se nos estudos, leia o material com calma e releia se for o caso. Tire as suas dúvidas com seus tutores e utilize os materiais indicados como apoio a seus estudos. Não se prenda apenas à apostila do curso. Sucesso na sua carreira! Um grande abraço! Prof. Bruno. 9 e-Tec Brasil Apresentação da disciplina Nesta disciplina você terá uma visão geral dos sistemas operacionais, bem como aprenderá conceitos fundamentais e como é feito o gerenciamento de recursos de hardware e software do computador. O Sistema Operacional é o grande gestor do computador, com muitas respon- sabilidades como: alocar recursos, gerenciar usuários e processos, controlar a execução de programas de usuários e muito mais. Ao passar pelas aulas deste curso você poderá perceber o quão difícil e árduo é construir um sistema como Windows ou Linux. Você algumas vezes deve ter passado por esta situação: estar navegando na inter- net, conversando no MSN e editando um trabalho de escola no Word. Parece es- tar tudo executando ao mesmo tempo correto? Mas provavelmente não. Apesar de as máquinas mais novas conseguirem processar algumas instruções realmente em paralelo, ainda sim, esses aplicativos disputam recursos sob a gerência do Sis- tema Operacional. Nas primeiras aulas do curso, faremos uma caracterização dos sistemas opera- cionais levando em consideração a evolução do hardware ao longo dos anos. Conhecer o histórico do desenvolvimento destes sistemas também é importante para analisar a motivação de cada nova tecnologia e sua relação com o software gerenciador. Depois, precisaremos rever alguns conceitos de hardware e software, caracterizar alguns componentes básicos e sua importância em um sistema com- putacional. Por fim, analisaremos as principais funções de gerência de um sistema computacional, abordando seus tópicos principais. Vamos estudar, também, como funciona a gerência de aplicações, de recursos e a estrutura interna de um sistema operacional. São muitos conceitos novos, não deixe acumular! 11 e-Tec Brasil Projeto instrucional Disciplina: Sistemas Operacionais (carga horária: 60h). Ementa: Visão geral dos Sistemas Operacionais. Conceitos e gerenciamento de recursos de hardware e software do computador. CARGA OBJETIVOS DE AULA MATERIAIS HORÁRIA APRENDIZAGEM (horas) Compreender os conceitos básicos de sistemas operacionais. Caderno e Ambiente Virtual de 1. Visão geral de Conhecer suas funções principais. Ensino-Aprendizagem. Sistemas Opera- 10 Analisar o Sistema Operacional como www.cead.ifes.edu.br cionais uma máquina de níveis. Conhecer o histórico de sistemas operacionais. Compreender como as inovações de Caderno e Ambiente Virtual de 2. Histórico e hardware colaboraram com o desenvolvi- Ensino-Aprendizagem. 10 classificação mento dos sistemas operacionais. www.cead.ifes.edu.br Saber classificar os sistemas conforme suas características principais. Conhecer a arquitetura básica de computadores. Caderno e Ambiente Virtual de 3. Elementos de Descrever os principais dispositivos de Ensino-Aprendizagem. hardware e entrada e saída. www.cead.ifes.edu.br software – Parte I Compreender conceitos de software utilitário. Conhecer conceitos mais específicos sobre programas de sistema. Analisar o mecanismo de interrupção na concorrência entre processos. Descrever as operações de entrada e 4. Elementos de saída. Caderno e Ambiente Virtual de hardware e softwa- Conhecer as características dos Ensino-Aprendizagem. 10 re – Parte II sistemas em lote e sistemas de tempo www.cead.ifes.edu.br compartilhado. Compreender a funcionalidade de alguns serviços do sistema operacional. Analisar as características básicas de uma arquitetura de sistema operacional. continua 13 e-Tec Brasil CARGA OBJETIVOS DE AULA MATERIAIS HORÁRIA APRENDIZAGEM (horas) Conhecer os modos de acesso ao processador como forma de proteção do sistema. Compreender a estrutura das chamadas Caderno e Ambiente Virtual de 5. Arquitetura do de sistema utilizadas para a comunica- Ensino- Aprendizagem. Sistema Opera- ção com o kernel do sistema. 10 www.cead.ifes.edu.br cional Analisar as características de uma arqui- tetura de sistema operacional dividido em camadas ou não. Verificar o funcionamento e importância de um interpretador de comandos. Conhecer as funções de gerência princi- 6. Introdução pais de um sistema operacional. Caderno e Ambiente Virtual de à gerência de Analisar as funções do elemento proces- Ensino-Aprendizagem. 10 processos, memória so dentro de um sistema operacional. www.cead.ifes.edu.br e arquivos Verificar a administração da utilização de recursos pelo sistema operacional. conclusão e-Tec Brasil 14 Sistemas Operacionais Aula 1 – Visão geral de Sistemas Operacionais Objetivos Compreender os conceitos básicos de Sistemas Operacionais. Conhecer suas funções principais. Analisar o Sistema Operacional como uma máquina de níveis. 1.1 Conceitos básicos Diferentemente do que muitas pessoas imaginam, o computador não faz nada sozinho. Ele apenas processa uma série de informações inseridas pelo usuário para então fornecer os resultados. As informações inseridas e os resultados que recebemos precisam estar num formato que nós humanos conseguimos entender. Para facilitar essa comunicação entre homem e computador, foram criados os softwares ou programas de computador. Na realidade, tudo que fazemos com um computador é pela execução desses programas. De acordo com um dos principais autores da área, Um sistema operacional é um programa que atua como intermediário entre o usuário e o hardware de um computador. O propósito de um sistema operacional é propiciar um ambiente no qual o usuário possa executar outros programas de forma conveniente, por esconder detalhes internos de funcionamento e eficiência, por procurar gerenciar de forma justa os recursos do sistema (Silberschatz, Galvin e Gagne, 2000, p.22]. Vamos estender o conceito de sistema operacional ao longo do curso, mas podemos definí-lo, de forma simples, como um conjunto de rotinas executa- das pelo processador com a principal função de controlar o funcionamento Sistema Operacional Sistema Operacional: segundo do computador, gerenciando os diversos recursos disponíveis no sistema. Na o Aurélio (verbete sistema), sistema operacional é um conjunto Figura 1.1 vemos a posição que um Sistema Operacional ou simplesmente integrado de programas básicos, “SO” ocupa dentre os vários elementos que compõem um sistema de com- projetado para supervisionar e controlar a execução de programas putação. Você deve observar que a palavra “Usuários” está sendo usada de aplicação em um computador. com dois sentidos diferentes: para as pessoas que utilizam o computador e para os programas e utilitários instalados no computador. Aula 1 – Visão geral de Sistemas Operacionais 15 e-Tec Brasil Programadores e Analistas Usuários Aplicativos Usuários Sistemas Operacionais Hardware Figura 1.1: Visão do Sistema Operacional Fonte: Adaptado de Machado, 2004 Resumidamente, o sistema operacional tem a função de proteger a máquina do usuário e proteger o usuário da máquina. 1.2 Funções principais Na Figura 1.1 foi destacado o controle de hardware. Esta é uma das funções básicas do SO e pode ser desmembrada em: a) Facilidade de acesso aos recursos do sistema Um sistema de computação possui, normalmente, diversos componentes, como monitores, impressoras e discos rígidos. Quando utilizamos um desses dispositivos, não nos preocupamos com a maneira como é realizada esta comunicação e os inúmeros detalhes envolvidos. Uma operação frequente como, por exemplo, a leitura de um arquivo em um CD ou disco pode parecer simples. Existe um conjunto de rotinas espe- Você pode obter mais cíficas, controladas pelo sistema operacional, que são responsáveis por acio- informações sobre “setor” e “trilha” no livro Organização nar a cabeça de leitura e gravação da unidade de disco, posicionar na trilha Estruturada de Computadores, e setor onde estão os dados, transferir os dados do disco para a memória e, de Andrew S. Tanembaum, 5ª Edição, Editora Prentice-Hall, finalmente, informar ao programa a chegada dos dados. ou na própria internet em sites especializados como o “Clube do Hardware” em http://www. O sistema operacional, então serve de interface entre o usuário e os re- clubedohardware.com.br cursos de hardware, tornando esta comunicação transparente (ou imper- ceptível) e permitindo ao usuário um trabalho mais eficiente e com menos possibilidades de erros. e-Tec Brasil 16 Sistemas Operacionais b) Compartilhamento de recursos de forma organizada e protegida Se imaginarmos, por exemplo, que uma impressora pode ser utilizada por vários usuários do sistema, então deverá existir algum controle para impedir que a impressão de um usuário interrompa a impressão de outro. O sistema operacional é o responsável por permitir o acesso organizado a esse e a ou- tros recursos disponíveis no computador. O compartilhamento de recursos permite a diminuição de custos, na medida em que mais de um usuário pode utilizar as mesmas facilidades concorrente- mente, tais como discos, impressoras, linhas de comunicação, etc. Com isto, uma mesma impressora (ou linha de comunicação ou outro recurso) pode atender a vários usuários. Não é só no controle do acesso a hardware compartilhado que o sistema ope- racional atua, ele nos permite executar várias tarefas, como imprimir um docu- mento, copiar um arquivo pela internet ou processar uma planilha, entre ou- tros. O SO deve ser capaz de controlar a execução concorrente de todas essas tarefas. Ainda podemos dizer que, embora alguns programas sejam escritos baseados nas instruções de um determinado processador, será responsabilida- de do sistema operacional executar tarefas básicas do micro, ou seja, ensinar ao processador como desenhar uma janela ou imprimir um documento. De um modo geral, os programas que os usuários executam não são escritos para um processador, mas sim para um SO. Isto facilita a comu- nicação do programa com o hardware do computador. As tarefas são executadas pelo SO, tornando os programas menores e mais fáceis de serem programados (Machado e Maia, 2004. p.1-3). PROGRAMAS Sistema Operacional Hardware Figura 1.2: O Sistema Operacional funciona como uma interface entre o hardware e os programas de usuários Fonte: Adaptado de Machado, 2004 Conforme mostra a Figura 1.2, o SO é o intermediário entre hardware e programas utilizados pelos usuários. Aula 1 – Visão geral de Sistemas Operacionais 17 e-Tec Brasil Em uma situação ideal, somente o sistema operacional deve ter acesso ao hardware do computador. Um programa que desejasse, por exemplo, fazer um desenho no monitor, obrigatoriamente teria de repassar esta tarefa ao sistema operacional. Este, por sua vez, iria analisar o pedido do programa e, considerando o pedido válido, o executaria. Caso um determinado progra- ma resolvesse fazer um pedido estranho (por exemplo, apagar todos os da- dos do disco rígido), o SO simplesmente poderia ignorar tal pedido, terminar a execução do programa e informar a ocorrência ao usuário. Um programa de usuário não deve acessar recursos do computador diretamen- te, deve antes passar pela intermediação e autorização do sistema operacional. Essa é a condição ideal de um sistema operacional ESTÁVEL e SEGURO. Isto acontece, sobretudo, em sistemas operacionais para gerenciamento de rede local (Windows Server, Unix e Linux) e entre os sistemas operacionais para PCs que não foram desenvolvidos para serem servidores de rede como o MacOS e Windows nas suas versões XP, Vista e Windows 7. O antigo DOS não trabalhava nessas condições. Na época em que foi criado, o PC tinha pouquíssima memória RAM (1 MB) e o sistema operacional, como ficava residente em memória, tinha de ser o menor possível. Uma solução para diminuir o tamanho do SO foi permitir aos programas que acessassem diretamente o hardware do micro para tarefas especiais, como desenhar gráficos ou enviar dados à impressora. A Figura 1.3 ilustra isto. PROGRAMAS DOS HARDWARE Figura 1.3: O Sistema DOS permitia acesso direto ao hardware pelos programas de usuário Fonte: Adaptado de Machado, 2004 No entanto, isso acabava gerando um problema maior: se um programa fizesse um acesso indevido diretamente ao hardware do computador ou se o programa não estivesse bem escrito, isso inevitavelmente era refletido no hardware, fazendo com que o programa parasse por travamento. Esse pro- blema continuou em versões do Windows 3.x, 95, 98 e ME, por utilizarem o mesmo núcleo do DOS, permitindo acessos direto ao hardware. e-Tec Brasil 18 Sistemas Operacionais 1.3 Máquina de níveis A linguagem entendida pelo computador é uma linguagem binária de difícil entendimento pelos seres humanos, sendo chamada de linguagem de “bai- xo nível” ou “de máquina”. As linguagens mais próximas aos seres humanos são classificadas como linguagens de “alto nível”. Os computadores enten- dem apenas programas feitos em sua linguagem binária. Os seres humanos, no entanto, elaboram programas em linguagens de alto nível. Existem muitas linguagens de alto nível utilizadas para os Um computador, visto somente como um gabinete composto de circuitos mais diversos fins, como C, eletrônicos, cabos e fontes de alimentação (hardware), não tem nenhuma C++ e Java. Os códigos-fontes escritos nessas linguagens utilidade. É por meio de programas (software) que o computador consegue precisam ser convertidos em armazenar dados em discos, imprimir relatórios, gerar gráficos, realizar cál- linguagem binária. Por exemplo, a linguagem C utiliza uma culos, entre outras funções. O hardware é o responsável pela execução das forma de conversão diferente da utilizada pela linguagem Java. instruções de um programa, com a finalidade de se realizar alguma tarefa. Nos primeiros computadores, a programação era realizada em painéis, atra- vés de fios, exigindo um grande conhecimento do hardware e de linguagem de máquina. Isso trazia uma grande dificuldade para os programadores da época, que normalmente eram os próprios engenheiros projetistas e cons- trutores desses computadores. A solução para esse problema foi o surgimento do Sistema Operacional, que tornou a interação entre usuário e computador mais simples, confiável e efi- ciente. A partir desse acontecimento, não existia mais a necessidade de o pro- gramador se envolver com a complexidade do hardware para poder trabalhar; ou seja, a parte física do computador tornou-se transparente para o usuário. Podemos considerar o computador como uma máquina de níveis ou cama- das, em que inicialmente existem dois níveis: o nível 0 (hardware) e o nível 1 (sistema operacional). Desta forma, o usuário pode enxergar a máquina como sendo apenas o sistema operacional, ou seja, como se o hardware não existisse. Esta visão modular e abstrata é chamada máquina virtual. Para o sistema operacional, o programador e os programas também são usuários, pois usam recursos disponibilizados pelo SO. Em vários pontos des- te texto, você poderá ver que a palavra usuário se aplica ao programador ou ao programa. Entretanto, um computador não possui apenas dois níveis, e sim tantos níveis quantos forem necessários para adequar o usuário às suas diversas aplicações. Aula 1 – Visão geral de Sistemas Operacionais 19 e-Tec Brasil Quando o usuário está trabalhando em um desses níveis, não necessita saber da existência das outras camadas, acima ou abaixo de sua máquina virtual. Aplicativos Utilitários Sistema Operacional Linguagem de Máquina Microprogramação Hardware Dispositivos Físicos Figura 1.4: O computador como máquina de níveis Fonte: Adaptado de Machado, 2004 Atualmente, a maioria dos computadores possui a estrutura mostrada na Figura 1.4, podendo conter mais ou menos camadas. A linguagem utilizada em cada um desses níveis é diferente, variando da mais elementar (baixo nível) à mais sofisticada (alto nível). Os aplicativos são programas executados pelo usuário. Os utilitários são programas de uso genérico e frequente, ge- ralmente fornecidos junto com o SO. Cada um desses níveis será abordado com mais detalhes nas próximas aulas. Um sistema operacional pode então ser definido sob dois aspectos: como uma máquina estendida ou máquina virtual e como um gerenciador de recursos. O sistema operacional, como uma máquina virtual, esconde do programador detalhes do hardware, apresentando uma visão simples, mais conveniente e mais fácil de utilizar. O sistema operacional, como um gerenciador de recursos, fornece uma alo- cação controlada e ordenada dos recursos do computador entre os vários programas que competem por esses recursos. Os recursos incluem processa- dores, memórias, dispositivos de E/S (unidades de disco, impressoras, mouse, etc.), interfaces de rede, dentre outros. Quando um computador tem vários usuários, existe a necessidade de se proteger a memória , os dispositivos de E/S e os outros recursos. O sistema operacional então mantém informação sobre quem está usando qual recur- e-Tec Brasil 20 Sistemas Operacionais so (para garantir os recursos a quem precisa deles), contabilizar o uso (para evitar que um usuário use por um período injustamente longo) e mediar quando há pedidos conflitantes sobre um mesmo recurso. Resumo Nesta aula você aprendeu alguns conceitos básicos sobre sistemas operacio- nais, algumas questões importantes sobre seu funcionamento e funções prin- cipais. Viu também como a estruturação de um sistema em camadas pode ser vantajosa em termos de eficiência de todo o ambiente computacional. Atividades de aprendizagem 1. Quais seriam as principais dificuldades que um programador te- ria no desenvolvimento de uma aplicação em um ambiente sem um sistema operacional? 2. Explique o conceito de máquina virtual. Qual a grande vantagem em utilizar esta metodologia? 3. Defina o conceito de uma máquina de camadas. 4. Explique a seguinte frase: “O Sistema Operacional protege o usuário da máquina e a máquina do usuário”. Aula 1 – Visão geral de Sistemas Operacionais 21 e-Tec Brasil Aula 2 – Histórico e classificação Objetivos Conhecer o histórico de Sistemas Operacionais. Compreender como as inovações de hardware colaboraram com o desenvolvimento dos Sistemas Operacionais. Classificar os sistemas conforme suas características principais. 2.1 Histórico Vimos que o sistema operacional interage diretamente com o hardware e, com isso, é influenciado diretamente pela evolução do mesmo. Portanto, a evolução dos sistemas operacionais está, em grande parte, relacionada ao desenvolvimento de equipamentos cada vez mais velozes, compactos e de custos baixos e à necessidade de aproveitamento e controle destes recursos. Assim, ao falar sobre o histórico dos sistemas operacionais, estaremos recor- dando um pouco a evolução do hardware. Devemos lembrar que as datas das fases da evolução são aproximadas. Desde os tempos do computador programado por chaves e cabos até o surgimento do teclado e impressora de caracteres, procurou-se ao longo do processo evolutivo do computador tornar a sua utilização mais amigável, precisa, rápida e eficaz. O conjunto de equipamentos e recursos utilizados para que o homem possa controlar o computador é genericamente denominado interface. O aprimo- ramento da interface atingiu o ponto em que o usuário passou a interagir com pequenos desenhos ou símbolos de objetos comuns ao seu trabalho. Pensou-se em representar, por exemplo, a tarefa de impressão de documentos pelo desenho de uma pequena impressora e a eliminação de um documento por uma pequena lixeira. Surgiram os ícones. O histórico da evolução foi di- vidido em fases, cada uma marcada pela evolução significativa do hardware, do software, da interação com o sistema ou por aspectos de conectividade. Primeiramente, devemos ressaltar que o mapeamento das datas de evoluções Aula 2 – Histórico e classificação 23 e-Tec Brasil e gerações dos Sistemas Operacionais e das Arquiteturas de Computadores são, de certa forma, vagas e imprecisas, mas com certa estrutura. a) Primeira fase (1945-1955) - Válvulas e Painéis de Programação No início da Segunda Guerra Mundial, surgiram os primeiros computadores digitais, formados por milhares de válvulas, que ocupavam áreas enormes, sendo de funcionamento lento e duvidoso. O ENIAC (Electronic Numerical Integrator and Computer) foi o primeiro com- putador digital de propósito geral. Criado para a realização de cálculos ba- lísticos, sua estrutura possuía 17.468 válvulas, 10 mil capacitores, 70 mil resistores e pesava 32 toneladas. Quando em operação era capaz de realizar cinco mil adições por segundo. A programação era feita em painéis, através de fios, utilizando linguagem de máquina. Não existia o conceito de sistema operacional. Outros com- putadores foram construídos nessa época, mas eram utilizados apenas em universidades e órgãos militares. Muitas empresas foram fundadas ou investiram no setor, como, por exemplo, a IBM, o que levou à criação dos primeiros computadores para aplicações comerciais. b) Segunda fase (1956-1965) - Transistores e Sistemas em Lote (batch) A criação do transistor e das memórias magnéticas contribuiu para o enorme avanço dos computadores da época. O transistor permitiu o aumento da velocidade e da confiabilidade do processamento; as memórias magnéticas permitiram o acesso mais rápido aos dados, maior capacidade de armazena- mento e computadores menores. Surgiram os primeiros sistemas operacionais, para tentar automatizar as tare- fas manuais até então realizadas e as primeiras linguagens de programação, como Assembly e Fortran. Os programas deixaram de ser feitos diretamente no hardware, o que facilitou enormemente o processo de desenvolvimento de programas. Surgiu o processamento em batch, em que um lote (batch) de programas e de dados era submetido ao computador por vez. e-Tec Brasil 24 Sistemas Operacionais Processamento Cartões Perfurados Fita de Entrada Processamento Fita de Entrada Fita de Saída Processamento Fita de Saída Relatórios Figura 2.1: Ciclos de processamento na segunda fase Fonte: Adap tado de Machado, 2004 Os programas passaram a ser perfurados em cartões que, submetidos a uma leitora, eram processados e gravados em uma fita de entrada, conforme Fi- gura 2.1. A fita de entrada, então, era lida pelo computador, que executava um programa de cada vez, processando e gravando o resultado em uma fita de saída. Ao término de todos os programas, as fitas de saída eram lidas e processadas novamente para serem impressas, gerando assim os relatórios. Com o processamento em batch, um grupo de programas era submetido de uma só vez, o que diminuía o tempo existente entre a execução dos progra- mas, permitindo, assim, melhor uso do computador. c) Terceira fase (1966-1980) - Circuitos Integrados e Multiprogramação Por meio dos circuitos integrados e, posteriormente, dos microprocessadores, foi possível viabilizar e difundir o uso de sistemas computacionais por empre- sas, devido à diminuição de seus custos de aquisição. Houve um aumento no poder de processamento e diminuição no tamanho dos equipamentos. A evolução dos processadores de entrada/saída permitiu que, enquanto um programa esperasse por uma operação de leitura/gravação, o processador executasse um outro programa. Para tal, a memória foi dividida em parti- ções, em que um programa esperava sua vez para ser processado. A essa Multiprogramação técnica de compartilhamento da memória principal e processador deu-se o Multiprogramação é a execução nome de multiprogramação. simultânea de dois ou mais programas. Aula 2 – Histórico e classificação 25 e-Tec Brasil Com a substituição das fitas por discos no processo de submissão dos pro- gramas, o processamento batch tornou-se mais eficiente, pois permitia a Duas inovações de hardware foram fundamentais para o alteração na ordem de execução das tarefas, até então somente sequencial. surgimento da multiprogramação: A essa técnica de submissão de programas chamou-se spooling, que, mais os discos magnéticos e as interrupções de hardware. Os tarde, também viria a ser utilizada no processo de impressão. discos magnéticos compõem praticamente todas as máquinas atuais, com vários Gigas e até Os sistemas operacionais, mesmo com a evolução do processamento batch e a Terabytes de capacidade de armazenamento. As interrupções multiprogramação, ainda estavam limitados a processamentos que não exigiam de hardware são sinais que as comunicação com o usuário. Para permitir a interação rápida entre o usuário e o controladoras de dispositivos enviam à CPU para avisar que as computador, foram adicionados terminais de vídeo e teclado (interação on-line). operações de entrada ou saída foram finalizadas ou tiveram algum problema. A multiprogramação evoluiu, preocupada em oferecer aos usuários tem- pos de resposta razoáveis e uma interface cada vez mais amigável. Para tal, cada programa na memória utilizaria o processador em pequenos intervalos de tempo. A esse sistema de divisão de tempo do processador chamou-se time-sharing (tempo compartilhado). Nos sistemas time-sharing, os usuários possuíam um terminal que podia interagir com o programa em Outro fato importante nessa fase foi o surgimento do sistema operacional UNIX. execução. Esses usuários tinham a ilusão de possuir a máquina dedicada à execução de seu Ao final dessa fase, com a evolução dos microprocessadores, surgiram os programa. O que não era verdade! Essa ilusão vinha da divisão de primeiros microcomputadores, muito mais baratos que qualquer um dos tempo de processamento de CPU computadores até então comercializados. entre os usuários d) Quarta fase (1981-1990) - Computadores Pessoais Os mini e superminicomputadores se firmaram no mercado e os microcom- Existem na internet muitas informações sobre o sistema putadores ganharam um grande impulso. Surgem as estações de trabalho UNIX, sistema pai de muitos sistemas operacionais atuais, (workstations) que, apesar de monousuárias, permitem que se executem como o Linux, Solaris e outros. diversas tarefas concorrentemente, criando o conceito de multitarefa. Procure o vídeo na internet chamado de “Revolução dos Sistemas Operacionais”, do No final dos anos 80 os computadores tiveram um grande avanço, decorrente Inglês “Revolution OS”, que conta um pouco dessa história. de aplicações que exigiam um enorme volume de cálculos. Para acelerar o pro- cessamento, foram adicionados outros processadores, exigindo dos sistemas operacionais novos mecanismos de controle e sincronismo. Com o multipro- cessamento, foi possível a execução de mais de um programa simultaneamen- te, ou até de um mesmo programa por mais de um processador. Foram intro- duzidos processadores vetoriais e técnicas de paralelismo de processamento, fazendo com que os computadores se tornassem ainda mais poderosos. e-Tec Brasil 26 Sistemas Operacionais O uso das redes distribuídas se difundiu por todo o mundo, permitindo o acesso a outros sistemas de computação, independentemente de cidade, país e, até mesmo, fabricante. Os softwares de rede passaram a estar intima- mente relacionados com o sistema operacional de cada máquina e surgem os sistemas operacionais de rede. e) Quinta fase (1991-2000) Houve grandes avanços em termos de hardware, software e telecomunica- ções como consequência da evolução das aplicações, que necessitavam cada vez mais de capacidade de processamento e armazenamento de dados. Sis- temas especialistas, sistemas multimídia, bancos de dados distribuídos, inte- ligência artificial e redes neurais são apenas alguns exemplos da necessidade cada vez maior de informação e de capacidade de processamento. O conceito de processamento distribuído é explorado nos sistemas operacio- nais, de forma que suas funções estejam espalhadas por vários processado- res através de redes de computadores. A década de 90, foi definitiva para a consolidação dos sistemas opera- cionais baseados em interfaces gráficas (TANENBAUM, 2000, p. 4 a 12). Atualmente temos as plataformas multicore (vários núcleos) disponíveis em computadores pessoais e até notebooks, possibilitando cada vez mais a pa- ralelização de aplicações e elevando, em muito, o tempo de execução dos programas. Os fanáticos pelos jogos de computador que o digam! Vamos relembrar as principais características e evoluções de cada fase? Faça um quadro, sumarizando cada uma das cinco fases, para ajudá-lo no estu- do e entendimento da evolução de hardware necessária para o desenvolvi- mento dos sistemas operacionais. Para cada fase, anote os acontecimentos mais importantes. 2.2 Tipos de Sistemas Operacionais Os tipos de sistemas operacionais e sua evolução estão relacionados direta- mente com a evolução do hardware e das aplicações por ele suportadas e podem ser classificados conforme Figura 2.2. Aula 2 – Histórico e classificação 27 e-Tec Brasil Tipos de Sistemas Operacionais Sistemas Sistemas Sistemas Monoprogamáveis/ Monoprogamáveis/ com Multiplos Monotarefas Multitarefa Processadores Figura 2.2: Tipos de sistemas operacionais Fonte: Adaptado de Macha, 2004 Considerando o processamento, podemos classificar os sistemas opera- cionais de acordo com a quantidade de tarefas que podem ser executadas simultaneamente. Monoprogramáveis ou Monotarefa podem executar apenas um progra- ma por vez. Para que um usuário possa executar outro programa, deverá Monoprogramáveis ou Monotarefa aguardar a finalização do programa corrente. Esta era uma característica dos Sistemas monoprogramáveis ou monotarefa são aqueles em que primeiros sistemas operacionais que estavam relacionados ao surgimento é executado, por vez, um único dos primeiros computadores na década de 60. programa ou uma única tarefa. Caracterizavam-se por permitir que todos os recursos de hardware ficassem exclusivamente dedicados a um único programa. Em consequência, sua prin- cipal desvantagem residia no fato de que enquanto um programa aguarda- va por um evento externo, como a digitação de um caractere do teclado, o processador permanecia ocioso. Além disso, tanto a memória principal quanto os recursos de E/S (Entrada e Saída) como impressoras e discos eram subutilizados, uma vez que todos estariam dedicados a um único programa como mostra a Figura 2.3. Memória UCP Dispositivos de E/S Programa/Tarefa Figura 2.3: Sistema monoprogramável ou monotarefa Fonte: Adaptado de Machado, 2004 e-Tec Brasil 28 Sistemas Operacionais Sistemas Multiprogramáveis ou Multitarefa: os recursos computacionais são compartilhados entre os diversos usuários e suas aplicações. Podemos ob- servar o compartilhamento de memória e do processador. Nesse caso, o compartilhamento de tempo no processador é distribuído. Assim, o usuário tem a impressão que vários processos estão sendo executados simultanea- mente. Um dos processos ocupa o processador enquanto os outros ficam enfileirados, aguardando a sua vez de entrar em execução. Cabe ao sistema operacional o papel de gerenciar de forma ordenada e protegida o acesso concorrente aos recursos disponíveis. Sistemas multiprogramáveis ou multitarefa permitem o compartilhamento dos recursos computacionais entre diversos usuários e aplicações, permitin- do sua execução concorrente. A vantagem desse tipo de sistema é uma melhor utilização dos recursos dis- poníveis, o que resulta em menor tempo de resposta das aplicações. Além de um custo reduzido, uma vez que haverá o compartilhamento dos recursos entre as diferentes aplicações e aumento da produção do usuário. Graças aos sistemas multiprogramáveis é possível editar um documento no MS Word, navegar na internet, ouvir música, utilizar os mensageiros instan- tâneos (MSN), tudo ao mesmo tempo! Sistemas com múltiplos processadores Sistemas com múltiplos proces- Sistemas com múltiplos processadores: o sistema operacional distribui as sadores caracterizam-se por possuir duas ou mais CPU’s tarefas entre dois ou mais processadores. A vantagem desse tipo de sistema interligadas e trabalhando de é permitir que mais de um programa possa ser executado simultaneamente forma conjunta na solução de um problema. ou que um mesmo programa seja dividido em várias partes e executado si- multaneamente nos vários processadores, aumentando o desempenho. Esse tipo de sistema surgiu da necessidade de aplicações que requeriam um Os sistemas com múltiplos grande poder computacional, como sistemas de previsão do tempo, modela- processadores podem ser classificados em fortemente gens, simulações, desenvolvimento aeroespacial, entre outros. Com múltiplos acoplados e fracamente processadores, é possível reduzir drasticamente o tempo de processamento acoplados, em função da comunicação entre CPU’s e o destas aplicações. Inicialmente, as configurações limitavam-se a poucos pro- grau de compartilhamento da memória. Em sistemas fortemente cessadores, mas, atualmente existem sistemas com milhares de processadores. acoplados, há uma única memória principal compartilhada por todos os processadores, enquanto em sistemas fracamente acoplados cada sistema tem sua própria memória. Com isso, a taxa de transferência entre processadores em sistemas fortemente acoplados é bem maior que em sistemas fracamente acoplados. Aula 2 – Histórico e classificação 29 e-Tec Brasil Resumo Nesta aula você pôde perceber como o desenvolvimento de inovações de hardware foi importante para a evolução dos sistemas operacionais ao longo dos anos. Viu também como podemos classificar os sistemas operacionais por suas características principais. Alguns conceitos básicos importantes fo- ram vistos e que serão de fundamental relevância para as aulas seguintes. Então se ficou alguma dúvida, revise esta aula! Atividades de aprendizagem 1. Por que dizemos que existe uma subutilização de recursos em sistemas monoprogramáveis? 2. Quais as vantagens dos sistemas multiprogramáveis? 3. O que caracteriza o processamento batch? Que aplicações podem ser processadas neste tipo de ambiente? 4. Qual a grande diferença entre sistemas fortemente acoplados e fraca- mente acoplados? e-Tec Brasil 30 Sistemas Operacionais Aula 3 – Elementos de hardware e software – Parte I Objetivos Conhecer a arquitetura básica de computadores. Descrever os principais dispositivos de entrada e saída. Compreender conceitos de software utilitário. 3.1 Hardware O hardware do computador é constituído por um conjunto de componentes interligados: processadores, memória principal, registradores, terminais, im- pressoras e discos magnéticos, além de outros dispositivos físicos. Os componentes físicos do computador são agrupados em três subsistemas básicos: Unidade Central de Processamento (CPU); Memória; Dispositivos de Entrada e Saída. 3.1.1 Unidade Central de Processamento (CPU) A CPU tem como função principal unificar todo o sistema, controlando as funções realizadas em cada unidade funcional. É responsável pela execução de todos os programas, que obrigatoriamente deverão estar armazenados na memória principal. A unidade central de processamento é dividida em dois componentes básicos: Unidade de controle (UC); Unidade lógica e aritmética (ULA); A UC é responsável por controlar as atividades de todos os componentes do computador, mediante a emissão de pulsos elétricos (sinais de con- trole) gerados por um dispositivo chamado clock. Esse controle pode ser exercido, por exemplo, sobre a gravação de um dado no disco ou a busca Aula 3 – Elementos de hardware e software – Parte I 31 e-Tec Brasil de uma instrução na memória. A ULA é responsável pela realização de operações lógicas (testes e compara- ções) e aritméticas (somas e subtrações). A velocidade de processamento de uma unidade central de processamento (CPU) é determinada pelo número de instruções que o processador executa Atualmente os nossos por unidade de tempo, normalmente em segundos. A unidade de medida é processadores conseguem executar bilhões de instruções MIPS (milhões de instruções por segundo). por segundo! A transmissão de dados entre o receptor e o transmissor é controlada por um sinal de controle chamado clock. Este sinal é usado para sincronizar o transmis- sor com o receptor, isto é, para informar ao receptor que um dado está sendo transmitido. É utilizado pela unidade de controle para a execução das instruções. O clock é um dispositivo localizado na unidade central de processamento, que gera pulsos elétricos síncronos em um determinado intervalo de tem- po (sinal de clock). A quantidade de vezes que este pulso se repete em um segundo define a frequência do clock. Toda transmissão paralela utiliza um sistema de clock. Esses sistemas de clock, entretanto, são independentes, isto é, o sistema de clock usado na transmissão de dados entre o processador e a memória RAM não é o mesmo usado na transmissão de dados entre o disco rígido e a placa-mãe, por exemplo. 3.1.2 Memórias A memória tem por função armazenar internamente toda informação que é manipulada pelo computador: os programas e os dados. A memória pode ser classificada quanto à sua velocidade (ou tempo) de acesso, capacidade de ar- mazenamento, custo e volatilidade. Em função dessas características, pode-se estabelecer uma hierarquia de tipos de memórias, conforme Figura 3.1. Registradores Memória Cache Maior Menor custo capacidade de e velocidade armazenamento Memória Principal de acesso Memória Secundária Figura 3.1: Comparativo dos diversos tipos de memória Fonte: Adaptado de Machado, 2004 e-Tec Brasil 32 Sistemas Operacionais a) Registradores São dispositivos de alta velocidade, localizados fisicamente na unidade central de processamento, para armazenamento temporário de dados. O número de registradores varia em função da arquitetura de cada processador. Existem registradores de uso específico (com propósitos especiais) e de uso geral. Os registradores de uso específico são: Contador de instruções - responsável por armazenar o endereço da pró- xima instrução que a unidade central de processamento deverá executar. Toda vez que uma instrução já está sendo processada o endereço da pró- xima instrução a ser processada é armazenado no contador de instruções; Apontador de pilha: responsável por armazenar o endereço de memória do topo da pilha. Pilha é uma estrutura de dados onde o sistema mantém informações sobre tarefas que estavam sendo processadas, mas que por algum motivo tiveram que ser interrompidas; Registrador de estado: responsável por armazenar informações sobre a exe- cução do programa (status do programa). A cada instrução executada, o re- gistrador de estado é alterado conforme o resultado gerado pela instrução. b) Memória cache É uma memória volátil de alta velocidade. Quando o processador faz Para aumentar o desempenho referência a um dado armazenado na memória principal, verifica antes se no funcionamento das memórias caches é feita a hierarquização este dado não está armazenado na memória cache. Ao encontrar o dado da cache em múltiplos níveis. armazenado na memória cache, o processador não acessa a memória princi- O nível da cache mais alto é chamado de L1 (Level 1), pal, diminuindo o tempo de processamento. com baixa capacidade de armazenamento e com altíssima velocidade de acesso. O segundo c) Memória principal nível, L2 (Level 2), possui maior capacidade de armazenamento, porém com velocidade de É a memória responsável pelo armazenamento dos programas que estão acesso inferior a L1, e assim sucessivamente. Quando a CPU sendo executados pela CPU em um certo instante, bem como dos dados necessita de uma informação da utilizados pelos programas em execução. Para que um programa possa ser memória principal, primeiramente verifica a cache L1, caso não ache, executado pela CPU é necessário que ele seja previamente armazenado na segue para a cache L2, assim memória principal. Existem ainda dois tipos de memória: ROM (read only por diante. Se não encontrar em nenhum dos níveis, busca o dado memory – memória somente leitura) e RAM (random access memory – me- na memória principal. mória de acesso randômico). Aula 3 – Elementos de hardware e software – Parte I 33 e-Tec Brasil Quando usamos o termo “memória” para um computador, normalmente estamos nos referindo à sua memória RAM. Se um programa que o usuário pretenda executar não estiver na memória RAM, então ele deve ser transfe- rido de um sistema de memória secundário (como discos rígidos, unidades de CD-ROM e etc.) para a memória RAM. A RAM é um tipo de circuito eletrônico de memória que permite a leitura e a escrita de dados em seu interior. Só que ela é uma memória volátil (como os registradores e a cache), isto é, cortando-se sua alimentação elétrica, apa- gamos os dados que estavam nela armazenados. Já a característica principal da ROM é que o seu conteúdo não é perdido quando cortamos a sua fonte de alimentação e por isso é utilizada para manter os programas iniciais do computador. Quando ligamos o micro, o processador não sabe o que fazer; ele precisa executar um programa; este programa necessário para dar o boot é gravado em uma memória ROM, localizada na placa-mãe do computador. Um programa armazenado em ROM recebe o nome de firmware. Na me- mória ROM do micro há basicamente três programas (firmware) principais: BIOS (Basic Input/Output System, Sistema básico de Entrada/Saída); POST (Power On Self Test, Autoteste ao Ligar); Setup (programa que permite alterar vários itens da configuração do computador). A memória principal é composta por unidades de acesso chamadas células, cada uma capaz de armazenar um determinado número de bits. Cada célula tem um endereço, conforme Figura 3.2, que é uma referência à posição da cé- lula dentro da memória, como o endereço de uma casa. Quando um programa deseja ler ou escrever um dado em uma célula, deve primeiro especificar qual o endereço de memória desejado. O endereço da célula a ser acessada fica arma- zenado em um registrador denominado registrador de endereço de memória. e-Tec Brasil 34 Sistemas Operacionais 0 Instrução ou Dado 1 2 Endereços N Células Células de memória Células de memória são unidades de acesso da memória principal. Figura 3.2: Células de memória e seus endereços Fonte: Adaptado de Machado, 2004 O número de células endereçadas na memória principal é limitado pelo ta- manho do registrador de endereço. No caso de o registrador possuir n bits, n a memória poderá endereçar 2 células. Além das memórias RAM e ROM descritas no texto, temos ainda a PROM (memória programável d) Memória secundária somente de leitura) que pode ser gravada pelo usuário uma única vez, a EPROM (memória programável e apagável somente Memória secundária é um termo genérico para designar diversos compo- de leitura) que pode ser gravada nentes que permitem gravar e ler dados permanentes. O seu acesso é lento, ou regravada por meio de um equipamento que fornece as se comparada com as memórias cache ou principal, porém relativamente voltagens adequadas em cada apresentam custo mais baixo e capacidade de armazenamento superior. pino (para apagar os dados deve-se utilizar raios ultravioleta Exemplos de memória secundária são as fitas magnéticas, discos rígidos no chip), e por último temos a EEPROM (memória programável (HDs), CDs, DVDs, etc. e apagável eletronicamente somente de leitura), que pode ser gravada, apagada ou regravada 3.1.3 Dispositivos de entrada e saída utilizando um equipamento que Permitem a comunicação entre o computador e o mundo externo. Alguns fornece as voltagens adequadas em cada pino. dispositivos servem para a comunicação homem-máquina, como teclados, monitores de vídeo, impressoras, plotters, entre outros. A implementação de interfaces mais amigáveis permite cada vez mais que pessoas sem co- nhecimento específico sobre informática possam utilizar o computador. São alguns exemplos desses tipos de dispositivos: Scanner, caneta ótica, mouse, dispositivos sensíveis à voz humana, e etc. 3.1.4 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 Aula 3 – Elementos de hardware e software – Parte I 35 e-Tec Brasil barramento é um conjunto de fios paralelos (linhas de comunicação), por onde trafegam informações, como dados, endereços ou sinais de controle. Um esquema gráfico de um barramento é mostrado na Figura 3.3. CPU Memória Unidade Unidade de Lógica e Controle Aritmética Registradores Dispositivo E/S Fluxo de Dados Fluxo de Controle Figura 3.3: Esquema gráfico dos barramentos Fonte: Adaptado de Machado, 2004 O barramento pode ser classificado como unidirecional (transmissão em um só sentido) ou bidirecional (transmissão em ambos os sentidos). Existem três tipos de barramentos, que se diferenciam uns dos outros de acordo com o que transportam: Barramento de dados: transmite informações entre a memória princi- pal e a unidade central de processamento; Barramento de endereços: utilizado pela unidade central de processa- mento para especificar o endereço da célula de memória que será acessada; Barramento de controle: é por onde a unidade central de processamen- to envia os pulsos de controle relativos às operações de leitura e gravação. 3.1.5 Pipelining O conceito de processamento pipeline é a divisão de uma tarefa em uma se- quência de subtarefas. O processador, por meio de suas várias unidades funcio- nais pipeline, funciona de forma a permitir que, enquanto uma instrução se en- contra na fase de execução, uma outra instrução possa estar na fase de busca. A técnica de pipelining pode ser empregada em sistemas com um ou mais e-Tec Brasil 36 Sistemas Operacionais processadores, em diversos níveis, e tem sido a técnica de paralelismo mais utilizada para maior desempenho dos sistemas de computadores. Podemos fazer a comparação de um pipelining com um motor de carro de quatro tempos e vários cilindros. Enquanto um cilindro está na fase de ali- mentação, outro está na fase de compressão, outro na de explosão e assim por diante. Isto aumenta bastante a eficiência do motor. 3.2 Software Na Figura 1.4 vimos três camadas/níveis de software: aplicativos, utilitários e sistema operacional. Os software ou programas executados pelos usuários são atualmente chamados, atualmente, de aplicativos. Antigamente se cha- mavam simplesmente programas. Quase tudo que o usuário consegue fazer utilizando o computador necessita de um aplicativo. Esses programas podem ser, por exemplo, um editor de textos, uma planilha ou um programa de im- posto de renda, de controle de estoques ou de contas a receber. Antigamente havia uma distinção mais nítida entre os aplicativos e os utilitá- rios, pois havia um personagem a mais no cenário: o operador do computa- dor. Este executava algumas atividades específicas, como copiar de fita para disco e vice-versa ou operar as impressoras. Para executar essas atividades o operador precisava de uma série de programas, como, por exemplo, um pro- grama para localizar um arquivo no computador. A maioria dos programas requeridos pelo operador era chamada de utilitários. Hoje em dia continua a existir um conjunto de programas, utilizados como interface entre o usuário e o hardware. O termo utilitário é, assim, uma refe- rência a softwares relacionados com serviços do sistema operacional, como os compiladores, linkers, depuradores e outros. Os software aplicativos podem ser identificados como aqueles que estão mais próximos do usuário comum, como os navegadores, editores de texto, jogos, etc. Já os software utilitários são aqueles que fazem a intermediação entre os aplicativos e o núcleo do sistema operacional, possuindo funções mais específicas e geralmente mais restritas, como ligadores, depuradores, compiladores, etc. Dentre os software utilitários podemos destacar alguns que dão apoio à programação de computadores: tradutores, compiladores, montadores, in- Aula 3 – Elementos de hardware e software – Parte I 37 e-Tec Brasil terpretadores, ligadores, carregadores, depuradores. Nas próximas seções estaremos abordando esses utilitários com mais detalhes. 3.2.1 Tradutores, compiladores e montadores Com o surgimento das primeiras linguagens de montagem (Assembly) e as linguagens de alto nível, o programador passou a se preocupar menos com aspectos de hardware e a escrever em uma linguagem mais próxima da linguagem humana. Apesar das vantagens proporcionadas pelas linguagens de montagem e de alto nível, que propiciaram um aumento enorme na produtividade dos programado- res, os programas não estão prontos para serem executados diretamente pela CPU. Eles deverão passar por uma etapa de conversão, quando a codificação do programa é traduzida para código de máquina. É essa a função do tradutor. O utilitário “tradutor” tem a função de converter todo o código fonte escrito em linguagem de alto nível para código de máquina. O tradutor, pelo tipo de linguagem de programação utilizada, pode ser cha- mado de montador ou compilador: A denominação montador ocorre quando é gerado o módulo objeto (a linguagem de máquina) Programa fonte Tradutor Programa objeto a partir de uma linguagem de montagem (assembler). A denominação compilador é dada ao utilitário responsável por gerar, a partir de um programa Linguagem escrito em linguagem de alto Montador Módulo objeto de Montagem nível (Cobol, C, Delphi, etc.), um programa em linguagem de máquina (módulo objeto) Linguagem Compilador Módulo objeto de Alto Nível Figura 3.4: Representação das diferenças entre o tradutor, montador e compilador Fonte: Adaptado de Machado, 2004 3.2.2. Interpretador Assim é chamado um tradutor que não gera o módulo objeto. A partir de um programa fonte, escrito em linguagem de alto nível, o interpretador, no momen- to da execução do programa, traduz cada instrução e a executa em seguida. Sua desvantagem é o tempo gasto na tradução das instruções de um pro- grama toda vez que este for executado, já que não existe a geração de um código executável. e-Tec Brasil 38 Sistemas Operacionais Alguns exemplos de linguagens interpretadas são o Basic e o Perl. 3.2.3. Linker O linker (ligador) é o utilitário responsável por gerar, a partir de um ou mais módulos objeto, um único programa executável, conforme Figura 3.5. Sua função é resolver todas as referências simbólicas existentes entre os módulos - objeto, reservar memória para a execução do programa e determinar uma região da memória onde o programa será carregado para sua execução. Módulo objeto Módulo objeto Programa. Linker Executável.. Módulo objeto Os IDEs (Ambientes Integrados Figura 3.5: Representação do papel do linker de Desenvolvimento), como Fonte: Adaptado de Machado, 2004 o Dev C++, executam essas funções (de compilador e linker Em ambientes multiprogramáveis esse tipo de alocação fixa feita pelo linker e até a carga do executável) de uma vez, quando você é inviável porque neste caso a memória é compartilhada entre diversos pro- aperta o F9. Você não percebe gramas: é pouco provável que no momento em que o sistema carrega um quando é executada cada uma delas, embora sejam distintas. programa, sua área de memória que foi predeterminada esteja disponível. A Você só consegue ver, na pasta onde você está trabalhando, solução para isso é permitir que um programa possa ser executado em qual- os programas fonte (com quer região disponível da memória, durante a sua carga (código relocável). terminação “.c” ou “.cpp”) e o executável (terminação “.exe”); Esse tipo de relocação não é realizado pelo linker, e sim por outro utilitário, o módulo objeto intermediário chamado loader, responsável por carregar os programas na memória. (criado durante a compilação) você não vê mais. 3.2.4. Loader O loader (carregador) é o utilitário responsável por colocar fisicamente na memó- ria principal um programa para sua execução. Pode permitir que um programa seja carregado em regiões diferentes toda vez que for trazido para a memória. Quando o loader carrega um programa para memória principal, ele alo- ca uma área de código, uma área de dados e uma área de pilha. A área de código armazena o programa executável, a área de dados armazena as variáveis e constantes utilizadas no programa e a área de pilha armaze- na os endereços de retorno das funções ou procedimentos chamados du- Aula 3 – Elementos de hardware e software – Parte I 39 e-Tec Brasil rante a execução do programa. O funcionamento do carregador depende do código gerado pelo linker e, de acordo com este, pode ser classificado como absoluto ou relocável: Loader absoluto - o loader só necessita conhecer o endereço de memória inicial e o tamanho do módulo para realizar o carregamento. Então, o loader transfere o programa da memória secundária para a me- mória principal e inicia sua execução; Loader relocável - o programa pode ser carregado em qualquer posi- ção de memória e o loader é responsável pela relocação no momento do carregamento. O processo completo de compilação, link-edição e carga de um programa é mostrado na Figura 3.6. Programa-fonte Compilador ou Montador Programa-fonte Outros Módulos Link – edição Objeto Módulo de Tempo Carga de Carga Biblioteca Carregador do Sistema Biblioteca do Imagem Sistema Carregada Binária na Tempo de Dinamicamente Memória Execução Ligação Dinâmica Figura 3.6: As várias etapas do desenvolvimento e processamento de um programa Fonte: Adaptado de Silberschatz, Galvin e Gagne, 2000 e-Tec Brasil 40 Sistemas Operacionais 3.2.5. Depurador O desenvolvimento de programas está sujeito a erros de lógica, indepen- dentemente da metodologia ou linguagem utilizadas pelo programador. O depurador é o utilitário que permite ao usuário acompanhar e controlar a execução de um programa a fim de detectar erros na sua estrutura. O depu- rador ajuda a detectar os erros, mas não os corrige. O depurador geralmente oferece ao usuário os seguintes recursos: acompanhar a execução de um programa instrução por instrução; possibilitar a alteração e a visualização do conteúdo de variáveis; Esses recursos de depuração de programas também estão colocar pontos de parada dentro do programa, de forma que, durante a presentes em IDEs, geralmente na opção Debug. execução, o programa pare nos pontos determinados; especificar em forma de envio de mensagem, toda vez que o conteúdo de uma variável for modificado. Resumo Nesta aula você pôde estudar e identificar os elementos básicos de uma ar- quitetura clássica de computadores. Pode compreender as funções e carac- terísticas de cada elemento de hardware. Nesta aula, fizemos também um apanhado inicial sobre softwares utilitários que, mesmo sem percebermos muitas vezes, nos ajudam e muito em tarefas do dia a dia. Atividades de aprendizagem 1. O que são memórias voláteis e não voláteis? 2. Quais os benefícios de uma arquitetura de memória cache com múltiplos níveis? 3. Diferencie as funções básicas dos dispositivos de E/S. 4. Como a técnica de pipelining melhora o desempenho dos sistemas computacionais? 5. Por que o código-objeto gerado pelo tradutor ainda não pode ser executado? 6. Por que a execução de programas interpretados ainda é mais lenta que a de programas compilados? Aula 3 – Elementos de hardware e software – Parte I 41 e-Tec Brasil Aula 4 – Elementos de hardware e software – Parte II Objetivos Conhecer conceitos mais específicos sobre programas de sistema. Analisar o mecanismo de interrupção na concorrência entre pro- cessos. Descrever as operações de entrada e saída. Conhecer as características dos sistemas em lote e sistemas de tempo compartilhado. Compreender a funcionalidade de alguns serviços do sistema ope- racional. Analisar as características básicas de uma arquitetura de sistema operacional. 4.1 Linguagem de controle Denominada, também de linguagem de comando, é a forma mais direta de um usuário se comunicar com o sistema operacional (SO). É oferecida por todos os SO para que, através de comandos simples, o usuário possa ter acesso a rotinas específicas do sistema. Os comandos, quando digitados (ou executados) pelo usuário, são interpre- tados por um programa denominado interpretador de comandos ou shell. A linha de comando é reconhecida, o shell verifica sua sintaxe, envia mensa- gens de erro e faz chamadas de rotinas dos sistemas. O usuário dispõe assim, de uma interface interativa direta com o sistema operacional, para realizar tarefas básicas como acessar um arquivo em disco ou consultar um diretório. As linguagens de controle evoluíram no sentido de permitir uma interação mais amigável, utilizando interfaces gráficas, colocando os programas em uso em janelas e utilizando ícones para comunicação com o usuário. Quan- do você cria uma pasta, renomeia ou apaga um arquivo, clica em cima de Aula 4 – Elementos de hardware e software – Parte II 43 e-Tec Brasil uma planilha ou texto para editá-los, você está interagindo com o shell e utilizando recursos dessa linguagem de comando. Embora todos ou quase todos os SO modernos usem uma interface gráfica para interagir com o usuário, o prompt da linha de comandos também continua 4.2 Programas de sistema ou utilitários a existir. Os utilitários também são chamados comumente programas de sistema. Os SO mais modernos vêm aumentando a coleção desses tipos de programas. Você deve lembrar que há pouco tempo atrás você precisava de um progra- ma específico para gravar arquivos em CDs e DVDs e para assistir um filme. Hoje estas funções estão embutidas no SO. Os programas de sistema fornecem um ambiente conveniente para a execu- ção de uma série de tarefas de uso do computador ou de periféricos especí- ficos. Alguns deles são simplesmente interfaces de usuário às chamadas ao sistema; outros são consideravelmente mais complexos. Podem ser divididos em categorias tais como: a) Gerência de arquivos - criam, excluem, copiam, renomeiam, imprimem, listam e geralmente manipulam arquivos e diretórios. Precisam trabalhar com diversos tipos de mídia: CD, DVD, HD, disquete, pendrive, etc; b) Informações de status - simplesmente pedem ao sistema informações relativas ao status da máquina ou de periféricos: data, hora, quantidade de memória ou espaço em disco disponível, número de usuários conec- tados, número de documentos aguardando impressão e outras informa- ções semelhantes; c) Modificação de arquivo - vários editores de texto podem estar dispo- níveis para criar e modificar o conteúdo dos arquivos armazenados em disco, fita ou outro tipo de mídia; d) Comunicações - esses programas oferecem o mecanismo para criar co- nexões virtuais entre processos, usuários e diferentes sistemas de compu- À medida que novos periféricos tação. Permitem aos usuários enviar mensagens às telas uns dos outros, se popularizam e novas funções são atribuídas ao computador, navegar pelas páginas da web, efetuar logon remotamente ou transferir essa lista de utilitários tende arquivos de uma máquina para outra; a crescer. Além disto, uma função antes exercida por um utilitário pode ser incorporada e) Spooling - permitem manipular a fila de impressão de documentos em definitivamente ao SO, como uma ou mais impressoras ligadas ao sistema. citamos o exemplo da leitura e gravação de CD e DVD. e-Tec Brasil 44 Sistemas Operacionais 4.3. Linguagem de máquina Todos os programas, para serem processados, precisam estar em linguagem de máquina. Essa é a linguagem que o processador realmente consegue entender. Um programa em linguagem de máquina é totalmente codificado em formato binário, o que torna praticamente impossível o entendimento pelo usuário. O programa em linguagem de máquina pode ser diretamente processado pela unidade central de processamento (CPU) não requerendo qualquer tipo de tradução ou relocação. Um programa em linguagem de máquina não pode ser executado em outra máquina de modelo diferente, nem em outro SO. Cada processador possui um conjunto único de instruções de máquina pre- viamente definido pelo fabricante. Estas instruções especificam detalhes como registradores, modos de endereçamento de memória, tipo de dados Um exemplo de tentativa de transformar os programas que caracterizam um processador e suas potencialidades. Por sua vez, cada independentes do SO e do SO tem um grupo de instruções específico, chamada API – Application Pro- modelo do equipamento é a plataforma Java. Pesquise mais gramIinterface – que os compiladores usam para traduzir as instruções escri- sobre o assunto no site tas na linguagem de alto nível para a linguagem entendida pelo linker. Isso http://www.java.com/pt_BR faz com que um programa compilado em Linux não funcione com Windows; ou que um programa compilado em um PC não funcione em um Apple. 4.4. Mecanismo de interrupção Os sistemas multiprogramáveis tornaram mais eficiente a utilização dos re- cursos computacionais, por permitirem a execução simultânea (concorrente) de vários programas, permitindo que, quando um programa estiver realizan- do uma operação de E/S, outros possam utilizar o processador. Essa possi- bilidade do processador executar instruções em paralelo com as operações de E/S permitiu que diversas tarefas fossem executadas ao mesmo tempo. Outro aspecto importante que devemos ressaltar é a melhor utilização da memória principal, que antes, em sistemas monotarefa, era subutilizada, agora pode conter vários programas residentes concorrendo pela utilização do processador. Os sistemas operacionais podem ser vistos como um conjunto de rotinas que executam concorrentemente de forma ordenada. A possibilidade de o processador executar instruções em paralelo com operações de E/S permite que diversas tarefas sejam executadas concorrentemente. Aula 4 – Elementos de hardware e software – Parte II 45 e-Tec Brasil Durante a execução de um programa, alguns eventos inesperados podem ocorrer, interrompendo o seu fluxo normal de execução e ocasionando um desvio forçado. Estes eventos são conhecidos por interrupção ou exceção e podem ser consequência da sinalização de algum dispositivo de hardware externo ao processador ou da execução de instruções do próprio programa. Sempre que ocorre uma interrupção, o sistema operacional é chamado para executar uma rotina de tratamento apropriada. Antes de realizar o desvio, o sistema operacional deve salvar o estado do processo interrompido, para que este possa continuar do ponto onde parou, quando voltar a ser executado. Um exemplo de interrupção ocorre quando um dispositivo avisa ao processa- dor que alguma operação de E/S já está completa. Nesse caso, o processador deve interromper o programa para tratar o término da operação. Quando isso ocorre, o programa que está em execução é interrompido e o controle desviado para uma rotina responsável por tratar o evento ocorrido, denominada de rotina de tratamento de interrupção. Para que o programa interrompido possa voltar a ser executado posteriormente, se faz necessário que, no momento da interrupção, um conjunto de informações sobre sua execução seja preservado. Essas informações consistem no conteúdo dos registradores, que deverão ser restaurados para que seja dada continuidade à execução do programa, conforme a Figura 4.1. Salva conteúdo Programa dos registradores na pilha de controle Identifica a origem do evento Interrupção ou exceção Obtém o endereço Rotina de da rotina de tratamento tratamento Restaura o conteúdo dos registradores Figura 4.1: Mecanismo de interrupção Fonte: Adaptado de Machado, 2004 Para cada tipo de interrupção existe uma rotina de tratamento associada, e-Tec Brasil 46 Sistemas Operacionais para a qual o fluxo de execução deverá ser desviado. A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina de trata- mento. No momento da interrupção, o processador deverá saber para qual roti- na de tratamento deverá encaminhar o fluxo em execução que foi interrompido Os eventos que causam a interrupção podem ser classificados como síncro- nos ou assíncronos. Um evento classificado como assíncrono, é independen- te dos dados de entrada e das instruções do programa, ou seja, pode ocorrer em qualquer ponto do programa. Essas interrupções não estão relacion

Use Quizgecko on...
Browser
Browser