Você está na página 1de 16

UFBA - DCC - MAT045

Processamento de Dados
1

O Software
Teremos como objetivo, neste captulo os seguinte tpicos: 1. 2. 3. - Definir dentro da computao, o que software e mostrar qual o seu papel dentro de um sistema de microcomputador; - Distinguir entre software aplicativo e software bsico; - dentro do software aplicativo, discutir os principais tipos de programas aplicativos para microcomputadores (processadores de texto, geradores e gerenciadores de bancos de dados, planilhas eletrnicas, programas de apoio administrao, geradores de grficos, programas educacionais, etc.); - Fazer meno, resumidamente, das principais reas em que microcomputadores esto sendo utilizados, tanto no setor profissional como no pessoal e domstico; - Dentro de software bsico, definir o que linguagem de programao (linguagem de mquina, linguagem "Assembly", linguagem de alto nvel), programa tradutor ("Assembler", compilador, interpretador), programa fonte, programa objeto; - ainda dentro de software bsico, definir o que programa utilitrio e discutir alguns utilitrios bsicos: sistema operacional, editor, monitor, depurador, carregador.

4. 5. 6.

Conceitos
Sabemos que o hardware s uma das partes de um sistema de microcomputador. inteiramente possvel que o hardware de um microcomputador esteja em perfeito estado de funcionamento mas que seja totalmente intil. Por qu? Porque o hardware s desempenha uma funo til quando est ativado por PROGRAMAS. Um programa, j observamos, uma seqncia ordenada de instrues que determinam ao microcomputador que funes especficas ele deve realizar. Estas instrues normalmente podem ser digitadas ou programadas em linguagem humana. Porm o computador internamente trabalhar sempre em formato binrio ou em cdigos de mquina. O conjunto dos programas que um microcomputador usa denominado, coletivamente, de SOFTWARE. Software, portanto, um termo geral, usado para se referir a um conjunto de programas, ou mesmo a um programa, individualmente. Juntos, o hardware e o software formam um sistema funcional de microcomputadores. bom notar que o termo software por vezes, tambm utilizado de modo a incluir itens tais como instrues e procedimentos para a utilizao dos programas, documentao, etc. Nesse sentido, qualquer material impresso necessrio para que o operador ou usurio faa pleno uso dos programas considerado como software. Embora esse emprego do termo seja compreensvel e at justificvel, vamos estar nos referindo sempre aos programas, propriamente ditos, quando falarmos em software. Quando quisermos nos referir ao material de apoio, instrues, procedimentos, documentao, etc., usaremos linguagem que deixe claro sobre o que estamos falando. O software existe em uma variedade muito grande de formas. Qualquer que seja sua forma, porm, para que um programa possa ter usado, necessrio que ele esteja na memria do microcomputador. S ento pode ser executado. O software, em sua maior parte, fornecido em alguma forma de armazenamento externo ao microcomputador, muito embora uma pequena parcela dele possa estar permanentemente armazenada na memria ROM do microcomputador. Mas a maior parte do software que voc dever utilizar estar disponvel apenas em meios de armazenamento externos ao microcomputador, principalmente em fitas e discos magnticos. Esse software ter que ser carregado na memria RAM do microcomputador. O software , na verdade, aquilo que propicia a interao entre o microcomputador e o usurio. J dissemos, ao discutir perifricos, que so eles que possibilitam ao usurio comunicar-se com o microcomputador. Mas os perifricos so apenas o lado fsico dessa comunicao. necessrio, tambm, haver programas que permitam que o usurio, atravs de perifrico, se comunique com o microcomputador. , portanto, o software que propicia essa interao entre o usurio e o microcomputador. Um microcomputador sem software como um aparelho de som sem fitas ou discos: pode ser bonito, mas no interage com voc, nem faz algo de til.

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
2

muito importante entender esse fato, e por isso vamos insistir um pouco no assunto. Quando um usurio interage ou "conversa" com um microcomputador, ele no est interagindo com o hardware: sua interao se d, isto sim, com um PROGRAMA, preparado por algum, o programador, entre cujos objetivos, ao desenvolver o programa, muito provavelmente estava tornar a comunicao entre o usurio e o microcomputador fcil e at "amigvel" ou "amistosa" freqentemente se diz de certos programas que so "amigos do usurio" ("userfriendly"), exatamente porque permitem que a interao entre este e o microcomputador se d de modo fcil, sem maiores complicaes. Voc j deve ter visto, por exemplo, programas que oferecem um "menu" ao usurio. Um menu uma srie de opes, um cardpio. O usurio pode escolher, em casos assim, entre opes como: criar um arquivo, pesquisar um arquivo j existente, acrescentar itens a um arquivo, modificar os itens de um arquivo, imprimir o arquivo (em parte ou totalmente), etc. Conforme a opo que ele escolher, geralmente apertando apenas uma tecla no teclado (ou, hoje em dia, tocando o lugar apropriado na tela com o dedo!), o microcomputador executar uma determinada rotina, ou mesmo um determinado programa s vezes, necessrio que o programa que exiba o menu carregue a rotina ou o programa correspondente opo feita de um perifrico, como, por exemplo, de uma unidade de discos. Essa interao entre o usurio e o microcomputador ocorre porque quem escreveu o programa a possibilitou. Um programa interativo, como, por exemplo, um programa que usa menus, , via de regra, considerado "amigo do usurio". O software de um microcomputador pode ser classificado em duas categorias especficas: SOFTWARE APLICATIVO e SOFTWARE BSICO. Todos os microcomputadores de mltiplos propsitos usam esses dois tipos de software.

SOFTWARE BSICO
Consiste dos programas (incluindo as linguagens) que so, via de regra, fornecidos pelo prprio fabricante do microcomputador (na forma de chips ou cartuchos de ROM, discos ou fitas magnticos), e que permitem que o usurio se comunique com o microcomputador com maior facilidade e explore os seus recursos com eficincia, vindo, inclusive, com esse apoio, a desenvolver seus prprios programas aplicativos. O software bsico que facilita a utilizao do microcomputador e a torna mais eficaz e conveniente, mais rpida e eficiente. O software bsico especialmente til no desenvolvimento de programas aplicativos. Em funo disso, o software bsico freqentemente denominado de software para o desenvolvimento de programas, podendo ser adquirido at de terceiros, no sendo pois, necessariamente, fornecido pelo fabricante do microcomputador. Apesar disso, a maior parte dos usurios ou no tem vontade ou no tem condies (ou ambas as coisas) de

Software Aplicativos
O software aplicativo o software usado pelos usurios para execuo de alguma tarefa tais como editar textos, elaborar planilhas, fazer calculos numricos ou cientficos, etc. H vrios tipos de softwares aplicativos. Discriminamos alguns abaixo:

Processadores de Texto O processador de texto (s vezes chamado de processador de palavra, seguindo o ingls "word processor", ou ento de editor de textos) um programa que permite ao usurio utilizar o microcomputador como se ele fosse uma mquina de escrever s que com incrveis vantagens, pois doutra forma talvez no se justificasse essa aplicao. Um processador de texto deve, via de regra, ser utilizado quando se tem uma impressora acoplada ao microcomputador, para imprimir o texto, pois caso contrrio voc no ter uma cpia em papel (normalmente chamada de "hard copy"). Muitos escritores, porm, hoje em dia, em pases onde a edio impresso de artigos e livros j est totalmente computadorizada, chegam at a dispensar a cpia em papel, pois redigem seus textos e os transmitem por telefone diretamente ao computador de quem vai edit-los e imprimi-los, de

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
3

modo que os textos s chegam ao papel quando esto sendo impressos! Mas normalmente uma impressora imprescindvel.

Gerenciadores de Bancos de Dados Um banco de dados nada mais do que um arquivo eletrnico extremamente verstil e flexvel. Sua funo fundamental a mesma de um arquivo no eletrnico: armazenar e organizar informaes. Na verdade voc no precisa de um complexo programa gerador e gerenciador de bancos de dados para armazenar e organizar informaes: voc pode fazer isso atravs de programas relativamente simples, e as informaes que voc tem no so muitas, nem muito complexas. Programas que geram arquivos de endereos, por exemplo, so geralmente muito simples. Eles permitem que voc v gerando uma srie de endereos, que vo sendo armazenados na memria do microcomputador, na ordem em que vo sendo introduzidos. Subseqentemente, quando voc precisa recuperar essas informaes, pode determinar que a lista de endereos seja organizada em ordem alfabtica, pelo ltimo ou pelo primeiro nome (supondo-se que tenha havido entradas diferentes para cada um desses itens), pode pedir que apenas os endereos de uma certa rua, ou de uma certa cidade, ou de um certo estado lhe sejam fornecidos, pode pedir que a lista esteja ordenada em ordem crescente, segundo o Cdigo de Endereamento Postal (CEP), ou segundo o cdigo de Discagem Direta Distncia (DDD) do telefone, etc. Voc pode tambm determinar que as informaes sejam "cruzadas". Isso quer dizer que voc pode pedir, por exemplo, os nomes de todas as pessoas que moram em Campinas e que tm telefone com prefixo 39. Nesse caso voc "cruzou" a informao relativa cidade com a relativa ao nmero de telefone. Alguns programas estamos ainda falando de programas simples, e no de complexos gerenciadores de bancos de dados permitem que cada pessoa cujo endereo est ma lista seja "rotulada" com alguns identificadores. Voc pode, por exemplo, identificar algumas pessoas como amigos pessoais, outras como colegas profissionais, outras como parentes, etc. Dessa maneira, se voc quiser mandar um carto de Natal a todos os seus colegas profissionais, voc pode ordenar ao programa que imprima uma lista (ou etiquetas de endereamento) apenas para aqueles nomes da lista que tenham esse identificador. Temos certeza de que voc j est imaginando mais uma srie de utilizaes para um programa como esse.

Planilhas Eletrnicas um dos softwares aplicativos mais utilizados nos dias de hoje pela sua versatilidade e possibilidades de adaptao aos mais diversos tipos de negcios e aplicaes. Planilhas eletrnicas so programas destinados manipulao de dados numricos. Uma planilha basicamente uma matriz, composta de x linhas (s vezes identificadas por nmeros) e y colunas (s vezes identificadas por letras do alfabeto). A conjuno de uma linha e uma coluna forma o que se convencionou chamar de uma "clula" da planilha. Uma planilha pode ter vrios tamanhos: digamos que a nossa tenha 40 linhas por 50 colunas (ou seja, 40*50, ou 2.000 clulas). A maioria das planilhas, porm, bem maior: uma planilha de 254 linhas por 64 colunas, ou seja, de 16.256 clulas, no algo incomum! O tamanho de uma clula pode ser variado: normalmente uma clula aparece, digamos, com nove espaos. Estes, porm, podem ser aumentados ou diminudos. Obviamente, a tela de um microcomputador s pode mostrar umas 20 linhas (ou at menos, dependendo do tamanho da tela) e umas poucas colunas o nmero exato depende do tamanho da clula (e, naturalmente, do tamanho da tela de seu microcomputador). Um vdeo de 80 colunas, por exemplo, pode exibir at oito colunas de nove espaos (os espaos restantes devero conter os nmeros das linhas). O importante em uma planilha eletrnica que voc pode definir que algumas clulas contero informaes alfanumricas ("rtulos"), outras contero dados, outras frmulas, e assim por diante. Dessa maneira, voc facilmente pode construir algo como uma tabela de despesas gerais, tabela de folha de pagamento, etc.

Outros Tipos de Aplicaes Existem diversos outros tipos de aplicaes tais como, jogos, aplicaes cientficas, controles de estoque, folhas de pagamento.

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
4

Cada usurio pode tambm criar seu prprio aplicativo. Este um dos fatos que torna o computador uma das ferramentas mais versteis j criadas pelo homem.

reas de Aplicao
O que torna o computador uma das ferramentas mais versteis de uso humano justamente o software. Um mesmo hardware pode rodar milhares de tipos de aplicaes diferentes. Estas aplicaes dependem quase que exclusivamente do software. Com isto, um mesmo computador pode ter diversas aplicaes.

Aplicao acadmica
NO meio acadmico o software desempenha um papel importantssimo em diversas reas, dentre as quais podemos destacar: 1. 2. 3. Administrao acadmica Pesquisa cientfica Treinamento de alunos e pesquisadores

Aplicao profissional
Na rea profissional, os microcomputadores tm sido usados, principalmente, em setores administrativos, tcnicos, cientficos, e educacionais.

Aplicaes administrativas A utilizao de microcomputadores no setor administrativo dispensa maiores comentrios. Grande parte dos exemplos dados no presente captulo ilustra a aplicao de microcomputadores nesse setor. Outros exemplos, aqui no discutidos em detalhe, mas apenas mencionados, so por demais conhecidos para justificar uma descrio mais pormenorizada.

Aplicaes tcnicas/industriais As aplicaes de softwares e computadores na rea tcnica e industrial so vastssimas. Destacamos 1. 2. 3. 4. Uso em medicina com equipamentos sofisticadssimos Uso em robs programados para tarefas repetitivas Uso em transmisso de dados e controles de centrais telefnicas Aplicaes CAD em industrias

Setor Cientfico Os computadores, desde sua criao, sempre desempenha papel fundamental na pesquisa cientfica e tecnolgica. H at bem pouco tempo, universidades e institutos de pesquisa e desenvolvimento s possuam computadores de maior porte, para a realizao dos complexos clculos matemticos exigidos pela atividade cientfica. Hoje em dia, microcomputadores, acoplados ou no a equipamentos de maior porte, j so extremamente comuns em laboratrios de pesquisa e desenvolvimento. Muitos dos clculos exigidos no podem ser realizados, pelo menos com a rapidez necessria, em microcomputadores. Mas muita coisa j est sendo transferida para eles.

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
5

rea Pessoal Na rea pessoal, os microcomputadores esto hoje sendo usados tambm em atividades educacionais, de lazer, e de administrao domstica e pessoal. Em geral, os programas destinados rea de educao so baratos, muitos deles disponveis no domnio pblico e em verses compatveis com virtualmente todos os microcomputadores pessoais. Podem, portanto, ser utilizados em casa. Os jogos educacionais se multiplicam, embora sua qualidade pedaggica freqentemente seja discutvel. Pesquisas tm demonstrado que grande parte das pessoas que adquirem um microcomputador o fazem pensando na educao dos filhos. A preocupao com a educao se manifesta no s na utilizao do microcomputador para o aprendizado de contedos curriculares tradicionais, como matemtica, fsica, qumica, biologia, histria e geografia, etc., mas, hoje em dia, em seu uso com vistas ao domnio do prprio equipamento. Diante do fato de nossa sociedade est se tornando cada vez mais informatizada, muitos pais se preocupam em possibilitar aos filhos, desde cedo, conhecimento, manejo, e domnio do microcomputador. Adolescentes e jovens tm se mostrado programadores dos melhores certamente dos mais criativos. Alguns dos programas mais interessantes existentes hoje no mercado, como sofisticadssimos e lindos programas de simulao de vo, foram escritos por pessoas que muitos adultos considerariam como meras crianas, mas que tiveram experincia com computadores desde muito cedo. A outra principal razo para se adquirir um microcomputador pessoal ou domstico o lazer. Jogos esto indiscutivelmente entre os programas mais vendidos para microcomputadores pessoais. profissional. E dentro do lar, ser mais uma, talvez a mais importante, utilidade domstica.

Linguagens de programacao
Em um sentido estrito dos termos "software" e "linguagem", as linguagens de programao, enquanto tal, no so, propriamente, software: elas so, como veremos, um conjunto de vocabulrio e de regras de sintaxe. O software, propriamente dito, o programa tradutor, que converte o programa escrito em linguagem de programao em um programa, em linguagem de mquina, executvel pelo computador. Mas tornou-se bastante comum usar o termo "linguagem" para se referir ao conjunto maior composto pela linguagem de programao, propriamente dita, ou seja, o vocabulrio e as regras, e o programa tradutor. Na verdade, o vocabulrio e as regras de sintaxe so a documentao que nos permite escrever um programa "traduzvel" pelo tradutor. Por isso, vamos continuar falando em linguagens como sendo software bsico quando, em um sentido mais exato dos termos, teramos de dizer que os tradutores que so parte do software bsico. possvel escrever um programa usando apenas os dgitos 0 e 1, ligando ou desligando os vrios bits que compem as posies de memria de um computador. Um programa escrito dessa maneira chamado de programa em "linguagem de mquina" que a nica linguagem que o computador diretamente entende. Antes de serem inventadas as linguagens de programao, propriamente ditas, a nica maneira de programar o computador era atravs de linguagem de mquina ligando ou desligando, por exemplo, no painel do computador, alguns interruptores que correspondiam aos bits de cada byte da memria. O problema principal com linguagem de mquina que, muito embora ela seja a linguagem natural dos computadores, ela no nada natural para a maioria de ns, mortais.. Antes que outros tipos de linguagem fossem inventados, os programadores no tinham outro recurso a no ser se "binarizar": pensar em termos de 0s e 1s. Mas, felizmente, outras linguagens de comunicao com a mquina foram inventadas. Essas linguagens so normalmente classificadas em linguagens de baixo nvel e linguagens de alto nvel. Linguagem de baixo nvel, aqui, naturalmente, nada tem que ver com a linguagem que a gente freqentemente ouve em certos ambientes... Linguagens de baixo nvel so assim chamadas porque seu "nvel", por assim dizer, est bem mais prximo da linguagem de mquina, que seria o nvel mais baixo possvel de interao com o computador. Linguagens de alto nvel, por outro lado, so linguagens bem mais prximas da linguagem

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
6

natural de quem as inventou que o ingls, na maioria das vezes e que permitem, portanto, um nvel mais "normal" de comunicao com o computador. A linguagem de mais alto nvel possvel para interao com o computador seria, naturalmente, a linguagem natural, falada no dia-a dia. Nenhum computador a entende, pelo menos por enquanto. A principal linguagem de programao considerada como de baixo nvel uma linguagem chamada Assembly. O termo "assembly", em ingls, quer dizer "montagem", em portugus "linha de montagem" em ingls "assembly line", por exemplo. Essa linguagem permite que o programador, ao invs de usar 0s e 1s para escrever seus programas, use certos smbolos que so representaes mnemnicas das instrues que ele quer dar ao microcomputador. Por exemplo, o programador pode dar uma instruo na forma LDA, que significa Carregue o Acumulador. (Essa instruo mnemnica porque LDA representa "LoaD Accumulator" em ingls). bem mais fcil lidar com smbolos assim do que com os 0s e 1s, no mesmo? Mas como que o computador entende que voc quer carregar o acumulador quando voc diz LDA para ele? A linguagem natural do computador no a binria? verdade. Para que ele possa entender uma instruo como LDA necessrio que haja um programa "tradutor", cuja funo traduzir em linguagem binrias as instrues simblicas usadas em Assembly. No caso, o tradutor se chama Assembler. Um Assembler, portanto, um programa, este sim em linguagem de mquina, que traduz as instrues simblicas, mnemnicas, da linguagem Assembly para cdigos binrios que o computador pode entender e executar. Como a linguagem Assembly muito prxima da linguagem de mquina, propriamente dita, h vrias verses dela, correspondendo, cada uma dessas verses, a um tipo de microprocessador. Apesar disso, h, naturalmente, princpios gerais que todas as verses da linguagem Assembly compartilham. Assim sendo, comum se fazer referncia linguagem Assembly para o 6502, para o Z80, para o 8080, etc. Apesar de Assembly j ser um avano significativo, no sentido de tornar as coisas mais fceis para os programadores profissionais, as perspectivas, para os usurios em geral, que so, no mais das vezes e na melhor das hipteses, programadores leigos, s comearam a melhorar, realmente, com o surgimento das linguagens de alto nvel, bem mais prximas de uma linguagem natural, como o caso do ingls. Voc j deve ter lido ou ouvido que existem inmeras linguagens de programao de alto nvel, com vocabulrios e regras de sintaxe diferentes, e que nem todos os computadores falam a mesma linguagem. Algumas linguagens foram desenhadas para computadores especficos e no so entendidas por outros. Alm disso, algumas linguagens foram elaboradas para solucionar alguns tipos especficos de problemas, como, por exemplo, resolver complexas equaes matemticas, imprimir relatrios com certa facilidade, fazer grficos etc. Assim sendo, uma linguagem como FORTRAN - "Formula Translator" - se presta muito mais resoluo dos complicados clculos matemticos dos cientistas, e uma linguagem como COBOL - "Common Business-Oriented Language" - impresso de relatrios comerciais informativos, elegantes, fceis de ler. bom que se diga, desde j, que, da mesma forma que uma linguagem natural apresenta variaes, ou dialetos, quando falada em diferentes pases, ou em diferentes regies do mesmo pas, uma linguagem de alto nvel, como Da mesma forma que a linguagem Assembly precisa de um programa tradutor, o Assembler, para que o programa escrito em Assembly seja transformado em linguagem de mquina e possa ser executado pelo computador, as linguagens de alto nvel, com maior razo, tambm necessitam de programas tradutores. H, basicamente, dois tipos de tradutores para linguagens de alto nvel: Compiladores e Interpretadores. Cada um desses tipos de tradutores tem suas tem suas vantagens e desvantagens. Mas antes de ver as vantagens e desvantagens de cada um desses dois tipos de tradutores, vamos caracterizar o que os diferencia um do outro. Um compilador um programa, em linguagem de mquina, que, assim que voc escreve um programa aplicativo, em linguagem de alto nvel, chamado e traduz o seu aplicativo para linguagem de mquina, produzindo, no processo, um programa diferente (embora, naturalmente, faa a mesma coisa). O programa que voc escreveu, ou copiou de uma revista ou de um livro, e que est em linguagem de alto nvel, normalmente chamado de PROGRAMA FONTE. Uma vez compilado, isto , traduzido, pelo compilador, para linguagem de mquina, cria-se um PROGRAMA OBJETO (ou um Programa em Cdigo Objeto, como preferem alguns). Via de regra, ambos os programas, ou, se voc prefere, ambas as verses, devem ser gravados em disco ou fita. O fato mais importante a ser lembrado sobre o compilador que, quando ele chamado a compilar um programa fonte, ele vai lendo e traduzindo as instrues, sem execut-las. Se encontra algum erro de grafia ou de sintaxe anota, e (freqentemente) interrompe a compilao. Voc tm, da, que localizar o erro, corrigi-lo, e comear a compilao desde o incio de novo. Somente quando o compilador no encontra nenhum erro nem

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
7

de grafia nem de sintaxe que o programa definitivamente compilado. Uma vez compilado, pode ento ser executado. No caso de um interpretador, o processo diferente. O interpretador no pega o programa escrito em linguagem de alto nvel e o traduz como um todo, produzindo um cdigo objeto. Quando uma linguagem interpretada, e no compilada, o programa que voc escreveu ou copiou vai sendo traduzido e executado linha por linha. O interpretador vai analisando instruo por instruo, traduzindo para linguagem de mquina, e executando. Se ele encontra algum erro, acusa o erro imediatamente, informando-lhe o nmero da linha em que est o erro. Voc pode corrigir o erro, e, com alguns interpretadores, continuar a execuo do programa a partir dali, de maneira bastante simples, sem necessidade de comear tudo de novo. Por a voc j pode ver onde esto as vantagens e as desvantagens de cada um desses tradutores. Depois de o programa estar sem erros, o compilador traduz tudo, uma vez s, produzindo uma verso compilada do programa, em linguagem de mquina. Estando em linguagem de mquina, essa verso executada, agora, pelo microcomputador, com muito maior rapidez, porque no necessrio que seja feita uma traduo a cada vez que o programa executado. O interpretador, por seu lado, no produzindo uma verso traduzida do programa, tem que, a cada vez que o programa executado, traduzir tudo de novo, linha a linha, fazendo com que a execuo seja mais demorada. Logo, se voc est interessado em um programa que execute rapidamente, e que no precisa ser alterado freqentemente, use uma linguagem compilada, se for possvel. No se esquea, porm, de que, cada vez que voc quiser alterar o programa, ter que recompil-lo. Se voc, porm, est mais interessado em escrever programas do que em utiliz-los em larga escala, um interpretador muito mais conveniente. Voc escreve uma linha, ou um conjunto de linhas, executa, para ver se tudo est funcionando como era esperado, corrige, caso isso no se d, introduz alteraes de detalhe, embelezamento, etc., sem ter que recompilar o programa a cada uma dessas pequenas alteraes. Isso torna o desenvolvimento de programas muito mais fcil e eficiente, e muito mais interativo. De imediato voc sabe se cometeu um erro de grafia ou de sintaxe, sem ter que esperar pela compilao. Por outro lado, o seu programa no vai ser executado to rapidamente. O ideal, para quem gosta de escrever programas e de v-los sendo executados rapidamente, ter um interpretador para a fase de desenvolvimento, e um compilador para gerar um cdigo objeto do programa, depois de ele estar pronto e depurado de erros. Dessa maneira, possvel ter o melhor dos dois mundos - mas gasta-se mais, pois sero necessrios dois tradutores! J fizemos referncia a FORTRAN e a COBOL. Uma outra linguagem muito usada em microcomputadores Pascal. Pascal uma linguagem excelente para desenvolvimento de programas e muito utilizada no ensino de programao, principalmente em meios universitrios. Outra linguagem que se torna cada vez mais popular, na rea educacional, LOGO, que muito utilizada para ensinar programao a crianas, em virtude, entre outras coisas, de sua simplicidade e de sua capacidade grfica. H muitas outras linguagens, a que no faremos sequer referncia aqui. No captulo seguinte, onde daremos algumas noes bsicas sobre Programao, voc ter alguma idia sobre como escrever um programa usando uma linguagem de alto nvel.

O Software Dentro do computador Dentro do computador rodam diversos softwares em diversas camadas, ou seja, para que uma aplicao FORTRAN rode sem problemas num computador, precisamos antes ter um compilador para interpretar a linguagem, depois precisamos de um sistema operacional, porm, para que o sistema operacional rode sem problemas necessrio que o hardware venha com um programa de instrues bsicas do mesmo com suas configuraes. Assim podemos ter as seguintes camadas de software num mesmo hardware: 0. 1. 2. 3. 4. 5. LGICA digital Microprogramao ou firmware Linguagem de mquina Montagens, compiladores e imterpretadores Linguagens de programao de alto nvel Aplicativos do usurio

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
8

Lgica digital o nvel de programao mais bsico existente, praticamente eletrnico.

Microprogramao Normalmente um programa que j gravado de fbrica na memria ROM do computador e responsvel por inmeras funes bsicas no computador. Linguagem de mquina a linguagem em cdigos binrios que a mquina entende para funcionar.

Linguagem de Montagem O sistema operacional, apesar de facilitar muito a forma de tratamento do hardware, ainda est impregnado de instrues no muito amistosas para o ser humano. E at difcil imaginar, por exemplo, quantos passos tm que ser dados no hardware para colocar um caractere ou o ponteiro do mouse na tela, e mais trabalhoso ainda buscar, no disco rgido, os bytes necessrios execuo de um programa. Vrias etapas tm que ser cumpridas para que essas operaes, aparentemente muito simples, possam ser executadas com sucesso; desnecessrio dizer que nessa fase o sistema operacional muito exigido. Aps vrias pesquisas, chegou-se concluso de que seria interessante colocar mais um nvel no computador: o nvel da linguagem de montagem (Assembly Language), que poderamos chamar de linguagem de mquina. Nessa linguagem os comandos numricos existentes no nvel de sistema operacional so traduzidos para termos mais fceis de serem entendidos pelo ser humano, porm ainda muito pouco amigveis. Observe abaixo um programa em linguagem de montagem e o equivalente numrico. Linguagem Montagem Carregar Carregar Adicionar Armazenar de Linguagem de Interpretao Mquina A,5 28 05 Carregue o registrador A com o nmero 5 B,5 29 07 Carregue o registrador B com o nmero 5 A, B 3B Some A e B e coloque em A A,100 49 100 Armazene o valor de A no endereo 100

Enquadrados nesse nvel, esto os Compiladores, Interpretadores e Link-Editores, que sero vistos mais adiante. Linguagens Orientadas para a resoluo de problemas As linguagens orientadas para a resoluo de problemas so as mais utilizadas atualmente. Voc j deve ter ouvido falar em Visual Basic, Delphi, C++, Java e Pascal; existem, alm dessas, dezenas de outras linguagens de programao no mercado, cada uma com suas peculiaridades e seus comandos prprios, voltados para situaes especficas de trabalho em que uma determinada linguagem pode ser mais til do que as outras. As pessoas que trabalham com essas linguagens so chamadas de programadores de aplicao, ou simplesmente programadores. Um bom programador, desde que se mantenha atualizado, pode desenvolver aplicaes extremamente sofisticadas utilizando essas linguagens de programao, at porque cada nova verso lanada no mercado traz novidades e aperfeioamentos que podem aumentar a produtividade do programador. Aplicaes do Usurio O ltimo nvel das nossas mquinas virtuais corresponde s aplicaes geradas pelos programadores e utilizadas pelos usurios dos computadores, que nem precisam ter conhecimentos profundos de informtica para tanto. Alis, a maioria se esquece at da existncia do sistema operacional, j que o usurio no tem necessidade de interagir com ele. Muitos usurios nem desconfiam de sua existncia, pois os SO ganharam uma Inteerface

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
9

Grfica (GUI) e colorida, e atualmente, com a utilizao de sons, vdeos e CD-ROM, as aplicaes ficaram cada vez mais fceis de utilizar e entender. Exemplos de programas nesse nvel so os processadores de texto, planilhas, editores grficos, jogos, enciclopdias eletrnicas e programas destinados ao ensino de assuntos especficos, como idiomas, matemtica, biologia, etc. Outros programas tambm muito utilizados so aqueles desenvolvidos dentro de uma empresa com o objetivo de controlar suas atividades principais - por exemplo, sistemas de folha de pagamento, controles de estoque ou de vdeo locadoras, automao de caixas de supermercado, mala direta, etc. Outro tipo de aplicao que encontramos atualmente e que no exige vastos conhecimentos de informtica o uso da Internet. A linguagem dos programas de acesso rede tornou-se bastante amigvel, e cada vez mais pessoas que nem imaginavam um dia usar um computador sentem-se vontade, agora, utilizando-o a fim de acessar a Internet. Resumindo... Podemos resumir o que vimos at agora dentro de um computador na seguinte tabela: Nvel 6 5 4 3 2 1 0 O que existe Jogos Processadores de Banco de Planilhas Texto Dados Eletrnicas Sistema Bancrio Categorias Aplicaes Usurio Programas Sistema do

Linguagens de Programao de Alto Nvel Montadores, Compiladores e Interpretadores Sistema Operacional Linguagem de Mquina Microprogramao Lgica Digital

do

Hardware

As mquinas virtuais: seus diversos nveis at as aplicaes do usurio. Como podemos ver, as linguagens de alto nvel so as que mais se aproximam de nossa prpria linguagem, enquanto as linguagens de baixo nvel esto mais prximas do computador, ou seja, do hardware. Para programar em linguagens de alto nvel no precisamos saber com muitos detalhes o que existe nas camadas dos nveis inferiores - processo conhecido, na Cincia da Computao e em outras reas, como abstrao. Outros exemplos de abstrao so tirados da nossa vida diria: Para usar a televiso voc no precisa conhecer com detalhes o funcionamento interno do aparelho de TV, Para dirigir um carro no necessrio saber como funcionam suas partes mecnica e eltrica. Por outro lado, h computadores cujo projeto no inclui a camada de Microprogramao - so os chamados computadores RISC (Reduced Instruction Set Computer, ou Computador com Conjunto de Instrues Reduzido). Nesses computadores o tempo mdio de processamento bastante reduzido; consequentemente, mais fcil otimiz-los para que funcionem em altas velocidades (existem processadores que atingem velocidades de processamento superiores a 500 MHz). Computadores com processadores desse tipo so geralmente utilizados em ambientes que exigem um poder de processamento maior do que aquele encontrado em um computador pessoal. Exemplos de processadores RISC: Alpha (Digital) e PowerPC (consrcio entre Apple, IBM e Motorola). Os demais computadores, ou seja, aqueles cujo projeto inclui a camada de Microprogramao, so conhecidos como CISC (Complex Instruction Set Computer, isto , Computador com Conjunto de Instrues Complexo), e contm conjuntos de instrues grandes e complexos. Geralmente os processadores CISC so usados em computadores pessoais, j que seu custo bem inferior ao de um RISC. Exemplos de processadores CISC: 486, Pentium, Pentium MMX, Pentium Pro, Pentium II MMX (Intel), Pentium III.

Programa Compilado ou Interpretado Um programa escrito numa linguagem de programao precisa ser traduzido para o formato binrio, executvel pelo computador. O processo de traduo pode ser realizado por dois tipos de tradutores: os compiladores ou os interpretadores. Ambos tm a mesma funo, mas diferem quanto ao modo de realizar o processo de traduo.

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
10

Compiladores e Interpretadores so programas especiais que lem o programa escrito pelo programador em linguagem simblica de alto nvel denominado programa-fonte e o traduzem para o formato binrio, chamado de programa-objeto. O compilador gera um programa final e executvel pelo computador chamado de programa-executvel. Num programa interpretado, cada instruo em linguagem de alto nvel traduzida em instrues binrias apenas no momento da execuo do programa, dessa forma evitando que a cada alterao do programa-fonte necessitemos compilar tudo de novo. O processo de Linkagem basicamente o ltimo processo de gerao de um programa executvel, realizado pelo linkeditor, cuja funo combinar os programas-objeto e as bibliotecas de funes e comandos da linguagem utilizada, com rotinas em linguagem de mquina e outros utilitrios, de forma a gerar um programa executvel a nvel de SO. As duas tcnicas apresentam vantagens e desvantagens. Muitos preferem os programas compilados, porque eles so mais rpidos (porque a traduo das instrues feita previamente). Por outro lado, nos programas interpretados, apesar de serem mais lentos, tem-se maior controle sobre a operao da mquina. Vantagens e Desvantagens

1 Como um compilador gera programas na linguagem do computador, ele precisa conhecer as instrues

desse mesmo computador. Devido a isso, se quisermos criar programas para um computador IBM temos que adquirir compiladores para esse tipo de mquina; se desenvolvermos programas para a linha Apple, o compilador tem que ser feito para esse tipo de micro. O mesmo acontece com as outras linhas de computador (por exemplo, computadores RISC). O programa gerado pelo compilador, isto , o programa-objeto, executado diretamente pelo processador para o qual ele foi feito. Consequentemente, de posse do programa-objeto executaremos o programa em qualquer mquina para a qual ele tenha sido compilado (Alpha, Power PC, Pentium). J na interpretao, o programa interpretador precisa estar instalado na mquina em que ele executar o programa do usurio, porque o interpretador no cria nenhum programa-objeto. Como o compilador precisa traduzir instrues de alto nvel (de difcil entendimento para o computador) para baixo nvel (a preferida do computador) e a traduo de uma instruo desse tipo requer vrias instrues de baixo nvel, o cdigo gerado pelo compilador (cdigo-objeto) grande, comparado ao cdigo que o interpretador utiliza (cdigo-fonte). Lembre-se que o interpretador precisa ler, traduzir e executar o cdigo criado pelo programador a cada vez que o programa precisar rodar, o que causa um retardo na execuo do programa, j que os comandos tm que ser lidos e interpretados a cada execuo, o que no acontece com o compilador, cujo trabalho de ler e traduzir o programa-fonte ocorre somente na hora da gerao do cdigo-objeto. Um programa compilado sempre mais rpido do que um interpretado. Uma linguagem interpretada torna mais fcil a alterao dos programas-fonte, porque eles sempre estaro disponveis na mquina que o executar, diferentemente de uma linguagem compilada, na qual quaisquer alteraes que devam ser feitas sero seguidas da gerao do cdigo-objeto, para poder executar os programas. Comercialmente as linguagens interpretadas so pouco utilizadas, porque os programas-fonte relativos a um sistema ou a uma aplicao teriam que ser instalados no computador do cliente. Nesse caso, o cliente, de posse dos programas-fonte, poderia disponibilizar para terceiros esses programas, os quais seriam personalizados e utilizados em outras situaes sem fazer o devido pagamento a quem de fato criou os programas. Imagine uma escola que tenha contratado um analista e um programador para a informatizao de suas unidades, e esses profissionais decidissem usar linguagens interpretadas. Se o dono do colgio decidisse "fornecer" os programas-fonte a algum outro dono de escola, os programas seriam personalizados e instalados em outros colgios, que no precisariam contratar os servios dos profissionais e, principalmente, no os pagariam. Isso no significa que um programa executvel no possa ser alterado, ele no pode ser adaptado.

Subprogramas Nos primrdios da computao os programas eram organizados como uma nica seqncia de instrues, executadas uma aps a outra. Esse modelo de programao deu lugar programao estruturada, em que o programa dividido em mdulos ou subprogramas, isto , subdivises de um programa grande que visam a facilitar sua manuteno, sua legibilidade e a incorporao de novas funes.

Modelos de Programao Uma caracterstica importante a ser considerada na escolha de uma linguagem o modelo de programao por ela adotado. Tradicionalmente, o modelo praticado o procedural, em que a essncia do trabalho do

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
11

programador se volta para a criao de proceclures, ou procedimentos, determinando a forma como o processador deve agir para obter os resultados desejados. O programador controla a atividade do computador enquanto executa o programa. As linguagens que usam esse tipo de modelo so chamadas de linguagens procedurais e, como exemplo, temos o Cobol e o Pascal. Esse modelo bastante praticado at hoje, porm vem sofrendo concorrncia de outros tipos de modelos de programao. Uma das tcnicas mais atuais e eficazes - e que vem substituindo o modelo procedural - a programao orientada a objetos. Nessa tcnica, os programas so compostos por objetos, ou seja, pores de cdigo (seqncias de instrues) que simulam o comportamento de objetos do mundo real. Cada objeto tem uma funo definida, e assim, o programador pode alterar um objeto sem precisar "vasculhar" o programa inteiro. Portanto, ao contrrio do modelo procedural, o programa no se preocupa mais com o modo pelo qual o computador vai completar todo o programa e, sim, com o alcance dos resultados especficos. A utilizao dessa tcnica fez surgir vrias linguagens orientadas a objetos, como C++ (verso orientada a objetos da linguagem C) e Java (linguagem adequada s exigncias do uso da Internet). O Sistema Operacional Como j vimos anteriormente, o sistema operacional, ou SO, um dos nveis de software cuja finalidade gerenciar os recursos existentes em um computador e executar os programas do usurio. Vimos que esse nvel foi projetado para liberar usurios e programadores de detalhes irrelevantes para a soluo de seus problemas, veremos agora os conceitos gerais que serviro para a maioria dos sistemas operacionais. Graas ao Sistema Operacional, os programadores ficaro liberados das seguintes tarefas: Controlar a execuo e a interao entre os vrios programas em uso no computador. Gerenciar a ocupao de memria por parte dos programas. Criar mecanismos para armazenamento de arquivos, nos diversos discos, de maneira organizada e eficiente. Ler um arquivo de um disco, flexvel ou rgido, e preocupar-se com certos detalhes, como posicionar as cabeas de leitura/gravao nas trilhas certas, em determinadas unidades de tempo, e prever que tipos de erros podero ocorrer. Gerenciar tudo isso ficaria muito complicado e envolveria uma gama bastante grande de conhecimentos de Fsica, Eletrnica, Eletricidade, Matemtica, etc., o que seria contraproducente para um profissional que deve executar apenas aplicaes comuns do dia-a-dia. Para isso existe o sistema operacional. Para o tratamento das tarefas anteriormente enumeradas, o SO composto de quatro mdulos especiais: Gerenciadores de processos, Gerenciadores de memria, Gerenciadores de arquivos Gerenciadores de entrada e sada. O SO fornece ao usurio no apenas um ambiente para a execuo de seus programas, mas tambm interage com o usurio, atravs de seus utilitrios, e lhe permite manipular os arquivos (ou seja, copiar, mover, excluir, renomear, etc.), finalizar programas que tenham desestabilizado o sistema, melhorar o desempenho de acesso aos discos, verificar documentos a serem impressos, instalar e desinstalar programas, alterar a aparncia das janelas (cores e fontes, por exemplo) e configurar perifricos (placas de som, unidades de CD-ROM, modems e outros). Vrias outras tarefas podem ser desempenhadas pelo usurio para configurar o S0 sua maneira, e isso faz com que cada usurio possa personalizar seu ambiente de trabalho. O Gerenciamento de Processo Os sistemas operacionais atuais tm a capacidade de executar vrios programas ao mesmo tempo, podendo, por exemplo, imprimir uma planilha, movimentar o mouse na tela, desenhar um grfico no monitor, ler caracteres do teclado, ler arquivos de um disco, etc. Se o computador dispuser de apenas um processador, somente um programa ser executado num determinado instante. Porm, se dermos a cada programa um determinado espao de tempo de processamento, poderemos executar dezenas ou at centenas de programas em apenas um segundo. Quando um processador est executando um programa ele precisa saber exatamente que posio de memria est sendo usada naquele momento para poder executar a prxima. Por esse motivo, o processador possui um registrador interno especial para guardar somente essa varivel, conhecido como Program Counter (em portugus, contador do programa), ou PC. No confundir com as iniciais de computador pessoal, PC (Personal Computer), pois o PC de que estamos falando apenas um registrador do microprocessador.

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
12

Um programa em execuo um processo, isto , o programa gerado pelo processo de compilao e o seu estado atual (o valor do program counter, dos outros registradores e das suas variveis). Daqui em diante falaremos em processos, e no programas. Se vrios programas estiverem sendo executados por uma CPU, podemos imaginar que ela estar se dedicando de tempos em tempos a um determinado processo. A troca de processos pela CPU conhecida como Multiprogramao ou Multiprocessamento. Processo B Processo A Processo C C P U Processo D Processo E

A CPU executando vrios processos ao mesmo tempo, cada um com o seu Program Counter Para entender melhor a diferena entre programa e processo, vamos ao seguinte exemplo: Suponhamos que voc est em casa, preparando seu jantar nesse exemplo voc far o papel da CPU, a receita da comida ser o programa e os ingredientes para o jantar sero os dados utilizados pelo programa. Voc tinha comeado a juntar os ingredientes e a fazer a comida quando, de repente, o telefone tocou. Ento voc precisou guardar na memria o ponto da receita em que estava e foi atender o telefone (novo programa), e comeou a conversar com a pessoa do outro lado da linha (novos dados). Alguns instantes depois voc se lembrou de que estava preparando o jantar, reconheceu que o ato de preparar o jantar merecia uma ateno (ou prioridade) maior, terminou de falar ao telefone e voltou cozinha. Enquanto voc estava cozinhando vrias coisas aconteceram, e certamente elas precisaram de maior ou menor ateno, e lgico que todas essas tarefas foram reiniciadas do ponto da parada. Neste exemplo, os programas so os passos para executar as tarefas, e os processos so os programas em conjunto com suas informaes de entrada e sada e mudanas de estado, que sero vistas adiante. O S0 funciona da mesma maneira que nosso crebro: ele fica o tempo todo trocando os processos ativos na memria e executando cada um durante um determinado tempo. Os processos interagem uns com os outros por vrios motivos, por exemplo, quando um usurio executa a sua planilha eletrnica, abre uma planilha j existente e decide imprimir algumas cpias. Podemos identificar aqui alguns dos processos envolvidos: a planilha eletrnica, os processos do SO para abrir o arquivo de planilha salva e os processos do SO para imprimir as cpias. O SO gerencia vrios processos (do usurio e do prprio SO). No exemplo dado, o processo "Planilha Eletrnica" (do usurio) fica esperando que o processo "Abrir Arquivo" (do SO) envie os dados lidos para que as informaes sejam apresentadas na tela. O processo "Impresso" (do SO) recebe os dados da planilha e completa suas tarefas. Nesse caso, a impresso da planilha no impede que ela continue sendo editada. Como podemos perceber, os processos mudam de estado - ora esto em execuo, ora esto esperando respostas de outro. Um processo pode "esperar" bastante tempo para continuar sua execuo, caso ele dependa de outro processo lento. Em conseqncia, um processo possui os seguintes estados bem definidos. Executando (o processo est ativo e utilizando a CPU). Pronto (o processo foi bloqueado por algum motivo e est pronto para ser executado novamente). Bloqueado (temporariamente parado para realizar operaes de entrada e sada).

Alm desses estados, existem as transies entre um estado e outro. 1 Bloqueado 4 Executando 2 3 Pronto

Os estados de um processo. As linhas numeradas que ligam esses estados representam as transies entre eles. Transio 1 ocorre quando um processo precisa de informaes que, no momento, no se encontram disponveis. Exemplos: um arquivo precisa ser lido ou impresso, preciso determinar as coordenadas em que o mouse foi clicado, necessrio ler a entrada de caracteres pelo teclado, um programa de desenho aguarda o redesenho da tela pelo SO, etc. Transies 2 e 3 decorrem da ao do escalonador de processos, o mdulo do SO que fornece a cada processo um certo tempo para executar suas tarefas (ele ser analisado com detalhes mais frente). Na transio 2, o escalonador verificou que o processo j foi executado por tempo suficiente; ento, esse processo interrompido e outro entra em execuo. Na transio 3, um processo deve ser escolhido para entrar em execuo, mas qual deles? O escalonador mantm uma fila de processos que esto prontos para

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
13

rodar; quando ocorre a transio 2, o processo que estava sendo executado vai para o final da fila de processos prontos, ou simplesmente fila de prontos. Na transio 3, o primeiro processo da fila de prontos colocado em execuo. Transio 4 acontece no momento em que chegam as informaes pelas quais um processo estava esperando: o arquivo foi lido ou impresso, um caractere foi digitado, etc., quando ento o processo bloqueado vai para o final da fila de prontos. Se nenhum processo estiver na fila, ele vai diretamente para a execuo; caso contrrio, ele fica esperando a sua vez. Note que tambm existe uma fila de processos bloqueados, isto , processos que esto esperando pela realizao de alguma tarefa, e que um processo sai da fila de bloqueados assim que seus dados de entrada estejam disponveis. O processo que chegou primeiro na fila de bloqueados no , necessariamente, o que vai sair primeiro.

Existe mais uma varivel associada troca de processo: o nvel de prioridade . Num sistema multiprogramado deve existir uma maneira pela qual um processo que necessite de uma resposta rpida ganhe a CPU, ao invs de outro que no seja to crtico para a operao do sistema. Geralmente os processos internos do SO tm prioridade maior do que um processo de usurio. Alguns exemplos de processos do SO: ler arquivos, disponibilizar memria para uma aplicao, transportar bytes entre memria e discos, imprimir, atualizar o vdeo, verificar em que coordenadas do vdeo est o mouse, ler um caractere do teclado ou atualizar o relgio do computador. Exemplos de processos do usurio: criar figuras num programa grfico, elaborar planilhas, digitar documentos, jogar, etc. Se o escalonador de processos verificar que existem processos de maior prioridade esperando pela sua execuo, isto , processos do SO, ele entregar esses processos a CPU , mesmo que existam processos na fila de prontos. Os processos que fazem E/S freqentemente necessitam de mais tempo de CPU, j que lidam com dispositivos eletromecnicos muito lentos, se comparados com a velocidade interna de processamento da CPU e das memrias. Enquanto o usurio trabalha numa determinada aplicao, sem que ele se d conta podem estar ocorrendo vrios processos, tanto do SO quanto do prprio usurio. O processo com o qual o usurio est interagindo no momento definido como em primeiro plano (em foreground), e os outros em segundo plano (ou em background). O usurio pode estar manipulando figuras num programa grfico no exato momento em que toca o telefone e tem incio um processo de recebimento de fax em segundo plano; o computador pode processar essa entrada sem que o usurio tenha que parar a tarefa atual. A impresso tambm outro exemplo de processo que pode funcionar em background.

Multitarefa - O escalonamento de processos Tambm conhecida como multitarefa, a capacidade de o SO executar vrios processos ao mesmo tempo pode ser dividida em dois tipos principais: Preemptiva e Cooperativa. Preemptiva - o escalonador de processos "marca um tempo" para a execuo dos processos pelo SO. Aps esse tempo, o escalonador retira o processo do estado de execuo, salva o seu contexto e o manda para a fila de prontos. O processo no fica nem um milsimo de segundo a mais em execuo. Cooperativa - o processo decide quando vai deixar o escalonador de processos mand-lo para a fila de prontos. Conseqentemente, o processo pode ficar o tempo que quiser em execuo, e o tempo que o processo monopoliza o processador depende de quem projetou o programa. As vantagens e desvantagens desses mtodos so bastante claras: a multitarefa preemptiva mais "justa" com todos os processos em execuo, porque ela no faz distino entre os processos do usurio; cada processo dispe uma fatia de tempo fixa, ou time-slice - por exemplo, a cada 100 ms feita uma troca de contexto. Outra vantagem que o S0 controla melhor as tarefas, caso alguma delas venha a "travar". Uma aplicao travada no permite que o usurio interaja com ela. Assim, por exemplo, uma aplicao estava se preparando para imprimir e, por um problema no arquivo executvel, uma "instruo ilegal" (isto , que no existe) tentou execut-la. Nesse caso, a aplicao precisa ser finalizada ou, na pior das hipteses, o computador tem que ser reinicializado. Quando uma aplicao se trava, muitas vezes acontece de a aplicao travar tambm todos os outros processos, bloqueados e prontos. Na multitarefa cooperativa uma aplicao pode ficar muito tempo de posse do processador e no permitir que outras aplicaes voltem execuo. Esse tipo de multitarefa no muito "justa" com o conjunto de processos do usurio, e nele um processo pode travar mais facilmente a mquina. A multitarefa cooperativa mais fcil de ser implementada do que a preemptiva, pois ela requer menos esforo de programao por parte dos programadores de sistema, isto , os programadores do SO. Um processo pode travar o SO em quaisquer dos mtodos de multitarefa. O SO sempre prov ao usurio maneiras de cancelar um processo que trouxe problemas estabilidade do sistema.

O Gerenciamento de Memria

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
14

O gerente de memria o mdulo do SO que trata da alocao e da desalocao de RAM, do controle de quais fatias da memria esto em uso e quais esto desocupadas e, alm disso, da memria virtual, que ser estudada mais adiante. O SO tambm ocupa segmentos de memria quando seus arquivos so carregados dos discos para a RAM, no procedimento de inicializao do computador. Vejamos com um pouco mais de detalhe os conceitos ligados ao gerenciamento de memria. Sistemas Monoprogramados Esse tipo de sistema o mais simples possvel num computador. Nele, apenas um processo fica ativo, e ele pode se utilizar de toda a memria disponvel. Nesse tipo de sistema o usurio envia comandos ao SO para que ele execute os programas desejados, o SO executa os programas e, quando o programa termina a execuo, o controle devolvido ao SO, que volta a esperar comandos do usurio. Sistemas Multiprogramados O SO possui vrios programas na memria, cada um utilizando sua prpria poro. Esses sistemas apresentam a vantagem de aproveitar melhor a CPU, j que os processos no ficam durante todo o tempo de uso consumindo os recursos do processador; porque muitas vezes ele precisa ficar bloqueado esperando que certos dados sejam trazidos dos discos, de/para uma porta de comunicao ou enviados para um monitor ou impressora. Se o processo est bloqueado, ento ele no est usando a CPU, e nesse momento que podemos executar outros processos para aproveitar o tempo em que a CPU ficaria inativa. Isso demonstra que se colocarmos vrios processos para executar e se eles no precisarem fazer operaes de entrada e sada ao mesmo tempo, a taxa de utilizao da CPU ser bem maior do que com apenas um processo sendo executado na memria . Outro fator que aumenta bastante a utilizao de uma CPU acrescentar mais mdulos de memria para ter mais programas em execuo. Exemplo de programas em execuo num ambiente multiprogramado: reas Sistema Operacional Processo Processo Programas Processo do Usurio Processo Processo Endereos 0000 - 0100 0101 - 0150 0151 - 0500 0501 - 1000 1001 - 5000 5001 - 6500

3 1 4 2 5

O Gerenciamento de Entrada e Sada O gerente de E/S (Entrada e Sada, ou, em ingls, I/O (Input/Output) o ltimo, no que refere teoria de sistemas operacionais, que veremos. Responsvel direto pela manipulao dos perifricos do computador, enviando e recebendo dados desses dispositivos e controlando os erros que acontecerem em sua operao, tudo que se refere comunicao entre a CPU e os perifricos tratado por esse mdulo. Assim, podemos dizer que ele gerencia os discos rgidos e flexveis, impressoras, mouse, teclado, placas de vdeo, placas de rede, etc. Um computador possui vrios dispositivos de I/O, isto , perifricos geralmente eletromecnicos cuja finalidade fornecer e/ou armazenar informaes para que a CPU possa processar. Um disco um perifrico de entrada e sada, enquanto uma impressora um perifrico de sada e o mouse de entrada. Os dispositivos de 1/O no so controlados diretamente pela CPU, e sim por placas adaptadoras ou controladoras, ou somente interfaces, constitudas por circuitos eletrnicos que podem estar integrados placa-me, como no caso das placas controladoras de disco rgido e flexvel, portas seriais e portas paralelas. Nas placas-me mais modernas os circuitos mencionados esto presentes, mas h pouco tempo atrs a maioria dos fabricantes no os incorporava, e o usurio se via obrigado a adquirir as controladoras necessrias. As placas de rede, por exemplo, ainda devem ser adquiridas dos fabricantes e encaixadas na placa-me para poderem se comunicar com a CPU. Veja na figura que se segue a relao entre a CPU e os dispositivos de I/O:

Scanner

Impressora

Mouse

Teclado

Vdeo

Disco Rgido

Barramento do sistema

Viso geral de um computador e alguns perifricos

Microprocessador (Pentium, por exemplo)

Memria (RAM)

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
15

No centro da figura, existe o barramento do sistema ou bus, cuja finalidade conectar os perifricos e a memria ao microprocessador, para que eles possam trocar informaes. O bus permite que novas funcionalidades sejam acrescentadas ao computador. As setas que saem dos perifricos dizem se eles so de entrada, sada ou ambos. Device Drivers A cada dia so lanados novos equipamentos que podemos conectar ao nosso computador; no s no que se refere ao trabalho, propriamente, mas inclusive nossa vida cotidiana, automatizando nossas tarefas ou at mesmo servindo ao nosso entretenimento. Mas, quem controlar a novidade que acabamos de comprar e incorporar ao computador? Ele mesmo, o sistema operacional. Agora vamos pensar um pouco: a quantidade de novos equipamentos lanados no mercado a cada dia gigantesca, e para poder dar suporte a tudo isso o S0 deveria ser atualizado, acompanhando a evoluo desses equipamentos e aproveitando, assim, tudo o que o perifrico coloca disposio do usurio. Voc j percebeu que essa tarefa impossvel. Nenhum produtor de S0, mesmo o maior de todos eles, conseguiria fazer atualizaes de maneira to freqente. Outra possibilidade seria fazer com que o usurio "alterasse o sistema operacional" para acrescentar essa nova funcionalidade, o que seria outra tarefa impossvel, j que o usurio precisaria ser um especialista no novo perifrico, em hardware, em programao, em linguagem de baixo nvel e no prprio sistema operacional. Qual a soluo adotada, ento? Levando-se em conta que quem mais entende do perifrico o prprio fabricante e quem mais entende do sistema operacional a empresa de software que o produziu, os fabricantes de hardware e de S0 estabeleceram padres para o acrscimo de novos perifricos ao S0. Assim, o fabricante do perifrico escreve programas especiais que acessam os seus perifricos para funcionar sobre um ou mais SO; esses programas so conhecidos por device drivers, ou gerenciadores de dispositivos. Resumindo, um fabricante cria um novo perifrico, fornecendo juntamente com ele os drivers necessrios, e o usurio instala o perifrico e esses drivers em seu computador. o caso, por exemplo, quando voc compra uma impressora jato de tinta, colorida, e o fabricante lhe fornece um ou mais disquetes (ou CD) com os drivers para serem instalados. Aps a instalao, a impressora pode ser usada normalmente. Ou ento quando se faz a instalao de um kit multimdia: o fabricante do kit fornece um disquete com os drivers para a instalao do CD-ROM, alm de um CD com os drivers de instalao da placa de som e outros aplicativos de multimdia. Outro exemplo o Scanner, perifrico cujo fabricante disponibiliza os drivers, permitindo assim que o usurio o instale no disco rgido e o 50 o reconhea, aps o procedimento de instalao dos drivers. Normalmente, aps a instalao dos drivers o programa de instalao pede que o usurio desligue o computador e o reinicialize, para que o perifrico seja reconhecido. Em geral os drivers so fornecidos em disquetes, pois eles ainda so o tipo de dispositivo universal, isto , todos os computadores os utilizam. Atualmente existe o conceito de Plug and play (ligue e use). O plug and play a especificao de uma arquitetura de hardware e software que permite a identificao e a configurao automticas de dispositivos. As empresas fabricantes de perifricos e as de sistemas operacionais, se uniram no sentido de oferecer compatibilidade total entre o equipamento e o software. Com isto a expanso de um micro ficou mais fcil.

Gerenciador de Arquivos Um dos grandes propsitos do computador servir como depsito de informaes, que podem ser recuperadas quando necessitamos delas. O computador tambm deve ser capaz de armazenar dados em pequenas ou grandes quantidades e programas durante perodos curtos ou longos, de maneira organizada e no melhor tempo de resposta quando recuperados de algum dispositivo de armazenamento, como um HD, um disquete, unidade de fita ou qualquer outro meio ptico. O SO quem cuida disso, baseado em um sistema de arquivos, prprio a cada tipo de sistema operacional. Arquivo um conjunto de informaes que tem um propsito geral e ficam armazenadas em algum tipo de memria secundria (discos). Um arquivo pode conter tudo o que o usurio imaginar. De uma maneira mais geral, arquivo uma seqncia de bytes que, de acordo com o aplicativo que o utiliza, ter um significado diferente, e no pode ser executado por outro aplicativo porque este ter caractersticas prprias e seu formato gerado por algum compilador. O SO armazena o contedo dos arquivos juntamente com a data/hora de criao e/ou gravao, tamanho, nome do usurio que o criou, que operaes podem ser executadas sobre ele (atributos de leitura, gravao, Diretrio

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa

UFBA - DCC - MAT045

Processamento de Dados
16

o local para armazenamento de arquivos de maneira organizada - normalmente o diretrio serve para armazenar informaes que estejam relacionadas entre si. Os diretrios so armazenados nos discos, numa forma que lembra uma rvore. que a partir da Raiz, se subdividem em sub-diretrios como se fossem galhos. Caminho (path)

um conjunto de sub-diretrios que o sistema operacional deve percorrer para recuperar ou armazenar algum arquivo. Os subdiretrios, nesse caso so separados por algum smbolo, o separadores mais comuns so a barra (/) e a barra invertida (\).

NOTAS DE AULA - v2.1/01

Prof. Abel Miranda Costa