Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tubaro - 2000
1. Conceitos Bsicos
1.1 Introduo
Antes de comearmos a estudar os conceitos e os principais componentes de um sistema operacional, devemos saber primeiramente quais so suas funes bsicas. Por mais complexo que possa parecer, um sistema operacional e apenas um conjunto de rotinas executado pelo processador, da mesma forma que qualquer outro programa.. Sua principal funo e controlar o funcionamento do computador, como um gerente dos diversos recursos disponveis no sistema. O nome sistema operacional no e nico para designar esse conjunto de programas. Nomes como monitor, executivo, supervisor ou controlador possuem, normalmente, o mesmo significado. Um sistema operacional possui inmeras funes e resumimos essas funes, basicamente, em duas, descritas a seguir:
Figura 1 - Viso do sistema operacional como interface entre os usurios e os recursos do sistema.
Figura 2 - Viso modular do computador pelo usurio. Partindo desse princpio, podemos considerar o computador como uma mquina de nveis ou camadas, onde inicialmente existem dois nveis: o nvel 0 (hardware) e o nvel 1 (sistema operacional). Desta forma, o usurio pode enxergar a mquina como sendo apenas o sistema operacional, ou seja, como se o hardware no existisse. Esta viso modular e abstrata chamada mquina virtual. Na realidade, um computador no possui apenas dois nveis, e sim tantos nveis quanto forem necessrios para adequar o usurio s suas diversas aplicaes. Quando o usurio est trabalhando em um desse nveis, no necessita da existncia das outras camadas, acima ou abaixo de sua mquina virtual. Atualmente, a maioria dos computadores possui a estrutura mostrada na Figura, podendo conter mais ou menos camadas. A linguagem utilizada em cada um desses nveis diferente, variando da mais elementar (baixo nvel) mais sofisticada (alto nvel).
Aplicativos Utilitrios Sistema Operacional Linguagem de Mquina Microprogramao Dispositivos Fsicos Hadware
1.3 Histrico
A evoluo dos sistemas operacionais est, em grande parte, relacionada ao desenvolvimento de equipamentos cada vez mais velozes, compactos e de custos baixos, e necessidade de aproveitamento e controle desses recursos. Neste histrico dividimos essa evoluo em fases, once destacamos, em cada uma, sues principals caractersticas de hardware, software, interao com o sistema e aspectos de conectividade. Prof. Alessandro Zanini 3
Inicialmente, os programas passaram a ser perfurados em cartes, que, submetidos a uma leitora, eram gravados em uma fita de entrada (Figura 4a). A fita, ento, era lida pelo computador, que executava um programa de cada vez, gravando o resultado do processamento em uma fita de sada (Figura 4b). Ao terminar de todos os programas, a fita de sada era lida e impressa (Figura 4c). A esse tipo de processamento, onde um lote (batch) de programas era submetido ao computador, deu-se o nome de processamento batch. Pode no parecer um avano, mas anteriormente os programas eram submetidos pelo operador, um a um, fazendo com que o processador ficasse ocioso entre a execuo, ao de um programa e outro. Com o processamento batch, um grupo de programas era submetido de uma s vez, o que diminua o tempo existente entre a execuo dos programas, permitindo, assim, melhor uso do processador. Os sistemas operacionais passaram a ter seu prprio conjunto de rotinas pare operaes de entrada/sada (Input/Output Control SystemIOCS), que veio facilitar bastante o processo de programao. O IOCS eliminou a necessidade de os programadores desenvolverem sues prprias rotinas de leitura/gravao especficas para cada dispositivo perifrico. Essa facilidade de comunicao criou o conceito de independncia de dispositivos. Importantes avanos, em nvel de hardware, foram implementados no final dessa fase, principalmente na linha 7094 da IBM. Entre eles, destacamos o conceito de canal, que veio permitir a transferncia de dados entre dispositivos de entrada/sada e memria principal de forma independente da UCP. Ainda nessa fase, destacamos os sistemas FMS (Fortran Monitor System) e IBSYS.
No final dessa fase, com a evoluo dos microprocessadores, surgiram os primeiros microcomputadores, muito mais baratos que qualquer um dos computadores ate ento comercializados. Entre eles, destacamos os micros de 8 bits da Apple e o sistema operacional CP/M (Control Program Monitor).
A arquitetura cliente-servidor aplicada basicamente a redes locais passe a ser oferecida em redes distribudas, permitindo que qualquer pessoa tenha acesso a todo tipo de informao, independentemente de once esteja armazenada. Problemas de segurana, gerncia e desempenho tornam-se fatores importantes relacionados ao sistema operacional e a rede. A dcada de 90 foi definitiva pare a consolidao dos sistemas operacionais baseados em interfaces grficas. Apesar da evoluo da interface, a forma de interao com os computadores sofrer, talvez, uma das modificaes mais visveis. Novas interfaces homem-mquina sero utilizadas, como linguagens naturais, sons e imagens, fazendo essa comunicao mais inteligente, simples e eficiente. Os conceitos e implementaes s vistos em sistemas considerados de grande porte esto sendo introduzidos na maioria dos sistemas desktop, como na famlia Windows da Microsoft, no Unix e no OS/2 da IBM. Fase Computad ores Hardware Primeira (1945- Segunda (1956- Terceira (1966- Quarta 1955) 1965) 1980) 1990)
ENIAC EDVAC UNIVAK NCR IMB 7094 CDC-6600 IBM 360, 370 PDP-11 Cray 1 Cyber-205 Circuito Integrado Disco Magntico Minicomputador Microprocessador Cray XMP IBM 308 VAX-11 IBM-PC LSI ou VLSI Disco ptico Microcomputador
(1981- Quinta )
IBM 3090 Alpha AXP Pentium Sun SPARC
(1991-
Ultra-LSI Arquiteturas Paralelas Circuto Integrado 3D Processamento Distribudo Linguagens concorrentes Programao funcional Linguagens naturais Redes Locais estendidas(ELAN) Redes sem fio Modelo clienteservidor
Software
Linguagem de Linguagem de Alto Linguagem Mquina Nvel Estruturadas Linguagem assembly Processamento Batch Multiprogramao Time-Sharing Computao Grfica
Telecomu nicaes
Telefone Teletipo
Transmisso Digital
Comunicao via Redes Locais (LAN) satlite Internet Microondas Redes distribudas(WAN) Fibra ptica 5 Mips 30 Mips
Desempen ho
10 ips
200.000 ips
1 Gflops 1 Tflops
Figura 5 - Unidades funcionais de um computador A UCP composta por dois componentes bsicos: unidade de controle e unidade lgica aritmtica. A Unidade de controle (UC) responsvel por controlar as atividades de todos os componentes do computador, mediante a emisso de pulsos eltricos (sinais de controle) gerados por um dispositivo denominado clock. Este controle pode ser a gravao de um dado no disco ou a busca de uma instruo da memria. A unidade lgica e aritmtica (ULA), como o nome indica, responsvel pela realizao de operaes lgicas (testes e comparaes) e aritmticas (somas e subtraes). Prof. Alessandro Zanini
A especificao da velocidade de processamento de uma UCP determinada pelo nmero de instrues que o processador executa por unidade de tempo, normalmente segundo. Alguns fabricantes utilizam unidade processamento prprias, j que no existe uma padronizao, sendo as mais comuns o MIPS (milhes de instrues por segundo) e o MFLOPS/GFLOPS (milhes/bilhes de instrues de ponto flutuante por segundo). A mostra alguns processadores e suas respectivas velocidades de processamento. Intel 80386 5 MIPS Intel 80486 20 MIPS Item Pentium 100 MIPS Item Pentium Pro 250 MIPS
Velocidade de Processamento
2.1.2 Clock
O clock e um dispositivo, localizado na UCP, que gera pulsos eltricos sncronos em um determinado intervalo de tempo (sinal de clock). A quantidade de vezes que este pulso se repete em um segundo define a freqncia do clock. O sinal de clock e utilizado pela unidade de controle pare a execuo, das instrues. A freqncia do clock de um processador e medida em Hertz (Hz), que significa o nmero de pulsos eltricos gerados em um segundo de tempo. A freqncia tambm pode ser utilizada como unidade de desempenho entre diferentes processadores, pods quanto major a freqncia, mais instrues podem ser executadas pela UCP em um mesmo intervalo de tempo.
2.1.3 Registradores
Os registradores so dispositivos de alta velocidade, localizados fisicamente na UCP, pare armazenamento temporrio de dados. O nmero de registradores varia em funo da arquitetura de cada processador. Alguns registradores so de uso especfico e tm propsitos especiais, enquanto outros so ditos de uso geral. Entre os registradores de uso especfico, merecem destaque: contador de instrues (CI) ou program counter (PC) e o registrador responsvel pelo armazenamento do endereo da prxima instruo que a UCP dever executar. Toda vez que a UCP execute uma instruo, o PC e atualizado com um novo endereo; o apontador da pilha (AP) ou stack pointer (SP) e o registrador que contmemriam o endereo de memria do topo da pilha, que e a estrutura de dados onde o sistema mantm informaes sobre tarefas que estavam sendo processadas e tiveram que ser interrompidas por algum motivo; o registrador de estado, tambm chamado em alguns equipamentos de program status word (PSW), e o registrador responsvel por armazenar informaes sobre a execuo do programa, como a ocorrncia de carry e overflow. A cada instruo executada, o registrador de estado e alterado conforme o resultado gerado pela instruo.
0 1 2
Endereos
M-1
Clula = n bits
Figura 6 - Memria principal O acesso ao contedo de uma clula e realizado atravs da especificao, ao de um nmero chamado endereo. O endereo e uma referncia nica, que podemos fazer a uma clula de memria Quando um programa deseja ler ou escrever um dado em uma clula, deve primeiro especificar qual o endereo de memria desejado, pare depois realizar a operao. A especificao, ao do endereo, o e realizada atravs de um registrador denominado registrador de endereo de memria (memory register address - MAR). atravs do contedo deste registrador, a unidade de controle sabe qual a clula de memria que ser acessada. Outro registrador usado em operaes com a memria e o registrador de dados da memria (memory buffer register MBR) . Este registrador e utilizado pare guardar o contedo de uma ou mais clulas de memria aps uma operao de leitura, ou pare guardar o dado que ser transferido pare a memria em uma operao de gravao. Este ciclo de leitura e gravao e mostrado na Figura 7. Operao de Leitura 1. A UCP armazena no MAR, o endereo da clula a ser lida. 2. A UCP gera um sinal de controle pare a memria principal, indicando que uma operao de leitura deve ser realizada. 3. 0 contedo da(s) clula(s), identificada(s) pelo endereo contido no MAR, e transferido pare o MBR. Operao de gravao 1. A UCP armazena no MAR, o endereo da clula que ser gravada. 2. A UCP armazena no MBR, a informao que dever ser gravada. 3. A UCP gera um sinal de controle pare a memria principal, indicando que uma operao de gravao deve ser realizada. 4. A informao contida no MBR e transferida pare a clula de memria endereada pelo MAR.
Figura 7 - Ciclo de leitura e gravao A capacidade de uma memria e limitada pelo tamanho do MAR. No caso de o registrador possuir n bits, a memria principal poder no mximo enderear 2n clulas, isto , do endereo 0 ao 2n-1. A memria principal pode ser classificada em funo de sue volatilidade, que e a capacidade de a memria preservar o seu contedo mesmo sem uma fonte de alimentao, ao ativa. As memrias chamadas volteis se caracterizam por poderem ser lidas ou gravadas, como o tipo RAM (random access Prof. Alessandro Zanini 10
memory), que constitui quase que a totalidade da memria principal de um computador. O outro tipo, chamado de no voltil, no permite alterar ou apagar seu contedo. Este tipo de memria conhecido como ROM (read-only memory), j vem pr-gravado do fabricante, geralmente com algum programa, e seu contedo e preservado mesmo quando a alimentao e desligada. Uma variao da ROM e a EPROM (erasable programmable ROM), once podemos gravar e regravar a memria atravs exposio de luz ultravioleta por um dispositivo especial. Atualmente, uma srie de memrias com diferentes caractersticas, existe pare diversas aplicaes, como a EEPROM, EAROM, EAPROM, NOVRAM entre outras.
Memria Cache
Memria Principal
Memria Secundria
Figura 8 - Relao entre os diversos tipos de dispositivos de armazenamento. Prof. Alessandro Zanini 11
2.1.8 Barramento
A UCP, a memria principal e os dispositivos de E/S so interligados atravs de linhas de comunicao denominadas barramentos, barras ou vias. Um barramento (bus) e um conjunto de fios paralelos (linhas de transmisso), onde trafegam informaes, como dados, endereos ou Sinais de controle. Ele pode ser classificado como unidirecional (transmisso em um s sentido) ou bidirecional (transmisso em ambos os sentidos). Na ligao entre UCP e memria principal, podemos observar que trs barramentos so necessrios pare que a comunicao seja realizada. O barramento de dados transmite informaes entre a memria principal e a UCP. O barramento de endereos e utilizado pela UCP pare especificar o endereo, o da clula de memria que ser acessada. Finalmente , o barramento de controle e por onde a UCP envia os pulsos de controle relativos as operaes de leitura e gravao. Na Fig. 2.5, podemos observar dois tipos de configuraces, onde UCP, memria principal e dispositivos de E/S so interligados de maneira diferente.
2.1.9 Pipelining
O conceito de processamento pipeline se assemelha muito a uma linha de montagem, onde uma tarefa e dividida em uma seqncia de subtarefas, executadas em diferentes estgios, dentro da linha de produo.
Dispositivos de E/S Memria Principal
UCP
UCP
12
Da mesma forma que em uma linha de montagem, a execuo de uma instruo pode ser dividida em subtarefas, como as fases de busca da instruo e dos operandos, execuo e armazenamento dos resultados. O processador, atravs de suas vrias unidades funcionais pipeline, funciona de forma a permitir que, enquanto uma instruo se encontra na fase de execuo possa estar na fase de busca simultaneamente. A tcnica de pipelining pode ser empregada em sistemas com um ou mais processadores, em diversos nveis, e tem sido a tcnica de paralelismo mais utilizada para maior desempenho dos sistemas de computadores.
Figura 10 - Ativao do sistema Alm da carga do sistema operacional, a ativao do sistema tambm consiste na execuo de arquivos de inicializao. Nestes arquivos so especificados procedimentos de inicializao de hardware e software especficos para cada ambiente. Na maioria dos sistemas, tambm existe o processo de desativao (shutdown). Este procedimento permite que as aplicaes e componentes do sistema sejam desativados de forma ordenada. Garantindo a integridade do sistema.
13
2.2 Software
O Hardware por si s no tem a menor utilidade. Para torn-lo til existe um conjunto de programas, utilizado como interface entre as necessidades do usurio e as capacidades do hardware. A utilizao de softwares adequados s diversas tarefas e aplicaes (conceitos de camadas) torna o trabalho do usurios muito mais simples e eficiente.
2.2.1 Tradutor
Nos sistemas operacionais antigos, o ato de programar era bastante complicado, j que o programador deveria possuir conhecimento do hardware e programar em painis atravs de fios. Esses programas eram desenvolvidos em linguagem de mquina e carregados diretamente na memria principal para execuo. Com o surgimento das primeiras linguagens de montagem (assembly languages) e das linguagens de alto nvel, o programador deixou de se preocupar com muitos aspectos pertinentes ao hardware, como em qual regio da memria o programa deveria ser carregado ou quais endereos de memria seriam reservados para as variveis. A utilizao dessas linguagens facilitou a construo de programas em muitos aspectos. Desse modo, um programa poderia ser escrito de uma forma bem documentada e com facilidades para realizar alteraes. O tradutor, pelo tipo de linguagem de programao utilizada, pode ser chamado de montador ou compilador (Figura 11).
Programa-Fonte Programa-Fonte Programa-Objeto
Linguagem de Montagem
Montador
Mdulo-Objeto
Compilador
Mdulo-Objeto
Figura 11 - Tradutor
2.2.2 Compilador
o utilitrio responsvel por gerar, a partir de um programa escrito em uma linguagem de alto nvel, um programa em linguagem de mquina no executvel. As linguagens de alto nvel, como pascal, fortran, cobol no tem nenhuma relao direta com a mquina, ficando essa preocupao exclusivamente com o compilador.
2.2.3 Interpretador
O interpretador considerado um tradutor que no gera cdigo-objeto. A partir de um programa fonte, escrito em linguagem de alto nvel, o interpretador, no momento da execuo do programa, traduz cada instruo e a executa em seguida.
2.2.4 Linker
O linker (ligador), tambm chamado de linkagem, o utilitrio responsvel por gerar, a partir de um ou mais mdulos-objetos, um nico programa executvel. Prof. Alessandro Zanini 14
Mdulo Fonte
Compilador
Mdulo Objeto
Mdulo Fonte
Compilador
Mdulo Objeto
Linker
Programa Executvel
Mdulo Fonte
Compilador
Mdulo Objeto
Figura 12 - Linker.
2.2.5 Loader
Tambm chamado carregador o utilitrio responsvel por colocar fisicamente na memria um programa para execuo. O procedimento de carga varia com o cdigo gerado pelo linker e, em funo deste, o loader classificado como sendo do tipo absoluto ou relocvel. Tipo absoluto - o loader s necessita conhecer o endereo de memria inicial e o tamanho do mdulo para realizar o carregamento. Ento, ele transfere o programa da memria secundria para a memria principal e inicia sua execuo. No caso de cdigo relocvel, o programa pode ser carregado em qualquer posio de memria, e o loader responsvel pela relocao no momento do carregamento.
2.2.6 Depurador
O desenvolvimento de programas est sujeito a erros de lgica, independentemente de metodologias utilizadas pelo programador. A depurao um dos estgios desse desenvolvimento, e a utilizao de ferramentas adequadas essencial para acelerar o processo de correo de programas. O depurador (debbuger) o utilitrio que permite ao usurio controlar a execuo de um programa a fim de detectar erros na sua estrutura. Este utilitrio oferece ao usurio recursos como: Acompanhar a execuo de um programa instruo por instruo; Possibilitar a alterao e visualizao do contedo de variveis; Implementar pontos de parada dentro do programa (break-point), de forma que, durante a execuo, o programa pare nesses pontos; Especificar que, toda vez que o contedo de uma varivel for modificado, o programa envie uma mensagem (watchpoint).
2.2.10 Microprogramao
Um programa em linguagem de mquina executado diretamente pelo hardware em processadores de arquitetura RISC, porm em mquinas CISC isto no acontece. Neste caso, como podemos observar na Figura 3, entre os nveis de linguagem de mquina e do hardware, existem ainda o da microprogramao. Os microprogramas definem a linguagem de mquina de cada computador. Apesar de cada computador possui nveis de microprogramao diferentes, existem muitas semelhanas nessa camada se compararmos os diversos equipamentos. Uma mquina possui, aproximadamente 25 microintrues bsicas, que so interpretadas pelos circuitos eletrnicos.
2.2.11 Processos
Um conceito chave da teoria dos sistemas operacionais o conceito de processo. Um processo basicamente um programa em execuo, sendo constitudo do cdigo executvel, dos dados referentes ao cdigo.
2.2.13 Arquivos
Arquivos so mecanismos de abstrao que fornece uma forma de armazenar recuperar informaes em disco. Isto deve ser feito de uma forma que mantenha o usurio isolado dos detalhes a respeito de como as informaes so armazenadas, e de como os discos efetivamente trabalha.
16
Figura 13 - Tipos de sistemas operacionais Tipos de Sistemas Operacionais Sistemas Monoprogramveis/Monotarefa Sistemas Multiprogramveis/Multitarefa Sistemas Batch Sistemas de Tempo Compartilhado Sistemas de Tempo Real Sistemas com Mltiplos Processadores Sistemas Fortemente Acoplados Sistemas Simtricos Sistemas Assimtricos Sistemas Fracamente Acoplados Sistemas Operacionais de Rede Sistemas Operacionais Distribudos
subtilizada caso o programa no a preencha totalmente, e os perifricos, como discos e impressoras, esto dedicados a um nico usurio. Comparados a outros sistemas, os sistemas monoprogramveis/monotarefa so de simples implementao, no existindo muita preocupao com problemas de proteo.
UCP
Programa/ Tarefa
Memria
Dispositivos de E/S
Um usurio Monousurio
Monousurio
Multiusurio
Tabela 4 - Sistemas X Usurios Os sistemas multiprogramveis/multitarefa podem ser classificados pela forma com que suas aplicaes so gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado ou de tempo real. Um sistema operacional pode suportar um ou mais desses tipos de processamento.
18
Sistemas Multiprogramveis/Multirefa
Sistemas Batch
com mltiplos processadores a forma de comunicao entre as UCPs e o grau de compartilhamento da memria e dos dispositivos de entrada e sada. Em funo desses fatores, podemos classificar os sistemas em fortemente acoplados ou fracamente acoplados.
Sistemas com Mltiplos Processadores
Sistemas Simtricos
Sistemas Assimtricos
Dispositivos de E/S
Dispositivos de E/S
20
Memria
Dispositivos de E/S
Memria
Dispositivos de E/S
UCP Master
UCP Slave
Dispositivos de E/S
S.O
Usurios
Usurios
Figura 19 - Sistemas assimtricos. Se o processador falhar, todo o sistema ficar incapaz de continuar o processamento. Neste caso, o sistema deve ser reconfigurado, fazendo um dos processadores escravos assumir o papel do mestre. Mesmo sendo uma organizao simples de implementar e quase um extenso dos sistemas multiprogramveis, esse tipo de sistema no utiliza eficientemente o hardware, devido assimetria dos processadores, que no realizam as mesmas funes.
21
UCP
UCP
Dispositivos de E/S
S.O
Usurios
Figura 20 - Sistemas simtricos. Como vrios processadores esto utilizando, independentemente, a mesma memria e o mesmo sistema operacional, natural a ocorrncia de acessos simultneos s mesmas reas de memria. A soluo desses conflitos fica a cargo do hardware e do sistema operacional. No processamento simtrico, um programa pode ser executado por qualquer processador, inclusive por vrios processadores ao mesmo tempo (paralelismo). Alm disso, quando um processador falha, o sistema continua em funcionamento sem nenhuma interferncia manual, porm com menor capacidade de computao. Os sistemas simtricos so mais poderosos que os assimtricos, permitindo um melhor balanceamento do processamento e das operaes de entrada/sada, apesar de sua implementao ser bastante complexa.
3.5.3 Multiprocessamento
Desde sua criao, os computadores tm sido vistos como mquinas seqncias, onde a UCP executa a instrues de um programa, uma de cada vez. Na realidade, essa viso no totalmente verdadeira, pois, em nvel de hardware, mltiplos sinais esto ativos simultaneamente, o que pode ser entendido como uma forma de paralelismo. Com a implementao de sistemas com mltiplos processadores, o conceito de simultaneidade ou paralelismo pode ser expandido a um nvel mais amplo, denominado multiprocessamento, onde uma tarefa pode ser dividida e executada, ao mesmo tempo, por mais de um processador.
Com a evoluo dos computadores pessoais e das estaes de trabalho, juntamente com o avano das telecomunicaes e da tecnologia de redes, surgiu um novo modelo de computao, chamado de modelo de rede de computadores.
N N N
Rede
23
Rede Usurio
Figura 23 - Sistemas Operacionais Distribudos. A grande vantagem desses sistemas a possibilidade do balanceamento de carga, ou seja, quando um programa admitido para execuo, a carga de processamento de cada sistema avaliada e o processador mais livre escolhido. Depois de aceito para processamento, o programa executado no mesmo processador at o seu trmino. Tambm possvel o compartilhamento de impressoras, discos e fitas, independentemente do sistema em que a aplicao esteja sendo processada. Este tipo de sistema distribudo muitas vezes chamado de cluster.
COMP 1
COMP 2
Figura 24 - Cluster.
24
Suponha, por exemplo, uma configurao de dois computadores (COMP 1 e COMP 2), formando um cluster. Qualquer usurio conectado ao cluster poder ter acesso aos dispositivos compartilhados, que permitem a ele imprimir uma listagem ou copiar um arquivo. Nesse tipo de configurao, se um dos sistemas falhar, o acesso aos dispositivos no ser interrompido. Os sistemas distribudos podem ser considerados como uma evoluo dos sistemas fortemente acoplados, onde uma aplicao pode ser executada por qualquer processador. Os sistemas distribudos permitem que uma aplicao seja dividida em diferentes partes (aplicaes distribudas), que se comunicam atravs de linhas de comunicao, podendo cada parte ser processada em um sistema independente.
3.6.3.1 Barramento
Na organizao de barramento, os sistemas so conectados a uma nica linha de comunicao e todos compartilham o mesmo meio, tanto para receber como para enviar mensagens. Esse tipo de organizao utilizada geralmente em redes locais (Figura 25). Neste tipo de topologia, caso haja algum problema com o meio de transmisso, todos os ns da rede ficaro incomunicveis.
25
26
4. Sistemas Multiprogramveis
A possibilidade de perifricos funcionarem simultaneamente entre si, juntamente com a UCP, permitiu a execuo de tarefas concorrentes, que o princpio bsico para projeto e implementao de sistemas multiprogramveis. Sistemas operacionais podem ser vistos como um conjunto de rotinas que executam concorrentemente de uma forma ordenada. Os sistemas multiprogramveis surgiram de um problema existente nos sistemas monoprogramveis, que a baixa utilizao de recursos do sistema, como processador, memria e perifricos. Nos sistemas monoprogramveis, somente um programa pode estar residente em memria, e a UCP permanece dedicada, exclusivamente, execuo desse programa. Podemos observar que, nesse tipo de sistema, ocorre um desperdcio na utilizao da UCP, pois enquanto o programa est realizando, por exemplo, uma leitura em disco, o processador permanece sem realizar nenhuma tarefa. O tempo de espera consideravelmente grande, j que as operaes com dispositivos de entrada e sada so muito lentas se comparadas com a velocidade da UCP. Na tabela abaixo, vemos um exemplo de um programa que l registros de uma arquivo e executa, em mdia, 100 instrues de mquina por registro lido. Neste caso, o processador gasta 93% do tempo esperando o dispositivo de E/S concluir a operao para continuar o processamento. Em um sistema monoprogramvel, a UCP utilizada em aproximadamente 30% do tempo, enquanto em sistemas multiprogramveis o tempo de utilizao sobre para at 90%. Leitura de um registro Execuo de 100 instrues Total Percentual de utilizao da UCP 0,0015 0,0001 0.0016 0,0001 0,0015 segundos segundos segundos = 0,066 = 6,6%
Tabela 5 - Exemplo de utilizao do sistema Outro aspecto que devemos considerar a subutilizao da memria. Um programa que no ocupe totalmente a memria principal ocasiona a existncia de reas livres, sem utilizao. Nos sistemas multiprogramveis, vrios programas podem estar residentes em memria, concorrendo pela utilizao da UCP. Dessa forma, quando um programa solicita uma operao de entrada/sada, outros programas podero estar disponveis para utilizar o processador. Nesse caso, a UCP permanece menos tempo ociosa e a memria principal utilizada de forma mais eficiente, pois existem vrios programas residentes se revezando na utilizao do processador. A utilizao concorrente da UCP deve ser implementada de maneira que, quando um programa perde o uso do processador e depois retorna para continuar o processamento, seu estado deve ser idntico ao do momento em que foi interrompido. O programa dever continuar sua execuo exatamente na instruo seguinte quela em que havia parado, aparentando ao usurio que nada aconteceu. Em sistemas de tempo compartilhado, existe a impresso de que o computador est inteiramente dedicado ao usurio, ficando todo esse mecanismo transparente para ele. No caso de perifricos, comum termos, em sistemas monoprogramveis, impressoras paradas por um grande perodo de tempo e discos com acesso restrito a um nico usurio. Esses problemas so solucionados em sistemas multiprogramveis, onde possvel compartilhar impressoras entre vrios usurios e realizar acesso concorrente a discos por diversos programas.
27
E/S
E/S
UCP
Livre
UCP
1 2
Figura 27 - Sistema monoprogramvel X multiprogramvel. As vantagens de perifricos pela multiprogramao podem ser percebidas segundo o exemplo descrito a seguir, onde consideramos um computador de 256 Kb de memria, com um disco , um terminal e uma impressora. Nesta configurao sero executadas trs programas (Prog1, Prog2, e Prog3), que possuem caractersticas de processamento descritas na Tabela 6. Nesta tabela, podemos notar que o Prog1 no realiza operaes de E/S, enquanto o Prog2 e o Prog3 realizam muitos acessos a perifricos. Caractersticas Utilizao da UCP Operaes de E/S Tempo para execuo Espao da memria utilizado Utiliza disco Utiliza terminal Utiliza impressora Prog1 Grande Poucas 5 min. 50 Kb No No No Prog2 Baixa Muitas 15 min. 100Kb No Sim No Prog3 Baixa Muitas 10 min. 80Kb No No Sim
Tabela 6 - Caractersticas dos programas exemplos Em um ambiente monoprogramvel, os programas so executados sequencialmente. Sendo assim, o Prog1 completa em cinco minutos e o Prog2 deve esperar cinco minutos para comear sua execuo, que leva 15 minutos. Finalmente, o Prog3 inicia sua execuo aps 20 minutos e completa seu processamento em 10 minutos, perfazendo um total de 30 minutos para a execuo dos programas. No caso de os programas serem executados concorrentemente, em um sistema multiprogramvel, o ganho na utilizao do processador, memria, perifricos e no tempo de reposta considervel, como mostra a Tabela 7. Monoprogramao 17 % 30 % 33 % 33 % 30 min. 6 prog./hora Multiprogramao 33% 67% 67% 67 % 15 min. 12 prog./hora
Utilizao da UCP Utilizao da memria Utilizao do disco Utilizao da impressora Tempo total para execuo dos programas Taxa de execuo de programas
desviado para uma rotina especial de tratamento. O que diferencia uma interrupo de uma exceo o tipo de evento que gera esta condio. Uma interrupo gerada pelo sistema operacional ou por algum dispositivo e, neste caso, independe do programa que est sendo executado. Um exemplo quando um perifrico avisa UCP que est pronto para transmitir algum dado. Neste caso, a UCP deve interromper o programa para atender a solicitao do dispositivo.
Programa Salva os registradores Identifica a origem da interrupo Obtm o endereo da rotina de tratamento Rotina de Tratamento
Interrupo
. . . . . . . . . . . .
: : :
Restaura os registradores
Figura 28 - Mecanismo de interrupo. No existe apenas um nico tipo de interrupo e sim diferentes tipos que devem ser atendidos por diversas rotinas de tratamento. No momento que uma interrupo acontece, a UCP deve saber para qual rotina de tratamento dever ser desviado o fluxo de execuo. Essa informao est em uma estrutura do sistema chamada vetor de interrupo, que contm a relao de todas as rotinas de tratamento existentes, associadas a cada tipo de interrupo. A interrupo o mecanismo que tornou possvel a implementao da concorrncia nos computadores, sendo o fundamento bsico dos sistemas multiprogramveis. em funo desse mecanismo que o sistema operacional sincroniza a execuo de todas as suas rotinas e dos programas dos usurios, alm de controlar os perifricos e dispositivos do sistema. Inicialmente os sistemas operacionais apenas implementavam o mecanismo de interrupo. Com a evoluo dos sistemas foi introduzido o conceito de exceo. Uma exceo resultado direto da execuo de uma instruo do prprio programa. Situaes como a diviso de um nmero por zero ou a ocorrncia de um overflow caracterizavam essa situao. A diferena fundamental entre exceo e interrupo que a primeira gerada por um evento sncrono, enquanto a segunda gerada por eventos assncronos. Um evento sncrono quando resultado direto da execuo do programa corrente. Tais eventos so previsveis e, por definio s podem ocorrer um de cada vez. Se um programa que causa esse tipo de evento for reexecutado, com a mesma entrada de dados, a exceo ocorrer sempre na mesma instruo. Um evento dito assncrono quando ocorre independentemente da execuo do programa corrente. Esses eventos, por serem imprevisveis, podem ocorrer mltiplas vezes simultaneamente, como no caso de diversos dispositivos de E/S informarem UCP que esto prontos para receber ou transmitir dados.
29
UCP
Memria Principal
Controlador : : : :
Figura 29 - Controlador. Com a implementao do mecanismo de interrupo no hardware dos computadores, as operaes de E/S puderam ser realizadas de uma forma mais eficiente. Em vez de o sistema periodicamente verificar o estado de uma operao pendente, o prprio controlador interrompia a UCP para avisar do trmino da operao. Com esse mecanismo, denominado E/S controlada por interrupo, a UCP, aps a execuo de um comando de leitura ou gravao, fica livre para o processamento de outras tarefas. O controlador por sua vez, ao receber, por exemplo, um sinal de leitura, fica encarregado de ler os blocos dos disco e armazen-los em memria ou registradores prprios. Em seguida, o controlador, atravs de uma linha de controle, sinaliza uma interrupo ao processador. Quando a UCP atende a interrupo, a rotina responsvel pelo tratamento desse tipo de interrupo transfere os dados dos registradores do controlador para a memria principal. Ao trmino da transferncia, a UCP volta a executar o programa interrompido e o controlador fica novamente disponvel para outra operao. A operao de E/S controlada por interrupo muito mais eficiente que a operao de E/S controlada por programa, j que elimina a necessidade de a UCP esperar pelo trmino da operao, alm de permitir que vrias operaes de E/S sejam executadas simultaneamente. Apesar disso, essa implementao ainda sobrecarregava a UCP, uma vez que toda transferncia de dados entre memria e perifricos exigia a interveno da UCP. A soluo desse problema foi a implementao, por parte do controlador, de uma tcnica de transferncia de dados denominada DMA (Direct Memory Access). A tcnica de DMA permite que bloco de dados seja transferido entre memria e perifricos, sem a interveno da UCP, exceto no incio e no final da transferncia. Quando o sistema deseja ler ou gravar um bloco de dados, so passadas da UCP para o controlador informaes como: onde o dado est localizado, qual o dispositivo de E/S envolvido na operao, posio inicial da memria de onde os dados sero lidos ou gravados e o tamanho do bloco de dados. Com estas informaes, o controlador realiza a transferncia entre o perifrico e a memria principal, e a UCP somente interrompida no final da operao. A rea de memria utilizada pelo controlador na tcnica de DMA chamada buffer, sendo reservada exclusivamente para este propsito. No momento em que a transferncia de DMA realizada, o controlador deve assumir, momentaneamente, o controle do barramento. Como a utilizao do barramento exclusiva de um dispositivo, a UCP deve suspender o acesso ao bus, temporariamente, durante a operao de Prof. Alessandro Zanini 30
transferncia. Este procedimento no gera uma interrupo, e a UCP pode realizar tarefas, desde que sem a utilizao do barramento, como, por exemplo, um acesso memria cache. A extenso do conceito do DMA possibilitou o surgimento dos canais de E/S, ou somente canais, introduzidos pela IBM no Sistema 7094. O canal de E/S um processador com capacidade de executar programas de E/S, permitindo o controle total sobre operaes de entrada e sada. As instrues de E/S so armazenadas na memria principal pela UCP, porm o canal responsvel pela sua execuo. Assim, a UCP realiza uma operao de E/S, instruindo o canal para executar um programa localizado na memria (programa de canal). Este programa especifica os dispositivos para transferncia, buffers e aes a serem tomadas em caso de erros. O canal de E/S realiza a transferncia e, ao final gera uma interrupo, avisando do trmino da operao. Um canal de E/S pode controlar mltiplos dispositivos atravs de diversos controladores. Cada dispositivo, ou conjunto de dispositivos, manipulado por um nico controlador. O canal atua como um elo de ligao entre a UCP e o controlador.
Memria Principal
UCP
Cana de E/S
Controlador
Controlador
.....
Figura 30 - Canal de E/S
.....
4.3 Buffering
A tcnica de buffering consiste na utilizao de uma rea de memria para a transferncia de dados entre os perifricos e a memria principal denominada buffer. O buffering veio permitir que, quando um dado fosse transferido para o buffer aps uma operao de leitura, o dispositivo de entrada pudesse iniciar uma nova leitura. Neste caso, enquanto a UCP manipula o dado localizado no buffer, o dispositivo de entrada pudesse iniciar uma nova leitura. Neste caso, enquanto a UCP manipula o dado localizado no buffer, o dispositivo realiza outra operao de leitura no mesmo instante. O mesmo raciocnio pode ser aplicado para operaes de gravao, onde a UCP coloca o dado no buffer para um dispositivo de sada manipular.
31
Memria Principal
UCP
Gravao
Buffer
Gravao
Controlador de E/S
Leitura
Leitura
Figura 31 - Operaes utilizando buffer. O buffering outra implementao para minimizar o problema da disparidade da velocidade de processamento existente entre a UCP e os dispositivos de E/S. O objetivo do buffering manter, na maior parte do tempo, UCP e dispositivos de E/S ocupados. A unidade de transferncia usada no mecanismo de buffering o registro. O tamanho do registro pode ser especificado em funo da natureza do dispositivo ( como uma linha gerada por uma impressora ou um caracter de um teclado) ou da aplicao ( como um registro lgico definido em um arquivo). O buffer deve possuir a capacidade de armazenar diversos registros, de forma a permitir que existam dados lidos no buffer, mas ainda no processados (operaes de leitura), ou processados, mas ainda no gravados (operao de gravao). Desta forma, o dispositivo de entrada poder ler diversos registros antes que a UCP os processe, ou a UCP poder processar diversos registros antes de o dispositivo de sada realizar a gravao. Isso extremamente eficiente, pois, dessa maneira, possvel compatibilizar a diferena existente entre o tempo em que a UCP processa os dados e o tempo em que o dispositivo de E/S realiza as operaes de leitura e gravao.
4.4 Spooling
A tcnica de spooling (simultaneous peripheral operation on-line) foi introduzida no final dos anos 50 para aumentar a produtividade e a eficincia dos sistemas operacionais. Naquela poca, os programas dos usurios eram submetidos um a um para processamento pelo operador. Como a velocidade de operao dos dispositivos de entrada/sada muito lenta se comparada do processador, era comum que a UCP ficasse ociosa espera de programas e dados de entrada ou pelo trmino de uma impresso. A soluo foi armazenar os vrios programas e seus dados, tambm chamados de jobs, em uma fita magntica e, em seguida, submet-los a processamento. Desta forma, a UCP poderia processar seqencialmente cada job, diminuindo o tempo de execuo dos jobs e o tempo de transio entre eles. Da mesma forma, em vez de um job gravar suas sadas diretamente na impressora, poderia direcion-las para uma outra fita, que depois seria impressa integralmente. Esta forma de processamento chamada de spooling e foi a base dos sistemas batch. A utilizao de fitas magnticas obrigava o processamento a ser estritamente seqncia, ou seja, o primeiro job a ser gravado era o primeiro a ser processado. Assim, se um job que levasse vrias horas antecedesse pequenos jobs, seus tempos de resposta ficariam seriamente comprometidos. Com o surgimento de dispositivos de acesso direto, como discos, foi possvel tornar o spooling muito mais eficiente, e principalmente, permitir a eliminao do processamento estritamente seqencial, com a atribuio de prioridade aos jobs. A tcnica de buffering, como j apresentamos, permite que um job utilize um buffer concorrentemente com um dispositivo de E/S. O spooling, basicamente, utiliza o disco como um grande buffer, permitindo que dados sejam lidos e gravados em disco, enquanto outros jobs so processados. Um exemplo dessa tcnica est presente quanto impressora so utilizadas. No momento em que um comando de impresso executado por um programa, as informaes que sero impressas so gravadas em um arquivo em disco (arquivo de spool), para ser impresso posteriormente pelo sistema Figura 32. Dessa forma, situaes como a de um programa reservar a impressora, imprimir uma linha e Prof. Alessandro Zanini 32
ficar horas para continuar a impresso no acontecero. Essa implementao permite maior grau de conpartilhamento na utilizao de impressoras.
Sistema Operacional
Impresso
Figura 32 - Tcnico de spooling. Atualmente, a tcnica de spooling implementada na maioria dos sistemas operacionais. Fazendo com que tanto a UCP quanto os dispositivos de E/S seja aproveitados de forma mais eficiente.
4.5 Reentrncia
comum, em sistemas multiprogramveis, vrios usurios executarem os mesmos utilitrios do sistema operacional simultaneamente, como, por exemplo, um editor de textos. Se cada usurio que utilizasse o editor trouxesse o cdigo do utilitrio para a memria, haveria diversas cpias de um mesmo programa na memria principal, o que ocasionaria um desperdcio de espao. Reentrncia a capacidade de um cdigo de programa (cdigo reentrante) poder ser compartilhado por diversos usurios, exigindo que apenas uma cpia do programa esteja na memria. Uma caracterstica da reentrncia que o cdigo no pode ser modificado por nenhum usurio no momento em que est sendo executado. A reentrncia permite que cada usurio possa estar em um ponto diferente do cdigo reentrante, manipulando dados prprios, exclusivos de cada usurios.
33
Aplicao
System Call
Ncleo
Hardware
Figura 33 - System Call Atravs dos parmetros fornecidos na system call, a solicitao processada e uma resposta retornada aplicao, em um dos parmetros fornecidos na chamada. O mecanismo de ativao e comunicao entre a aplicao e o sistema semelhante ao mecanismo implementado quando um programa modularizado ativa um dos seus procedimentos ou funes. As system call podem ser divididas em grupos de funo: * Gerncia de processos Criao e eliminao de processos Alterao das caractersticas do processo Sincronizao e comunicao entre processos * Gerncia de memria Alocao e desalocao de memria *Gerncia de entrada/sada Prof. Alessandro Zanini
34
chamar qualquer dos demais sempre que necessrio. Quando esta tcnica usada, cada procedimento do sistema deve ter uma interface bem definida em termos de parmetros e de resultados, sendo, conforme mencionado anteriormente, cada procedimento livre para chamar qualquer outro se este ltimo realizar algo de que o primeiro necessite. Ex. MS-DOS, UNIX
5 4 3 2 1 0
Figura 36 - Sistema MULTICS A vantagem da estruturao em camadas isolar as funes do sistema operacional facilitando sua alterao sua alterao e depurao, alm de criar uma hierarquia de nveis de modos de acesso, protegendo as camadas mais internas.
36
Cliente
Servidor de memria
Servidor de arquivo
Ncleo
Hardware
Figura 38 -Sistemas cliente-servidor. A utilizao deste modelo permite que os servidores executem em modo usurio, ou seja, no tenham acesso direto a certos componentes do sistema. Apenas o ncleo do sistema, responsvel pela comunicao entre clientes e servidores, executa no modo kernel. Como conseqncia, se um erro ocorrer em um servidor, este servidor pode parar, mas o sistema no ficar inteiramente comprometido. Alm disso, a implementao de sistemas cliente-servidor permite isolar as funes do sistema operacional por diversos processos (servidores) pequenos e dedicados a servios especficos. Como conseqncia, os sistema operacional passa a ser de mais fcil manuteno. Como os servidores se comunicam atravs de trocas de mensagens, no importa se os clientes e servidores esto sendo processados em um sistema com um nico processador, com mltiplos processadores (fortemente acoplado) ou ainda em um ambiente de sistema distribudo (fracamente acoplado). A implementao de sistemas cliente-servidor em um ambiente distribudo permite que um cliente solicite um servio e a resposta seja processada remotamente. Apesar de todas as vantagens deste modelo, sua implementao, na prtica, muito difcil devido a certas funes do sistema operacional exigirem acesso direto ao hardware, como operaes de entrada e sada. Na realidade, o que implementado mais usualmente uma combinao do modelo de camadas com o modelo cliente-servidor. O ncleo do sistema, alm de ser responsvel pela comunicao entre cliente e servidor, passa a incorporar outras funes crticas do sistema, como escalonamento e gerncia de memria, alm das funes dos device drivers.
38
39
6. Bibliografia
Essa apostila foi retirada do livro: - MACHADO, Francis Berenger e MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais, 2a. edio. Ed. LTC, 1997.
40