Académique Documents
Professionnel Documents
Culture Documents
SISTEMAS OPERACIONAIS I
Tubaro - 2000
1.
1.1 Introduo
Conceitos Bsicos
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.
1.2
Mquinas de Nveis
Um computador, visto somente como um gabinete composto de circuitos eletrnicos, cabos e fontes de alimentao (hardware), no tem nenhuma utilidade. atravs de programas (software) que o computador consegue armazenar dados em discos, imprimir relatrios, gerar grficos, realizar clculos, entre outras funes. O hardware o responsvel pela execuo das instrues de um programa, com a finalidade de se realizar alguma tarefa. Uma operao efetuada pelo software pode ser implementada em hardware, enquanto uma instruo executada pelo hardware pode ser simulada via software. Esta deciso fica a cargo do projetista do computador em funo de aspectos como custo, confiabilidade e desempenho. Tanto o hardware como o software so logicamente equivalentes, interagindo de uma forma nica para o usurio. Nos primeiros computadores, a programao era realizada em painis, atravs de fios, exigindo um grande conhecimento do hardware e de sua linguagem de mquina. Isso era uma grande dificuldade para os programadores da poca. A soluo para esse problema foi o surgimento do sistema operacional, que tornou a interao entre usurio e computador mais simples, confivel e eficiente. A partir desse acontecimento, no existia mais a necessidade de o programador se envolver com a complexidade do hardware para poder trabalhar; ou seja, a parte fsica do computador tornou-se transparente para o usurio.
Aplicativos Utilitrios Sistema Operacional Linguagem de Mquina Microprogramao Dispositivos Fsicos Figura 3 - Mquina de nveis. 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.
O ENIAC (Electronic Numerical Integrator and Computer) foi o primeiro computador digital de propsito geral. Criado pare a realizao de clculos balsticos, sue estrutura possua 18 mil vlvulas, 10 mil capacitores, 70 mil resistores e pesava 30 toneladas. Quando em operao, consumia cerca de 140 quilowatts e era capaz de realizar 5 mil adies por segundo. Para trabalhar nessas mquinas, era necessrio conhecer profundamente o funcionamento do hardware, pods a programao era feita em painis, atravs de fios, utilizando linguagem de mquina. Nessa fase, ainda no existia o conceito de sistema operacional. Outros computadores foram construdos nessa mesma poca, como o EDVAC (Electronic Discrete Variable Automatic Computer) e o IAS (Princeton Institute for Advanced Studies), mas eram utilizados, praticamente, apenas nas universidades e nos rgos militares. Com o desenvolvimento da indstria de computadores, muitas empresas foram fundadas ou investiram no setor, como a Sperry e a IBM, o que levou a criao dos primeiros computadores pare aplicaes comerciais. A primeira mquina fabricada com esse propsito e bem-sucedida foi o UNIVAC I (Universal Automatic Computer), criado especialmente pare o censo americano de 1950.
Figura 4 - Processamento batch 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 Prof. Alessandro Zanini 5
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.
equipamentos. Os mini e superminicomputadores se firmaram no mercado e os microcomputadores ganharam um grande impulso. Nesse quadro surgiram os microcomputadores PC (Personal Computer) de 16 bits da IBM e o sistema operacional DOS (Disk Operation System), criando a filosofia dos computadores pessoais. Na rea dos minis e superminicomputadores ganharam impulso os sistemas multiusurio, com destaque pare os sistemas compatveis com o Unix (Unix-like) e o VMS (Virtual Memory System) da DEC. Surgem as estaes de trabalho (workstations) que, apesar de monousurias, permitem que se executem diversas tarefas concorrentemente, criando o conceito de multitarefa. No final dos anos 80, os computadores tiveram um grande avano, decorrente de aplicaes que exigiam um enorme volume de clculos. Para acelerar o processamento, foram adicionados outros processadores, exigindo dos sistemas operacionais novos mecanismos de controle e sincronismo. Com o multiprocessamento, foi possvel a execuo de mais de um programa simultaneamente, ou ate de um mesmo programa por mais de um processador. Alm de equipamentos com mltiplos processadores, foram introduzidos processadores vetoriais e tcnicas de paralelismo em diferentes nveis, fazendo com que os computadores se tornassem ainda mais poderosos. As redes distribudas (Wide Area Network- WANs) se difundiram por todo o mundo, permitindo o acesso a outros sistemas de computao, independentemente de estado, pas e, ate mesmo, fabricante. Nesse contexto so desenvolvidos inmeros protocolos de rede, alguns proprietrios, como o DECnet da DEC e o SNA (System Network Architecture) da IBM, e outros de domnio pblico, como o TCP/IP e o CCITT X.25. Surgem as primeiras redes locals (Local Area NetworkLANs) interligando pequenas reas. Os softwares de rede passaram a estar intimamente relacionados ao sistema operacional e surgem os sistemas operacionais de rede.
(1981- Quinta )
IBM 3090 Alpha AXP
(1991-
UNIVAK
CDC-6600
VAX-11 IBM-PC LSI ou VLSI Disco ptico Microcomputador Multiprocessamento Sistemas Especialistas Linguagens orientadas a objetos
Pentium Sun SPARC Ultra-LSI Arquiteturas Paralelas Circuto Integrado 3-D Processamento Distribudo Linguagens concorrentes Programao funcional Linguagens naturais Redes Locais estendidas(ELAN) Redes sem fio Modelo clienteservidor 1 Gflops 1 Tflops
Hardware
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
2.
2.1 Hardware
Um computador digital constitudo por um conjunto de componentes interligados, composto por processadores, memria principal e dispositivos fsicos (hardware). Esses dispositivos manipulam dados na forma digital, o que proporciona uma maneira confivel de representao. Todos os componentes de um computador so agrupados em trs subsistemas bsicos: unidade central de processamento (UCP), memria principal, e dispositivos de entrada e sada (Figura 5. Estes subsistemas, tambm chamados de unidades funcionais, esto presentes em todo computador digital, apesar de suas implementaes variarem nas diferentes arquiteturas existentes e comercializadas pelos diversos fabricantes de computadores. Neste item descrevemos os conceitos bsicos dos principais componentes desses sistema.
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). 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 Prof. Alessandro Zanini 9
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. Velocidade de Processamento Intel 80386 5 MIPS Intel 80486 20 MIPS Item Pentium 100 MIPS Item Pentium Pro 250 MIPS
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.
10
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 registerMBR) . 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 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 (readonly 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 Prof. Alessandro Zanini 11
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.
2.1.6
Memria Secundria
A memria secundria e um meio permanente (no voltil) de armazenamento de programas e dados. Enquanto a memria principal precisa estar sempre energizada pare manter sues informaes, a memria secundria no precise de alimentao. O acesso a memria secundria e lento, se comparado com o acesso a memria cache ou principal, porm seu custo e baixo e sua capacidade de armazenamento e bem superior a da memria principal. Enquanto a unidade de acesso a memria secundria e da ordem de milissegundos, o acesso a memria principal e de nanossegundos. Podemos citar, como exemplos de memrias secundrias, a fita magntica, o disco magntico e o disco ptico. A Figura 8 mostra a relao entre os diversos tipos de dispositivos de armazenamento apresentados, comparando custo, velocidade e capacidade de armazenamento.
Registradores Maior Capacidade de armazenamento Memria Cache Memria Principal Memria Secundria
Figura 8 - Relao entre os diversos tipos de dispositivos de armazenamento.
Os dispositivos de E/S podem ser divididos em duas categorias: os que so utilizados como memria secundria e os que servem pare a interface homem-mquina. Os dispositivos utilizados como memria secundria, como discos e fitas magnticas se caracterizam por armazenar de trs a quatro vezes mais informaes que a memria principal. Seu custo e relativamente baixo, porm o tempo de acesso a memria secundria e de quatro a seis vezes major que o acesso a memria principal. Alguns dispositivos servem pare a comunicao, ao homem-mquina, como teclados, monitores de vdeo, impressoras, plotters, entre outros. Com o avano no desenvolvimento de aplicaes de uso cada vez mais geral, procure-se aumentar a facilidade de comunicao entre o usurio e o computador. A implementao, de interfaces mais amigveis permite, cada vez mais, que pessoas sem conhecimento especfico sobre informtica possam utilizar o computador. Scanner, caneta tica, mouse, dispositivos sensveis a voz humana e ao calor do corpo humano so alguns exemplos desses tipos de dispositivos.
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.
UCP
Dispositivos de E/S
UCP
Memria Principal
Figura 9 - Configuraes de sistema 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.
Toda vez que um computador ligado, necessrio que o sistema operacional seja carregado da memria secundria para a memria principal. Esse processo, denominado ativao do sistema (boot), realizado por um programa localizado em um posio especifca do disco (disco block), geralmente o primeiro bloco. O procedimento de ativao varia em funo do equipamento, podendo ser realizado atravs do teclado, de um terminal ou por manipulao de chaves de um painel (Figura 10).
Disco
Memria Principal
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.
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). Prof. Alessandro Zanini 14
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.
Mdulo Fonte
Compilador
Mdulo Objeto
Mdulo Fonte
Compilador
Mdulo Objeto
Linker
Programa Executvel
Mdulo Fonte
Compilador
Mdulo Objeto
Figura 12 - Linker.
15
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. Prof. Alessandro Zanini
16
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.
17
3.
3.1 Introduo
Tipos de sistemas operacionais e sua evoluo esto intimamente relacionados com a evoluo do hardware e das aplicaes por ele suportadas. Muitos termos inicialmente introduzidos para definir conceitos e tcnicas forma substitudos por outros, na tentativa de refletir uma nova maneira de intera ou ou processamento. Isto fica muito claro quanto tratamos da unidade de execuo do processador. Inicialmente, os termos programa ou job eram os mais utilizados, depois surgiu o conceito de processo e subprocesso e, mais recentemente, os conceitos de tarefa e de thread. A evoluo dos sistemas operacionais para computadores pessoais e estaes de trabalho popularizou vrios conceitos e tcnicas, antes s conhecidos em ambientes de grande porte. A nomenclatura, no entanto, no se manteve a mesma. Surgiram novos termos para conceitos j conhecidos, que foram apenas adaptados para uma nova realidade.
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
3.2
Sistemas Monoprogramveis/Monotarefa
Os primeiros sistemas operacionais eram tipicamente voltados para a execuo de um nico programa (job). Qualquer outro programa, para ser executado, deveria aguardar o trmino do programa corrente. Os sistemas monoprogramveis, como vieram a ser conhecidos, se caracterizam por permitir que o processador, a memria e os perifricos permaneam exclusivamente dedicados execuo de um nico programa. Neste tipo de sistema, enquanto um programa aguarda por um evento, como a digitao de um dado, o processador permanece ocioso, sem realizar qualquer tipo de processamento. A memria subtilizada caso o programa no a preencha totalmente, e os perifricos, como discos e impressoras, esto dedicados a um nico usurio. Prof. Alessandro Zanini 18
Comparados a outros sistemas, os sistemas monoprogramveis/monotarefa so de simples implementao, no existindo muita preocupao com problemas de proteo.
UCP Memria
Programa/ Tarefa
Dispositivos de E/S
3.3
Sistemas Multiprogramveis/Multitarefa
Os Sistemas Multiprogramveis, que vieram a substituir os monoprogramveis, so mais complexos e eficientes. Enquanto em sistemas monoprogramveis existe apenas um programa utilizando seus diversos recursos, nos multiprogramveis vrios programas dividem esses mesmos recursos. As vantagens do uso de sistemas multiprogramveis so o aumento da produtividade dos seus usurios e a reduo de custos, a partir do compartilhamento dos diversos recursos do sistema. A partir do nmero de usurios que interagem com o sistema, podemos classificar os sistemas multiprogramveis como monousurio e multiusurio. O conceito de sistemas multiprogramvel est tipicamente associado aos mainframes e minicomputadores, onde existe a idia do sistema sendo utilizado por vrios usurios (multiusurio). No mundo dos computadores pessoais e estaes de trabalho, apesar de existir apenas um nico usurio interagindo como sistema (monousurio), possvel que ele execute diversas tarefas concorrentemente ou mesmo simultaneamente. Os sistemas multitarefa, como tambm so chamados, se caracterizam por permitir que o usurio edite um texto, imprima um arquivo, copie um arquivo pela rede e calcule uma planilha. Abaixo esto relacionados os tipos de sistemas em funo do nmero de usurios
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.
19
Sistemas Multiprogramveis/Multirefa
Sistemas Batch
3.4
Os sistemas com mltiplos processadores caracterizam-se por possuir duas ou mais UCPS interligadas, trabalhando em conjunto. Um fator-chave no desenvolvimento de sistemas operacionais 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. Prof. Alessandro Zanini
20
Sistemas Simtricos
Sistemas Assimtricos
3.5
Nos sistemas fortemente acoplados (tightly coupled) existem vrios processadores compartilhando uma nica memria e gerenciados por apenas um sistema operacional. Mltiplos processadores permitem que vrios programas sejam executados ao mesmo tempo, ou que um programa seja dividido em subprogramas, para execuo simultnea em mais de um processador. Dessa forma, possvel ampliar a capacidade de computao de um sistema, adicionando-se apenas novos processadores, com um custo muito inferior aquisio de outros computadores. Com o multiprocessamento, novos problemas de concorrncia foram introduzidos, pois vrios processadores podem estar acessando as mesmas reas de memria. Alm disso, existe o problema de organizar de forma eficiente os processadores, a memria e os perifricos. Uma conseqncia do multiprocessamento foi o surgimento dos computadores voltados, principalmente, para processamento cientfico, aplicado, por exemplo, ao desenvolvimento aeroespacial, prospeo de petrleo, simulaes, processamento de imagens e CAD. A princpio qualquer aplicao que faa uso intensivo da UCP ser beneficiada pelo acrscimo de processadores ao sistema.
Dispositivos de E/S
Figura 17 - Sistemas fortemente acoplados
Dispositivos de E/S
21
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.
22
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.
3.6
Os sistemas fracamente acoplados caracterizam-se por possuir dois ou mais sistemas de computao interligados, sendo que cada sistema possui o seu prprio sistema operacional, gerenciando os seus recursos, como processador, memria e dispositivos de entrada/sada. At meados da dcada de 80, os sistemas operacionais e as aplicaes suportadas por eles eram tipicamente concentradas em sistemas de grande porte, com um ou mais processadores. Nos sistemas centralizados, os usurios utilizam terminais no inteligentes conectados a linhas seriais dedicadas ou linhas telefnicas pblicas para a comunicao interativa com esses sistemas. No modelo centralizado, os terminais no tm capacidade de processamento. Sempre um usurio deseja alguma tarefa, o pedido encaminhado ao sistema, que realiza o processamento e retorna uma resposta, utilizando as linhas de comunicao. 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. Prof. Alessandro Zanini
23
N N N
Rede
24
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
COM P 2
Figura 24 - Cluster. 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. Prof. Alessandro Zanini
25
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.
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. Utilizao da UCP Utilizao da memria Utilizao do disco Utilizao da impressora Tempo total para execuo dos programas Taxa de execuo de programas Monoprogramao 17 % 30 % 33 % 33 % 30 min. 6 prog./hora Multiprogramao 33% 67% 67% 67 % 15 min. 12 prog./hora
4.1
Interrupo e Exceo
Durante a execuo de um programa, alguns eventos podem ocorrer durante seu processamento, obrigando a interveno do sistema operacional. Esse tipo de interveno chamado interrupo ou exceo e pode ser resultado da execuo de instrues do prprio programa, gerado pelo sistema operacional ou por algum dispositivo de hardware. Nestas situaes o fluxo de execuo do programa 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 Prof. Alessandro Zanini 28
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.
4.2
Operaes de Entrada/Sada
Em sistemas mais primitivos, a comunicao entre a UCP e os perifricos era controlada por um conjunto de instrues especiais, denominadas instrues de entrada / sada, executadas pela prpria UCP. Essas instrues continham detalhes especficos de cada perifrico, como quais trilhas e setores de um disco deveriam ser lidos ou gravados em determinado bloco de dados. Esse tipo de instruo limitava a comunicao do processador a um grupo particular de dispositivos. A implementao de um dispositivo chamado controlador ou interface permitiu UCP agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, a UCP no se comunicava mais diretamente com os perifricos, mas sim atravs do controlador. Isso significa as instrues de E/S, por no ser mais preciso especificar detalhes de operao dos perifricos, tarefa esta realizada pelo controlador. Prof. Alessandro Zanini 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 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.
30
UCP
Memria Principal
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.
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 Prof. Alessandro Zanini 31
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 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.
32
4.6
Proteo do Sistema
Nos sistemas multiprogramveis, onde diversos usurios compartilham os mesmo recursos, deve existir uma preocupao, por parte do sistema operacional, de garantir a integridade dos dados pertencentes a cada usurio. Problemas como um programa acessar (acidentalmente ou no) a rea de memria pertencente a outro programa ou ao prprio sistema operacional tornaria o sistema pouco confivel. Para isso, todo sistema implementa algum tipo de proteo aos diversos recursos que so compartilhados, como memria, dispositivos de E/S e UCP. Com vrios programas ocupam a memria simultaneamente e cada usurio possui uma rea onde dados e cdigo so armazenados, os sistema operacional deve possuir mecanismos de proteo memria, de forma a preservar as informaes. Caso um programa tente acessar uma posio de memria fora da sua rea, um erro do tipo violao de acesso ocorre e o programa encerrado. O mecanismo para o controle de acesso memria varia em funo do tipo de gerncia de memria implementado pelo sistema. H outro problema quando um programa reserva um perifrico para realizar alguma operao. Neste situao, como, por exemplo, na utilizao de uma impressora, nenhum outro programa deve interferir at que o programa libere. O compartilhamento de dispositivos de E/S deve ser controlado de forma centralizada pelo sistema operacional. Para solucionar esses diversos problemas, o sistema operacional deve implementar mecanismos de proteo que controlem o acesso concorrente aos diversos recursos do sistema. Esse mecanismo de proteo, implementado na maioria dos sistemas multiprogramveis, denominado modos de acesso.
33
5.
Existe uma grande dificuldade em compreender a estrutura e o funcionamento de um sistema operacional, pois ele no executado como uma aplicao tipicamente seqencial, com incio, meio e fim. As rotinas do sistema so executadas sem uma ordem predefinida, baseada em eventos dissociados do tempo (eventos assncronos). Muitos desses eventos esto relacionados ao hardware e tarefas internas do prprio sistema operacional. O sistema operacional formado por um conjunto de rotinas (procedimentos) que oferecem servios aos usurios do sistema e suas aplicaes, bem como a outras rotinas do prprio sistema. Esse conjunto de rotinas chamado ncleo do sistema ou Kernel (crebro). As principais funes do ncleo so: tratamento de interrupes; criao e eliminao de processos; sincronizao e comunicao de processos; escalonamento e controle dos processos; gerncia de memria; gerncia do sistema de arquivos; operaes de entrada e sada; contabilizao e segurana do sistema.
5.1
System Calls
Uma preocupao que surge na grande maioria dos projetos de sistemas operacionais a implementao de mecanismos de proteo ao ncleo do sistema e de acesso aos seus servios. Caso uma aplicao, que tenha acesso ao ncleo, realize uma operao que o danifique, todo o sistema poder ficar comprometido e inoperante. O usurio (ou aplicao), quando deseja solicitar algum servio do sistema, realiza uma chamada a uma de suas rotinas ( ou servios) atravs de system calls (chamadas ao sistema), que so a porta de entrada para se ter acesso ao ncleo do sistema operacional. Para cada servio existe uma system call associada e cada sistema operacional tem o seu prprio conjunto (biblioteca) de chamadas, com nomes, parmetros e formas de ativao especficos (Figura 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 Operaes de entrada/sada Manipulao de arquivos e diretrios
34
5.2
Modos de Acesso
Existem certas instrues que no podem ser colocadas diretamente disposio das aplicaes, pois a sua utilizao indevida ocasionaria srios problemas integridade do sistema. Suponha que uma aplicao deseja atualizar um arquivo em disco. O programa, por si s, no pode especificar diretamente as instrues que acessam seus dados. Como o disco um recurso compartilhado, sua utilizao dever ser realizada unicamente pelo sistema operacional, evitando que a aplicao possa ter acesso a qualquer a qualquer rea do disco indiscriminadamente, o que poderia comprometer a segurana do sistema. Como visto, fica claro que existem certas instrues, como operaes de entrada e sada, que s devem ser executadas pelo sistema operacional, para impedir a ocorrncia de problemas de segurana e mesmo violao do sistema. As instrues que tm o poder de comprometer o sistema so conhecidas como instrues privilegiadas, enquanto as instrues no privilegiadas so as que no oferecem perigo ao sistema. Para que uma aplicao possa executar uma instruo privilegiada, o processador implementa o mecanismo de modos de acesso. Existem basicamente dois modos de acesso implementados pelo processador: modo usurio e modo kernel. Quando um processador trabalha no modo usurio, uma aplicao s pode executar instrues no privilegiadas, tendo acesso a um nmero reduzido de instrues, enquanto no modo kernel a aplicao pode ter acesso ao conjunto total de instrues do processador. O modo de acesso de uma aplicao determinado por um conjunto de bits, localizado em um registrador especial da UCP, que indica o modo de acesso corrente. Atravs desse registrador, o hardware verifica se a instruo pode ou no ser executada pela aplicao. A melhor maneira de controlar o acesso s instrues privilegiadas permitir que apenas o sistema operacional tenha acesso a elas. Sempre que uma aplicao necessita de um servio que incorra em risco para o sistema, a solicitao feita atravs de uma system call. A system call altera o modo de acesso do processador para um modo mais privilegiado (modo kernel). Ao trmino da rotina do sistema, o modo de acesso retornado para o modo usurio (Figura 34). Caso um programa tente executar uma instruo privilegiada, sem o processador estar no modo kernel, uma execeo gerada e o programa encerrado.
5.3
Vamos examinar quatro maneiras diferentes de se estruturar um sistema operacional, do modo a formar uma idia a respeito do espectro de possibilidades
35
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
37
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
6.
Essa apostila foi retirada do livro:
Bibliografia
- MACHADO, Francis Berenger e MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais, 2a. edio. Ed. LTC, 1997.
39