Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Bruno Cardoso Coutinho
Colatina - ES 2010
Instituto Federal de Educao, Cincia e Tecnologia do Esprito Santo Este Caderno foi elaborado em parceria entre o Instituto Federal de Educao, Cincia e Tecnologia do Esprito Santo e a Universidade Federal de Santa Catarina para o Sistema Escola Tcnica Aberta do Brasil e-Tec Brasil.
Equipe de Elaborao Instituto Federal do Esprito Santo IFES Coordenao do Curso Joao Henrique Caminhas Ferreira/IFES Professores-autores Bruno Cardoso Coutinho/IFES Comisso de Acompanhamento e Validao Universidade Federal de Santa Catarina UFSC Coordenao Institucional Araci Hack Catapan/UFSC Coordenao do Projeto Silvia Modesto Nassar/UFSC Coordenao de Design Instrucional Beatriz Helena Dal Molin/UNIOESTE e UFSC Coordenao de Design Grfico Carlos Antnio Ramirez Righi/UFSC Design Instrucional Alessandro Poleto Oliveira/IFES Web Master Rafaela Lunardi Comarella/UFSC Web Design CEAD/IFES Diagramao Edison Patto/UFSC Guilherme Ataide Costa/UFSC Juliana Tonietto/UFSC Reviso Luciane Ferreira Lacerda/IFES Projeto Grfico e-Tec/MEC
C871s
Sistemas operacionais : Curso Tcnico em Informtica / Bruno Cardoso Coutinho. Colatina: CEAD / Ifes, 2010. 78 p. : il. 1. Sistemas operacionais (Computadores). 2. Sistemas de computao. 3. Material didtico. I. Instituto Federal do Esprito Santo. II. Ttulo. CDD: 005.43
NSTITUTO FEDERAL
IO GRANDE DO SUL
e-Tec Brasil
Indicao de cones
Os cones so elementos grficos utilizados para ampliar as formas de linguagem e facilitar a organizao e a leitura hipertextual. Ateno: indica pontos de maior relevncia no texto.
Saiba mais: oferece novas informaes que enriquecem o assunto ou curiosidades e notcias recentes relacionadas ao tema estudado. Glossrio: indica a definio de um termo, palavra ou expresso utilizada no texto. Mdias integradas: sempre que se desejar que os estudantes desenvolvam atividades empregando diferentes mdias: vdeos, filmes, jornais, ambiente AVEA e outras. Atividades de aprendizagem: apresenta atividades em diferentes nveis de aprendizagem para que o estudante possa realiz-las e conferir o seu domnio do tema estudado.
e-Tec Brasil
Sumrio
Aula 1 Viso geral de Sistemas Operacionais 1.1 Conceitos bsicos 1.2 Funes principais 1.3 Mquina de nveis Aula 2 Histrico e classificao 2.1 Histrico 2.2 Tipos de Sistemas Operacionais Aula 3 Elementos de hardware e software Parte I 3.1 Hardware 3.2 Software Aula 4 Elementos de hardware e software Parte II 4.1 Linguagem de controle 4.2 Programas de sistema ou utilitrios 4.3. Linguagem de mquina 4.4. Mecanismo de interrupo 4.5. Operaes de Entrada e Sada (E/S) 4.6. Sistemas em lote 4.7. Escalonamento de tarefas e multiprogramao 4.8. Servios de Sistemas Operacionais Aula 5 Arquitetura do Sistema Operacional 5.1. Modos de acesso 5.2. System calls (Chamadas ao sistema) 5.3. Arquiteturas do ncleo (kernel) 5.4. Interpretador de comandos Aula 6 Introduo gerncia de processos, memria e arquivos 6.1. Gerncia de processos 6.2. Gerncia de memria principal 6.3. Gerncia de arquivos 6.4. Gerncia de dispositivos 15 15 16 19 23 23 27 31 31 37 43 43 44 45 45 47 51 52 54 57 57 59 62 66 69 69 70 72 74
e-Tec Brasil
77 78
e-Tec Brasil
Sistemas Operacionais
Palavra do professor-autor
Ol, Meu nome Bruno Cardoso Coutinho, formado em Cincia da Computao com mestrado em Informtica pela UFES. Sou professor do IFES campus Colatina desde janeiro de 2009, onde tenho ministrado disciplinas como Sistemas Operacionais Locais e de Rede. Ultimamente, alm das minhas atividades de professor, tenho me aventurado em pesquisas cientficas nas reas de redes de computadores, ambientes distribudos e otimizao. A disciplina de Sistemas Operacionais de extrema importncia para seu curso e para sua carreira profissional, j que se trata do sistema gestor de qualquer computador. O Sistema Operacional que organiza a execuo dos aplicativos, aloca espao em memria para uma execuo mais rpida, envia e recebe dados de dispositivos e os trata para serem utilizados pelos aplicativos dos usurios, alm de muitas outras atividades. Em suma, o Sistema Operacional protege a mquina do usurio e protege o usurio da mquina. Por ser uma matria essencial para seu curso, empenhe-se nos estudos, leia o material com calma e releia se for o caso. Tire as suas dvidas com seus tutores e utilize os materiais indicados como apoio a seus estudos. No se prenda apenas apostila do curso. Sucesso na sua carreira!
e-Tec Brasil
Apresentao da disciplina
Nesta disciplina voc ter uma viso 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 responsabilidades como: alocar recursos, gerenciar usurios e processos, controlar a execuo de programas de usurios e muito mais. Ao passar pelas aulas deste curso voc poder perceber o quo difcil e rduo construir um sistema como Windows ou Linux. Voc algumas vezes deve ter passado por esta situao: estar navegando na internet, conversando no MSN e editando um trabalho de escola no Word. Parece estar tudo executando ao mesmo tempo correto? Mas provavelmente no. Apesar de as mquinas mais novas conseguirem processar algumas instrues realmente em paralelo, ainda sim, esses aplicativos disputam recursos sob a gerncia do Sistema Operacional. Nas primeiras aulas do curso, faremos uma caracterizao dos sistemas operacionais levando em considerao a evoluo do hardware ao longo dos anos. Conhecer o histrico do desenvolvimento destes sistemas tambm importante para analisar a motivao de cada nova tecnologia e sua relao com o software gerenciador. Depois, precisaremos rever alguns conceitos de hardware e software, caracterizar alguns componentes bsicos e sua importncia em um sistema computacional. Por fim, analisaremos as principais funes de gerncia de um sistema computacional, abordando seus tpicos principais. Vamos estudar, tambm, como funciona a gerncia de aplicaes, de recursos e a estrutura interna de um sistema operacional. So muitos conceitos novos, no deixe acumular!
11
e-Tec Brasil
Projeto instrucional
Disciplina: Sistemas Operacionais (carga horria: 60h). Ementa: Viso geral dos Sistemas Operacionais. Conceitos e gerenciamento de recursos de hardware e software do computador.
AULA OBJETIVOS DE APRENDIZAGEM
Compreender os conceitos bsicos de sistemas operacionais. Conhecer suas funes principais. Analisar o Sistema Operacional como uma mquina de nveis. Conhecer o histrico de sistemas operacionais. Compreender como as inovaes de hardware colaboraram com o desenvolvimento dos sistemas operacionais. Saber classificar os sistemas conforme suas caractersticas principais. Conhecer a arquitetura bsica de computadores. Descrever os principais dispositivos de entrada e sada. Compreender conceitos de software utilitrio. Conhecer conceitos mais especficos sobre programas de sistema. Analisar o mecanismo de interrupo na concorrncia entre processos. Descrever as operaes de entrada e sada. Conhecer as caractersticas dos sistemas em lote e sistemas de tempo compartilhado. Compreender a funcionalidade de alguns servios do sistema operacional. Analisar as caractersticas bsicas de uma arquitetura de sistema operacional.
MATERIAIS
10
2. Histrico e classificao
10
10
continua
13
e-Tec Brasil
AULA
OBJETIVOS DE APRENDIZAGEM
Conhecer os modos de acesso ao processador como forma de proteo do sistema. Compreender a estrutura das chamadas de sistema utilizadas para a comunicao com o kernel do sistema. Analisar as caractersticas de uma arquitetura de sistema operacional dividido em camadas ou no. Verificar o funcionamento e importncia de um interpretador de comandos. Conhecer as funes de gerncia principais de um sistema operacional. Analisar as funes do elemento processo dentro de um sistema operacional. Verificar a administrao da utilizao de recursos pelo sistema operacional.
MATERIAIS
10
10
concluso
e-Tec Brasil
14
Sistemas Operacionais
Vamos estender o conceito de sistema operacional ao longo do curso, mas podemos defin-lo, de forma simples, como um conjunto de rotinas executadas pelo processador com a principal funo de controlar o funcionamento do computador, gerenciando os diversos recursos disponveis no sistema. Na Figura 1.1 vemos a posio que um Sistema Operacional ou simplesmente SO ocupa dentre os vrios elementos que compem um sistema de computao. Voc deve observar que a palavra Usurios est sendo usada com dois sentidos diferentes: para as pessoas que utilizam o computador e para os programas e utilitrios instalados no computador.
Sistema Operacional Sistema Operacional: segundo o Aurlio (verbete sistema), sistema operacional um conjunto integrado de programas bsicos, projetado para supervisionar e controlar a execuo de programas de aplicao em um computador.
15
e-Tec Brasil
Programadores e Analistas
Usurios
Aplicativos
Usurios
Sistemas Operacionais
Hardware
Figura 1.1: Viso do Sistema Operacional
Fonte: Adaptado de Machado, 2004
Resumidamente, o sistema operacional tem a funo de proteger a mquina do usurio e proteger o usurio da mquina.
Voc pode obter mais informaes sobre setor e trilha no livro Organizao Estruturada de Computadores, de Andrew S. Tanembaum, 5 Edio, Editora Prentice-Hall, ou na prpria internet em sites especializados como o Clube do Hardware em http://www. clubedohardware.com.br
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 vrios usurios do sistema, ento dever existir algum controle para impedir que a impresso de um usurio interrompa a impresso de outro. O sistema operacional o responsvel por permitir o acesso organizado a esse e a outros recursos disponveis no computador. O compartilhamento de recursos permite a diminuio de custos, na medida em que mais de um usurio pode utilizar as mesmas facilidades concorrentemente, tais como discos, impressoras, linhas de comunicao, etc. Com isto, uma mesma impressora (ou linha de comunicao ou outro recurso) pode atender a vrios usurios. No s no controle do acesso a hardware compartilhado que o sistema operacional atua, ele nos permite executar vrias tarefas, como imprimir um documento, copiar um arquivo pela internet ou processar uma planilha, entre outros. O SO deve ser capaz de controlar a execuo concorrente de todas essas tarefas. Ainda podemos dizer que, embora alguns programas sejam escritos baseados nas instrues de um determinado processador, ser responsabilidade do sistema operacional executar tarefas bsicas do micro, ou seja, ensinar ao processador como desenhar uma janela ou imprimir um documento.
De um modo geral, os programas que os usurios executam no so escritos para um processador, mas sim para um SO. Isto facilita a comunicao do programa com o hardware do computador. As tarefas so executadas pelo SO, tornando os programas menores e mais fceis de serem programados (Machado e Maia, 2004. p.1-3).
PROGRAMAS
Conforme mostra a Figura 1.2, o SO o intermedirio entre hardware e programas utilizados pelos usurios.
17
e-Tec Brasil
Em uma situao 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 vlido, o executaria. Caso um determinado programa resolvesse fazer um pedido estranho (por exemplo, apagar todos os dados do disco rgido), o SO simplesmente poderia ignorar tal pedido, terminar a execuo do programa e informar a ocorrncia ao usurio. Um programa de usurio no deve acessar recursos do computador diretamente, deve antes passar pela intermediao e autorizao do sistema operacional. Essa a condio ideal de um sistema operacional ESTVEL 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 no foram desenvolvidos para serem servidores de rede como o MacOS e Windows nas suas verses XP, Vista e Windows 7. O antigo DOS no trabalhava nessas condies. Na poca em que foi criado, o PC tinha pouqussima memria RAM (1 MB) e o sistema operacional, como ficava residente em memria, tinha de ser o menor possvel. Uma soluo para diminuir o tamanho do SO foi permitir aos programas que acessassem diretamente o hardware do micro para tarefas especiais, como desenhar grficos 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 usurio
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 no estivesse bem escrito, isso inevitavelmente era refletido no hardware, fazendo com que o programa parasse por travamento. Esse problema continuou em verses do Windows 3.x, 95, 98 e ME, por utilizarem o mesmo ncleo do DOS, permitindo acessos direto ao hardware.
e-Tec Brasil
18
Sistemas Operacionais
19
e-Tec Brasil
Quando o usurio est trabalhando em um desses nveis, no necessita saber da existncia das outras camadas, acima ou abaixo de sua mquina virtual.
Aplicativos Utilitrios Sistema Operacional Linguagem de Mquina Microprogramao Dispositivos Fsicos
Figura 1.4: O computador como mquina de nveis
Fonte: Adaptado de Machado, 2004
Hardware
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 nveis diferente, variando da mais elementar (baixo nvel) mais sofisticada (alto nvel). Os aplicativos so programas executados pelo usurio. Os utilitrios so programas de uso genrico e frequente, geralmente fornecidos junto com o SO. Cada um desses nveis ser abordado com mais detalhes nas prximas aulas. Um sistema operacional pode ento ser definido sob dois aspectos: como uma mquina estendida ou mquina virtual e como um gerenciador de recursos. O sistema operacional, como uma mquina virtual, esconde do programador detalhes do hardware, apresentando uma viso simples, mais conveniente e mais fcil de utilizar. O sistema operacional, como um gerenciador de recursos, fornece uma alocao controlada e ordenada dos recursos do computador entre os vrios programas que competem por esses recursos. Os recursos incluem processadores, memrias, dispositivos de E/S (unidades de disco, impressoras, mouse, etc.), interfaces de rede, dentre outros. Quando um computador tem vrios usurios, existe a necessidade de se proteger a memria , os dispositivos de E/S e os outros recursos. O sistema operacional ento mantm informao 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 usurio use por um perodo injustamente longo) e mediar quando h pedidos conflitantes sobre um mesmo recurso.
Resumo
Nesta aula voc aprendeu alguns conceitos bsicos sobre sistemas operacionais, algumas questes importantes sobre seu funcionamento e funes principais. Viu tambm como a estruturao de um sistema em camadas pode ser vantajosa em termos de eficincia de todo o ambiente computacional.
Atividades de aprendizagem
1. Quais seriam as principais dificuldades que um programador teria no desenvolvimento de uma aplicao em um ambiente sem um sistema operacional? 2. Explique o conceito de mquina virtual. Qual a grande vantagem em utilizar esta metodologia? 3. Defina o conceito de uma mquina de camadas. 4. Explique a seguinte frase: O Sistema Operacional protege o usurio da mquina e a mquina do usurio.
21
e-Tec Brasil
2.1 Histrico
Vimos que o sistema operacional interage diretamente com o hardware e, com isso, influenciado diretamente pela evoluo do mesmo. Portanto, a evoluo 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 histrico dos sistemas operacionais, estaremos recordando um pouco a evoluo do hardware. Devemos lembrar que as datas das fases da evoluo so 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 utilizao mais amigvel, precisa, rpida e eficaz. O conjunto de equipamentos e recursos utilizados para que o homem possa controlar o computador genericamente denominado interface. O aprimoramento da interface atingiu o ponto em que o usurio passou a interagir com pequenos desenhos ou smbolos de objetos comuns ao seu trabalho. Pensou-se em representar, por exemplo, a tarefa de impresso de documentos pelo desenho de uma pequena impressora e a eliminao de um documento por uma pequena lixeira. Surgiram os cones. O histrico da evoluo foi dividido em fases, cada uma marcada pela evoluo significativa do hardware, do software, da interao com o sistema ou por aspectos de conectividade. Primeiramente, devemos ressaltar que o mapeamento das datas de evolues
23
e-Tec Brasil
e geraes dos Sistemas Operacionais e das Arquiteturas de Computadores so, de certa forma, vagas e imprecisas, mas com certa estrutura. a) Primeira fase (1945-1955) - Vlvulas e Painis de Programao No incio da Segunda Guerra Mundial, surgiram os primeiros computadores digitais, formados por milhares de vlvulas, que ocupavam reas enormes, sendo de funcionamento lento e duvidoso. O ENIAC (Electronic Numerical Integrator and Computer) foi o primeiro computador digital de propsito geral. Criado para a realizao de clculos balsticos, sua estrutura possua 17.468 vlvulas, 10 mil capacitores, 70 mil resistores e pesava 32 toneladas. Quando em operao era capaz de realizar cinco mil adies por segundo. A programao era feita em painis, atravs de fios, utilizando linguagem de mquina. No existia o conceito de sistema operacional. Outros computadores foram construdos nessa poca, mas eram utilizados apenas em universidades e rgos militares. Muitas empresas foram fundadas ou investiram no setor, como, por exemplo, a IBM, o que levou criao dos primeiros computadores para aplicaes comerciais. b) Segunda fase (1956-1965) - Transistores e Sistemas em Lote (batch) A criao do transistor e das memrias magnticas contribuiu para o enorme avano dos computadores da poca. O transistor permitiu o aumento da velocidade e da confiabilidade do processamento; as memrias magnticas permitiram o acesso mais rpido aos dados, maior capacidade de armazenamento e computadores menores. Surgiram os primeiros sistemas operacionais, para tentar automatizar as tarefas manuais at ento realizadas e as primeiras linguagens de programao, 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
Fita de Entrada
Fita de Sada
Fita de Sada
Fonte: Adap tado de Machado, 2004
Processamento
Relatrios
Os programas passaram a ser perfurados em cartes que, submetidos a uma leitora, eram processados e gravados em uma fita de entrada, conforme Figura 2.1. A fita de entrada, ento, era lida pelo computador, que executava um programa de cada vez, processando e gravando o resultado em uma fita de sada. Ao trmino de todos os programas, as fitas de sada eram lidas e processadas novamente para serem impressas, gerando assim os relatrios. Com o processamento em batch, um grupo de programas era submetido de uma s vez, o que diminua o tempo existente entre a execuo dos programas, permitindo, assim, melhor uso do computador. c) Terceira fase (1966-1980) - Circuitos Integrados e Multiprogramao Por meio dos circuitos integrados e, posteriormente, dos microprocessadores, foi possvel viabilizar e difundir o uso de sistemas computacionais por empresas, devido diminuio de seus custos de aquisio. Houve um aumento no poder de processamento e diminuio no tamanho dos equipamentos. A evoluo dos processadores de entrada/sada permitiu que, enquanto um programa esperasse por uma operao de leitura/gravao, o processador executasse um outro programa. Para tal, a memria foi dividida em parties, em que um programa esperava sua vez para ser processado. A essa tcnica de compartilhamento da memria principal e processador deu-se o nome de multiprogramao.
25
e-Tec Brasil
Duas inovaes de hardware foram fundamentais para o surgimento da multiprogramao: os discos magnticos e as interrupes de hardware. Os discos magnticos compem praticamente todas as mquinas atuais, com vrios Gigas e at Terabytes de capacidade de armazenamento. As interrupes de hardware so sinais que as controladoras de dispositivos enviam CPU para avisar que as operaes de entrada ou sada foram finalizadas ou tiveram algum problema.
Com a substituio das fitas por discos no processo de submisso dos programas, o processamento batch tornou-se mais eficiente, pois permitia a alterao na ordem de execuo das tarefas, at ento somente sequencial. A essa tcnica de submisso de programas chamou-se spooling, que, mais tarde, tambm viria a ser utilizada no processo de impresso. Os sistemas operacionais, mesmo com a evoluo do processamento batch e a multiprogramao, ainda estavam limitados a processamentos que no exigiam comunicao com o usurio. Para permitir a interao rpida entre o usurio e o computador, foram adicionados terminais de vdeo e teclado (interao on-line). A multiprogramao evoluiu, preocupada em oferecer aos usurios tempos de resposta razoveis e uma interface cada vez mais amigvel. Para tal, cada programa na memria utilizaria o processador em pequenos intervalos de tempo. A esse sistema de diviso de tempo do processador chamou-se time-sharing (tempo compartilhado). Outro fato importante nessa fase foi o surgimento do sistema operacional UNIX. Ao final dessa fase, com a evoluo dos microprocessadores, surgiram os primeiros microcomputadores, muito mais baratos que qualquer um dos computadores at ento comercializados. d) Quarta fase (1981-1990) - Computadores Pessoais Os mini e superminicomputadores se firmaram no mercado e os microcomputadores ganharam um grande impulso. Surgem as estaes de trabalho (workstations) que, apesar de monousurias, permitem que se executem diversas tarefas concorrentemente, criando o conceito de multitarefa. No final dos anos 80 os computadores tiveram um grande avano, decorrente de aplicaes que exigiam um enorme volume de clculos. Para acelerar o processamento, foram adicionados outros processadores, exigindo dos sistemas operacionais novos mecanismos de controle e sincronismo. Com o multiprocessamento, foi possvel a execuo de mais de um programa simultaneamente, ou at de um mesmo programa por mais de um processador. Foram introduzidos processadores vetoriais e tcnicas de paralelismo de processamento, fazendo com que os computadores se tornassem ainda mais poderosos.
Nos sistemas time-sharing, os usurios possuam um terminal que podia interagir com o programa em execuo. Esses usurios tinham a iluso de possuir a mquina dedicada execuo de seu programa. O que no era verdade! Essa iluso vinha da diviso de tempo de processamento de CPU entre os usurios
Existem na internet muitas informaes sobre o sistema UNIX, sistema pai de muitos sistemas operacionais atuais, como o Linux, Solaris e outros. Procure o vdeo na internet chamado de Revoluo dos Sistemas Operacionais, do Ingls Revolution OS, que conta um pouco dessa histria.
e-Tec Brasil
26
Sistemas Operacionais
O uso das redes distribudas se difundiu por todo o mundo, permitindo o acesso a outros sistemas de computao, independentemente de cidade, pas e, at mesmo, fabricante. Os softwares de rede passaram a estar intimamente relacionados com o sistema operacional de cada mquina e surgem os sistemas operacionais de rede. e) Quinta fase (1991-2000) Houve grandes avanos em termos de hardware, software e telecomunicaes como consequncia da evoluo das aplicaes, que necessitavam cada vez mais de capacidade de processamento e armazenamento de dados. Sistemas especialistas, sistemas multimdia, bancos de dados distribudos, inteligncia artificial e redes neurais so apenas alguns exemplos da necessidade cada vez maior de informao e de capacidade de processamento. O conceito de processamento distribudo explorado nos sistemas operacionais, de forma que suas funes estejam espalhadas por vrios processadores atravs de redes de computadores.
A dcada de 90, foi definitiva para a consolidao dos sistemas operacionais baseados em interfaces grficas (TANENBAUM, 2000, p. 4 a 12).
Atualmente temos as plataformas multicore (vrios ncleos) disponveis em computadores pessoais e at notebooks, possibilitando cada vez mais a paralelizao de aplicaes e elevando, em muito, o tempo de execuo dos programas. Os fanticos pelos jogos de computador que o digam! Vamos relembrar as principais caractersticas e evolues de cada fase? Faa um quadro, sumarizando cada uma das cinco fases, para ajud-lo no estudo e entendimento da evoluo de hardware necessria para o desenvolvimento dos sistemas operacionais. Para cada fase, anote os acontecimentos mais importantes.
27
e-Tec Brasil
Considerando o processamento, podemos classificar os sistemas operacionais de acordo com a quantidade de tarefas que podem ser executadas simultaneamente. Monoprogramveis ou Monotarefa podem executar apenas um programa por vez. Para que um usurio possa executar outro programa, dever aguardar a finalizao do programa corrente. Esta era uma caracterstica dos primeiros sistemas operacionais que estavam relacionados ao surgimento dos primeiros computadores na dcada de 60. Caracterizavam-se por permitir que todos os recursos de hardware ficassem exclusivamente dedicados a um nico programa. Em consequncia, sua principal desvantagem residia no fato de que enquanto um programa aguardava por um evento externo, como a digitao de um caractere do teclado, o processador permanecia ocioso. Alm disso, tanto a memria principal quanto os recursos de E/S (Entrada e Sada) como impressoras e discos eram subutilizados, uma vez que todos estariam dedicados a um nico programa como mostra a Figura 2.3.
Monoprogramveis ou Monotarefa Sistemas monoprogramveis ou monotarefa so aqueles em que executado, por vez, um nico programa ou uma nica tarefa.
Memria
UCP
Programa/Tarefa
Dispositivos de E/S
e-Tec Brasil
28
Sistemas Operacionais
Sistemas Multiprogramveis ou Multitarefa: os recursos computacionais so compartilhados entre os diversos usurios e suas aplicaes. Podemos observar o compartilhamento de memria e do processador. Nesse caso, o compartilhamento de tempo no processador distribudo. Assim, o usurio tem a impresso que vrios processos esto sendo executados simultaneamente. Um dos processos ocupa o processador enquanto os outros ficam enfileirados, aguardando a sua vez de entrar em execuo. Cabe ao sistema operacional o papel de gerenciar de forma ordenada e protegida o acesso concorrente aos recursos disponveis. Sistemas multiprogramveis ou multitarefa permitem o compartilhamento dos recursos computacionais entre diversos usurios e aplicaes, permitindo sua execuo concorrente. A vantagem desse tipo de sistema uma melhor utilizao dos recursos disponveis, o que resulta em menor tempo de resposta das aplicaes. Alm de um custo reduzido, uma vez que haver o compartilhamento dos recursos entre as diferentes aplicaes e aumento da produo do usurio. Graas aos sistemas multiprogramveis possvel editar um documento no MS Word, navegar na internet, ouvir msica, utilizar os mensageiros instantneos (MSN), tudo ao mesmo tempo! Sistemas com mltiplos processadores: o sistema operacional distribui as tarefas entre dois ou mais processadores. A vantagem desse tipo de sistema permitir que mais de um programa possa ser executado simultaneamente ou que um mesmo programa seja dividido em vrias partes e executado simultaneamente nos vrios processadores, aumentando o desempenho. Esse tipo de sistema surgiu da necessidade de aplicaes que requeriam um grande poder computacional, como sistemas de previso do tempo, modelagens, simulaes, desenvolvimento aeroespacial, entre outros. Com mltiplos processadores, possvel reduzir drasticamente o tempo de processamento destas aplicaes. Inicialmente, as configuraes limitavam-se a poucos processadores, mas, atualmente existem sistemas com milhares de processadores.
Sistemas com mltiplos processadores Sistemas com mltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e trabalhando de forma conjunta na soluo de um problema.
Os sistemas com mltiplos processadores podem ser classificados em fortemente acoplados e fracamente acoplados, em funo da comunicao entre CPUs e o grau de compartilhamento da memria. Em sistemas fortemente acoplados, h uma nica memria principal compartilhada por todos os processadores, enquanto em sistemas fracamente acoplados cada sistema tem sua prpria memria. Com isso, a taxa de transferncia entre processadores em sistemas fortemente acoplados bem maior que em sistemas fracamente acoplados.
29
e-Tec Brasil
Resumo
Nesta aula voc pde perceber como o desenvolvimento de inovaes de hardware foi importante para a evoluo dos sistemas operacionais ao longo dos anos. Viu tambm como podemos classificar os sistemas operacionais por suas caractersticas principais. Alguns conceitos bsicos importantes foram vistos e que sero de fundamental relevncia para as aulas seguintes. Ento se ficou alguma dvida, revise esta aula!
Atividades de aprendizagem
1. Por que dizemos que existe uma subutilizao de recursos em sistemas monoprogramveis? 2. Quais as vantagens dos sistemas multiprogramveis? 3. O que caracteriza o processamento batch? Que aplicaes podem ser processadas neste tipo de ambiente? 4. Qual a grande diferena entre sistemas fortemente acoplados e fracamente acoplados?
e-Tec Brasil
30
Sistemas Operacionais
3.1 Hardware
O hardware do computador constitudo por um conjunto de componentes interligados: processadores, memria principal, registradores, terminais, impressoras e discos magnticos, alm de outros dispositivos fsicos.
Os componentes fsicos do computador so agrupados em trs subsistemas bsicos:
31
e-Tec Brasil
de uma instruo na memria. A ULA responsvel pela realizao de operaes lgicas (testes e comparaes) e aritmticas (somas e subtraes). A velocidade de processamento de uma unidade central de processamento (CPU) determinada pelo nmero de instrues que o processador executa por unidade de tempo, normalmente em segundos. A unidade de medida MIPS (milhes de instrues por segundo). A transmisso de dados entre o receptor e o transmissor controlada por um sinal de controle chamado clock. Este sinal usado para sincronizar o transmissor com o receptor, isto , para informar ao receptor que um dado est sendo transmitido. utilizado pela unidade de controle para a execuo das instrues. O clock um dispositivo localizado na unidade central de processamento, que gera pulsos eltricos sncronos em um determinado intervalo de tempo (sinal de clock). A quantidade de vezes que este pulso se repete em um segundo define a frequncia do clock. Toda transmisso paralela utiliza um sistema de clock. Esses sistemas de clock, entretanto, so independentes, isto , o sistema de clock usado na transmisso de dados entre o processador e a memria RAM no o mesmo usado na transmisso de dados entre o disco rgido e a placa-me, por exemplo.
3.1.2 Memrias
A memria tem por funo armazenar internamente toda informao que manipulada pelo computador: os programas e os dados. A memria pode ser classificada quanto sua velocidade (ou tempo) de acesso, capacidade de armazenamento, custo e volatilidade. Em funo dessas caractersticas, pode-se estabelecer uma hierarquia de tipos de memrias, conforme Figura 3.1.
Registradores Memria Cache Maior capacidade de armazenamento Menor custo e velocidade de acesso
Memria Principal
Memria Secundria
Figura 3.1: Comparativo dos diversos tipos de memria
Fonte: Adaptado de Machado, 2004
e-Tec Brasil
32
Sistemas Operacionais
a) Registradores So dispositivos de alta velocidade, localizados fisicamente na unidade central de processamento, para armazenamento temporrio de dados. O nmero de registradores varia em funo da arquitetura de cada processador. Existem registradores de uso especfico (com propsitos especiais) e de uso geral. Os registradores de uso especfico so: Contador de instrues - responsvel por armazenar o endereo da prxima instruo que a unidade central de processamento dever executar. Toda vez que uma instruo j est sendo processada o endereo da prxima instruo a ser processada armazenado no contador de instrues; Apontador de pilha: responsvel por armazenar o endereo de memria do topo da pilha. Pilha uma estrutura de dados onde o sistema mantm informaes sobre tarefas que estavam sendo processadas, mas que por algum motivo tiveram que ser interrompidas; Registrador de estado: responsvel por armazenar informaes sobre a execuo do programa (status do programa). A cada instruo executada, o registrador de estado alterado conforme o resultado gerado pela instruo. b) Memria cache uma memria voltil de alta velocidade. Quando o processador faz referncia a um dado armazenado na memria principal, verifica antes se este dado no est armazenado na memria cache. Ao encontrar o dado armazenado na memria cache, o processador no acessa a memria principal, diminuindo o tempo de processamento. c) Memria principal a memria responsvel pelo armazenamento dos programas que esto sendo executados pela CPU em um certo instante, bem como dos dados utilizados pelos programas em execuo. Para que um programa possa ser executado pela CPU necessrio que ele seja previamente armazenado na memria principal. Existem ainda dois tipos de memria: ROM (read only memory memria somente leitura) e RAM (random access memory memria de acesso randmico).
Para aumentar o desempenho no funcionamento das memrias caches feita a hierarquizao da cache em mltiplos nveis. O nvel da cache mais alto chamado de L1 (Level 1), com baixa capacidade de armazenamento e com altssima velocidade de acesso. O segundo nvel, L2 (Level 2), possui maior capacidade de armazenamento, porm com velocidade de acesso inferior a L1, e assim sucessivamente. Quando a CPU necessita de uma informao da memria principal, primeiramente verifica a cache L1, caso no ache, segue para a cache L2, assim por diante. Se no encontrar em nenhum dos nveis, busca o dado na memria principal.
33
e-Tec Brasil
Quando usamos o termo memria para um computador, normalmente estamos nos referindo sua memria RAM. Se um programa que o usurio pretenda executar no estiver na memria RAM, ento ele deve ser transferido de um sistema de memria secundrio (como discos rgidos, unidades de CD-ROM e etc.) para a memria RAM. A RAM um tipo de circuito eletrnico de memria que permite a leitura e a escrita de dados em seu interior. S que ela uma memria voltil (como os registradores e a cache), isto , cortando-se sua alimentao eltrica, apagamos os dados que estavam nela armazenados. J a caracterstica principal da ROM que o seu contedo no perdido quando cortamos a sua fonte de alimentao e por isso utilizada para manter os programas iniciais do computador. Quando ligamos o micro, o processador no sabe o que fazer; ele precisa executar um programa; este programa necessrio para dar o boot gravado em uma memria ROM, localizada na placa-me do computador. Um programa armazenado em ROM recebe o nome de firmware. Na memria ROM do micro h basicamente trs programas (firmware) principais: BIOS (Basic Input/Output System, Sistema bsico de Entrada/Sada); POST (Power On Self Test, Autoteste ao Ligar); Setup (programa que permite alterar vrios itens da configurao do computador). A memria principal composta por unidades de acesso chamadas clulas, cada uma capaz de armazenar um determinado nmero de bits. Cada clula tem um endereo, conforme Figura 3.2, que uma referncia posio da clula dentro da memria, como o endereo de uma casa. Quando um programa deseja ler ou escrever um dado em uma clula, deve primeiro especificar qual o endereo de memria desejado. O endereo da clula a ser acessada fica armazenado em um registrador denominado registrador de endereo de memria.
e-Tec Brasil
34
Sistemas Operacionais
0 1 2
Instruo ou Dado
Endereos
N Clulas
Figura 3.2: Clulas de memria e seus endereos
Fonte: Adaptado de Machado, 2004
O nmero de clulas endereadas na memria principal limitado pelo tamanho do registrador de endereo. No caso de o registrador possuir n bits, n a memria poder enderear 2 clulas. d) Memria secundria Memria secundria um termo genrico para designar diversos componentes que permitem gravar e ler dados permanentes. O seu acesso lento, se comparada com as memrias cache ou principal, porm relativamente apresentam custo mais baixo e capacidade de armazenamento superior. Exemplos de memria secundria so as fitas magnticas, discos rgidos (HDs), CDs, DVDs, etc.
Alm das memrias RAM e ROM descritas no texto, temos ainda a PROM (memria programvel somente de leitura) que pode ser gravada pelo usurio uma nica vez, a EPROM (memria programvel e apagvel somente de leitura) que pode ser gravada ou regravada por meio de um equipamento que fornece as voltagens adequadas em cada pino (para apagar os dados deve-se utilizar raios ultravioleta no chip), e por ltimo temos a EEPROM (memria programvel e apagvel eletronicamente somente de leitura), que pode ser gravada, apagada ou regravada utilizando um equipamento que fornece as voltagens adequadas em cada pino.
3.1.4 Barramento
A CPU, a memria principal e os dispositivos de E/S so interligados atravs de linhas de comunicao denominadas barramentos, barras ou vias. Um
35
e-Tec Brasil
barramento um conjunto de fios paralelos (linhas de comunicao), por onde trafegam informaes, como dados, endereos ou sinais de controle. Um esquema grfico de um barramento mostrado na Figura 3.3.
CPU Memria Unidade Lgica e Aritmtica Unidade de Controle
Registradores
Dispositivo E/S
Fluxo de Dados Fluxo de Controle
Figura 3.3: Esquema grfico dos barramentos
Fonte: Adaptado de Machado, 2004
O barramento pode ser classificado como unidirecional (transmisso em um s sentido) ou bidirecional (transmisso em ambos os sentidos). Existem trs tipos de barramentos, que se diferenciam uns dos outros de acordo com o que transportam: Barramento de dados: transmite informaes entre a memria principal e a unidade central de processamento; Barramento de endereos: utilizado pela unidade central de processamento para especificar o endereo da clula de memria que ser acessada; Barramento de controle: por onde a unidade central de processamento envia os pulsos de controle relativos s operaes de leitura e gravao.
3.1.5 Pipelining
O conceito de processamento pipeline a diviso de uma tarefa em uma sequncia de subtarefas. O processador, por meio de suas vrias unidades funcionais pipeline, funciona de forma a permitir que, enquanto uma instruo se encontra na fase de execuo, uma outra instruo possa estar na fase de busca. A tcnica de pipelining pode ser empregada em sistemas com um ou mais
e-Tec Brasil
36
Sistemas Operacionais
processadores, em diversos nveis, e tem sido a tcnica de paralelismo mais utilizada para maior desempenho dos sistemas de computadores. Podemos fazer a comparao de um pipelining com um motor de carro de quatro tempos e vrios cilindros. Enquanto um cilindro est na fase de alimentao, outro est na fase de compresso, outro na de exploso e assim por diante. Isto aumenta bastante a eficincia do motor.
3.2 Software
Na Figura 1.4 vimos trs camadas/nveis de software: aplicativos, utilitrios e sistema operacional. Os software ou programas executados pelos usurios so atualmente chamados, atualmente, de aplicativos. Antigamente se chamavam simplesmente programas. Quase tudo que o usurio 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 imposto de renda, de controle de estoques ou de contas a receber. Antigamente havia uma distino mais ntida entre os aplicativos e os utilitrios, pois havia um personagem a mais no cenrio: o operador do computador. Este executava algumas atividades especficas, como copiar de fita para disco e vice-versa ou operar as impressoras. Para executar essas atividades o operador precisava de uma srie de programas, como, por exemplo, um programa para localizar um arquivo no computador. A maioria dos programas requeridos pelo operador era chamada de utilitrios. Hoje em dia continua a existir um conjunto de programas, utilizados como interface entre o usurio e o hardware. O termo utilitrio , assim, uma referncia a softwares relacionados com servios do sistema operacional, como os compiladores, linkers, depuradores e outros. Os software aplicativos podem ser identificados como aqueles que esto mais prximos do usurio comum, como os navegadores, editores de texto, jogos, etc. J os software utilitrios so aqueles que fazem a intermediao entre os aplicativos e o ncleo do sistema operacional, possuindo funes mais especficas e geralmente mais restritas, como ligadores, depuradores, compiladores, etc. Dentre os software utilitrios podemos destacar alguns que do apoio programao de computadores: tradutores, compiladores, montadores, in-
37
e-Tec Brasil
terpretadores, ligadores, carregadores, depuradores. Nas prximas sees estaremos abordando esses utilitrios com mais detalhes.
Programa fonte
Tradutor
Programa objeto
Montador
Mdulo objeto
Compilador
Mdulo objeto
3.2.2. Interpretador
Assim chamado um tradutor que no gera o mdulo objeto. A partir de um programa fonte, escrito em linguagem de alto nvel, o interpretador, no momento da execuo do programa, traduz cada instruo e a executa em seguida. Sua desvantagem o tempo gasto na traduo das instrues de um programa toda vez que este for executado, j que no existe a gerao de um cdigo executvel.
e-Tec Brasil
38
Sistemas Operacionais
3.2.3. Linker
O linker (ligador) o utilitrio responsvel por gerar, a partir de um ou mais mdulos objeto, um nico programa executvel, conforme Figura 3.5. Sua funo resolver todas as referncias simblicas existentes entre os mdulos - objeto, reservar memria para a execuo do programa e determinar uma regio da memria onde o programa ser carregado para sua execuo.
Mdulo objeto
Linker
Programa Executvel
Em ambientes multiprogramveis esse tipo de alocao fixa feita pelo linker invivel porque neste caso a memria compartilhada entre diversos programas: pouco provvel que no momento em que o sistema carrega um programa, sua rea de memria que foi predeterminada esteja disponvel. A soluo para isso permitir que um programa possa ser executado em qualquer regio disponvel da memria, durante a sua carga (cdigo relocvel). Esse tipo de relocao no realizado pelo linker, e sim por outro utilitrio, chamado loader, responsvel por carregar os programas na memria.
Os IDEs (Ambientes Integrados de Desenvolvimento), como o Dev C++, executam essas funes (de compilador e linker e at a carga do executvel) de uma vez, quando voc aperta o F9. Voc no percebe quando executada cada uma delas, embora sejam distintas. Voc s consegue ver, na pasta onde voc est trabalhando, os programas fonte (com terminao .c ou .cpp) e o executvel (terminao .exe); o mdulo objeto intermedirio (criado durante a compilao) voc no v mais.
3.2.4. Loader
O loader (carregador) o utilitrio responsvel por colocar fisicamente na memria principal um programa para sua execuo. Pode permitir que um programa seja carregado em regies diferentes toda vez que for trazido para a memria. Quando o loader carrega um programa para memria principal, ele aloca uma rea de cdigo, uma rea de dados e uma rea de pilha. A rea de cdigo armazena o programa executvel, a rea de dados armazena as variveis e constantes utilizadas no programa e a rea de pilha armazena os endereos de retorno das funes ou procedimentos chamados du-
39
e-Tec Brasil
rante a execuo do programa. O funcionamento do carregador depende do cdigo gerado pelo linker e, de acordo com este, pode ser classificado como absoluto ou relocvel: Loader absoluto - o loader s necessita conhecer o endereo de memria inicial e o tamanho do mdulo para realizar o carregamento. Ento, o loader transfere o programa da memria secundria para a memria principal e inicia sua execuo; Loader relocvel - o programa pode ser carregado em qualquer posio de memria e o loader responsvel pela relocao no momento do carregamento. O processo completo de compilao, link-edio e carga de um programa mostrado na Figura 3.6.
Programa-fonte
Compilador ou Montador
Programa-fonte
Link edio
Mdulo de Carga
Tempo de Carga
Biblioteca do Sistema
Carregador
Ligao Dinmica
Tempo de Execuo
e-Tec Brasil
40
Sistemas Operacionais
3.2.5. Depurador
O desenvolvimento de programas est sujeito a erros de lgica, independentemente da metodologia ou linguagem utilizadas pelo programador. O depurador o utilitrio que permite ao usurio acompanhar e controlar a execuo de um programa a fim de detectar erros na sua estrutura. O depurador ajuda a detectar os erros, mas no os corrige. O depurador geralmente oferece ao usurio os seguintes recursos: acompanhar a execuo de um programa instruo por instruo; possibilitar a alterao e a visualizao do contedo de variveis; colocar pontos de parada dentro do programa, de forma que, durante a execuo, o programa pare nos pontos determinados; especificar em forma de envio de mensagem, toda vez que o contedo de uma varivel for modificado.
Esses recursos de depurao de programas tambm esto presentes em IDEs, geralmente na opo Debug.
Resumo
Nesta aula voc pde estudar e identificar os elementos bsicos de uma arquitetura clssica de computadores. Pode compreender as funes e caractersticas de cada elemento de hardware. Nesta aula, fizemos tambm um apanhado inicial sobre softwares utilitrios que, mesmo sem percebermos muitas vezes, nos ajudam e muito em tarefas do dia a dia.
Atividades de aprendizagem
1. O que so memrias volteis e no volteis? 2. Quais os benefcios de uma arquitetura de memria cache com mltiplos nveis? 3. Diferencie as funes bsicas dos dispositivos de E/S. 4. Como a tcnica de pipelining melhora o desempenho dos sistemas computacionais? 5. Por que o cdigo-objeto gerado pelo tradutor ainda no pode ser executado? 6. Por que a execuo de programas interpretados ainda mais lenta que a de programas compilados?
41
e-Tec Brasil
43
e-Tec Brasil
Embora todos ou quase todos os SO modernos usem uma interface grfica para interagir com o usurio, o prompt da linha de comandos tambm continua a existir.
uma planilha ou texto para edit-los, voc est interagindo com o shell e utilizando recursos dessa linguagem de comando.
medida que novos perifricos se popularizam e novas funes so atribudas ao computador, essa lista de utilitrios tende a crescer. Alm disto, uma funo antes exercida por um utilitrio pode ser incorporada definitivamente ao SO, como citamos o exemplo da leitura e gravao de CD e DVD.
e-Tec Brasil
44
Sistemas Operacionais
Um exemplo de tentativa de transformar os programas independentes do SO e do modelo do equipamento a plataforma Java. Pesquise mais sobre o assunto no site http://www.java.com/pt_BR
45
e-Tec Brasil
Durante a execuo de um programa, alguns eventos inesperados podem ocorrer, interrompendo o seu fluxo normal de execuo e ocasionando um desvio forado. Estes eventos so conhecidos por interrupo ou exceo e podem ser consequncia da sinalizao de algum dispositivo de hardware externo ao processador ou da execuo de instrues do prprio programa. Sempre que ocorre uma interrupo, 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 interrupo ocorre quando um dispositivo avisa ao processador que alguma operao de E/S j est completa. Nesse caso, o processador deve interromper o programa para tratar o trmino da operao. Quando isso ocorre, o programa que est em execuo interrompido e o controle desviado para uma rotina responsvel por tratar o evento ocorrido, denominada de rotina de tratamento de interrupo. Para que o programa interrompido possa voltar a ser executado posteriormente, se faz necessrio que, no momento da interrupo, um conjunto de informaes sobre sua execuo seja preservado. Essas informaes consistem no contedo dos registradores, que devero ser restaurados para que seja dada continuidade execuo do programa, conforme a Figura 4.1.
Programa Salva contedo dos registradores na pilha de controle
Interrupo ou exceo
Rotina de tratamento
e-Tec Brasil
46
Sistemas Operacionais
para a qual o fluxo de execuo dever ser desviado. A identificao do tipo de evento ocorrido fundamental para determinar o endereo da rotina de tratamento. No momento da interrupo, o processador dever saber para qual rotina de tratamento dever encaminhar o fluxo em execuo que foi interrompido Os eventos que causam a interrupo podem ser classificados como sncronos ou assncronos. Um evento classificado como assncrono, independente dos dados de entrada e das instrues do programa, ou seja, pode ocorrer em qualquer ponto do programa. Essas interrupes no esto relacionadas com a instruo do programa corrente, so eventos imprevisveis, podem ocorrer mltiplas vezes (exemplo: interrupo gerada pelo mouse, teclado, perifricos, etc.). Isto possibilita a ocorrncia de mltiplas interrupes simultneas, o que no seria interessante para nosso programa em execuo. Uma maneira de evitar essa situao a rotina de tratamento inibir as demais interrupes. No caso, na ocorrncia de outras interrupes durante a execuo da rotina de tratamento, elas sero ignoradas, ou seja, no recebero tratamento. Em outras palavras, elas s sero tratadas quando a rotina de tratamento da interrupo atual terminar. Interrupes com a caracterstica de poder ser desabilitada so chamadas de interrupes mascarveis. As interrupes que no podem ser desabilitadas so chamadas no-mascarveis. Alguns exemplos de eventos que geram interrupes no-mascarveis so: pressionar o boto reset, falha no hardware, etc. J um evento classificado como sncrono, resultado direto da execuo do programa corrente. Tais eventos so previsveis, e se um mesmo programa for executado vrias vezes com a mesma entrada de dados, os eventos sncronos ocorrero sempre nos mesmos pontos (instrues) do programa.
47
e-Tec Brasil
comunicar diretamente com os perifricos, nem conhecer detalhes de operao especficos de cada perifrico. Com isso, foram muito simplificadas as instrues de E/S do processador.
UCP
Memria Principal
Controlador
Dispositivos de E/S
Figura 4.2: Controlador dos dispositivos de E/S
Fonte: Adaptado de Machado, 2004
Por meio do controlador, o processador gerenciava as operaes de E/S, sem se preocupar com os detalhes de implementao de cada dispositivo. Com esse novo elemento, o processador no mais se comunicava diretamente com os perifricos, mas sim, pelo controlador. E/S programada - esse foi um dos primeiros modelos de operao de E/S. Aps o processador iniciar a transferncia de dados, ficava consultando o estado do perifrico sucessivamente, at que a operao de E/S chegasse ao fim, mantendo o processador ocupado at o trmino da E/S (espera ocupada, do ingls busy wait). Como o processador executa uma instruo muito mais rpida que uma operao de E/S realizada pelo controlador, havia um enorme desperdcio de tempo do processador; E/S por polling - em relao ao modelo anterior, a evoluo ocorreu ao permitir que algumas instrues pudessem ser executadas entre sucessivas consultas sobre o estado de uma operao de E/S. Com isso introduziu-se certo grau de paralelismo. Isso porque permitiu que outros programas pudessem ser executados, enquanto uma operao de E/S era realizada, mas, em determinados intervalos de tempo o sistema operacional deveria interromp-los para verificar o estado da operao de E/S. Caso houvesse vrias operaes de E/S pendentes, o processamento seria interrompido diversas vezes para a verificao do estado das operaes;
e-Tec Brasil
48
Sistemas Operacionais
E/S controlada por interrupo - ao invs de o sistema ficar periodicamente testando o estado das operaes pendentes, o prprio controlador interrompe o processador para informar o trmino da operao. Cabe ao controlador a responsabilidade de controlar as operaes de E/S. Quando essa operao termina, o controlador interrompe o processador para que este realize a transferncia de dados para a memria principal. Aps essa transferncia, o processador est livre para executar outros programas. Apesar disso, se houver a transferncia de um grande volume de dados, o processador ser interrompido diversas vezes, reduzindo o seu desempenho. Para solucionar esse problema, foi implementada a tcnica de transferncia de dados chamada DMA (Direct Memory Access); Acesso Direto Memria (DMA) - a tcnica DMA permite que o controlador de E/S transmita um bloco de dados entre os dispositivos de E/S e a memria principal. O controlador acessa a memria diretamente, sem a necessidade da interveno do processador, exceto no incio e no final da transferncia. O controlador realiza a operao de E/S, bem como a transferncia de dados entre a memria e o dispositivo de E/S, e, somente ao final, interrompe o processador para avisar que a operao foi concluda. A rea de memria utilizada pelo controlador na tcnica de DMA chamada buffer de entrada/sada. Faa as seis atividades a seguir: 1. Porque o uso do linker se tornou invivel em sistemas multiprogramveis? E qual seria a soluo adotada para o problema gerado? 2. Qual a funo da linguagem de controle? 3. Por que o mecanismo de interrupo fundamental para a implementao da multiprogramao? 4. Explique o mecanismo de funcionamento das interrupes. 5. Pesquise sobre o termo traps em sistemas operacionais e em que situaes elas ocorrem. 6. O que DMA e qual a vantagem desta tcnica? Um sistema operacional fornece o ambiente no qual os programas so exe-
49
e-Tec Brasil
cutados. Esse ambiente formado por um conjunto de rotinas que oferecem servios aos usurios, s aplicaes e ao prprio sistema. A esse conjunto de rotinas denominamos kernel. A Figura 4.3 nos mostra em que nvel se encontra o kernel em um sistema computacional. O kernel considerado o ncleo do sistema operacional.
Aplicativos
Utilitrios
Hardware
Figura 4.3: Posicionamento do ncleo do sistema operacional em um sistema computacional
Fonte: Adaptado de Machado, 2004
As principais funes do ncleo encontradas nos sistemas operacionais so: Tratamento de interrupes e excees; Criao e eliminao de processos e threads; Sincronizao e comunicao entre processos e threads; Gerncia de memria; Gerncia do sistema de arquivos; Gerncia dos dispositivos de entrada e sada; Suporte a redes locais e distribudas; Contabilizao do uso do sistema; Auditoria e segurana do sistema.
e-Tec Brasil
50
Sistemas Operacionais
Podemos destacar como funes principais do kernel do sistema operacional as quatro gerncias: gerncia de processos, gerncia de memria, gerncia de entrada e sada, e gerncia de sistema de arquivos. Existem vrios pontos de vista pelos quais poderamos analisar um sistema operacional: Examinando os servios oferecidos aos usurios; Analisando a interface disponibilizada aos usurios e programadores; Desmontando o sistema em seus componentes mais bsicos. Procure enumerar as atividades que voc realiza e recursos que voc costuma utilizar em computadores no seu dia a dia, para depois comparar com os servios prestados por um sistema operacional, listados ao final desta aula.
O monitor residente foi considerado o primeiro sistema operacional (rudimentar). Era um programa que ficava permanentemente em memria e sua funo era transferir a execuo de um job para outro.
51
e-Tec Brasil
Programa/Tarefa
Programa/Tarefa
Memria
UCP
Dispositivos de E/S
Programa/Tarefa
Fonte: Adaptado de Machado, 2004
Programa/Tarefa
O sistema operacional escolhe e comea a executar a tarefa carregada na memria. Em alguns momentos a tarefa que est em execuo dever espe-
e-Tec Brasil
52
Sistemas Operacionais
rar a concluso de alguma outra tarefa, como uma operao de E/S, que muito mais lenta. Em um sistema operacional no multiprogramado, a CPU ficaria ociosa. Em um sistema de multiprogramao, o sistema operacional simplesmente passa para outra tarefa e a executa. Quando esta segunda tarefa precisar esperar, a CPU passar para outra tarefa e assim por diante. Por fim, a primeira tarefa terminar a sua operao de E/S e ter a CPU de volta. Neste esquema, a CPU nunca fica ociosa. Todos os jobs, ou tarefas, que entram no sistema so mantidos num pool de jobs (espcie de fila). Esse pool de jobs consiste em todos os processos residentes no disco aguardando alocao da memria principal (espao na memria). O nmero de jobs que pode ser mantido simultaneamente na memria principal geralmente muito menor do que o nmero de jobs que pode estar no pool de jobs. Se vrios jobs estiverem prontos para serem carregados na memria e se no houver espao suficiente para todos, o sistema operacional dever fazer a escolha. Essa tomada de deciso chamada de escalonamento de tarefas ou de jobs. Os sistemas em batch multiprogramados forneciam um ambiente no qual os vrios recursos do sistema, como por exemplo a CPU, memria e dispositivos perifricos, eram utilizados de forma eficaz, mas no permitiam a interao do usurio com o sistema de computao. Tempo compartilhado (time sharing) ou multitarefa uma extenso da multiprogramao: a CPU executa vrios jobs alternando entre eles (multiprogramao), mas as trocas ocorrem com tanta frequncia que o usurio pode interagir com seu programa como se tivesse uma mquina exclusiva para ele. Assim se permite a comunicao direta entre o usurio e o sistema. Devido a esse tipo de interao, os sistemas de tempo compartilhado tambm ficaram conhecidos como sistemas on-line ou de tempo real (real time). O usurio passa instrues ao sistema operacional ou a um programa diretamente, usando o teclado ou um mouse, e espera por resultados imediatos. O tempo de resposta deve ser curto. Um sistema operacional de tempo compartilhado permite que muitos usurios compartilhem o computador ao mesmo tempo. Como cada ao ou comando em um sistema de tempo compartilhado tende a ser curto, apenas um pequeno tempo de CPU necessrio para cada usurio. Como o sistema alterna rapidamente de um usurio para outro, cada usurio tem a impresso de que todo o sistema de computao est dedicado a ele, enquanto, na verdade, o computador est sendo compartilhado por muitos usurios.
Escalonamento de tarefas consiste em selecionar uma tarefa, de um conjunto de tarefas aptas para execuo, que ser a prxima a ser executada pela CPU
53
e-Tec Brasil
Nos sistemas time sharing os usurios podem interagir com o programa em execuo, muitas vezes atravs de terminais, tendo a iluso de possuir a mquina dedicada a execuo de seu programa. Porm, o ocorre na verdade, a diviso de tempo de processamento entre os usurios.
e-Tec Brasil
54
Sistemas Operacionais
Outras funes dos sistemas operacionais servem no somente para ajudar o usurio, mas para garantir a operao eficiente do sistema em si, tais como: a) Alocao de recursos - recursos (memria e dispositivos de E/S) devem ser alocados para cada um dos processos que esto em execuo simultnea; b) Contabilizao - preciso manter um registro dos usurios que utilizam os recursos do computador, em que quantidade e quais recursos. Este registro pode ser usado para contabilizao. Estas estatsticas de uso podem ser uma ferramenta valiosa para os pesquisadores que desejam reconfigurar o sistema para melhorar os servios oferecidos; c) Proteo - quando vrios processos independentes forem executados ao mesmo tempo, um processo no poder interferir na rea de outro processo ou do prprio sistema operacional. A proteo visa garantir que todo acesso aos recursos do sistema seja controlado. Estende-se tambm proteo dos dispositivos de E/S externos (modens, placa de rede, etc.) de tentativas de acesso invlidas e ao registro de todas as conexes para deteco de invases.
Resumo
Nesta aula vimos o conceito de interpretador de comandos (shell), qual a sua funcionalidade em um sistema operacional. Aprendemos tambm algumas questes sobre a linguagem de mquina que utilizada pela CPU para executar os programas. Por fim analisamos alguns conceitos importantes sobre interrupes de software e hardware e o funcionamento das operaes de entrada e sada que envolvem tanto a mquina em si quanto o sistema operacional propriamente dito. Aprendemos sobre a figura do kernel em um sistema operacional bem como suas principais funes. Vimos alguns tipos de sistemas operacionais que comearam o histrico de sistemas multiprogramados, a conceituao de jobs e tarefas e a importncia dos discos magnticos para a evoluo de nossos sistemas atuais. Analisamos a estrutura do sistema como um prestador de servios.
Atividades de aprendizagem
1. O kernel possui 4 funes de gerncia que so essenciais para um sistema operacional. Quais so? 2. Por que podemos afirmar que os discos magnticos foram de fundamental importncia para o surgimento da multiprogramao nos sistemas atuais?
55
e-Tec Brasil
3. Quais as principais caractersticas dos primeiros sistemas operacionais? 4. Um bom escalonador de tarefas aquele que consegue equilibrar bem tarefas orientadas a entrada e sada e tarefas orientadas a processamento. Explique esta frase. 5. Quais so as principais caractersticas dos sistemas time sharing? 6. No exerccio passado no incio desta aula foi pedido para voc enumerar as atividades e recursos que voc costuma utilizar em computadores. Relacione com os servios e funes dos sistemas operacionais descritos nesta aula.
e-Tec Brasil
56
Sistemas Operacionais
57
e-Tec Brasil
Quando um programa que esteja no modo usurio tenta executar uma instruo privilegiada, gerado um erro de proteo. O processador sinaliza este erro atravs de uma exceo, o sistema operacional ser chamado e o programa ser finalizado. Voc deve estar se perguntando como ocorrem as transies entre os modos de acesso, ou seja, do modo usurio para o modo kernel e vice-versa. No momento da carga do sistema (boot), o sistema operacional inicia em modo kernel. Aps estar carregado em memria, o sistema operacional permite que os programas de usurios sejam carregados apenas em modo usurio. Chaveamento dos modos: Interrupo - modo usurio Instruo - modo protegido
Se um programa estiver executando em modo usurio e ocorrer qualquer tipo de interrupo (interrupo de hardware, exceo ou interrupo de software), o modo de acesso alterado para o modo kernel. Com isso, a rotina de tratamento executada em modo kernel. Ao final de toda rotina de tratamento, h uma instruo especfica que, antes de retornar para o programa do usurio, altera o modo de acesso para o modo usurio (Figura 5.1).
Programa do Usurio
Sy m ste Ca ll
e-Tec Brasil
58
Sistemas Operacionais
que apenas o sistema operacional tenha acesso a elas. Sempre que uma aplicao necessita de um servio que incorra em risco para o sistema, a solicitao feita atravs de uma system call. Esta altera o modo de acesso do processador para um modo mais privilegiado (modo kernel). Ao trmino da rotina do sistema, o modo de acesso retornado para o modo usurio. Caso um programa tente executar uma instruo privilegiada, sem o processador estar no modo kernel, uma exceo gerada e o programa encerrado. Caso uma aplicao tenha acesso a reas de memria onde est carregado o sistema operacional, um programador mal-intencionado ou um erro de programao poderia gravar nesta rea, violando o sistema. Com o mecanismo de modo de acesso, para uma aplicao escrever numa rea onde resida o sistema operacional o programa deve estar sendo executado no modo kernel.
Aplicao
Certos sistemas permitem que as chamadas ao sistema sejam feitas diretamente de um programa de linguagem de nvel mais alto e, nesse caso, as chamadas normalmente lembram chamadas de subrotinas ou de funes predefinidas. Vrias linguagens como C, C++ e Perl foram definidas para substituir a linguagem assembly na programao de sistemas. Essas linguagens permitem que as chamadas ao sistema sejam feitas diretamente. Por exemplo, as chamadas ao sistema do Unix podem ser feitas diretamente a partir de um programa em C ou em C++. Como um exemplo da forma em que as chamadas de sistema so usadas, consideremos escrever um programa simples para ler dados de um arquivo e copi-los para outro arquivo. Cada passo dado pelo programa praticamente efetua uma chamada ao sistema:
A documentao dos SO costuma disponibilizar estas chamadas com uma srie de funes cujo conjunto chamado de API Application Program Interface. Esta sigla API pode ser usada tambm para designar de uma forma genrica como uma grande aplicao (como um gerenciador de banco de dados) aceita receber solicitaes de outras aplicaes.
59
e-Tec Brasil
a) A primeira entrada que o programa precisar so os nomes dos dois arquivos: de entrada e de sada. Uma abordagem fazer o programa pedir ao usurio os nomes dos dois arquivos. Em sistemas baseados em mouse e cones, um menu de nomes de arquivos geralmente exibido em uma janela (esta lista de diretrios e arquivos fornecida por uma chamada ao SO); o usurio pode usar o mouse para selecionar o nome de origem. Uma janela pode ser aberta para que o nome do arquivo de destino seja especificado; b) Depois que os dois nomes de arquivos tiverem sido obtidos, o programa deve abrir o arquivo de entrada e criar o arquivo de sada. Cada uma dessas operaes requer uma chamada ao sistema; c) Agora que os dois arquivos esto prontos, entramos em um lao que l dados do arquivo de entrada (uma chamada ao sistema) e os grava no arquivo de sada (outra chamada ao sistema). Lembramos que entre essas operaes de leitura e escrita podero ocorrer alguns erros que geraro outras chamadas ao sistema. Por exemplo, a operao de escrita pode encontrar erros, dependendo do dispositivo de sada (falta de espao em disco, fim fsico da fita, etc.); d) Finalmente, depois que o arquivo todo tiver sido copiado, o programa dever fechar os dois arquivos (outra chamada ao sistema), gravar uma mensagem na console (mais uma chamada ao sistema) e finalmente terminar normalmente (a chamada final ao sistema). Como podemos observar, os programas fazem uso pesado do sistema operacional. Entretanto, a maioria dos usurios nunca chega a ver esse nvel de detalhe. As chamadas de sistema ocorrem de diferentes maneiras, dependendo do SO e do computador que est sendo usado. Geralmente, mais informaes so necessrias alm de simplesmente identificar a chamada ao sistema desejada; o tipo e a quantidade exata de informaes variam de acordo com a chamada em questo (os parmetros, que voc j viu ao criar suas funes em programao). Por exemplo, para obter entrada preciso especificar o arquivo ou dispositivo a ser usado como origem e o endereo e o tamanho do buffer (espao) de memria no qual a entrada deve ser lida. As chamadas de sistema podem ser agrupadas basicamente em cinco categorias principais de acesso ou controle: Controle de processo;
e-Tec Brasil
60
Sistemas Operacionais
Comandos de E/S
Comandos de E/S
Um dos objetivos principais das system calls de E/S simplificar a interface entre as aplicaes e os dispositivos. Com isso, elimina-se a necessidade de duplicao de rotinas idnticas nos diversos aplicativos, alm de esconder do programador caractersticas especficas associadas programao de cada dispositivo. So as chamadas de sistema que iro intermediar a solicitao de uso de algum dispositivo feito pelas aplicaes. O programador ao elaborar uma aplicao no precisa fazer nenhuma referncia configurao do dispositivo a ser utilizado. A Figura 5.3 ilustra a comunicao entre a aplicao e os dispositivos de E/S de maneira simplificada.
61
e-Tec Brasil
Aplicao
Aplicao
Hardware
Figura 5.4: Arquitetura monoltica
Fonte: Adaptado de Machado, 2004
e-Tec Brasil
62
Sistemas Operacionais
Um sistema to grande e complexo quanto um sistema operacional moderno deve ser cuidadosamente construdo para que funcione bem e possa ser facilmente modificado. Uma abordagem comum dividir a tarefa em pequenos componentes em vez de ter um sistema monoltico.
Programa
Dispositivo do MS-DOS
A primeira camada pode ser depurada sem preocupao com o resto do sistema, porque, por definio, ela s utiliza o hardware bsico (que
63
e-Tec Brasil
considerado correto) para implementar suas funes. Depois que a primeira camada depurada, pode-se presumir seu funcionamento correto enquanto a segunda camada depurada e assim por diante. Se for encontrado um erro durante a depurao de determinada camada, o erro deve estar nessa camada, porque as camadas inferiores j foram depuradas. Assim, o projeto e a implementao do sistema so simplificados quando o sistema dividido em camadas. A principal dificuldade da abordagem em camadas est na definio adequada das vrias camadas. Como uma camada semente poder usar as camadas que esto em um nvel inferior, preciso haver um planejamento cuidadoso. Um ltimo problema com implementaes em camadas que elas tendem a ser menos eficientes. Por exemplo, quando um programa de usurio executa uma operao de E/S (entrada e sada), ele executa uma chamada de sistema (system call) que desviada para a camada de E/S, que chama a camada de gerncia de memria, que, por sua vez, chama a camada de escalonamento de CPU, que ento passada para o hardware. Em cada camada, os parmetros podem ser modificados, os dados precisam ser transferidos e assim por diante. Cada camada acrescenta novo custo chamada ao sistema; o resultado final uma chamada ao sistema que demora mais do que em um sistema sem camadas. As limitaes da eficincia causaram reaes contra a estrutura em camadas nos ltimos anos. Menos camadas com mais funcionalidades esto sendo projetadas, fornecendo a maior parte das vantagens do cdigo modularizado e evitando difceis problemas da definio e interao em camadas.
e-Tec Brasil
64
Sistemas Operacionais
processos, sendo cada um responsvel por oferecer um conjunto de servios, como servios de arquivo, servios de criao de processos, servios de memria, servios de escalonamento, etc. Se o programa cliente desejar acessar um arquivo, ele dever interagir com o servidor de arquivos. Mas o programa cliente e o servio nunca vo interagir diretamente; em vez disso, eles se comunicam indiretamente trocando mensagens com o microkernel. Sempre que uma aplicao deseja algum servio, ela solicita ao processo responsvel. Neste caso, a aplicao que solicita um servio chamada de cliente, enquanto o processo que responde solicitao chamado de servidor. Um cliente, que pode ser uma aplicao de um usurio ou um outro componente do sistema operacional, solicita um servio enviando uma mensagem. funo do ncleo do sistema realizar a comunicao, ou seja, a troca de mensagens entre o cliente e o servidor. Os benefcios da abordagem do microkernel incluem a facilidade de expandir o sistema operacional. Todos os novos servios so adicionados ao espao de usurio e, consequentemente, no exigem modificao do kernel. Quando o kernel precisa ser modificado, as alteraes tendem a ser menores, porque o microkernel um kernel menor. O microkernel tambm fornece mais segurana e confiabilidade, pois a maior parte dos servios est sendo executada como processos de usurio, em vez de kernel. Se um servio falhar, o resto do sistema operacional permanece inalterado. O kernel coordena a troca de mensagens entre as aplicaes (clientes e servidoras). O Windows NT projetado para executar vrias aplicaes, incluindo Win32 (aplicaes nativas do Windows), OS/2 e POSIX. A estrutura cliente-servidor do Windows NT est representada na Figura 5.6.
Aplicativo Win 32 Servidor Win 32 Aplicativo OS/2 Servidor OS/2 Aplicativo Posix Servidor Posix
Kernel
Figura 5.6: Estrutura do Windows NT 4.0 (ncleo e servidores de aplicaes)
Fonte: Adaptado de Machado, 2004
65
e-Tec Brasil
A utilizao deste modelo permite que os servidores executem em modo usurio, ou seja, no tenham acesso direto a certos componentes do sistema. Apenas o ncleo do sistema, responsvel pela comunicao entre clientes e servidores, executa no modo kernel. Como consequncia, se um erro ocorrer em um servidor, este servidor pode parar, mas o sistema no ficar inteiramente comprometido. Como os servidores se comunicam atravs de trocas de mensagens, no importa se os clientes e servidores esto sendo processados em um sistema com um nico processador, com mltiplos processadores ou ainda em um ambiente de sistema distribudo. Apesar de todas as vantagens deste modelo, sua implementao na prtica muito difcil devido a certas funes dos sistemas operacionais exigirem acesso direto ao hardware, como operaes de entrada e sada. Na realidade, o que implementado mais usualmente uma combinao do modelo de camadas com o modelo cliente-servidor.
Um sistema computacional formado por nveis, onde a camada de nvel mais baixo o hardware. Acima desta camada encontramos o sistema operacional que oferece suporte para as aplicaes. O modelo de mquina virtual, ou virtual machine (VM), cria um nvel intermedirio entre o hardware e o sistema operacional, denominado gerncia de mquinas virtuais. Este nvel cria diversas mquinas virtuais independentes, onde cada uma oferece uma cpia virtual do hardware, incluindo os modos de acesso, interrupes, dispositivos de E/S, etc.
e-Tec Brasil
66
Sistemas Operacionais
a) O mouse movido para posicionar o ponteiro sobre imagens na tela, ou cones, que representam programas, arquivos ou funes; b) Dependendo da localizao do ponteiro do mouse, clicar em um boto do mouse pode chamar um programa, selecionar um arquivo ou diretrio ou abrir um menu que contm comandos; c) O clicar do mouse a chamada a algum programa, arquivo ou pasta e ir utilizar o interpretador da linha de comando (shell). O clique do mouse j , portanto, um comando que dever ser interpretado pelo shell. As instrues de comando lidam com a criao e gerncia de processos, tratamento de E/S, gerncia de armazenamento secundrio, gerncia de memria principal, acesso ao sistema de arquivo e proteo, e redes; enfim, tudo o que a pessoa do usurio precisa para operar seus programas e atender suas necessidades.
Resumo
Nesta aula aprendemos sobre funcionamento da comunicao entre os programas de usurios e o ncleo do sistema, pelas chamadas de sistema. Tambm vimos a forma como o hardware participa da proteo dos diversos tipos de processos e, consequentemente, dos diversos tipos de instrues que iro executar na CPU. Por fim, analisamos algumas formas de se projetar o kernel de um sistema operacional e suas implicaes no desempenho final do sistema.
Atividades de aprendizagem
1. O que so instrues privilegiadas e no-privilegiadas? Qual a relao dessas instrues com os modos de acesso? 2. Como o kernel pode ser protegido pelo mecanismo de modos de acesso? 3. O que um system call e qual a sua importncia para a segurana do sistema? 4. Como as system calls so utilizadas por um programa? 5. Compare as arquiteturas monolticas e de camadas. Quais as vantagens e desvantagens de cada arquitetura? 6. Pesquise comandos disponveis em linguagens de controle de sistemas operacionais. 7. Pesquise software disponveis para utilizao de mquinas virtuais e quais as suas principais caractersticas.
67
e-Tec Brasil
69
e-Tec Brasil
o do processo aps a outra at o processo terminar. Alm disso, a qualquer momento, no mximo uma instruo executada em nome do processo. Assim, embora dois processos possam ser associados com o mesmo programa, eles so considerados duas sequncias de execuo separadas. comum ter um programa que utilize muitos processos para sua execuo. Um processo a unidade de trabalho em um sistema. Em um sistema teremos uma coleo de processos que so desde processos do prprio sistema operacional (aqueles que executam cdigos do SO) at os processos de usurio (aqueles que executam cdigo do usurio). Todos esses processos podem executar concorrentemente, multiplexando a CPU entre eles. O sistema operacional responsvel pelas seguintes atividades em relao gerncia de processos: a) Criar e excluir processos de usurio e de sistema; b) Suspender e retomar processos; c) Fornecer mecanismos para a sincronizao de processos; d) Fornecer mecanismos para a comunicao de processos; e) Fornecer mecanismos para o tratamento de deadlocks.
Multiplexando Multiplexao a diviso de algum servio oferecido entre vrios processos. Voc ver este conceito usado tambm para um canal de comunicao.
Deadlocks Deadlock caracteriza uma situao em que ocorre um impasse, onde dois ou mais processos ficam impedidos de continuar suas execues, ou seja, ficam bloqueados. Um processo aguarda a liberao de um recurso que est sendo utilizado por um outro processo que, por sua vez, aguarda a liberao de outro recurso alocado ou dependente do primeiro processo.
DMA Direct Memory Access (Acesso Direto Memria) uma forma de controle de entradas e sadas sem a utilizao constante do microprocessador, como se houvesse uma comunicao direta entre o dispositivo DMA de E/S e a memria. Isto ocorre, por exemplo, com a placa de vdeo e o HD.
e-Tec Brasil
70
Sistemas Operacionais
Para melhorar a utilizao da CPU e a velocidade da resposta do computador aos seus usurios, preciso manter vrios programas na memria principal. Existem muitos esquemas diferentes de gerncia de memria. A seleo de um esquema de gerncia de memria para um sistema especfico depende de muitos fatores, especialmente do projeto de hardware do sistema. O sistema operacional responsvel pelas seguintes atividades em relao gerncia de memria: a) Manter registro das partes da memria que esto sendo usadas no momento e por qual processo; b) Decidir quais processos devero ser carregados na memria quando houver espao disponvel; c) Alocar e desalocar espao na memria, conforme necessrio. Os sistemas operacionais de tempo compartilhado ou de tempo real so ainda mais complexos porque os usurios podem ir se conectando e solicitando a execuo de programas at um momento em que pode no haver mais memria real disponvel. possvel ainda manter um tempo de resposta razovel utilizando um recurso chamado memria virtual. Quando no h mais memria fsica disponvel, algum processo ocioso naquele momento passado rapidamente para um disco que agora ir servir como extenso da memria principal. Quando chegar a vez de este processo ser atendido, um outro (ou mais de um) processo ocioso descarregado no disco, cedendo lugar para este voltar para a memria principal. Esta movimentao de ida e volta da memria para o disco chamada de paginao ou swap e est ilustrado na Figura 6.1.
71
e-Tec Brasil
Sistema Operacional
1_Swap out
Figura 6.1: Troca de dois processos usando um disco como armazenamento auxiliar (secundrio )
Fonte: Adaptado de Silberschatz, Galvin e Gagne, 2000
Esse recurso bastante interessante e aumenta a capacidade de atendimento aos usurios, pois o tempo de acesso a disco tambm muito menor do que o tempo de resposta dos usurios. Alm desta utilidade, este conceito de memria virtual facilita tambm a vida dos programadores que, basicamente, passam a no se preocupar com a quantidade de memria fsica disponvel; isso passa a ser mais um problema do SO.
e-Tec Brasil
72
Sistemas Operacionais
arquivos atravs dos dispositivos de armazenamento. O conceito de arquivo bastante geral. Um arquivo uma coleo de informaes relacionadas definidas por seu criador. Geralmente os arquivos representam dados nos mais diversos formatos e, s vezes, programas (fonte e objeto). Os arquivos de dados podem ser numricos ou alfanumricos, representando dados escritos ou figuras, msicas e animaes. Alm disso, podem ter forma livre (por exemplo, arquivos de texto) ou podem ter uma formatao rgida (por exemplo, campos fixos como em planilhas ou bancos de dados). Um arquivo consiste em uma sequncia de bits, bytes, linhas ou registros cujos significados so definidos por seus criadores. Uma considerao importante no projeto de um sistema de arquivos, e de todo o sistema operacional, se o sistema dever reconhecer e oferecer suporte a todos os tipos de arquivos. Quando um sistema operacional reconhece o tipo de arquivo, ele poder operar com o arquivo de forma razovel. Uma tcnica comum para implementar os tipos de arquivo incluir o tipo como parte do nome do arquivo. O nome dividido em duas partes um nome e uma extenso, geralmente separada por um caractere de ponto. Veja no Quadro 6.1, os tipos de arquivos mais comuns. Dessa forma, o usurio e o sistema operacional podem saber imediatamente a partir do nome qual o tipo de arquivo em questo.
Quadro 6.1: Tipos de arquivos comuns
Tipo de Arquivo Executvel Objeto Cdigo-fonte Batch Texto Processador de textos Biblioteca Impresso ou visualizao Extenso Comum exe, com, bin, ou nada obj, o c, cc, pas, java, asm, a bat, sh txt, doc wpd, tex, doc, etc lib, a, dll ps, dvi, gif Funo Programa de linguagem de mquina pronto para executar Linguagem de mquina, compilado, sem linkedio Cdigo fonte em vrias linguagens Comandos para o interpretador de comandos Dados textuais, documentos Vrios formatos de processador de textos Bibliotecas de rotinas para programadores Arquivos ASCII ou binrio em um formato para impresso ou visualizao Arquivos correlatos agrupados em um arquivo nico, s vezes compactado, para fins de arquivamento ou armazenamento
Arquivo compactado
O sistema operacional se encarrega de gerenciar as mdias de armazenamento em massa de arquivos, como discos, e os dispositivos que os controlam.
73
e-Tec Brasil
Os arquivos so normalmente organizados em diretrios para facilitar seu uso. E quando vrios usurios tm acesso aos arquivos, pode ser desejvel controlar quem poder acessar os arquivos e de que forma poder faz-lo. O sistema operacional responsvel pelas seguintes atividades em relao gerncia de arquivos: a) Criar e excluir arquivos; b) Criar e excluir diretrios; c) Fornecer suporte para manipular arquivos e diretrios; d) Mapear arquivos no armazenamento secundrio; e) Prover ferramentas de backup. A maioria dos sistemas de computao usa discos (HD) como o principal meio de armazenamento para programas e dados. A maioria dos programas incluindo compiladores, montadores, rotinas de classificao, editores e formatadores, so armazenados em um disco at serem carregados na memria e utilizam o disco como origem e destino de seu processamento.
e-Tec Brasil
74
Sistemas Operacionais
As operaes de E/S devem ser realizadas atravs de chamadas ao sistema (system calls) que por sua vez chamam as rotinas de E/S do ncleo do sistema operacional. Desse modo, possvel que manipulemos arquivos em dispositivos de E/S, sem ter que alterar o cdigo para cada dispositivo. Por exemplo: leitura de um arquivo armazenado em pen drive; no precisamos alterar o cdigo do dispositivo a cada leitura ou a cada tipo de pen drive ou a cada mquina que acessamos. As camadas so divididas em dois grupos, conforme Figura 6.2. O primeiro visualiza os diversos tipos de dispositivos do sistema de um modo nico (a), ou seja, essas camadas trabalham de forma independente da configurao do dispositivo. Oferecem servios de gerenciamento controlado pelo sistema operacional, enquanto o segundo especfico para cada dispositivo, necessitando a instalao e configurao do hardware, identificando e controlando cada dispositivo (b). Observem que grande parte das camadas trabalham de forma independente do dispositivo fsico instalado.
Operaes de E/S
SOFTWARE
Sistemas de Arquivos
Device Drivers
HARDWARE
Controladores
Dispositivos de E/S
Modo Kernel
Subsistema de E/S
Processo
Modo Usurio
75
e-Tec Brasil
Resumo
Vimos nesta aula as principais funes de gerncia do sistema operacional. Aprendemos alguns conceitos importantes sobre processos, memria primria e secundria, e dispositivos. Analisamos o funcionamento e a estrutura bsica dos subsistemas principais de um sistema operacional. Podemos perceber o quo complexo implementar um sistema operacional enquanto um software dividido em camadas que interagem entre si.
Atividades de aprendizagem
1. Quais recursos so necessrios para a criao de um processo? 2. Qual a diferena bsica entre um processo e um programa? 3. Por que, muitas vezes, quebrar um programa em mais de um processo pode ser vantajoso? 4. Quais as principais atividades da gerncia de processos? 5. Pesquise sobre plataformas multicore e como elas podem colaborar com o desempenho de um computador em termos de processamento. 6. Pesquise sobre a transferncia de dados via DMA. 7. O que vem a ser a tcnica de Swapping? 8. Qual a diferena bsica entre arquivos, diretrios e parties? 9. Associe a modularidade de um subsistema de Entrada e Sada com os Drivers de Dispositivos.
e-Tec Brasil
76
Sistemas Operacionais
Referncias
DEITEL, H.M. Sistemas Operacionais. 3.ed. Traduo de Arlete Simille Marques. So Paulo: Pearson Prentice Hall, 2005. MACHADO, Francis Berenger. Arquitetura de Sistemas Operacionais. Rio de Janeiro: Editora LTC, 2004. SILBERSCHATZ, A. & GAGNE, G. & GALVIN, P. B. Fundamentos de Sistemas Operacionais. Traduo de Adriana Cashin Rieche. Rio de Janeiro, 2004. TANENBAUM, A.S. Sistemas Operacionais Modernos. 2.ed. Traduo de Ronaldo A. L Gonalves. So Paulo, 2009.
77
e-Tec Brasil
Currculo do professor-autor
Mestre em Informtica e Cientista da Computao pela UFES. Professor do Instituto Federal do Esprito Santo desde 2009, tendo ministrado disciplinas de sistemas operacionais e redes para os cursos Tcnico em Informtica e Tecnlogo em Redes de Computadores, presencial e distncia. Experincia de 7 anos em docncia e 10 anos na rea de informtica em geral (programao de sistemas, coordenao de equipes e gerncia de projetos).
ISBN: