You are on page 1of 39

UNIVERSIDADE DO SUL DE SANTA CATARINA UNISUL CENTRO DE CINCIAS EXATAS, AGRRIAS E DAS ENGENHARIAS CURSO DE CINCIA DA COMPUTAO

SISTEMAS OPERACIONAIS I

Professor Alessandro Zanini


E-Mail : zanini@ati.unisul.rct-sc.br http://www.unisul.rct-sc.br/so1

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:

1.1.1 Facilidade de acesso aos recursos do sistema


Um sistema de computaco, ao possui, normalmente, diversos componentes, como terminais, impressoras, discos e fitas. Quando utilizamos um desses dispositivos, no nos preocupamos com a maneira como e realizada esta comunicao e os inmeros detalhes envolvidos. Para a maioria de ns uma operao cotidiana, como, por exemplo, a leitura de um arquivo em disquete, pode parecer simples. Na realidade, existe um conjunto de rotinas especficas, controladas pelo sistema operacional, responsvel por acionar a cabea, a de leitura e gravao da unidade de disco, posicionar na trilha e setor onde esto os dados, transferir os dados do disco para a memria e, finalmente, informar ao programa a chegada dos dados. O sistema operacional, ento, serve de interface entre o usurios e os recursos diponveis no sistema, tornando esta comunicao transparente e permitindo ao usurio um trabalho mais eficiente e com menores chances de erros (Figura 1). Este conceito de ambiente simulado, criado pelo sistema operacional, e denominado mquina virtual (virtual machine) e est presente, de alguma forma, na maioria dos sistemas atuais. comum pensar-se que compiladores, linkers, bibliotecas, depuradores e outras ferramentas fazem parte do sistema operacional, mas, na realidade, estas facilidades so apenas utilitrios, destinados a ajudar a interao do usurio com o computador.

1.1.2 Compartilhamento de recursos de forma organizada e protegida


Quando pensamos em sistemas multiusurio, onde vrios usurios podem estar compartilhando os mesmos recursos, como, por exemplo, memria e discos, necessrio que todos tenham oportunidade de ter acesso a esses recursos, de forma que um usurio no interfira no trabalho do outro. Se imaginarmos, por exemplo, que uma impressora possa ser utilizada por vrios usurios do sistema, dever existir algum controle para impedir que a impresso de um usurio interrompa a impresso de outro. Novamente, o sistema operacional responsvel por permitir o acesso concorrente a esse e a outros recursos, de forma organizada e protegida, dando ao usurio a impresso de ser o nico a utiliz-los. O compartilhamento de recursos permite, tambm, a diminuio de custos, na medida em que mais de um usurio possa utilizar as mesmas facilidades concorrentemente, como discos, impressoras, linhas de comunicao etc. No apenas em sistemas multiusurio que o sistema operacional imporntate. Se pensarmos que um computador pessoal nos permite executar vrias tarefas, como imprimir um documento, copiar um arquivo pela internet ou processar uma planilha, o sistema operacional deve ser capaz de controlar a execuo concorrentes de todas essas tarefas.

Prof. Alessandro Zanini

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.

Prof. Alessandro Zanini

Sistema Operacional Hardware


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 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.

1.3.1 Primeira Fase (1945-1955)


No incio da Segunda Guerra Mundial, surgiram os primeiros computadores digitais, formados por milhares de vlvulas, que ocupavam areas enormes, sendo de funcionamento lento e duvidoso. Prof. Alessandro Zanini 4

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.

1.3.2 Segunda Fase (1956-1965)


A criao do transistor e das memrias magnticas contribui pare o enorme avano dos computadores da poca. O transistor permitiu o aumento da velocidade e da confiabilidade do processamento, e as memrias magnticas permitiram o acesso mais rpido aos dados, major capacidade de armazenamento e computadores menores. Com o surgimento das primeiras linguagens de programao, como Assembly e Fortran, os programas deixaram de ser feitos diretamente no hardware, o que facilitou enormemente o processo de desenvolvimento de programas. J no era mais possvel conviver com tantos procedimentos manuais como os anteriores, que no permitiam o uso eficiente do computador e de seus recursos. Os primeiros sistemas operacionais surgiram, justamente, pare tentar automatizar as tarefas manuais

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.

1.3.3 Terceira Fase (1966-1980)


Atravs dos circuitos integrados (CIs) e, posteriormente, dos microprocessadores, foi possvel viabilizar e difundir o uso de sistemas computacionais por empresas, devido a diminuio de seus custos de aquisio. Alm disso, houve grande aumento do poder de processamento e diminuio no tamanho dos equipamentos. Com base nessa nova tecnologia, a IBM lanou em 1964 a Srie 360. Esse lanamento causou uma revoluo na indstria de informtica, pois introduzia uma linha (famlia) de computadores pequena, poderosa e, principalmente, compatvel. Isso permitiu que uma empresa adquirisse um modelo mais simples e barato e, conforme sues necessidades, mudasse pare modelos com mais recursos, sem comprometer sues aplicaes j existentes. Para essa srie, foi desenvolvido o sistema operacional OS/360, que tentava atender todos os tipos de aplicaes e perifricos. Apesar de todos os problemas desse equipamento e de seu tamanho fsico, a Srie 360 introduziu novas tcnicas, utilizadas ate hoje. Na mesma poca, a DEC lanou a linha PDP-8, tambm revolucionria, pois apresentava uma linha de computadores de porte pequeno e baixo custo, se comparada aos mainframes ate ento comercializados, criando um novo mercado, o de minicomputadores. A evoluo dos processadores de entrada/sada permitiu que, enquanto um programa esperasse por uma operao de leitura/gravao, o processador executasse um outro programa. Para tal, a memria foi dividida em parties, onde cada programa esperava sue vez pare ser processado. A essa tcnica de compartilhamento da memria principal e processador deu-se o nome de multiprogramao. Com a substituio das fitas por discos no processo de submisso dos programas, o processamento batch tornou-se mais eficiente, pois permitia a alterao na ordem de execuo das tarefas, ate ento puramente seqencial. A essa tcnica de submisso de programas chamou-se spooling, que, mais tarde, tambm viria a ser utilizada no processo de impresso. Os sistemas operacionais, mesmo implementando o processamento batch e a multiprogramao, ao, ainda estavam limitados a processamentos que no exigiam comunicao com o usurio. Para permitir a interao rpida entre o usurio e o computador, foram adicionados terminais de vdeo e teclado (interao on-line). A multiprogramao evoluiu preocupada em oferecer aos usurios tempos de respostas razoveis e uma interface cada vez mais amigvel. Para tal, cada programa na memria utilizaria o processador em pequenos intervalos de tempo. A esse sistema de diviso de tempo do processador chamou-se time-sharing (tempo compartilhado). Outro fato importante nessa fase foi o surgimento do sistema operacional Unix (1969). Concebido inicialmente em um minicomputador PDP-7, baseado no sistema MULTICS (Multiplexed Information and Computing Service), o Unix foi depois rescrito em uma linguagem de alto nvel (linguagem C), tornando-se conhecido por sue portabilidade. 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).

1.3.4 Quarta Fase (1981-1990)


A integrao em large escala (Large Scale Integration-LSI) e a integrao em muito large escala (Very Large Scale Integration-VLSI) levaram adiante o projeto de miniaturizao e barateamento dos Prof. Alessandro Zanini 6

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.

1.3.5 Quinta Fase (1991- )


Grandes avanos em termos de hardware, software e telecomunicaes podem ser esperados ate o final deste sculo. Essas mudanas so conseqncia da evoluo das aplicaes, que necessitam cada vez mais de capacidade de processamento e armazenamento de dados. Sistemas especialistas, sistemas multimdia, banco de dados distribudos, inteligncia artificial e redes neurais so apenas alguns exemplos da necessidade cada vez major. A evoluo da microeletrnica permitir o desenvolvimento de processadores e memrias cada vez mais velozes e baratos, Alm de dispositivos menores, mais rpidos e com major capacidade de armazenamento. Os componentes baseados em tecnologia VLSI (Very Large Scale Integration) evoluem rapidamente pare o ULSI (Ultra Large Scale Integration). Os computadores da prxima gerao tm de ser muito mais eficientes que os atuais, pare atender o volume cada vez major de processamento. Para isso, est ocorrendo uma mudana radical na filosofia de projeto de computadores. Arquiteturas paralelas, baseadas em organizaes de multiprocessadores no convencionais, j se encontram em desenvolvimento em varies universidades e centros de pesquisa do mundo. A evoluo do hardware encadear modificaes profundas nas disciplines de programao pare fazer melhor uso das arquiteturas paralelas. Assim, novas linguagens e metodologias de programao concorrentes esto sendo desenvolvidas, em particular, fazendo uso extensivo de inteligncia artificial e CAD (Computer-Aided Design). O conceito de processamento distribudo ser explorado nos sistemas operacionais, de forma que sues funes estejam espalhadas por vrios processadores atravs de redes de computadores. Isso s ser possvel devido a reduo, ao dos custos de comunicao e ao aumento na taxa de transmisso de dados. 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 Primeira (1945- Segunda (1956- Terceira (1966- Quarta 1955) 1965) 1980) 1990)
NCR IMB 7094 IBM 360, 370 PDP-11 Cray XMP IBM 308

(1981- Quinta )
IBM 3090 Alpha AXP

(1991-

Computa ENIAC EDVAC dores Prof. Alessandro Zanini

UNIVAK

CDC-6600

Cray 1 Cyber-205 Circuito Integrado Disco Magntico Minicomputador Microprocessador

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

Vlvulas Transistor Tambor Magntico Memria Magntica Tubos de raios catdicos

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

Tabela 1 - Caractersticas de cada fase

Prof. Alessandro Zanini

2.
2.1 Hardware

Conceitos de Hardware e Software

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.

2.1.1 Unidade Central de Processalmento


A unidade central de processamento (UCP), ou processador, tem como funo principal unificar todo o sistema, controlando as funes realizadas por cada unidade funcional. AUCP tambm responsvel pela execuo de todos os programas do sistema, que obrigatoriamente devero estar armazenados na memria principal. Um programa composto por uma srie de instrues que so executadas sequencialmente pela UCP, atravs de operaes bsicas como somar, subtrair, comparar e movimentar dados. Desta forma, a UCP busca cada instruo na memria principal e a interpreta para sua execuo.

Unidade Lgica e Aritmtica (ULA)

Unidade de Controle (UC)

Registradores Dispositivos de Entrada e Sada

Memria Principal (MP)

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

Tabela 2 - Velocidade de processamento de alguns computadores.

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.

2.1.4 Memria Principal


A memria principal, tambm conhecida como memria primria ou real, e a parte do computador onde so armazenados instrues e dados. Ela e composta por unidades de acesso chamadas clulas, sendo cada clula composta por um determinado nmero de bits (binary digit). O bit e a unidade bsica de memria, podendo assumir o valor 0 ou 1. Atualmente, a grande maioria dos computadores utilize o byte (8 bits) como tamanho de clula, porm encontramos computadores de geraes passadas com clulas de 16, 32 e ate mesmo 60 bits. Podemos concluir, ento, que a memria, e formada por um conjunto de clulas, onde cada clula possui um determinado nmero de bits (Figura 6).

Prof. Alessandro Zanini

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.5 Memria Cache


A MEMRIA cache e uma memria voltil de alta velocidade. O tempo de acesso a um dado nela contido e muito menor que se o mesmo estivesse na memria principal. Toda vez que o processador fez referncia a um dado armazenado na memria principal, ele "olha" antes na memria cache. Se o processador encontrar o dado na cache, no ha necessidade do acesso a memria principal; do contrrio, o acesso e obrigatrio Neste ltimo cave, o processador, a partir do dado referenciado, transfere um bloco de dados pare a cache. O tempo de transferncia entre as memrias e pequeno, se comparado com o aumento do desempenho obtido com a utilizao, ao desse tipo de memria. Apesar de ser uma memria de acesso rpido, seu uso e limitado em fun,cao do alto custo. A Tabela 2.2 mostra a relao entre as memrias cache e principal em alguns equipamentos. HP 9000/855S 256 Mb 256 Kb IBM 3090/600S 512 Mb 128 Kb por UCP VAX 9000/440 512 Mb 128 Kb por UCP

Tamanho mximo memria principal Tamanho mximo Memria cache

Tabela 3 - Relao entre as memrias cache e principal

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.

Maior Custo e Maior Velocidade de Acesso

2.1.7 Dispositivos de Entrada e Sada


Os dispositivos de entrada e sada (E/S) so utilizados pare permitir a comunicao entre o computador e o mundo externo. Atravs desses dispositivos, a UCP e a memria principal podem se comunicar, tanto com usurios quanto com memrias secundrias, a fim de realizar qualquer tipo de processamento. Prof. Alessandro Zanini 12

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

Memria Principal Dispositivos de E/S

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.

2.1.10 Ativao e desativao do Sistema


O sistema operacional essencial para o funcionamento de um computador. Sem ele, grande parte dos recursos do sistema no estaria disponvel, ou se apresentaria de uma forma complexa para utilizao pelos usurios. Prof. Alessandro Zanini 13

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

Boot Sistema Operacional

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.1.11 Arquiteturas RISC e CISC


Um processador com arquitetura RISC (Reduced Instruction Set Computer) se caracteriza por possuir poucas instrues de mquina, em geral bastante simples, que so executadas diretamente pelo hardware. Na sua maioria, estas instrues no acessam a memria principal, trabalhando principalmente com registradores que, neste tipo de processador, se apresentam em grande nmero. Estas caractersticas, alm de ajudarem as instrues serem executadas em alta velocidade, facilitam a implementao do pipeline. Como exemplos de processaores RISC podemos citar o Sparc (SUN), RS-6000 (IBM), PA-RISC (HP), Alpha AXP (DEC) e Rx000 (MIPS). Os processadores CISC (Complex Instruction Set computers) j possuem instrues complexas que so interpretadas por microprogramas. O nmero de registradores pequeno e qualquer instruo pode referenciar a memria principal. Neste tipo de arquitetura, a implementao do pipeline mais difcil. So exemplos de processadores CISC o VAX (DEC), 80x86 e o Pentium (Intel), e o 68xx (Motorola).

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

Linguagem de Alto Nvel

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.

Prof. Alessandro Zanini

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.7 Linguagem de Controle


Tambm denominada a linguagem de comando, e a forma mais direta de um usurio se comunicar com o sistema operacional. Esta linguagem oferecida por cada sistema operacional para que, atravs de comandos simples, o usurio possa ter acesso a rotinas especificas do sistema.

2.2.8 Interpretador de Comandos (Shell)


O sistema operacional o cdigo executor de chamadas de sistema. Os editores, compiladores, montadores, ligadores e interpretadores de comando no fazem parte do sistema operacional, apesar de serem softwares muito importantes e muito teis. Esses comandos quando digitados pelos usurios, so interpretados pelo Shell, verifica sua sintaxe, envia mensagens de erro e faz chamadas a rotinas do sistema. Dessa forma o usurio dispe de uma interface interativa com o sistema operacional, para realizar tarefas como acessar uma arquivo em disco ou consultar um diretrio.

2.2.9 Linguagem de Mquina


A linguagem de mquina de um computador a linguagem de programao que o processador realmente consegue entender. Cada processador possui um conjunto nico de instrues de mquina, definido pelo prprio fabricante. As instrues especificam detalhes, como registradores, modos de endereamento e tipos de dados, que caracterizam um processador e suas potencialidades.

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.12 Chamadas de Sistema


Os programas de usurio solicitam servios do sistema operacional atravs da execuo de chamadas de sistema. A cada chamada corresponde um procedimento de uma biblioteca de procedimentos que o programa do usurio pode chamar.

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.

Prof. Alessandro Zanini

17

3.
3.1 Introduo

Tipos de Sistemas Operacionais

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 Monoprogamveis/ Monotarefa

Sistemas Multiprogramveis/ Multitarefa


Figura 13 - Tipos de sistemas operacionais

Sistemas com Mltiplos Processadores

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

Figura 14 - Sistemas monoprogramveis/monotarefa

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

Monoprogramao/ Monotarefa Multiprogramao/ Multitarefa

Um usurio Monousurio Monousurio

Dois ou mais usurios N/A 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.

Prof. Alessandro Zanini

19

Sistemas Multiprogramveis/Multirefa

Sistemas Batch

Sistemas de Tempo compartilhado

Sistemas de Tempo Real

Figura 15 - Tipos de sistemas multiprogramveis/multitarefa

3.3.1 Sistemas Batch


Os sistemas batch (lote) foram os primeiros sistemas multiprogramveis a serem implementados e caracterizam-se por terem seus programas, quando submetidos, armazenados em disco ou fita, onde esperam para ser executados seqencialmente. Normalmente, os programas, tambm chamados de jobs, no exigem interao com os usurios, lendo e gravando dados em discos e fitas. Alguns exemplos de aplicaes originalmente processadas em batch so compilaes, linkedies, sorts, backups e todas aquelas onde no necessria a interao com o usurio.

3.3.2 Sistemas de Tempo Compartilhado


Os sistemas de tempo compartilhado (time-sharing) permitem a interao dos usurios com o sistema, basicamente atravs de terminais que incluem vdeo, teclado e mouse. Dessa forma, o usurio pode interagir diretamente com o sistema em cada fase do desenvolvimento de suas aplicaes e, se preciso, modific-las imediatamente. Devido a esse tipo de interao, os sistemas de tempo compartilhado tambm ficaram conhecidos como sistemas on-line. Para cada usurio, o sistema operacional aloca uma fatia de tempo (time-slice) do processador. Caso o programa do usurio no esteja concludo nesse intervalo de tempo, ele substitudo por um de outro usurio, e fica esperando por uma nova fatia de tempo. No s o processador compartilhado nesse sistema, mas tambm a memria e os perifricos, como discos e impressoras. O sistema cria para o usurio um ambiente de trabalho prprio, dando a impresso de que todo o sistema est dedicado, exclusivamente, a ele. Sistemas de tempo compartilhado so de implementao complexa, porm, se levado em considerao o tempo de desenvolvimento e depurao de uma aplicao, aumentam consideravelmente a produtividade dos seus usurios, reduzindo os custos de utilizao do sistema.

3.3.3 Sistemas de Tempo Real


Os sistemas de tempo real (real time) so bem semelhantes em implementao aos sistemas de tempo compartilhado. A maior diferena o tempo de resposta exigido no processamento das aplicaes. Enquanto em sistemas de tempo compartilhado o tempo de resposta pode variar sem comprometer as aplicaes em execuo, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rgidos, que devem ser obedecidos, caso contrrio podero ocorrer problemas irreparveis. No existe idia de fatia de tempo, um programa detm o processador o tempo que for necessrio, ou at que aparea outro prioritrio em funo de sua importncia no sistema. Esta importncia ou prioridade de execuo controlada pela prpria aplicao e no pelo sistema operacional, como nos sistemas de tempo compartilhado. Esses sistemas, normalmente, esto presentes em controle de processos, como no monitoramento de refinarias de petrleo, controle de trfego areo, de usinas termeltricas e nucleares, ou em qualquer aplicao onde o tempo de resposta fator fundamental.

3.4

Sistemas com Mltiplos Processadores

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 com Mltiplos Processadores

Sistemas Fortemente Acoplados

Sistemas Fracamente Acoplados

Sistemas Simtricos

Sistemas Assimtricos

Sistemas Operacionais de Rede

Sistemas Operacionais Distribudos

Figura 16 - Sistemas com mltiplos processadores.

3.5

Sistemas Fortemente Acoplados

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.

Memria UCP UCP

Dispositivos de E/S
Figura 17 - Sistemas fortemente acoplados

Dispositivos de E/S

Prof. Alessandro Zanini

21

Link de Comunicao UCP UCP

Memria

Dispositivos de E/S

Memria

Dispositivos de E/S

Figura 18 - Sistemas fracamente acoplados

3.5.1 Sistemas Assimtricos


Na organizao assimtrica ou mestre/escravo(master/slave), somente um processador (mestre) pode executar servios do sistema operacional, como, por exemplo, realizar operaes de entrada/sada. Sempre que um processador do tipo escravo precisar realizar uma operao de entrada/sada, ter de requisitar o servio ao processador mestre. Dependendo do volume de operaes de entrada/sada destinadas aos processadores escravos, o sistema pode se tornar ineficiente, devido ao elevado nmero de interrupes que devero ser tratadas pelo mestre.

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.

3.5.2 Sistemas Simtricos


O multiprocessamento simtrico (Simmetric Multiprocessing- SMP), ao contrrio da organizao mestre/escravo, implementa a simetria dos processadores, ou seja, todos os processadores realizam as mesmas funes. Apenas algumas poucas funes ficam a cargo de um nico processador, como, por exemplo, a inicialiazao (boot) do sistema.

Prof. Alessandro Zanini

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.5.4 Organizao Funcional


O esquema de comunicao interna das UCPs, memria e dipositivos de E/S (unidades funcionais) fundamental no projeto de sistemas com mltiplos processadores, pois termina quantas UCPs o sistema poder ter e como ser o acesso memria. Para permitir mltiplos acessos simultneos memria (interliving), comum que esta dividida em mdulos, podendo assim ser compartilhada por vrias unidades funcionais. As organizaes funcionais de multiprocessadores podem ser divididas basicamente em trs tipos: barramento comum, barramento cruzado e memria multiport.

3.6

Sistemas Fracamente Acoplados

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

Figura 21- Sistemas fracamente acoplados

3.6.1 Sistemas Operacionais de Rede


Em sistemas operacionais de rede (SOR), cada n possui seu prprio sistema operacional, alm de um hardware e software que possibilitam ao sistema ter acesso a outros componentes da rede, compartilhando seus recursos. O SOR permite entre outras funes: Cpia remota de arquivos Emulao de terminal Impresso remota Gerncia remota Correio eletrnico. Cada n totalmente independente do outro, podendo inclusive possuir sistemas operacionais diferentes. Caso a conexo entre os ns sofra qualquer problema, os sistemas podem continuar operando normalmente, apesar de alguns recursos se tornarem indisponveis. O melhor exemplo da utilizao dos sistemas operacionais de rede so as redes locais. Nesse ambiente, cada estao pode compartilhar seus recursos com o restante da rede. Caso uma estao sofra qualquer, os demais componentes da rede podem continuar o processamento, apenas no dispondo dos recursos oferecidos por ela.

Figura 22 - Sistemas operacionais de rede.

3.6.2 Sistemas Operacionais distribudos


Em sistemas distribudos, cada componente da rede tambm possui seu prprio sistema operacional, memria, processador e dispositivos. O que define um sistema distribudo a existncia de um relacionamento mais forte entre os seus componentes, onde geralmente os sistemas operacionais so os mesmos. Para o usurio e suas aplicaes, como se no existisse uma rede de computadores, mas sim um nico sistema centralizado.

Prof. Alessandro Zanini

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 Organizao Funcional


A organizao funcional dos sistemas fracamente acoplados ou topologia define como so interligados fisicamente os diversos sistemas da rede.

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.

Figura 25 - Organizao de Barramento

3.6.3.2 Organizao distribuda


Na organizao distribuda existem linhas de comunicao ponto-a-ponto que ligam os sistemas e caminhos alternativos entre os diversos ns da rede. Caso uma linha de comunicao apresente problema, linhas alternativas permitiro que a rede continue em funcionamento. Este tipo de organizao utilizada geralmente em redes distrbudas (Figura 26).

Figura 26 - Organizao distribuda

Prof. Alessandro Zanini

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.

Prof. Alessandro Zanini

27

E/S

E/S

UCP

Livre

UCP

1 2

tempo Sistema Nomoprogramvel (a)

tempo Sistema Multiprogramvel (b)

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

Tabela 7 - Comparao entre monoprogramao x multiprogramao

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.

Prof. Alessandro Zanini

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.

Programa Arquivo de Spool

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.

Prof. Alessandro Zanini

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.

Prof. Alessandro Zanini

33

5.

Estrutura dos Sistemas Operacionais

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

Prof. Alessandro Zanini

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.

Figura 34 - Chamada a uma rotina do sistema

5.3

Tipos de Estrutura de Sistemas Operacionais

Vamos examinar quatro maneiras diferentes de se estruturar um sistema operacional, do modo a formar uma idia a respeito do espectro de possibilidades

5.3.1 Sistemas Monolticos


Apesar da estrutura monoltica ser de longe a mais utilizada, ela poderia muito bem ser chamada de a grande confuso. Simplesmente no h estruturao visvel na organizao monoltica. O sistema operacional escrito como um conjunto de procedimentos, cada um dos quais podendo 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

Prof. Alessandro Zanini

35

Figura 35 - Sistemas monolticos.

5.3.2 Sistemas em Camadas


Um sistema em camadas divide o sistema operacional em camadas sobrepostas. Cada mdulo oferece um conjunto de funes que podem ser utilizadas por outros mdulos. Mdulos de uma camada podem fazer referncia apenas a mdulos das camadas inferiores. O primeiro sistema com base nesta abordagem foi o sistema THE (Techinische Hogeschool Eindhoven), construdo por Dijkstra na Holanda em 1968 e que utilizava seis camadas. Posteriormente, os sistemas MULTICS e VMS tambm implementaram o conceito de camadas, sendo estas concntricas. Neste tipo de implementao, as camadas mais internas so mais privilegiadas que as mais externas.

5 4 3 2 1 0

Operador Programas de Usurio Entrada/Sada Comunicao Gerncia de memria Multiprogramao

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.

Prof. Alessandro Zanini

36

Usurio Supervisor Executivo Kernel

Figura 37 - Sistema VMS.

5.3.3 Mquinas Virtuais


Chamado originalmente de CP/CMS, agora denominado VM/370 (Seawright and MacKinnon, 1979), baseou-se numa astuta observao: um sistema de compartilhamento de tempo deve fornecer: (1) ambiente para multiprogramao e (2) uma mquina estendida com uma interface mais conveniente que o hardware. A essncia do VM/370 a separao completa destas duas funes. O corao conhecido como monitor da mquina virtual, roda sobre o hardware, e implementa a multiprogramao, fornecendo no s uma, mas vrias mquinas virtuais para o nvel acima dele. Porm, ao contrrio dos demais sistemas operacionais, estas mquinas no so mquinas estendidas, com sistemas de arquivos e outras caractersticas agradveis e convenientes ao usurio. Em vez disso, elas so cpias fiis do hardware, incluindo os modos kernel/usurio, entrada/sada, interrupes, e tudo o mais que uma mquina real possui. Pelo fato de cada mquina virtual ser uma cpia exata do hardware, cada uma delas pode rodar um sistema operacional. Mquinas virtuais diferentes podem rodar sistemas operacionais diferentes. Algumas rodam sistemas sucessores do OS/360 para processamento batch, outras rodam um sistema monousurio, outras um sistema interativo denominado CMS (Conversational Monitor System) para usurios de sistemas de compartilhamento de tempo. Quando um programa CMS executa uma chamada de sistema, a chamada interceptada pelo sistema operacional de sua prpria mquina virtual, no pelo VM/370, exatamente como se ele estivesse rodando numa mquina real, e no numa virtual. O CMS ento executa as instrues necessrias para efetuar a chamada. Estas instrues so interceptadas pelo VM/370, que as executa como parte da simulao do hardware real. Atravs da completa separao das funes de fornecimento do ambiente de multiprogramao e do fornecimento de uma mquina virtual, cada um dos mdulos mais simples, mais flexvel e mais fcil de manter.

5.3.4 Modelo Cliente Servidor


Uma tendncia dos sistemas operacionais modernos tornar o ncleo do sistema operacional o menor e mais simples possvel. Para implementar esta idia, o sistema dividido em processos, sendo cada um responsvel por oferecer um conjunto de servios, como servios de arquivos, servios de criao de processos, servios de memria, servios de escalonamento, etc. Sempre que uma aplicao deseja algum servio, ela solicita ao processo responsvel. Neste caso, a aplicao que solicita um servio chamada de cliente, enquanto o processo que responde solicitao chamado servidor. Um cliente, que pode ser uma aplicao de um usurio ou um outro componente do sistema operacional, solicita um servio enviando uma mensagem para o servidor. O servidor responde ao cliente atravs de uma outra mensagem. funo do ncleo do sistema realizar a comunicao ou seja, a troca de mensagens entre o cliente e o servidor.

Prof. Alessandro Zanini

37

Cliente

Servidor de memria

Servidor de rede Servidor de processo Modo usurio Modo kernel

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.

Prof. Alessandro Zanini

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.

Prof. Alessandro Zanini

39

You might also like