Você está na página 1de 0

12-1

Captulo
DOZE
Software Bsico
12. 1 Introduo
Emprega-se comumente a palavra software para designar o conjunto de programas que so
utilizados com um sistema de hardware para facilitar seu uso por programadores e
operadores do sistema. Entretanto, esta utilizao do termo exclui programas de aplicaes,
incluindo apenas programas que fornecem funes gerais independentes dos detalhes de uma
aplicao (software do sistema ou software bsico). Na prtica, o que o usurio enxerga
facilmente deste grupo (embora ele seja mais extenso) so as linguagens que ele encontra
disponveis para programao, como Basic, Fortran, Cobol, Pascal, Logo, C, Delphi,
Visual C, C++, Java, etc, e programas escritos para resolver problemas especficos ou que
realizam funes especiais como planilhas de clculo, editores de texto, jogos eletrnicos,
entre outros, que fazem parte do software de aplicao.
Os programas que so escritos em linguagens de programao de alto nvel (emprega-se esta
denominao como distino a linguagens mais prximas da mquina) precisam ser
convertidos em programas de mquina. O processo desta converso executado por um
elemento de software denominado de processador de linguagem. Os programas escritos
em alto nvel tendem a ser independentes da estrutura da mquina na qual sero executados,
mas os programas de baixo nvel no. Por isso, esta converso dependente da mquina
sobre a qual vai ser executado o programa.
Os processadores de linguagem so programas longos, que ocupam espao significativo na
memria do computador. Por isso, freqentemente ficam armazenados (residem) em um
dispositivo de entrada/sada, como um disco, por exemplo. Este programa ser chamado e
copiado para a memria quando o programador quiser fazer uso dele. O uso de um
processador de linguagem significa que o programador vai execut-lo, tendo como entrada
de dados o programa escrito em linguagem de alto nvel. Como sada, ser obtida uma
representao do programa em forma diretamente executvel pela mquina ou uma forma
mais prxima desta do que a representao anterior (em alto nvel).
A escrita de um programa consiste na especificao, direta ou indireta, de uma seqncia de
instrues de mquina para o computador. As instrues de mquina formam um padro
binrio com o qual difcil de trabalhar do ponto de vista humano e complexo para entender.
mais fcil de escrever programas empregando smbolos mais familiares, orientados ao
usurio, tais como os caracteres alfa-numricos e suas combinaes. Como conseqncia
desta facilidade, torna-se necessrio traduzir esta representao simblica de programas em
elementos binrios que possam ser reconhecidos pelo hardware.
12. 2 Linguagens de programao
Um programa uma lista de instrues ou comandos que determina ao computador a
execuo de uma tarefa de processamento de dados. H diversas linguagens de
programao, atravs das quais pode-se escrever programas para o computador; mas o
computador s pode execut-los quando eles esto representados internamente na forma
binria, organizado e codificado de forma a resultar na gerao de sinais de controle da UCP.
12-2
Portanto, os programas que no esto escritos na forma binria necessitam ser traduzidos
antes da sua execuo. Os programas podem se incluir em uma das seguintes categorias:
cdigo binrio: sequncia de instrues e operandos em binrio; lista a
representao exata das instrues como elas aparecem na memria;
cdigo octal ou hexadecimal: representao, equivalente ao cdigo binrio, em
representao octal ou hexadecimal;
cdigo simblico: o usurio emprega smbolos tais como letras, nmeros e
caracteres especiais, para representar o cdigo das instrues, composto por parte de
operao, endereo e outras. Cada instruo simblica pode ser traduzida em uma
instruo binria equivalente, o que feito por um programa montador (assembler).
Por esta razo, este programa simblico referido como programa em linguagem
de montagem ou assembler.
linguagens de programao em alto nvel: so linguagens especiais
desenvolvidas para facilitar a especificao de procedimentos usados na soluo de
problemas, no havendo preocupao com o comportamento do hardware que suporta
estas operaes. Portanto, elas empregam smbolos e formatos orientados a
problemas, de acordo com o raciocnio comumente empregado na soluo destes.
Assim, cada comando precisa ser traduzido em uma seqncia de instrues binrias,
antes que o programa possa ser executado em um computador. O programa que traduz
um programa escrito em linguagem de alto-nvel para binrio chamado de
compilador.
O termo linguagens de programao refere-se em geral ao estudo da estrutura das diversas
linguagens de programao de alto nvel, sendo realizado de forma independente dos
dispositivos computacionais de do seu hardware. Este no o enfoque para o pessoal de
arquitetura, que o utiliza com outra conotao incluindo linguagens a nvel de mquina.
A seguir ser exemplificada esta relao existente entre as diversas linguagens de
programao. Esta relao no estabelecida diretamente a nvel de comandos, mas tenta
deixar claro o nvel crescente de dificuldades de programao e depurao de cdigo,
medida que de vai do alto para o baixo nvel de programao.
12. 3 Exemplo com NEANDER
Problema: Realizar a multiplicao de dois nmeros inteiros positivos, a e b (a0, b0),
utilizando o mtodo das somas sucessivas, ou seja, somar a consigo mesmo b vezes.
Descrio em portugus estruturado:
Sejam a, b, r trs nmeros inteiros positivos.
Ento fazer:
1. Zerar r
2. Enquanto b for maior que zero, somar a em r e decrementar b de uma unidade
3. Fim. O resultado est em r
Descrio em pseudo-linguagem de alto nvel
Begin Program
Variable a,b,r: type positive-integer
r:=0
while b>0
do r:=r+a
b:=b-1
12-3
end while
End Program
Descrio em pseudo-linguagem, sem uso de while
Begin Program
Variable a,b,r: type positive-integer
Label lao
r:=0
lao: if b>0
then r:=r+a
b:=b-1
goto lao
end if
End Program
Descrio em pseudo-linguagem, somente com uso de if-goto
Begin Program
Variable a,b,r: type positive-integer
Label lao, fim
r:=0
lao: if b=0 goto fim
r:=r+a
b:=b-1
goto lao
fim:
End Program
Descrio em pseudo-assembler
ORG 0 % define endereo de incio do programa
LDA Zero % r:=0
STA r
lao: LDA b % if b=0 goto fim
JZ fim
LDA r % r:=r+a
ADD a
STA r
LDA b % b:=b-1
ADD m1
STA b
JMP lao % goto lao (poderia ser JMP lao+1: otimizao !)
fim: HLT
a DEF BYTE % define varivel a
b DEF BYTE % define varivel b
r DEF BYTE % define varivel r
zero DEF BYTE=0 % define varivel zero e inicializa com 0
m1 DEF BYTE=-1 % define varivel m1 e inicializa com menos um
Descrio na linguagem do NEANDER (sem labels)
Endereo Instruo
0 LDA 26 % r:=0
2 STA 25
4 LDA 24 % if b=0 goto fim
12-4
6 JN 22
8 LDA 25 % r:=r+a
10 ADD 23
12 STA 25
14 LDA 24 % b:=b-1
16 ADD 27
18 STA 24
20 JMP 4 % goto lao
22 HLT
23 0 % define varivel a
24 0 % define varivel b
25 0 % define varivel r
26 0 % define varivel zero e inicializa com 0
27 255 % define varivel m1 e inicializa com menos um
Descrio na linguagem do NEANDER (em decimal)
Endereo Instruo
0 32 26 % r:=0
2 16 25
4 32 24 % if b=0 goto fim
6 160 22
8 32 25 % r:=r+a
10 48 23
12 16 25
14 32 24 % b:=b-1
16 48 27
18 16 24
20 128 4 % goto lao
22 240
23 0 % define varivel a
24 0 % define varivel b
25 0 % define varivel r
26 0 % define varivel zero e inicializa com 0
27 255 % define varivel m1 e inicializa com menos um
12. 4 Programas a nvel de sistema
A produo de programas do sistema complexa, e requer extenso conhecimento e prtica
em computao. A existncia destes programas representa vantagens e convenincia aos
programadores de aplicaes e aos usurios de computadores em geral. O software do
sistema pode ser dividido em vrias categorias (algumas citadas anteriormente):
processadores de linguagens, que convertem programas para a linguagem de mquina
a partir de linguagens orientadas a usurios ou a aplicaes;
biblioteca de programas, que fornecem rotinas padro para o programador de
aplicaes;
programas carregadores (ou loaders), para facilitar a carga dos diversos programas
na memria do computador;
programas utilitrios, para facilitar a comunicao entre os componentes do
computador e entre o computador e o usurio;
programas de diagnstico, que facilitam a manuteno do computador;
um sistema operacional, que supervisiona os demais programas e controla sua
execuo.
12-5
Assemblers
Nos primrdios da computao, o programador de computadores tinha a sua disposio uma
mquina que, atravs do hardware, executava certas funes bsicas. A programao do
computador consistia em escrever uma srie de uns e zeros (linguagem de mquina),
colocar esta srie na memria, pressionar um boto. Com isto o computador iniciava a
execuo destas instrues.
extremamente difcil, entretanto, escrever e ler programas em linguagem de mquina. Na
procura por um mtodo mais conveniente, desenvolveram-se os processadores de
linguagem, ou seja, programas que traduzem um programa fonte escrito pelo usurio
em um programa objeto que pode ser entendido pelo computador. Um montador ou
assembler um programa do sistema que traduz um programa escrito em linguagem
assembler para um programa equivalente descrito em linguagem binria (da mquina).
Tipicamente, em uma linguagem assembler utilizam-se mnemnicos (smbolos) para cada
instruo de mquina, e a principal funo do montador traduzir cada um destes smbolos
no cdigo binrio equivalente.
Compiladores
Com o aumento da complexidade dos programas, mesmo o uso de linguagem assembler no
fornece o grau de abstrao necessrio para uma boa compreenso do programa. Assim,
desenvolveram-se as linguagens de alto nvel, onde um nico comando substitui dezenas de
instrues assembler. Um compilador um programa do sistema que traduz um programa
em linguagem de alto-nvel para a linguagem de mquina. Uma linguagem de alto nvel
suficientemente abstrata para ser independente do hardware (ou quase independente -
diversas caractersticas da arquitetura, como por exemplo a representao dos nmeros, so
refletidos nas linguagens). Para poder utilizar uma linguagem de alto nvel, o programador
deve conhecer sua sintaxe (forma) e sua semntica (significado).
As linguagens de alto nvel esto em constante evoluo, refletindo as mudanas que
ocorrem nas metodologias de programao. Dentre as primeiras linguagens destacam-se
FORTRAN, COBOL, ALGOL e PL/I. Entre as linguagens mais utilizadas atualmente podem
ser citadas C e PASCAL. Dois outros processadores de linguagens largamente usados so os
montadores de macros (ou macro-assemblers) e os interpretadores.
Macros
Uma macro uma pseudo-instruo que define um grupo de instrues de mquina. Uma
pseudo-instruo uma instruo que existe para definir condies especiais para o
montador; no resulta em cdigo propriamente dito, mas provoca transformaes no cdigo
original. Um montador de macros traduz programas escritos em linguagem assembler
com facilidades de macros, o que significa usar nomes simblicos para representar
seqncias de instrues. Cada vez que o programa encontra esta macro, substitui-a pela
seqncias de instrues.
Assim, por exemplo, poderia ser definida uma macro para o NEANDER que realizasse
subtraes. Tal macro (convenientemente denominada SUB), conteria as instrues
necessrias para realizar uma subtrao (inverso do subtraendo, soma de uma unidade e
soma com o minuendo), como ilustrado na definio da macro a seguir:
MACRO SUB end % realiza AC < AC MEM(end)
STA aux % salva Acumulador em MEM(aux)
LDA end % note-se que end um parmetro da macro
NOT
ADD um % MEM(um) contm a constante UM
ADD aux
END MACRO
12-6
Todas as ocorrncias posteriores do smbolo SUB seriam substitudas pela sequncia acima,
uma vez para cada smbolo. As macros no devem ser confundidas com as subrotinas.
Subrotinas so conjuntos de instrues que podem ser utilizadas diversas vezes por um
programa; assim, aes repetitivas no precisam ser escritas repetidamente e nem geram
trechos repetidos de cdigo em um programa. Cada vez que uma rotina utilizada,
executado um desvio do programa principal ( o que chama a subrotina) para o endereo
inicial onde ela se encontra carregada; aps sua execuo, executado um novo desvio que
causa o retorno para o programa principal. Uma subrotina para subtrao seria por exemplo
o seguinte trecho de programa, armazenado a partir do endereo xx :
xx STA aux % salva Acumulador em MEM(aux)
LDA end % note-se que end um parmetro da subrotina
NOT
ADD um % MEM(um) contm a constante UM
ADD aux
RET
A chamada desta funo seria feita atravs de uma instruo de chamada para subrotina
(CALL xx) ou de desvio para subrotina (JSR xx). Note-se que na chamada deve ser
fornecido o endereo de memria onde a subrotina foi armazenada. Tanto a instruo de
chamada (CALL ou JSR) como a instruo de retorno (RET) devem existir na arquitetura do
computador. O NEANDER, por exemplo, no possui estas facilidades.
Interpretadores
Um interpretador tambm um processador de linguagem que traduz cada comando de
um programa escrito em linguagem de alto nvel, executando-o imediatamente. Assim, o
interpretador trabalha alternando aes de traduo e execuo. O compilador atua
exclusivamente na traduo do programa fonte e no na execuo, o que os diferencia.
Assim o interpretador responde mais rapidamente a modificaes no programa fonte, o que
bastante til em um ambiente de desenvolvimento. Na execuo rotineira de programas ele se
torna mais lento, uma vez que refaz a traduo de cada comando a cada nova execuo. O
exemplo mais conhecido de interpretador o utilizado na linguagem BASIC.
Bibliotecas
Bibliotecas de programas existem para simplificar tarefas repetitivas de programao.
Assim, rotinas muito utilizadas so padronizadas, catalogadas e tornadas acessveis aos
usurios. Isto implica no estabelecimento de convenes. Nas aplicaes cientficas,
encontra-se neste campo a programao de funes matemticas tais como raiz quadrada,
funes exponenciais, inverso de matrizes, etc Para processamento de dados comercial,
encontram-se funes de organizao de arquivos como ordenao e busca ou procura.
Muitas outras esto disponveis ou podem ser programadas de acordo com o interesse dos
usurios.
Carregadores
Carregadores so programas do sistema que inserem ou posicionam outros programas na
memria e preparam-nos para a execuo. Podem ser do tipo absoluto, que carregam o
programa a partir de um endereo especificado pelo usurio, ou do tipo relocvel, que no
permitem a interveno do usurio, posicionando o programa de forma eficiente, de acordo
com as disponibilidades de espao na memria.
Em um esquema simples, o montador assembler armazena sua sada em uma memria
secundria (disco, por exemplo). A funo do carregador seria simplesmente transferir o
cdigo desta memria secundria para a memria principal e transferir o controle para ele
(colocar no PC para o endereo da primeira instruo do programa).
12-7
O uso de generalizado de bibliotecas, subrotinas e macros, entretanto, faz com que um
carregador tenha mais tarefas a realizar. Basicamente, um carregador desempenha quatro
tarefas:
Obter e reservar espao de memria para o programa e suas subrotinas (Alocao).
Resolver os endereos simblicos (labels) entre o programa e as bibliotecas utilizadas
(Ligao ou linking ).
Ajustar todas as referncias a endereos, de forma que elas correspondam aos
endereos fisicamente utilizados, ou seja, aos endereos da poro da memria onde
o programa foi carregado (Relocao).
Colocar fisicamente as instrues e os dados na memria (Carga).
O perodo de execuo de um programa denominado de tempo de execuo. O perodo
de traduo de uma programa fonte denominado de tempo de compilao ou tempo de
montagem. O tempo que se refere ao perodo de carga e preparao de um programa para
execuo chamado de tempo de carga.
Um programa carregador especial o bootstrap loader, cuja funo inicializar as
atividades no computador, quando ele ligado. O incio da operao do computador no
ocorre apenas com a ligao da energia, mas com a execuo de um programa de
inicializao. Este programa pode existir residente na memria ou pode ser carregado a cada
incio de operao.
Utilitrios
Programas utilitrios correspondem a uma coleo de rotinas freqentemente
empregadas que o programador pode usar para facilitar o seu trabalho de desenvolver tarefas
especficas e consequentemente seu trabalho de programao. Assim como no grupo
anterior, esto catalogados e disponveis aos usurios do sistema. Como exemplos, pode-se
citar: editores de texto, ferramentas de depurao de programas (memory dump, trace,
debuggers, etc), rotinas de entrada e sada.
Programas de diagnstico tm por objetivo exercitar certas partes do hardware do
sistema a fim de verificar situaes de mau-funcionamento ou para testar a funcionalidade
destas unidades. Assim, ele fornece sinais ao hardware e coleta as respostas
correspondentes, comparando-as com as informaes esperadas (resultados corretos obtidos
a partir da especificao da mquina, por exemplo). Estes programas auxiliam o pessoal que
trabalha em manuteno. Tambm podem ser rodados preventivamente para antecipar a
ocorrncia de problemas.
Sistema Operacional
Um sistema operacional uma coleo de programas que controlam a operao do
computador com o propsito de obter um desempenho eficiente. Consiste basicamente em
programas de controle permanentemente residentes na memria, que supervisionam todos
demais programas executados no computador. Em geral, sua eficincia dependente dos
recursos de hardware existentes para suport-lo, uma vez que ele faz uso intensivo destes
recursos. Sistemas operacionais rudimentares, instalados em geral em mquinas pequenas,
so referidos pelos termos: programa monitor, supervisor ou executivo. Os sistemas
operacionais sero estudados com maiores detalhes na prxima unidade.
12. 5 Interface entre hardware e software
Uma questo essencial a nvel da arquitetura e organizao de computadores o
estabelecimento da interface entre o hardware e o software. possvel conhecer-se vrios
12-8
aspectos de software, sem que se tenha familiaridade com o detalhamento do hardware
associado; da mesma forma, possvel projetar-se partes de hardware sem conhecer suas
capacidades a nvel do software. Entretanto, os projetistas da arquitetura de computadores
precisam conhecer hardware e software, pois estas reas influenciam-se mutuamente.
Uma das definies estabelecidas a nvel desta interface a escolha das funes que sero
implementadas no hardware e quais utilizaro o software. Reflexos destas definies sero
sentidas na maior ou menor facilidade de programao e na velocidade de execuo (de
obteno de respostas) destas funes. Adicionalmente, podem existir estruturas de
arquitetura para apoiar funes do sistema operacional ou mecanismos que auxiliem na
deteco de erros de programao.
Existem trs nveis bsicos de implementao de funes de mquina no computador:
por hardware, fixas pelo projeto lgico dos circuitos;
por microcdigo, que consiste em um nvel intermedirio entre o hardware e o
software, e que pode conceitualmente ser enxergado como um conjunto de programas
escritos em baixssimo nvel (especificao direta de sinais de controle) que executam
diretamente sobre o hardware;
por software, especificadas em uma linguagem de baixo nvel.
Funes complexas podem ser obtidas a partir da composio de outras dos nveis
inferiores.
O nvel de problemas quando da definio da interface varia bastante em complexidade.
Assim como necessrio definir detalhes de implementao de instrues, tambm
necessrio determinar a arquitetura global da mquina. H, por exemplo, arquiteturas
dirigidas a determinadas linguagens, que utilizam combinaes implementadas em hardware
e firmware para estender a arquitetura de uma mquina na direo das formas utilizadas pelas
linguagens de programao.
Assim, grande parte das arquiteturas atuais so influenciadas por conceitos de estruturas de
programao encontradas em linguagens de programao de alto nvel e por funes comuns
aos sistemas operacionais. Entretanto, existem divergncias sobre quanto deve pesar esta
influncia e se ela deve ser mais motivada pelas caractersticas convenientes s linguagens ou
aos sistemas operacionais. Esta uma questo que resta a resolver.
12. 6 Sistemas operacionais
Na primeira gerao de computadores, quando a programao era feita quase que
exclusivamente que atravs de chaves e lmpadas, os sistemas operacionais eram
praticamente inexistentes. A complexidade de tal programao, entretanto, motivou o
desenvolvimento de uma grande srie de programas, analisados na seo anterior. Um
quadro tpico da dcada de 60, quando o sistema de entrada e sada era baseado em cartes
perfurados, descrito a seguir:
o programador perfurava o seu programa fonte (por exemplo, na linguagem
FORTRAN) em um conjunto de cartes.
o programador pegava os cartes do compilador FORTRAN, marcados de verde para
serem visualmente distinguidos dos demais, os colocava na leitora de cartes e
carregava o compilador para a memria.
a seguir, com o compilador na memria, o programador colocava o programa fonte
(em cartes incolores) na leitora. O compilador lia estes cartes e, caso no existissem
erros, perfurava uma srie de cartes (vermelhos) com o cdigo objeto gerado.
12-9
terminada a tarefa do compilador, o programador colocava o carregador (em cartes
rosa) na leitora e carregava-o para a memria.
com o carregador na memria, o programador colocava agora seu programa objeto na
leitora, seguido dos cartes correspondentes s bibliotecas utilizadas (em diversas
cores especficas)
o carregador lia todos estes cartes, preparava o programa na memria e transferia o
controle do computador para este programa.
o programador colocava na leitora os cartes contendo os dados a serem manipulados
pelo programa, que lia estes cartes e gerava relatrios em uma impressora.
existindo erros na programao, todo o processo tinha que se refeito (e um dos
pesadelos da poca era a queda dos cartes no cho, embaralhando-os).
Este sistema de cartes multicoloridos, embora facilitasse em muito o uso do computador,
ainda era muito insatisfatrio. O programador tinha que comandar manualmente todo o
processo, e grande parte do tempo do computador era desperdiado lendo e perfurando
cartes. Conforme a demanda por tempo de processamento, memria, dispositivos de
entrada e sada e quantidade de dados aumentava, a gerncia eficiente destes recursos tornou-
se crtica. Todos os recursos de computao eram na poca muito caros e valiosos, e tinham
de ser eficientemente aproveitados para no gerar desperdcios.
Foi nesta poca que os sistemas operacionais foram desenvolvidos e refinados, sendo os
precursores dos sistemas utilizados hoje em dia. Um dos mais utilizados na poca era o
sistema operacional baseado em lotes (batch operating system ), que permitia que um certo
nmero de tarefas (jobs ) fossem colocadas juntas na leitora de cartes. Assim, por exemplo,
o exemplo descrito acima poderia ser realizado pelo seguinte conjunto de cartes:
//EXAMPLE JOB DONOVAN, T168,1,100,0
//STEP1 EXEC FORTRAN, NOPUNCH
READ 9100,N
DO 100 I = 1,N
I2 = I * I
I3 = I * I * I
100 PRINT 9100, I, I2, I3
9100 FORMAT (3I10)
END
/*
//STEP2 EXEC LOAD
/*
//STEP3 EXEC OBJECT
10
/*
O primeiro carto define um processo que o usurio de nome Donovan deseja realizar; o
segundo carto indica que os cartes seguintes devem ser processados pelo compilador
FORTRAN (at o carto de fim de arquivo, marcado com /*). O passo seguinte a chamada
do carregador, sem nenhum outro carto especial. O ltimo passo comanda a execuo do
programa objeto recm gerado, e fornece os dados a serem lidos (no caso o nmero 10).
Todos os cartes so interpretados pelo sistema operacional, que inclui todos os programas
do sistema mencionados anteriormente, alm de outros que supervisionam e controlam as
operaes de todos os programas no computador.
O sistema operacional realiza as seguintes funes:
aloca espao de memria e carrega programas para a execuo;
12-10
fornece servios para a obteno de dados de entrada e para a produo de dados de
sada;
fornece recuperao automtica para diversos tipos de erros, como erro na leitura de
um dispositivo de entrada, ou erro de overflow.
Nos sistemas operacionais simples, a memria totalmente alocada a um nico programa.
Assim, se este programa no utiliza toda a memria, parte deste recurso no utilizado. Nos
tempos atuais isto no considerado um problema srio, mas at a dcada de 70 a memria
era um recurso extremamente caro e que no poderia ficar ocioso. Para usar a memria na
sua integridade, desenvolveram-se os sistemas operacionais multiprogramados.
Em sistemas multiprogramados, dois ou mais programas so carregados na memria
(em reas diferentes, naturalmente) e o computador os executa simultaneamente. Havendo
apenas uma UCP, o sistema s pode processar, em cada instante, tarefas relativas a um
usurio. Mas o sistema operacional atende a todos com uma rotatividade intensa, de tal forma
que ele parece estar executando todos em paralelo.
Portanto, nestes sistemas, muitos programas podem residir simultaneamente no computador.
O sistema operacional aloca os diversos recursos computacionais para os programas
selecionados e mantm as atividades de chaveamento dos recursos durante o funcionamento
do sistema. Exemplificando, enquanto um programa est sendo executado na UCP, um
outro programa pode estar recebendo dados de um dispositivo perifrico (fita magntica, por
exemplo), e um terceiro pode estar imprimindo dados.
Em tais sistemas um dos principais problemas a gerncia eficiente de memria. Com a
constante alocao e liberao de memria, podem surgir reas de memria muito pequenas
para conterem um programa. O surgimento destes buracos na memria conhecido como
fragmentao. A fragmentao tem sido minimizada por diversas tcnicas. Uma delas
consiste em rearranjar os endereos do programas (realocao dinmica), movendo-os de
lugar e assim reunindo todas as pores no utilizadas em uma nica regio contnua de
memria.
Outra tcnica a de paginao: por este mtodo, os programas so sub-divididos em pores
iguais ou pginas, e a memria dividida em pores denominadas blocos. Na hora da
carga do programa, as pginas so carregadas nos blocos. Em um sistema de paginao
simples todas as pginas do programa so carregadas na memria. J em um sistema mais
sofisticado de paginao por demanda, um programa pode ser executado sem que todas
as suas pginas estejam na memria. As pginas so carregadas conforme elas so
necessrias, isto , quando elas so referenciadas (demandadas).
Em sistemas onde h mais do que uma UCP, h a possibilidade real de que sejam executadas
duas ou mais instrues ao mesmo tempo: neste caso, tem-se multiprocessamento, ou
seja, cada processador pode executar um programa diferente em paralelo (ao mesmo tempo)
aos demais.
Existem sistemas nos quais o tempo do processador partilhado entre diversos usurios: so
os sistemas de time-sharing (ou de diviso de tempo). Nestes, muitos usurios
comunicam-se com o sistema computacional atravs de terminais remotos. O sistema
operacional aloca a cada um, ou seja, a cada job, um perodo de tempo (time-slice) com
base em consideraes de prioridade. O job uma unidade de trabalho especificado
aplicado na execuo de uma tarefa de processamento de dados. Assim, durante estes
perodos de tempo, o computador faz com que o computador processe um job at que
ocorra uma das seguintes condies:
o job completado;
um erro detectado;
ocorre solicitao ou necessidade de uma entrada/sada;
o perodo de tempo termina.
12-11
Ento o processador designado para o job de mais alta prioridade. Nos dois primeiros
casos, o job deve ser removido da memria. Nos dois ltimos, o job suspenso
temporariamente.
O sistema operacional contribui para o usos mais eficiente dos recursos de hardware pelo
gerenciamento dos recursos de memria. Por exemplo, se um programa no pode ser
acomodado inteiramente na memria devido ao seu tamanho, o sistema operacional pode
dividi-lo em partes denominadas de pginas ou segmentos, transferindo-os gradualmente
da memria secundria para a principal.
O efeito do sistema operacional na gerenciamento do sistema computacional visa melhorar
sua eficincia, a qual avaliada pelo throughput. Throughput a quantidade de
processamento que o sistema realiza com sucesso durante um intervalo de tempo
especificado. Pode servir como medida de avaliao tanto para hardware como para o
software. A contribuio do sistema operacional neste sentido resultante da eficincia das
facilidades existentes no seu cdigo.
12. 7 Funes bsicas dos sistemas operacionais
Um sistema operacional um conjunto de programas que permite ao computador controlar
os recursos, executar programas e gerenciar dados. Inclui todos os programas do sistema
mencionados anteriormente, alm de outros que supervisionam e controlam as operaes de
todos os programas no computador. Do ponto de vista do usurio, a funo do sistema
operacional auxili-lo na mecnica de resoluo de problemas.
O sistema operacional tem trs encargos principais: gerenciar a execuo de programas e
aes realizadas na memria, gerenciar o armazenamento de arquivos e gerenciar as
atividades de E/S. Para tanto, ele detm trs funes bsicas, que so:
controlar os recursos do sistema de computao;
executar os programas do computador;
gerenciar dados.
Estas funes so executadas sem que o programador precise estar instruindo o sistema
operacional a faz-lo, a cada momento. Na verdade, o sistema operacional j existe como
uma srie de programas que fazem parte da mquina e que permitem uma operao
razoavelmente confortvel para o programador de aplicaes. Os programas de controle
minimizam a interveno do operador de tal forma que as operaes do computador fluem de
forma suave e contnua. O programa mais importante no sistema o supervisor, cuja maior
parte reside na memria (est sempre l). Ele controla o sistema operacional inteiro e chama
outros programas do sistema operacional (do disco), quando necessrio, para que eles
permaneam na memria enquanto forem executados. Aps, eles retornam para o disco, para
que se tenha uso eficiente do espao de memria.
O sistema operacional aumenta a eficincia de duas maneiras:
ele atua como promotor da cooperao entre os usurios do sistema, ajudando-os a
fazerem o melhor uso possvel dos recursos computacionais de forma que todos tirem
proveito.
ele chama tradutores e outros programas para que se encarreguem de tarefas comuns
(usuais). Isto libera os programadores de aplicaes de tarefas rotineiras e repetitivas.
A fim de cumprir as funes acima listadas, o sistema operacional executa atividades tais
como:
operaes de seqenciamento e escalonamento de jobs (alocao de espao de
memria e carga de programas para a execuo), e controle de trfego: o sistema recebe
12-12
os diferentes jobs, e com base em suas caractersticas e necessidades decide sobre
sua execuo (prioridades, tempo de execuo, recursos disponveis, etc). Quando
possvel executar-se entrada/sada simultaneamente execuo de um programa, todas
estas funes so escalonadas pelo controlador de trfego.
programao de entrada e sada: executa diretamente as aes relacionadas s operaes
de entrada e sada, quando o canal de entrada e sada tem seu conjunto prprio de
instrues especializadas, necessitando apenas de instrues simples do usurio
referentes a estas operaes.
auto-proteo (contra o usurio) e proteo do usurio com relao aos demais: oferece
proteo ao usurio, evitando que seus programas, bases de dados ou arquivos sejam
modificados por aes maliciosas ou acidentais. Igualmente, o prprio sistema
operacional deve assegurar sua auto-inviolabilidade.
gerenciamento de armazenamento secundrio: o controle do uso de discos, fitas e
outros meios de armazenamento secundrio para os programas e dados do usurio,
sendo uma tarefa realizada pelo sistema operacional, transparente do ponto de vista do
usurio.
manipulao de erros: o sistema operacional deve realizar aes especficas com relao
aos diversos tipos de erros que podem ser causados durante a operao e uso da
mquina, que podem variar desde o envio de aviso ao usurio at a correo ou
modificao de parmetros para poder prosseguir na operao.
Estas funes precisam ser compatibilizadas com as estruturas de hardware, de modo que se
obtenha o melhor compromisso em objetivos conflitantes tais como eficincia, ciclos rpidos
de execuo, e convenincia do usurio. Para tanto so usadas diversas tcnicas de
implementao; algumas so comentadas ao longo deste material.
12. 8 Processos e escalonamento
Um processo pode ser visto como uma seqncia ou conjunto de operaes que realizam
uma tarefa computacional, como por exemplo um processo de leitura, impresso, execuo,
etc. Um processo computacional pode ser seqencial com um conjunto de operaes
ordenadas em tempo ou concorrente com operaes paralelas. O conceito de processos
importante para sistemas operacionais porque a realizao de cada processo pode representar
a execuo de uma tarefa isolada, complementar ou concorrente escalonados pelo sistema
operacional.
Processos seqenciais so caracterizados por uma ordenao da execuo de suas tarefas no
tempo, portanto facilitando a administrao de um conjunto de tarefas por um sistema
operacional. Em processos concorrentes possvel ter duas ou mais operaes em paralelo.
Os processos concorrentes existem por causa da competio no uso dos recursos de um
computador como, por exemplo, usos da memria, UCP, leitoras, etc, resultando em
escalonamento de operaes para minimizar qualquer conflito entre processos como tambm
reduzir o tempo de execuo. Isto feito normalmente atravs de processos como, por
exemplo, leitura pelos canais, enquanto a UCP executa outros processos. A operao
spooling baseada sobre o princpio de sobreposio de processos com o auxlio de canais
ou dispositivos especiais. Em geral, o compartilhamento dos recursos de um computador em
tempo e espao necessita de um mdulo de escalonamento associado aos sistemas
operacionais multiprogramveis.
Existem duas formas principais de escalonamento: escalonamento sem e com preempo. O
escalonamento sem preempo assume que um processo j em posse de um recurso (UCP,
leitora, impressora, etc) no interrompido at o final da execuo do processo. Para
implementar tal poltica, so usados modelos primitivos na deciso de enfileiramento dos
12-13
processos, tais como: primeiro a chegar, primeiro a ser servido, ou processos com mnimo
tempo de execuo.
Com preempo, um processo pode ser interrompido em execuo para transferir controle de
um recurso para outro processo ou atender s necessidades do sistema. Este tipo de
escalonamento muito empregado em sistemas de multiprogramao onde existe
compartilhamento de espao e tempo por todos os processos. Em sistemas de
multiprogramao, os modelos para determinar a poltica de escalonamento podem ser
bastante complexos. A interrupo, bastante usada em sistemas multiprogramveis, tem a
funo de preempo de um processo momentaneamente em posse de um recurso de um
recurso, tal como UCP, dispositivos, etc.
12. 9 Carga do sistema (inicializao da mquina)
Denomina-se de carga do sistema, operao que tem por objetivo colocar o computador em
condies de funcionamento. Consiste, fundamentalmente, em carreg-lo com rotinas
essenciais ao atendimento dos diversos programas de aplicao que lhe sero posteriormente
submetidos. Esta operao comumente denominada de bootstrap, referindo-se
informalmente ao procedimento como dar o boot na mquina.
Esta operao envolve: a colocao das primeiras instrues na memria a partir de um
comando especfico: nas mquinas modernas, este comando j vem embutido na inicializao
da mquina; nas antigas, era disparado por uma tecla ou boto especial, ou estas instrues
eram carregadas manualmente na memria da mquina. Este programa dispara a leitura (de
um disquete, do disco, de uma memria de armazenamento permanente, por exemplo) de um
programa carregador que ento posicionado na memria; a partir deste, novos programas
ou rotinas so sucessivamente carregados ou posicionados na memria, para executar as
aes subseqentes. Esta carga completa denominada de boot inicial do sistema. O
computador no tem a capacidade de reter a informao que est na memria principal
quando cortada a energia eltrica: assim, esta operao repetida a cada nova ligao da
mquina.
12. 10 Multiprogramao
Assim, como visto na unidade anterior, a multiprogramao se refere existncia de mais
do que um programa em diferentes partes da memria principal ao mesmo tempo. Seu
principal objetivo a eficincia computacional. Uma tcnica relacionada a multi-tarefas, ou
a existncia de diversas tarefas que so parte do mesmo job e podem ser executadas
simultaneamente.
Em sistemas multiprogramados, dois ou mais programas so carregados em diferentes
reas da memria, na expectativa de que eles vo gerar uma quantidade significativa de
trabalho para o computador. Se este trabalho gerado exceder a capacidade do computador, o
resultado que a mquina (em princpio) no dever ficar parada, esperando novas tarefas.
Assim, o programa supervisor executa o trabalho de alocao das diferentes unidades pela
manuteno de listas de passos que esto prontos para execuo em cada uma das unidades.
Quando uma unidade completa um passo, o supervisor pode consultar a sua lista para um
novo trabalho. No caso das unidades de entrada/sada, a concluso de uma passo indicado
por uma interrupo, que sinaliza UCP para parar temporariamente o programa atual e para
alocar mais trabalho unidade de E/S, se houver. No caso da CPU, a concluso indicada
quando o programa na UCP ou chega ao final do job ou requisita buffers de E/S que ainda
no esto disponveis isto se uma entrada foi requisitada, e o sistema ainda no
preencheu o buffer, ou se uma sada foi requisitada, o sistema ainda no esvaziou os buffers
anteriores de tal forma que haja lugar para os novos.
Neste gerenciamento de execuo de jobs, h problemas envolvidos tais como:
12-14
quando ocorre a interrupo nas atividades de um job, visando transferir o
processamento para outro, necessrio assegurar a guarda de valores contidos nos
registradores e memria, para posteriormente poder retomar as atividades;
determinao de qual(is) job(s) deve(m) ser carregado(s) na memria quando h
diversos aguardando na fila de execuo, e qual tarefa deve ser alocada a uma unidade
em particular, quando h diversas tarefas que aguardam por programas que j esto na
memria. A soluo emprega algoritmos de escalonamento e critrios de prioridades;
custo de memria, j que h necessidade de maior espao de memria do que em
sistemas onde somente um job pode ser rodado em cada momento;
ainda outros problemas dizem respeito a questes tais como: alocao de memria,
relocao e proteo.
A fim de racionalizar o compartilhamento pa UCP (processador) entre os diversos jobs
(processos) utiliza-se um scheduler, ou seja, um elemento de software que realiza duas
funes bsicas:
1. selecionar um processo entre os prontos para executar (ready) para ser o prximo a
ganhar o controle da UCP.
2. determinar a fatia mxima de tempo de processador (time-slice) que o processo pode
utilizar antes de ir novamente para a fila dos processos prontos para executar.
A Figura 12.1 ilustra as transies de estado que um processo pode sofrer. Os processos que
renem todas as condies necessrias para serem executados esto no estado pronto
(ready, em ingls). Quando um dos processos deste grupo ganha o controle do processador,
ele transiciona para o estado executando (running). Ele sair deste estado ou quando a sua
fatia de tempo terminar (neste caso ele retorna para o grupo pronto) ou quando necessitar de
um evento externo UCP (neste caso vai para o grupo bloqueado). Um processo em estado
bloqueado (blocked) permanece neste estado at que o evento esperado ocorra (como o
trmino de uma operao de E/S, a execuo de uma determinada operao por outro
processo, etc). Quando o evento ocorre, o processo volta ao grupo pronto.
Pronto
Execu-
tando
Bloqueado
Processo precisa esperar
pelo trmino de um evento
(por exemplo, E/S)
O evento esperado pelo processo ocorreu
Processo interrompido
(fim da fatia de tempo)
Processo selecionado
Figura 12.1 - Estados de um processo
A figura no ilustra nem o nascimento nem a morte de processos. Quando um processo
inicializado, ele vai primeiramente para a fila dos processos prontos, concorrendo com os
demais ao uso da UCP. Quando um processo encerra sua execuo, ele simplesmente no
retorna ao grupo pronto.
12-15
Diversos problemas podem ocorrer no escalonamento dos processos, principalmente
relacionados sincronizao entre processos. Um deste problemas o da corrida (race),
quando a sincronizao to crtica que diversas ordens de escalonamento podem produzir
diferentes computaes (resultados diferentes). Outro problema o do deadlock, quando
diversos processos se bloqueiam mutuamente, e de tal forma que cada processo fica
esperando por eventos que deveriam ser gerados pelos outros processos bloqueados. Estes
problemas podem ser resolvidos de duas maneiras bsicas distintas: por cooperao ou por
comunicao. Na comunicao, os processos trocam mensagens entre si, de forma a se
sincronizarem e impedir o surgimento de problemas. Na cooperao, existem recursos
crticos, que devem ser utilizados nica e integralmente por um processo antes de passarem
para outros processos. Estes recursos de excluso mtua normalmente tem seu acesso
controlado por variveis do tipo semforo. O detalhamento exato dos problemas acima,
assim como as metodologias e solues possveis sero analisados em outras disciplinas.
12. 11 Multiprocessamento
O multiprocessamento se refere aos sistemas onde h duas ou mais UCPs em um nico
sistema computacional; assim, h a possibilidade real de que sejam executadas duas ou mais
instrues ao mesmo tempo. Estas UCPs esto conectadas mesma memria, de tal forma
que elas podem estar executando partes do mesmo ou de diferentes programas. O uso de
mltiplas UCPs visa incrementar a capacidade de processamento do sistema, freqentemente
avaliado em mips (millions of instructions per second).
Ainda h os sistemas nos quais vrias UCPs, cada uma com a sua prpria memria, podem
ser interligadas atravs de canais, cada uma assemelhando-se a um dispositivo de E/S do
ponto de vista dos demais computadores. Isto no multiprocessamento: uma sistema
multicomputador, tambm denominado de rede de computadores. Nestes sistemas, h
distribuio dos jobs aos computadores que esto com tempo de processamento disponvel
nas modalidades requisitadas, o que caracterizado como distribuio de carga.
12. 12 Exemplos de sistemas operacionais
Os sistemas operacionais vm normalmente incorporados s mquinas (computadores),
sendo cobrados parte ou no. Atualmente, h tendncia no uso de sistemas operacionais
genricos, isto , sistemas operacionais cuja natureza permite que ele opere com sistemas de
computadores de diferentes fabricantes. Estes sistemas tem sido freqentemente criados por
companhias de software e no por fabricantes de mquinas. Exemplos destes casos so o
UNIX e o MS-DOS.
O UNIX foi desenvolvido em 1971 por Ken Thompson e Denis Ritchie na AT&T Bell
Laboratories para uso nos minicomputadores DEC da Bell. Os projetistas surpreenderam-se
com a aceitao no mercado externo Bell. Como razes para o fato, apontam: o uso
disseminado do software por faculdades e universidades, cujos usurios repassaram o uso
posteriormente s indstrias; outra razo foi a enorme reduo no preo por cpia, em 1981,
sendo estas comercializadas por US$ 40. Este um sistema operacional multi-usurio, com
diviso de tempo (time-sharing) que, embora inicialmente implementado para
minicomputadores, atualmente roda em mquinas de grande porte e em alguns
microcomputadores. Entre os problemas relacionados ao UNIX, apontam-se: sua dificuldade
de utilizao (do ponto de vista do usurio, no user-friendly, embora esta caracterstica
tenha sido melhorada pelo uso de menus tradicionais); alm disto, faltam ao UNIX algumas
caractersticas de segurana sofisticadas.
Para computadores pessoais, o sistema operacional mais popular o MS-DOS (Microsoft
Disk Operating System; Bill Gates, Microsoft). Este sistema foi escolhido pela IBM para
incorpor-lo aos seus computadores pessoais, em detrimento do CP/M (Gary Kildall, Digital
Research) que j se encontrava em uso, na poca. Neste sistema, os programas so
executados pela emisso de um comando, ou seja, um nome que chama o programa
12-16
desejado. Os comandos internos do DOS so colocados na memria do computador quando
o usurio liga-o. Os demais, que residem em disco, so chamados de comandos externos do
DOS.
De forma geral, o software escrito para rodar em um sistema operacional, no rodam em
outro. Assim, os projetistas de software tentam maximizar as vendas de seu produto
escrevendo programas para os sistemas operacionais mais utilizados. Alguns sistemas
fornecem figuras e/ou designaes simplificadas aos invs de comandos ou smbolos
simples como o PROMPT (>) do DOS. O efeito destas figuras o de apresentar um aspecto
mais amigvel para o usurio, existindo tal como uma roupagem ou shell ao redor do
sistema operacional. Assim, eles criam um ambiente confortvel para o usurio, que no
precisa estar memorizando comandos especficos.
12. 13 Redes de computadores
Computadores podem ser interligados entre si, de forma a compartilhar recursos (memria,
perifricos, UCP e informao). Se os computadores esto prximos entre si (na mesma sala
ou no mesmo prdio), a rede denominada de rede local ou LAN (Local Area Network). Se
por outro lado os computadores esto geograficamente distantes, tem-se uma WAN (Wide
Area Network).
Ao nvel de hardware, a comunicao realizada atravs de circuitos especiais, que
transformam os dados a serem transmitidos em sinais eltricos. Como meio fsico utilizam-se
desde pares telefnicos at cabos coaxiais, fibras ticas, enlaces de microondas e at satlites
de comunicao. Ao nvel de software desenvolveram-se diversos mtodos de comunicao
(protocolos), que definem como esta comunicao realizada e comos os dados
intercambiados devem ser interpretados. Frente a sua complexidade, redes modernas so
projetadas de forma altamente modularizada. A maioria das redes se encontra organizada em
uma srie de camadas hierrquicas, onde cada camada utiliza os servios definidos da
camada inferior e fornece uma outra srie de servios, de mais alto nvel, para a camada
superior. A International Standards Organization (ISO) criou o modelo de referncia OSI
(Open Systems Interconection), que define sete destas camadas em cada mquina:
1. Fsico: define as caractersticas dos equipamentos e os requisitos para a realizao
das ligaes.
2. Enlace (ou ligao): define os meios e os procedimentos para a transmisso de
blocos de informao e controle dos possveis erros que possam ocorrer.
3. Rede: define o intercmbio de informao dentro da rede. Trata do agrupamento da
informao em pacotes, do endereamento dentro da rede e da deteco e correo
de erros.
4. Transporte: trata da transferncia de mensagens, do agrupamento e decomposio
dos pacotes de dados. Outra atribuio a otimizao do uso da rede, selecionando
as conexes adequadas.
5. Sesso: controla as operaes realizadas sobre os dados, a fim de assegurar sua
integridade com respeito ao uso compartilhado dos mesmos. Neste nvel agrupam-
se as mensagens relacionadas entre si (estabelecendo uma sesso).
6. Apresentao: trata da organizao das entradas e sadas, definindo os formatos
necessrios aos terminais, aos arquivos e aos dados, a fim de que possam ser
utilizados pela sesso e pela aplicao do usurio.
7. Aplicao: consiste no controle e superviso dos processamentos dos usurios que
se intercomunicam.
12-17
Do ponto de vista do sistema operacional, tem-se um recurso a mais a ser gerenciado: a rede.
Servios que no esto disponveis no computador local podem estar acessveis via rede e,
para utiliz-los de forma adequada, o sistema operacional deve ter conhecimento deles. Tem-
se assim os sistemas operacionais distribudos, onde os recursos a serem gerenciados
no esto concentrados em um nico computador, mas sim espalhados ao longo da rede.
O processador deixa de ser uma entidade nica no sistema. Alm do tradicional aspecto do
escalonamento de processos (qual processo ser executado pelo processador), surge a
questo do escalonamento de processadores (qual dos processadores disponveis ir executar
determinado processo).Uma outra consequncia da multiplicidade de processadores a
possibilidade de continuidade do processamento aps a ocorrncia de falhas em um
determinado processador. Como provavelmente ainda haver rplicas desse recurso na rede,
os processos afetados pela falha podem continuar aps migrarem para um processador no
falho.
Tais vantagens, entretanto, so pouco exploradas atualmente. Esse fato decorre da pouca
utilizao de sistemas operacionais distribudos nesse tipo de ambiente. mais frequente o
emprego de sistemas operacionais centralizados tradicionais, que no foram projetados
especificamente para ambientes distribudos, com extenses para suportar algumas operaes
remotas bsicas (como transferncia de arquivos e execuo remota de processos, por
exemplo).
Por um sistema distribudo se entende atualmente um sistema que consiste de mltiplos
processadores que no compartilham memria primria e se comunicam por mensagens
atravs de uma rede de comunicao. Programas distribudos podem contar com quatro tipos
de processos: clientes, servidores, filtros e pares. Clientes e servidores interagem usualmente
de forma sncrona: um cliente envia uma mensagem de requisio de servio a um servidor
local ou remoto; o servio executado pelo servidor, que retorna os resultados ao cliente
(que espera bloqueado). Um servidor pode ser projetado para atender mltiplas requisies
concorrentemente. Processos filtro recebem, processam e enviam adiante os dados obtidos.
Processos pares interagem com mensagens para cooperar no atendimento a requisies.
Nos dias de hoje os ambientes computacionais da maioria das organizaes apresentam um
realidade heterognea. Esta heterogeneidade, que pode ser definida com a diversidade
existente em sistemas de computao, manifesta-se especialmente sob os seguintes aspectos:
arquitetura da mquina: processadores, memria e dispositivos de E/S. As arquiteturas
atuais diferem em uma srie de aspectos, dos quais o principal a famlia do elemento
processador utilizado no equipamento. Por famlia entenda-se um conjunto de
elementos processadores com certo grau de compatibilidade entre si. Exemplos so os
microprocessadores Intel 80x86 e os Motorola 680x0. Uma parcela das estaes de
trabalho existentes atualmente utiliza processadores RISC (Reduced Instruction Set
Computer), embora as linhas de processadores de cada fabricante sejam incompatveis
entre si. H ainda outros tipos de processadores, tal como os Transputers, utilizados
em mquinas paralelas.
sistemas operacionais: chamadas do sistema, interface com o usurio (interpretador de
comandos e ambientes de janelas) e mecanismos de comunicao entre processos;
redes de comunicao: protocolos de comunicao e interfaces de rede;
linguagens de programao e compiladores: diferenas entre implementaes de uma
mesma linguagem e uso de diferentes linguagens.
Um sistema operacional de rede pode ser definido como a soma das camadas de software
escritas em cada mquina (host, ou hospedeiro) para propiciar comunicao e
compartilhamento de recursos entre a mquina local e diferentes mquinas remotas. Tanto o
computador local como os equipamentos remotos que compe a rede so entidades
autnomas.

Você também pode gostar