Você está na página 1de 47

SISTEMA OPERACIONAL

Prof: Fernando

Sumrio
APOSTILA E EXERCICIOS DA DISCIPLINA SISTEMA OPERACIONAL ..................... 4 1. 1.1 1.2 2. 3. 3.1 Introduo ...................................................................................................................... 4 Facilidade de acesso aos recursos do sistema ............................................................ 5 Compartilhamento de recursos de forma organizada e protegida .............................. 6 Um breve histrico dos Sistemas Operacionais ............................................................. 7 Tipos de Sistemas Operacionais .................................................................................. 12 Classificao ............................................................................................................. 12

3.1.1 Sistema monoprogramvel/ monotarefa ............................................................. 13 3.1.2 Sistema multiprogramvel/ multitarefas ............................................................. 13 3.1.3 Sistemas com mltiplos processadores .............................................................. 18 3.2 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5. 5.1 5.2 5.3 5.4 5.5 Alguns Tipos de Sistemas Operacionais .................................................................. 20 Estrutura de Sistemas Operacionais ............................................................................. 22 Estrutura ................................................................................................................... 24 Funcionalidades ........................................................................................................ 25 Proteo do ncleo ................................................................................................... 27 Interrupes e Chamadas de Sistemas...................................................................... 28 Sistemas monolticos ................................................................................................ 31 Sistemas em Camadas .............................................................................................. 32 Sistemas Microncleo (Cliente-Servidor) ................................................................ 33 Mquinas Virtuais .................................................................................................... 34 Processos Computacionais ........................................................................................... 36 O PCB (Process Control Block) ............................................................................... 37 Estado do Processo ................................................................................................... 39 Mudanas de estado de Processo.............................................................................. 39 Tipos de Processos ................................................................................................... 39 Comunicao entre Processos .................................................................................. 40

5.5.1 PROBLEMAS DE SINCRONIZAO ............................................................ 40 5.5.2 SOLUES DE SOFTWARE........................................................................... 41 5.5.3 DEADLOCKS .................................................................................................... 43 6. 7. 8. Responda as seguintes Questes .................................................................................. 44 Aulas Prtica ................................................................................................................ 48 Referncias Bibliogrficas e Sites................................................................................ 48

SISTEMAS OPERACIONAIS
Competncia 1. Conhecer o funcionamento interno de um Sistema Operacional (S.O.), identificar sistemas operacionais e programas utilitrios de acordo com as necessidades do usurio, bem como analisar e operar servios e funes de sistemas operacionais e conhecer princpios, normas e recursos de segurana em Informtica. Habilidades 1. Evoluo de S.O.; Conceitos de S.O.; Classificao, Estrutura e Processos de Sistemas Operacionais; Gerencia de Memria e Sistemas de Arquivos; Instalao de Sistemas Operacionais; Configurao de Dispositivos (mouse, vdeo, modem, impressora e outros); Instalao, desinstalao e configurao de softwares (aplicativos); Estrutura de Domnios e Contas; Compartilhamento de Recursos; Segurana em S.O.; Tipos de Sistemas Operacionais; Sistemas Operacionais Livres e Proprietrios; Utilizao do Prompt de Comandos.

APOSTILA E EXERCICIOS DA DISCIPLINA SISTEMA OPERACIONAL

1. Introduo
Antes de comearmos a estudar os conceitos e os principais componentes de um sistema operacional, devemos conhecer suas funes bsicas. Por mais complexo que possa parecer, um sistema operacional apenas um conjunto de rotinas executado pelo processador, da mesma forma que qualquer outro programa. Sua funo principal controlar o funcionamento do computador, como um gerente dos diversos recursos disponveis no sistema. Segundo Sobell, Sistema Operacional (SO) um programa de controle do computador. Ele responsvel por alocar recursos de hardware e escalonar tarefas. Ele tambm deve prover uma interface para o usurio, ou seja, ele fornece ao usurio uma maneira de acesso aos recursos do computador. Segundo Stemmer, um SO pode ser definido como um gerenciador dos recursos que compem o computador (processador, memria, I/O, arquivos, etc). Os problemas centrais que o sistema operacional deve resolver so: o compartilhamento ordenado, a proteo dos recursos a serem usados pelas aplicaes do usurio e o interfaceamento entre este e a mquina. Um sistema operacional um programa que controla a execuo dos programas de aplicao e atua como uma interface entre o usurio do computador e o hardware do computador. Um sistema operacional pode ser pensado como tendo dois objetivos ou desempenhando duas funes: convenincia, pois faz o sistema computacional mais conveniente de usar; e eficincia, pois permite que os recursos do sistema computacional sejam usados de maneira eficiente [Stallings, 1996 apud Jandl]. O SO uma camada de software colocada entre o hardware e os programas que executam tarefas para os usurios. O SO busca ser mais eficiente (maior utilizao do hardware; distribuio de recursos entre os programas) e mais conveniente (diminuio de tempo para construo do programa; o acesso a perifricos feita pelo SO). O SO oferece os seguintes tipos de servios: Oferece meios para que um programa seja carregado na memria principal e executado. O SO recebe o nome do arquivo, aloca na memria para o programa, copia o contedo

do arquivo para a memria principal, inicia sua execuo, sendo possvel abortar a execuo. Permite a utilizao de arquivos, servios implementados pelo Sistema de Arquivos. Podendo criar, escrever, ler e destruir o arquivo. Atravs da leitura e escrita pode renomear, obter tamanho, data e outras informaes. Alocao de perifricos, leitura, escrita e liberao. Pode obter informaes a respeito de cada perifrico e alterar algumas de suas caractersticas. Compartilhamento do computador. Podendo saber quanto e quais recursos cada usurio necessita. Pode-se utilizar esta informao para calcular o valor a ser cobrado pelo uso do computador, mesmo que no tenha esta cobrana, a monitorao do uso dos recursos pode levar a identificao de gargalos no sistema. Informaes sobre o sistema (data, hora, lista de usurios, verso do SO, etc). Mecanismos de proteo entre os usurios. Para no causar danos aos arquivos e trabalhos do usurio. O computador pode ser considerado como uma maquina de nveis ou camadas, tornando a interao entre o usurio e o computador mais simples, confivel e eficiente. A parte fsica tornouse transparente para o usurio. Basicamente o computador possui a estrutura abaixo:

Figura 1 - Mquina de Nveis

Um sistema operacional possui inmeras funes que resumimos em: Facilidade de acesso aos recursos do sistema e Compartilhamento de recursos de forma organizada e protegida.

1.1

Facilidade de acesso aos recursos do sistema

Um sistema de computao, ao possuir, normalmente, diversos componentes, como terminais, impressoras, discos e fitas. Quando utilizamos um desses dispositivos, no nos preocupamos com a maneira como 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 os usurios e os recursos disponveis no sistema, tornando esta comunicao transparente e permitindo ao usurio um trabalho mais eficiente e com menores chances de erros. Este conceito de ambiente simulado, criado pelo sistema operacional, e denominado mquina virtual (virtual machine) est presente, de alguma forma, na maioria dos sistemas atuais. comum pensar que compiladores, linkers1, 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.2

Compartilhamento de recursos de forma organizada e protegida

Quando pensamos em sistemas multiusurios, 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 importante. 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 dessas tarefas.

Linkers (ligadores) so programas capazes de juntar as diferentes partes de um mesmo programa, aps elas

terem sido montadas separadamente. Isso permite, entre outras coisas, que programas grandes sejam divididos em mdulos que so montados separadamente e depois unidos em um s programa pelo ligador.

2. Um breve histrico dos Sistemas Operacionais


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. Os primeiros sistemas de computao, no final dos anos 40 e incio dos anos 50, no possuam sistema operacional. Por outro lado, os sistemas de computao atuais possuem sistemas operacionais grandes, complexos e em constante evoluo. A seguir so apresentados alguns dos marcos mais relevantes na histria dos sistemas operacionais: Anos 40: cada programa executava sozinho e tinha total controle do computador. A carga do programa em memria, a varredura dos perifricos de entrada para busca de dados, a computao propriamente dita e o envio dos resultados para os perifricos de sada, byte a byte, tudo devia ser programado detalhadamente pelo desenvolvedor da aplicao. Nesta dcada no existia SO, o programador operadora todo o computador. Existe uma planilha para alocao de horrio na maquina. Durante o seu horrio, o programado controla todo o equipamento. Um programa, quando executado, tem controle total sobre a mquina, e acessa diretamente os perifricos. No mximo, existe uma biblioteca com rotinas de E/S j programadas. O programador passa a no operar mais o computador que durante a execuo do programa entregue ao operador o seu job. O job formado pelo programa a ser compilado e executado, acompanhado dos dados para a execuo. Os programas e dados so preparados na forma de cartes perfurados. Aps a execuo o programador recebe uma listagem com a sada gerada pelo programa. Caso haja erro durante a execuo o operador pode tirar uma cpia na listagem do contedo de toda memria principal (que no passa de poucos kilobytes). A depurao feita pelo programador. Com os operadores profissionais diminui o tempo que o processo fica parado e enquanto isso o programador pensa a soluo para os erros. Para executar um job primeiro retira a fita magntica, cartes e listagens do job que terminou e depois so preparadas as fitas magnticas e os cartes do prximo job. O tempo de execuo ainda era grande, entao agruparam os Jobs em lotes (ou batch). Onde os Jobs so colocados com necessidades semelhantes, exigindo pouca preparao entre um Jobs do mesmo lote, surgindo assim o sistema em batch2.

Acompanhando a figura: inicialmente, os programas passaram a ser perfurados em cartes, que, submetidos a

uma leitora, eram gravados em uma fita de entrada (a). A fita, ento, era lida pelo computador, que executava um programa de cada vez, gravando o resultado do processamento em uma fita de sada (b). Ao terminar todos os programas, a fita de sada era lida e impressa (c).

Figura 2 - Processamento Batch

A troca de Jobs continua sendo manual, feita pelo operador, quem tem que estar atento em relao ao trmino de cada programa. Um mesmo job pode exigir a execuo de vrios programas. Por exemplo, executar o montador traduzindo o cdigo Assembly para linguagem de maquina, o programa montado ligado com as rotinas de E/S de uma biblioteca, o programa j pronto carregado e executado. Cada etapa chamada de step. Anos 50: Os primeiros sistemas surgiram, justamente para tentar automatizar as tarefas manuais que eram utilizadas; eles passaram a ter seu prprio conjunto de rotinas para operaes de entrada e sada, eliminando a necessidade do programador desenvolver suas prprias rotinas de leitura/gravao especificas para cada dispositivo perifrico. Os sistemas de computao fornecem bibliotecas de sistema (system libraries) que encapsulam o acesso aos perifricos, para facilitar a programao de aplicaes. Algumas vezes um programa monitor (system monitor) auxilia a carga e descarga de aplicaes e/ou dados entre a memria e perifricos (geralmente leitoras de carto perfurado, fitas magnticas e impressoras de caracteres). Surgimentos dos transistores. Surgiu o monitor residente que tinha a funo de aumentar a transio do computador entre programas. Era um programa que fica o tempo todo na memria. Quando um programa em execuo termina, ele avisa o monitor. O monitor, ento, carrega automaticamente o prximo programa e inicia a execuo dele. A transio entre programas feita pelo monitor residente dispensa a operao manual. Para que o monitor residente saiba o que fazer, qual programa deve ser carregado, as informaes so passadas pelos cartes de controle, que tambm so utilizados para outras informaes. Estes cartes so a origem das linguagens de comandos.

O monitor residente tambm o local indicado para as rotinas de acesso aos perifricos, so rotinas utilizadas por todos os programas, com elas as aplicaes no precisam acessar diretamente os perifricos, apenas chamar a rotina apropriada dentro do monitor, iniciando a ideia de chamada de sistema. Anos 60: Surgiu o conceito de multiprogramao. No monitor residente, apenas um programa executado de cada vez. Quando ele precisa fazer alguma entrada e sada, o processador fica parado. Em geral, perifricos so dispositivos eletromecnicos e trabalham na faixa de milissegundo. Ao mesmo tempo, o processador um dispositivo eletrnico, que trabalha na faixa de microssegundo. Decidiram ento colocar vrios programas na memria principal ao mesmo tempo, assim enquanto um programa est esperando a concluso da E/S o outro inicia sua execuo (multiprogramao). Desta forma o processador fica menos tempo parado e os perifricos so melhor utilizados, pois com mais programas em execuo, as solicitaes so mais frequentes. Surgem tambm as interrupes. Quando um comando enviado para um perifrico, imediatamente o SO inicia a execuo de um outro programa, sendo necessrio que o perifrico avise o SO quando estiver concludo, isso se d atravs das interrupes. Tcnica Polling ou busy-loop: Pode-se fazer com que o processador fique em um lao, consultando a interface do perifrico, at que a operao esteja concluda. No possvel fazer multiprogramao sem interrupes. O desenvolvimento dos discos magnticos tambm so importantes para o surgimento da multiprogramao. Os Jobs eram submetidos em cartes perfurados e lidos pelo computador diretamente nos cartes, depois passaram a ser copiados em fitas magnticas. Com os discos magnticos os Jobs dos cartes e fitas passaram a ser lidos em discos, sendo agora possvel a execuo de vrios Jobs. Com a utilizao de discos magnticos, no havia mais a necessidade de reunir Jobs semelhantes em lotes. O termo batch passou a designar um sistema no qual no existe interao entre usurio e a execuo do programa. Posteriormente o termo batch foi substitudo por execuo em background. A depurao de programas em um ambiente batch difcil. O programador submete o job e, algumas horas depois, recebe uma listagem como o resultado da execuo. Os erros do programa devem ser detectados e corrigidos nesse contexto. Nesta dcada tambm iniciou as primeiras experincias com sistemas timesharing, porem somente na dcada seguinte ocorreu sua disseminao. 1961: o grupo do pesquisador Fernando Corbat, do MIT, anuncia o desenvolvimento do CTSS Compatible TimeSharing System, o primeiro sistema operacional com

compartilhamento de tempo.

1965: a IBM lana o OS/360, um sistema operacional avanado, com compartilhamento de tempo e excelente suporte a discos. 1965: um projeto conjunto entre MIT, GE e Bell Labs define o sistema operacional Multics, cujas idias inovadoras iro influenciar novos sistemas durante dcadas. 1966 1980: foram adicionados terminais e teclados para permitir interao entre o usurio e o computador. Passa a ocorrer: Multiprogramao (enquanto o programa espera por uma operao de leitura e gravao, o processador executa um outro programa, para tal a memria foi dividida em parties, onde cada programa espera sua vez para ser executado), Spooling (com a substituio das fitas por discos no processo de execuo dos programas, o processamento se tornou mais eficiente, permitindo a alterao da ordem na execuo das tarefas, que eram seqenciais), TimeSharing (para melhorar o tempo de resposta razoveis cada programa na memria utilizaria o comutador em pequenos intervalos de tempo, compartilhando assim o processador com outros programas). Em um sistema TimeSharing, alm da multiprogramao, cada usurio possui um terminal, onde o usurio pode interagir com os programas em execuo. E ao detectar um erro, ele corrige e j inicia uma nova execuo. Em termos de instrues de maquina, o tempo entre a digitao de dois caracteres muito grande, permitindo a execuo de milhes de instrues de maquina (os digitadores mais rpidos possuem a velocidade de 5 caracteres por segundo). 1969: Ken Thompson e Dennis Ritchie, pesquisadores dos Bell Labs, criam a primeira verso do UNIX. Na dcada de 80 houve uma enorme disponibilidade de microcomputadores, a medida que o hardware era melhorado, o SO tambm era. Antes preocupava-se apenas com a eficincia no uso do computador, porem iniciou uma grande preocupao com a convenincia, surgindo assim interfaces mais amigveis. 1981 1990: desenvolvimento da integrao de circuitos em grande escala (LSI) e a integrao em muito larga escala (VLSI), aparecem chips com milhares de transistores encapsulados em um centmetro quadrado de silcio, nascendo da a ideia de computador pessoal. Cria-se os conceitos de multitarefas e multiprocessamento. Devido ao avano em redes de computadores, os softwares de rede passaram a estar intimamente relacionados ao sistema operacional e surgem os sistemas operacionais de rede. 1981: a Microsoft lana o MS-DOS, um sistema operacional comprado da empresa Seattle Computer Products em 1980. 1984: a Apple lana o sistema operacional Macintosh OS.

10

1985: primeira tentativa da Microsoft no campo dos sistemas operacionais com interface grfica, atravs do MS-Windows 1.0. 1987: Andrew Tanenbaum, um professor de computao holands, desenvolve um sistema operacional didtico simplificado, mas respeitando a API do UNIX, que foi batizado como Minix. 1987: IBM e Microsoft apresentam a primeira verso do OS/2, um sistema multitarefa destinado a substituir o MS-DOS e o Windows. Mais tarde, as duas empresas rompem a parceria; a IBM continua no OS/2 e a Microsoft investe no ambiente Windows. 1991 2000: A VLSI (Very Large Scale Integration) evolui para ULSI (Ultra Large Scale Integration). O conceito de processamento distribudo explorado de forma que suas funes estejam espalhadas por vrios processadores atravs da rede de computadores. E a arquitetura cliente-servidor aplicada basicamente em redes locais passa a ser oferecida em redes distribudas. Problemas de segurana, gerncia e desempenho tornam-se fatores importantes relacionados ao sistema operacional e a rede. 1991: Linus Torvalds, um estudante de graduao finlands, inicia o desenvolvimento do Linux, lanando na rede Usenet o ncleo 0.01, logo abraado por centenas de programadores ao redor do mundo. 1993: a Microsoft lana o Windows NT, o primeiro sistema 32 bits da empresa. 1993: lanamento dos UNIX de cdigo aberto FreeBSD e NetBSD. 2001: a Apple lana o MacOS X, um sistema operacional derivado da famlia UNIX BSD. 2001: lanamento do Windows XP. 2004: lanamento do ncleo Linux 2.6. 2006: lanamento do Windows Vista. 2009: lanamento do Windows 7. 2012: lanamento do Windows 8. Esse histrico reflete apenas o surgimento de alguns sistemas operacionais relativamente populares; diversos sistemas acadmicos ou industriais de grande importncia pelas contribuies inovadoras, como Mach, Chorus, QNX e Plan 9, no esto representados. A maior parte das aplicaes comerciais, mesmo em microcomputadores, hoje construda em torno de bancos de dados, mesmo que os sistemas gerenciadores de banco de dados sejam implementados fora do SO. Uma das reas de pesquisa mais importantes atualmente a dos sistemas operacionais distribudos, onde vrios computadores so interconectados por meio de uma rede de comunicao de algum tipo. A gerncia dessas solicitaes aumenta a complexidade do SO, fica mais difcil o

11

controle de acessos no autorizados e cria srios problemas com segurana, principalmente aps o surgimento da Internet. Outra rea importante so os SO de tempo real usados no suporte as aplicaes submetidas de natureza temporal. Os sistemas mais simples esto os controladores embutidos em utilidades domesticas (lavadoras de roupa e videocassetes), em outra extremidade, esto os sistemas militares e o controle de trafego areo. Quanto a aplicaes criticas esto os sistemas responsveis pelo monitoramente de pacientes em hospitais e os sistemas embarcados em veculos, de automveis at avies e sondas espaciais. Em aplicaes no criticas esto os vdeo-games e as aplicaes multimdia em geral. Na tabela a seguir dividimos essa evoluo em fases, onde destacamos, em cada uma, suas principais caractersticas de hardware, software, interao com o sistema e aspectos de conectividade.
Tabela 1 - Caractersticas por Fase
Fase Computadores Primeira (1945-1955) ENIAC EDVAC UNIVAK Segunda (1956-1965) NCR IMB 7094 CDC-6600 Terceira (1966-1980) IBM 360, 370 PDP-11 Cray 1 Cyber-205 Circuito Integrado Disco Magntico Minicomputador Microprocessador Quarta (1981-1990) Cray XMP IBM 308 VAX-11 IBM-PC LSI ou VLSI Disco ptico Microcomputador Quinta (1991- 2000) IBM 3090 Alpha AXP Pentium Sun SPARC Ultra-LSI Arquiteturas Paralelas Circuto Integrado 3D 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 Linguagem Mquina Linguagem assembly

Software

de Linguagem de Alto Linguagem Nvel Estruturadas Processamento Batch Multiprogramao Time-Sharing Computao Grfica

Multiprocessamento Sistemas Especialistas Linguagens orientadas a objetos

Telecomunicaes

Telefone Teletipo

Transmisso Digital

Desempenho

10 ips

200.000 ips

Comunicao via Redes Locais (LAN) satlite Internet Microondas Redes distribudas(WAN) Fibra ptica 5 Mips 30 Mips

3. Tipos de Sistemas Operacionais


3.1

Classificao

Os Sistemas Operacionais podem ser classificados em: Sistemas monoprogramveis/monotarefa - Single - Tasking: no admite ser usado

por mais de um usurio simultaneamente, gerenciando uma mesma CPU. O MSDOS, da Microsoft o SO monousurio mais utilizado at hoje.

12

Sistemas Multiprogramveis/Multitarefa: usurio executa mais de uma tarefa de

cada vez, permitindo que dois programas alternem o uso da CPU e de outros recursos. So exemplos: UNIX, VMS, MS VS, G-COS, etc. Sistemas com mltiplos processadores: caracterizam-se por possuir duas ou mais

CPUs interligadas, trabalhando em conjunto, e podem ser: * Fortemente acoplado, onde dois ou mais processadores compartilhando uma nica memria e controlados por apenas um nico SO; * Fracamente acoplado, no qual, dois ou mais sistemas de computao interligados, sendo que cada sistema possui o seu prprio SO.

3.1.1

Sistema monoprogramvel/ monotarefa

So voltados a execuo de um nico programa (JOB) Outros programas deveriam aguardar o termino do programa corrente para ganhar o processador Caractersticas: Permitiam que o processador, a memria e I/O permanecessem exclusivos a execuo de um nico programa (Mainframes). Processador ocioso. Memria e perifricos no eram utilizados em toda sua totalidade Implementao simples. Os sistemas monotarefas se caracterizam por permitir que todos os seus recursos fiquem exclusivamente dedicados a uma tarefa.

3.1.2

Sistema multiprogramvel/ multitarefas

Substituram os sistemas monoprogramveis/monotarefas. Caractersticas: Mais complexos e eficientes. Vrios programas dividindo os mesmos recursos. Preocupao do SO em gerenciar a concorrncia no uso de CPU, memria e I/O. Vantagens: o Aumento de produtividade de seus usurios. o Reduo de custos por compartilhar vrios recursos.

13

A partir do numero de usurios que interagem com o sistema, podemos classificar os sistemas multiprogramveis como monousurio e multiusurio. No mundo dos computadores pessoais e estaes de trabalho, apesar de existir apenas um nico usurio interagindo com o sistema (monousurio), possvel que ele execute diversas tarefas concorrentemente ou mesmo simultaneamente. Sistemas Multitarefas: permitem que o usurio edite um texto, imprima um arquivo, copie um arquivo pela rede e calcule uma planilha.

Sist. Multiprog. Multitarefas

Sistemas Batch

Sistemas Time Sharing

Sistemas Real Time

Figura 3 - Tipos de Sistemas Multiprogramveis

Os sistemas Multiprogramveis/Multitarefas podem ser classificados em: Sistema BATCH: Foram os 1 sistemas multiprogramveis. Caractersticas: Terem seus programas armazenados em discos e fitas, onde a execuo seqencial. Normalmente no existem interaes com os usurios. Ex.: Compiladores, Linkedies, Sorts e Backups.

Sistemas de Tempo Compartilhado (Timesharing): Permitem interaes do usurio com o sistema. Conhecidos como sistemas ON-LINE. Os perifricos e Dispositivos funcionam simultaneamente entre si, juntamente com a CPU. Tarefas Concorrentes.

14

Ex.: verificar os arquivos armazenados no disco. OBS.: Time Slice a fatia de tempo que o processador separa para cada processo que dever ser executado. Vantagens: Reduo de custos, aumento de produtividade.

Desvantagens: Desenvolvimento complexo.

Sistemas de Tempo (Real-time): Processamento e atualizaes instantneas Ex.: controle de vlvula de uma subestao petrolfera, controle de trfego areo, controle de usinas nucleares. Vantagens: Atualizaes instantneas.

Desvantagens: Desenvolvimento complexo. Dedicao exclusiva ao processo.

Tabela 2 Comparao de Sistemas Monousurios X Multiusurios

Monousurio No h compartilhamento de recursos Um nico usurio conectado Gerencia a prpria maquina No h correio eletrnico

Multiusurio H compartilhamento de recursos Mais de um usurio conectado Gerencia remota H correio eletrnico

Sistemas Monoprogramveis Somente um programa residente na memria CPU permanentemente dedicada a execuo de um programa Desperdcio na utilizao da CPU Subutilizao da memria

Sistemas Multiprogramveis

15

Vrios programas podem estar residentes em memria, concorrendo pela utilizao da CPU A CPU permanece menos tempo ociosa Memria utilizada de forma mais eficiente

INTERRUPO E EXCEO Eventos que podem ocorrer durante o processamento de um programa, obrigando a interveno do sistema operacional. Pode ser resultado da execuo de instrues do prprio programa, gerado pelo sistema operacional ou por algum dispositivo de hardware. O fluxo de execuo do programa desviado para uma rotina especial de tratamento. - Interrupo Gerada pelo SO ou por algum dispositivo Independe do programa que est sendo executado Quando a interrupo detectada, o controle desviado para rotina de tratamento da interrupo Atravs da interrupo o SO sincroniza a execuo de todas as suas rotinas e dos programas de usurio, alm de controlar perifricos e dispositivos de sistema.

- Exceo Resultado direto da execuo de uma instruo do prprio programa. Ex.: Diviso de um nmero por zero, overflow de caracteres. O tratamento pode ser escrito pelo prprio programa.

OPERAES DE ENTRADA/SADA (I/O ou E/S) Controlador ou Interface faz a ligao entre a CPU e os perifricos. - Controlador Existem duas formas bsicas do processador controlar as operaes de E/S: 1 - A UCP sincroniza-se com o perifrico para inicio da transferncia dos dados, aps a transferncia o sistema fica permanente testando o estado do perifrico para saber quando a operao termina (busy wait). - Controlado por programas, mantm a UCP ocupada at o termino da operao. - Problemas: desperdcio de tempo da UCP.

16

2 - Aps o inicio da transferncia dos dados, a UCP fica livre para se ocupar de outras tarefas. Em determinados intervalos de tempo o SO deve realizar um teste para saber do termino ou no da operao de E/S em cada dispositivo (polling). - Problema: se existir um grande numero de perifricos o SO ter que interromper o processamento dos programas para testar os diversos perifricos.

- Canais de E/S Canais de E/S um processador com capacidade de executar programas de E/S. As instrues de E/S so armazenadas na memria principal pela UCP. A UCP realiza uma operao de E/S instruindo o canal para executar um programa localizado na memria. Canal E/S realiza a execuo e ao final gera uma interrupo avisando o trmino da operao.

BUFFERING A tcnica de buffering consiste na utilizao de uma rea da memria para a transferncia de dados entre perifricos e a memria principal denominado buffer (memria secundria). O buffer possui a capacidade de armazenar diversos registros, de modo a permitir que existam dados lidos no buffer mas ainda no processados, ou ainda no gravados. Desta forma, o dispositivo de entrada poder ler diversos registros antes que a CPU os processe, ou a CPU poder processar diversos registros antes de o dispositivo de sada realizar a gravao.

SPOOLING Foi introduzido para aumentar a produtividade e eficincia dos sistemas operacionais. Este processo permitia armazenar vrios programas em uma fita para depois process-los. Atualmente, a tcnica de spooling implementada na maioria dos sistemas operacionais, fazendo com que tanto a CPU quanto os dispositivos de E/S sejam aproveitados de forma mais eficiente. Um exemplo em impressoras, no momento em que um comando de impresso executado por um programa, as informaes que sero impressas so gravadas em um arquivo de disco (arquivos de spool), para ser impresso posteriormente pelo sistema. Programa Arquivo de Spool
Figura 4 - Tcnicas de Spooling

Sistema Operacional

Impresso

17

REENTRNCIA Capacidade de um cdigo de programa (cdigo reentrante) poder ser compartilhado por diversos usurios, exigindo que apenas uma cpia do programa esteja na memria. Comum em sistemas multiprogramveis, permite que cada usurio manipule dados prprios. O cdigo no pode ser mudado por nenhum usurio no momento em que est sendo executado.

PROTEO Essencial em sistemas multiprogramveis para garantir a integridade dos pertencentes a cada usurio. Todo sistema implementa algum tipo de proteo ao diversos recursos que so compartilhados, como memria, dispositivos de E/S e UCP.

3.1.3

Sistemas com mltiplos processadores

Possuem duas ou mais vias de CPUs interligadas, trabalhando em conjunto. Fator-Chave: a forma de comunicao entre as CPUs, o grau de compartilhamento da memria e I/O.
Sist. Com Mltiplos Processadores

Fortemente Acoplados

Fracamente Acoplados

Simtricos

Assimtricos

Redes

Distribudos

So classificados em: Figura 5 - Sistemas com Mltiplos Processadores Sistemas Fortemente Acoplados: Possuem dois ou mais processadores compartilhando uma nica memria. Controlados por um nico sistema Operacional. Dividem-se em simtricos e assimtricos:

18

Assimtrico: Processador Mestre/Escravo (Master e Slave); Somente um processador Poe executar servios do sistema operacional. Simtrico: Processadores com mesma funo; Paralelismo (programa executado por vrios processadores ao mesmo tempo).

Organizao Funcional o esquema de comunicao interna das CPUs, memria e I/O. - Barramento Comum Interliga todos os componentes em um nico barramento. Problema: Somente uma unidade funcional poder estar utilizando o Barramento.

- Barramento Cruzado Para evitar o problema de gargalo (no barramento) as unidades podem ser conectados entre si. possvel a comunicao simultnea entre diferentes unidades funcionais, o hardware resolve os conflitos de acesso a uma mesma unidade. IMPORTANTE: a CPU no pode ter acesso simultneo uma mesma unidade de memria.

- Memria Multiport Possibilita os acessos simultneos a um modulo de memria.

Sistemas Fracamente Acoplados: Possuem dois ou mais sistemas de computao conectados atravs de linhas de comunicao. Cada sistema possui seus prprios processadores, memria e dispositivos. Cada sistema possui seu prprio SO, gerenciando seus prprios recursos.

- S.O.R. (Sistema Operacional de Rede) Cada n possui seu prprio SO e possibilitam o compartilhamento de recursos alm de outras funes como: o Cpia remota de arquivos; o Emulao de terminal; o Impresso remota; o Gerencia remota; o Correio eletrnico.

19

Cada n totalmente independente do outro, podendo possuir SOs diferentes. Ex.: Windows NT, Linux, Win 98.

- SO Distribudo Relacionamento forte entre os seus componentes, onde geralmente os SOs so os mesmos. Ex.: Novell, Lantastic.

Organizao Funcional A organizao funcional dos sistemas fracamente acoplados ou topologia define como so interligadas fisicamente os diversos sistemas de rede. - Barramento Utilizadas em redes locais.

- Organizao Distribuda Linhas de comunicao ponto-a-ponto (Internet).

3.2

Alguns Tipos de Sistemas Operacionais

Batch (de lote): os sistemas operacionais mais antigos trabalhavam por lote, ou seja, todos os programas a executar eram colocados em uma fila, com seus dados e demais informaes para a execuo. O processador recebia os programas e os processava sem interagir com os usurios, o que permitia um alto grau de utilizao do sistema. Atualmente, este conceito se aplica a sistemas que processam tarefas sem interao direta com os usurios, como os sistemas de processamento de transaes em bancos de dados. Alm disso, o termo em lote tambm usado para designar um conjunto de comandos que deve ser executado em seqncia, sem interferncia do usurio. Exemplos desses sistemas incluem o OS/360 e VMS, entre outros. De rede: um sistema operacional de rede deve possuir suporte operao em rede, ou seja, a capacidade de oferecer s aplicaes locais recursos que estejam localizados em outros computadores da rede, como arquivos e impressoras. Ele tambm deve disponibilizar seus recursos locais aos demais computadores, de forma controlada. A maioria dos sistemas operacionais atuais oferece esse tipo de funcionalidade. Distribudo: em um sistema operacional distribudo, os recursos de cada mquina esto disponveis globalmente, de forma transparente aos usurios. Ao lanar uma aplicao, o usurio interage com sua janela, mas no sabe onde ela est executando ou armazenando seus arquivos: o

20

sistema quem decide, de forma transparente. Os sistemas operacionais distribudos j existem h tempos (Amoeba e Clouds, por exemplo), mas ainda no so uma realidade de mercado. Multi-usurio: um sistema operacional multi-usurio deve suportar a identificao do dono de cada recurso dentro do sistema (arquivos, processos, reas de memria, conexes de rede) e impor regras de controle de acesso para impedir o uso desses recursos por usurios no autorizados. Essa funcionalidade fundamental para a segurana dos sistemas operacionais de rede e distribudos. Grande parte dos sistemas atuais so multi-usurios. Desktop: um sistema operacional de mesa voltado ao atendimento do usurio domstico e corporativo para a realizao de atividades corriqueiras, como edio de textos e grficos, navegao na Internet e reproduo de mdias simples. Sua principais caractersticas so a interface grfica, o suporte interatividade e a operao em rede. Exemplos de sistemas desktop so: Windows XP, MacOS X e Linux. Servidor: um sistema operacional servidor deve permitir a gesto eficiente de grandes quantidades de recursos (disco, memria, processadores), impondo prioridades e limites sobre o uso dos recursos pelos usurios e seus aplicativos. Normalmente um sistema operacional servidor tambm tem suporte a rede e multi-usurios. Embutido: um sistema operacional dito embutido (embedded) quando construdo para operar sobre um hardware com poucos recursos de processamento, armazenamento e energia. Aplicaes tpicas desse tipo de sistema aparecem em telefones celulares, controladores industriais e automotivos, equipamentos eletrnicos de uso domstico (leitores de DVD, TVs, fornos-microondas, centrais de alarme, etc.). Muitas vezes um sistema operacional embutido se apresenta na forma de uma biblioteca a ser ligada ao programa da aplicao (que fixa). Exemplos de sistemas operacionais embutidos so o _C/OS, Xylinx, LynxOS e VxWorks. Tempo real (real time): ao contrrio da concepo usual, um sistema operacional de tempo real no precisa ser necessariamente ultra-rpido; sua caracterstica essencial ter um comportamento temporal previsvel (ou seja, seu tempo de resposta deve ser conhecido no melhor e pior caso de operao). A estrutura interna de um sistema operacional de tempo real deve ser construda de forma a minimizar esperas e latncias imprevisveis, como tempos de acesso a disco e sincronizaes excessivas. Existem duas classificaes de sistemas de tempo real: soft real-time systems, nos quais a perda de prazos implica na degradao do servio prestado. Um exemplo seria o suporte gravao de CDs ou reproduo de msicas. Caso o sistema se atrase, pode ocorrer a perda da mdia em gravao ou falhas na msica que est sendo tocada. Por outro lado, nos hard real-time systems a perda de prazos pelo sistema pode perturbar o objeto controlado, com graves conseqncias humanas, econmicas ou ambientais. Exemplos desse tipo de sistema seriam o

21

controle de funcionamento de uma turbina de avio a jato ou de uma caldeira industrial. Exemplos de sistemas de tempo real incluem o QNX, RT-Linux e VxWorks. Muitos sistemas embutidos tm caractersticas de tempo real, e vice-versa.

4. Estrutura de Sistemas Operacionais


O SO estruturado por um conjunto de rotinas que oferecem servios aos usurios do sistema e suas aplicaes. Esse conjunto de rotinas chamado de kernel (ncleo). Dentre as principais funes do ncleo pode-se enumerar: Tratamento de interrupes; Criao e eliminao de processos; Sincronizao e comunicao entre processos; Escalonamento e controle dos processos; Gerencia de memria; Gerencia do sistema de arquivos; Operaes de I/O; Contabilizao de segurana do sistema. Arquitetura do SO a imagem que o usurio tem do sistema, esta formada pelas chamadas de sistema e pelos programas de sistema.

- System Calls Responsveis por no permitir que a aplicao/usurio acessem diretamente o Kernel do SO, mando assim, o sistema estvel e operante. Estas chamadas system calls por determinada aplicao similar um programa modularizado ativando um de seus procedimentos ou funes. Os programas solicitam servios ao SO atravs das chamadas de sistema (System Calls). Semelhante as chamadas de sub-rotinas, enquanto as chamadas de sub-rotinas so transferncia para procedimentos normais do programa, as chamadas de sistema transferem a execuo para o SO. O programa informa o que necessita atravs de parmetros. O retorno da chamada de sistema e da sub-rotina, faz com que a execuo do programa seja retomada a partir de instrues que segue a chamada. O programador de Assembly chama as sub-rotinas de biblioteca. A lista de servios do SO transformada em uma lista de chamadas de sistema (manual do SO). A parte do SO responsvel por implementar as chamadas de sistemas chamada Ncleo ou Kernel. Os principais componentes do Kernel so:

22

Gerncia de processos: Criao e eliminao de processos; alterao das caractersticas do processo; sincronizao e comunicao entre processos. Gerncia de memria: Alocao e deslocao de memria. Gerncia de entrada e sada (E/S): Operaes de E/S; Manipulao de arquivos e diretrios. Devido a complexidade do Kernel, muitos SO so implementados em camadas. Assim, um pequeno componente de software chamado microncleo ou microkernel implementa servios mais bsicos do SO e usando seus servios o Kernel implementa os demais.

Figura 6 - Organizao do Sistema

Servios do MicroKernel: gerencia do processador, alocao e liberao de memria fsica e instalao de novos tratadores de dispositivos. Servios do Kernel: sistema de arquivos, memria virtual, protocolos de comunicao. Os programas de sistema (utilitrios) so programas normais fora do Kernel e fazem chamadas de sistema assim como os aplicativos. Na dcada de 60, compiladores faziam parte dos programas de sistema fornecidos com o SO. Hoje voc pode usar o SO de um fornecedor e compilador montadores4, interpretadores e editores de texto. O programa de sistema Interpretador 5 de comandos ativado pelo SO sempre que o usurio inicia sua sesso de trabalho. Sua tarefa receber comandos do usurio e execut-los. Para isso, ele recebe as linhas tecladas e analisa o contedo e executa o comando teclado. Pode exigir uma ou mais chamadas de sistema.
3

de outros, assim como

Compilador um programa de sistema que traduz um programa descrito em uma linguagem de alto nvel para

um programa equivalente em cdigo de maquina para o processador (assembly). Exemplo: compiladores Java e C++.
4 5

O Montador traduz linguagem assembly para linguagem de maquina (em ingls Assembrer). Interpretador de comandos, tambm conhecido como shell, responsvel por interpretar as instrucoes

enviadas pelo usurio e seus programas ao SO (o Kernel). Ele executa comandos de um arquivo executvel. O GNU/Linux possui diversos interpretadores de comando (bash, asch, csh, tcsh, sh) e o do DOS o Command.com.

23

O SO oferece uma interface grfica de usurio (GUI - Graphical User Interface) que possibilita mais comodidade ao usurio, que passa a usar cones, menus e mouse no lugar de digitar comandos textuais. Na maior parte do tempo, o usurio trabalha com programas distantes do SO e sua opinio a respeito do sistema ir depender dos programas que utiliza. Com o SO o usurio final obtm maior eficincia e convenincia no uso do computador. Normalmente o processador esta executando programas de usurio. Mas h 2 tipos de eventos que ativam o SO: uma chamada de sistema ou uma interrupo de perifricos. A chamada de sistema corresponde a uma solicitao de servio por parte do programa em execuo. Por meio destas, o SO envia comandos para os controladores de perifricos. O controlador deve informar ao SO quando a operao estiver concluda. Isso feito por intermdio de uma interrupo que acontece quando o processador para o que esta fazendo e passa a executar uma rotina especifica do SO. A interrupo do perifrico avisa o termino da operao de E/S, dizendo assim que uma chamada de sistema foi concluda, liberando o processador para o programa que estava a espera.

- Modos de Acesso Operaes como I/O e gerencia de memria so arriscadas e podem causar uma instabilidade no SO, por isso aplicaes no devem realizar este tipo de tarefa. Para que uma aplicao possa realizar uma instruo privilegiada (que compromete o sistema) so implementados pelo processador os modos de acesso: Modo Usurio: aplicao executa instruo no-privilegiada. Modo Kernel: aplicao executa instruo privilegiada.

4.1

Estrutura

Logicamente, nem todos os sistemas tm a mesma estrutura, ou seja, no apresentam a mesma forma de ligao entre as partes. Contudo, os sistemas operacionais modernos geralmente possuem as seguintes partes: Gerenciamento de processos: Criar e eliminar, suspender e retomar, sincronismo e comunicao entre processos; visa distribuir a capacidade do processamento de forma justa entre as aplicaes, evitando que uma aplicao monopolize esse recurso e respeitando as prioridades dos usurios.

24

Gerenciamento da memria principal: Manter o controle das partes da memria que esto sendo usadas e por quem, decidir que processos sero carregados para memria quando houver espao disponvel, alocar e desalocar espao de memria quando necessrio; Gerenciamento de memria secundria: O SO responsvel pelas atividades de alocao de espao livre, scheduling de disco; Gerenciamento de Entrada/Sada: tem a funo de implementar a interao com cada dispositivo por meio de drivers e criar modelos abstratos que permitam agrupar vrios dispositivos distintos sob a mesma interface de acesso. Gerenciamento de arquivos: Criar e eliminar arquivos e diretrios, manter mapeamento dos arquivos em disco; Proteo do sistema: Se um sistema multiusurio e permite mltiplos processos concorrentes, estes processos devem ser protegidos de outras atividades; Networking: Em um sistema distribudo (fracamente acoplado) cada processador tem sua prpria memria e seus processadores que se comunicam atravs do SO. A comunicao entre eles deve considerar roteamento e estratgias de conexo; Interpretador de comandos: Um dos mais importantes programas do SO o interpretador de comandos, que serve de interface entre o usurio e o SO. Alguns SOs incluem este programa no prprio ncleo (kernel). J outros sistemas, como o DOS e o UNIX, tratam o interpretador de comandos como um programa especial que executado quando uma sesso iniciada. Com isso, um sistema operacional fornece um ambiente para execuo, melhor dizendo, fornece servios para os programas e tambm para os usurios desses programas.

4.2

Funcionalidades

As funcionalidades do sistema operacional geralmente so inter-dependentes: por exemplo, a gerncia do processador depende de aspectos da gerncia de memria, assim como a gerncia de memria depende da gerncia de dispositivos e da gerncia de proteo.

25

Figura 7 - Funcionalidades do Sistema Operacional

Alguns dos componentes mais relevantes de um sistema operacional tpico so: Ncleo: o corao do sistema operacional, responsvel pela gerncia dos recursos do hardware usados pelas aplicaes. Ele tambm implementa as principais abstraes utilizadas pelos programas aplicativos. Drivers: mdulos de cdigo especficos para acessar os dispositivos fsicos. Existe um driver para cada tipo de dispositivo, como discos rgidos IDE, SCSI, portas USB, placas de vdeo, etc. Muitas vezes o driver construdo pelo prprio fabricante do hardware e fornecido em forma compilada (em linguagem de mquina) para ser acoplado ao restante do sistema operacional. Cdigo de inicializao: a inicializao do hardware requer uma srie de tarefas complexas, como reconhecer os dispositivos instalados, test-los e configur-los adequadamente para seu uso posterior. Outra tarefa importante carregar o ncleo do sistema operacional em memria e iniciar sua execuo. Programas utilitrios: so programas que facilitam o uso do sistema computacional, fornecendo funcionalidades complementares ao ncleo, como formatao de discos e mdias, configurao de dispositivos, manipulao de arquivos (mover, copiar, apagar), interpretador de comandos, terminal, interface grfica, gerncia de janelas, etc.

26

Figura 8 - Estrutura de um sistema operacional

4.3

Proteo do ncleo

Um sistema operacional deve gerenciar os recursos do hardware, fornecendo-os s aplicaes conforme suas necessidades. Para assegurar a integridade dessa gerncia, essencial garantir que as aplicaes no consigam acessar o hardware diretamente, mas sempre atravs de pedidos ao sistema operacional, que avalia e intermedeia todos os acessos ao hardware. Mas como impedir as aplicaes de acessar o hardware diretamente? Ncleo, drivers, utilitrios e aplicaes so constitudos basicamente de cdigo de mquina. Todavia, devem ser diferenciados em sua capacidade de interagir com o hardware: enquanto o ncleo e os drivers devem ter pleno acesso ao hardware, para poder configur-lo e gerenci-lo, os utilitrios e os aplicativos devem ter acesso mais restrito a ele, para no interferir nas configuraes e na gerncia, o que acabaria desestabilizando o sistema inteiro. Alm disso, aplicaes com acesso pleno ao hardware tornariam inteis os mecanismos de segurana e controle de acesso aos recursos (tais como arquivos, diretrios e reas de memria). Para permitir diferenciar os privilgios de execuo dos diferentes tipos de software, os processadores modernos contam com dois ou mais nveis de privilgio de execuo. Esses nveis so controlados por flags especiais nos processadores, e as formas de mudana de um nvel de execuo para outro so controladas estritamente pelo processador. O processador Pentium, por exemplo, conta com 4 nveis de privilgio (sendo 0 o nvel mais privilegiado), embora a maioria dos sistemas operacionais construdos para esse processador s use os nveis extremos (0 para o ncleo e drivers do sistema operacional e 3 para utilitrios e aplicaes). Na forma mais simples desse esquema, podemos considerar dois nveis bsicos de privilgio:

27

Nvel ncleo: tambm denominado nvel supervisor, sistema, monitor ou ainda kernel space. Para um cdigo executando nesse nvel, todo o processador est acessvel: todos os recursos internos do processador (registradores e portas de entrada/sada) e reas de memria podem ser acessados. Alm disso, todas as instrues do processador podem ser executadas. Ao ser ligado, o processador entra em operao neste nvel. Nvel usurio (ou userspace): neste nvel, somente um sub-conjunto das instrues do processador, registradores e portas de entrada/sada esto disponveis. Instrues perigosas como HALT (parar o processador) e RESET (reiniciar o processador) so proibidas para todo cdigo executando neste nvel. Alm disso, o hardware restringe o uso da memria, permitindo o acesso somente a reas previamente definidas. Caso o cdigo em execuo tente executar uma instruo proibida ou acessar uma rea de memria inacessvel, o hardware ir gerar uma exceo6, desviando a execuo para uma rotina de tratamento dentro do ncleo, que provavelmente ir abortar o programa em execuo (e tambm gerar a famosa frase este programa executou uma instruo ilegal e ser finalizado, no caso do Windows). fcil perceber que, em um sistema operacional convencional, o ncleo e os drivers operam no nvel ncleo, enquanto os utilitrios e as aplicaes operam no nvel usurio, confinados em reas de memria distintas.

4.4

Interrupes e Chamadas de Sistemas

O confinamento de cada aplicao em sua rea de memria, imposto pelos mapeamentos de memria realizados pela MMU (Unidade de Gerncia de Memria - Memory Management Unit) nos acessos em nvel usurio, prov robustez e confiabilidade ao sistema, garantindo que uma aplicao no poder interferir nas reas de memria de outras aplicaes ou do ncleo. Entretanto, essa proteo introduz um novo problema: como chamar, a partir de uma aplicao, as rotinas oferecidas pelo ncleo para o acesso ao hardware e suas abstraes? A resposta a esse problema est no mecanismo de interrupo. Quando um controlador de perifrico tem uma informao importante a fornecer ao processador, ele tem duas alternativas de comunicao: Aguardar at que o processador o consulte, o que poder ser demorado caso o

processador esteja ocupado com outras tarefas (o que geralmente ocorre);

As excees ocorrem em eventos como instrues ilegais ou no existentes, tais como tentativa de diviso

por zero ou outros erros de software disparam excees no processador, que resultam na ativao de uma rotina de tratamento de exceo, usando o mesmo mecanismo das interrupes.

28

Notificar o processador atravs do barramento de controle, enviando a ele uma

requisio de interrupo (IRQ Interrupt ReQuest). Ao receber a requisio de interrupo, os circuitos do processador suspendem seu fluxo de execuo corrente e desviam para um endereo pr-definido, onde se encontra uma rotina de tratamento de interrupo (interrupt handler). Essa rotina responsvel por tratar a interrupo, ou seja, executar as aes necessrias para atender o dispositivo que a gerou. Ao final da rotina de tratamento da interrupo, o processador retoma o cdigo que estava executando quando recebeu a requisio. O roteiro de aes ocorre a cada requisio de interrupo recebida pelo processador. Cada interrupo geralmente corresponde a um evento ocorrido em um dispositivo perifrico: a chegada de um pacote de rede, um click no mouse, uma operao concluda pelo controlador de disco, etc. Isso representa centenas ou mesmo milhares de interrupes recebidas por segundo, dependendo da carga e da configurao do sistema (nmero e natureza dos perifricos). Por isso, as rotinas de tratamento de interrupo devem ser curtas e realizar suas tarefas rapidamente (para no prejudicar o desempenho do sistema). Os processadores implementam uma instruo especial que permite acionar o mecanismo de interrupo de forma intencional, sem depender de eventos externos ou internos. Ao ser executada, essa instruo comuta o processador para o nvel privilegiado e procede de forma similar ao tratamento de uma interrupo. Por essa razo, esse mecanismo denominado interrupo de software ou trap. Processadores modernos oferecem instrues especficas para entrar/sair do modo privilegiado e tambm um conjunto de registradores especficos para essa operao, o que permite a transferncia rpida do controle para o ncleo, com custo menor que o tratamento de uma interrupo. A ativao de procedimentos do ncleo usando interrupes de software (ou outros mecanismos correlatos) denominada chamada de sistema (system call ou syscall). Os sistemas operacionais definem chamadas de sistema para todas as operaes envolvendo o acesso a recursos de baixo nvel (perifricos, arquivos, alocao de memria, etc) ou abstraes lgicas (criao e finalizao de tarefas, operadores de sincronizao e comunicao, etc). Geralmente as chamadas de sistema so oferecidas para as aplicaes em modo usurio atravs de uma biblioteca do sistema (system library), que prepara os parmetros, invoca a interrupo de software e retorna aplicao os resultados obtidos.

29

Figura 9 - Roteiro tpico de uma chamada de sistema

A figura a acima ilustra o funcionamento bsico de uma chamada de sistema (a chamada read, que l dados de um arquivo previamente aberto). Os seguintes passos so realizados: 1. No nvel usurio, a aplicao invoca a funo read da biblioteca de sistema. 2. A funo read preenche uma rea de memria com os parmetros recebidos e escreve o endereo dessa rea em um registrador da CPU. Em outro registrador, ela escreve o cdigo da chamada de sistema. 3. A funo read invoca uma interrupo de software (no caso do Linux, sempre invocada a interrupo 80h). 4. O processador comuta para o nvel privilegiado (kernel level) e transfere o controle para a rotina apontada pela entrada 80h do vetor de interrupes. 5. A rotina obtm o endereo dos parmetros, verifica a validade de cada um deles e realiza (ou agenda para execuo posterior) a operao desejada pela aplicao. 6. Ao final da execuo da rotina, eventuais valores de retorno so escritos na rea de memria da aplicao e o processamento retorna funo read, em modo usurio. 7. A funo read finaliza sua execuo e retorna o controle aplicao. 8. Caso a operao solicitada no possa ser realizada imediatamente, a rotina de tratamento da interrupo de software passa o controle para a gerncia de atividades, ao invs de retornar diretamente da interrupo de software para a aplicao solicitante. Isto ocorre, por exemplo, quando solicitada a leitura de uma entrada do teclado.

30

9. Na seqncia, a gerncia de atividades devolve o controle do processador a outra aplicao que tambm esteja aguardando o retorno de uma interrupo de software, e cuja operao solicitada j tenha sido concluda. A maioria dos sistemas operacionais implementa centenas de chamadas de sistema distintas, para as mais diversas finalidades. O conjunto de chamadas de sistema oferecidas por um ncleo define a API (Application Programming Interface) desse sistema operacional.

4.5

Sistemas monolticos

So os mais comuns de serem encontrados, podem ser comparados a uma aplicao formada por vrios procedimentos compilados separadamente e linkados formando um nico e grande executvel. Aplic. Aplic.

SYSTEM CALLS

HARDWARE
Figura 10 - Sistemas Monolticos

Em um sistema monoltico, todos os componentes do ncleo operam em modo ncleo e se inter-relacionam conforme suas necessidades, sem restries de acesso entre si, pois o cdigo no nvel ncleo tem acesso pleno a todos os recursos e reas de memria. A grande vantagem dessa arquitetura seu desempenho: qualquer componente do ncleo pode acessar os demais componentes, toda a memria ou mesmo dispositivos perifricos diretamente, pois no h barreiras impedindo esse acesso. A interao direta entre componentes tambm leva a sistemas mais compactos. Todavia, a arquitetura monoltica pode pagar um preo elevado por seu desempenho: a robustez e a facilidade de desenvolvimento. Caso um componente do ncleo perca o controle devido a algum erro, esse problema pode se alastrar rapidamente por todo o ncleo, levando o sistema ao colapso (travamento, reinicializao ou funcionamento errtico). Alm disso, a manuteno e evoluo do ncleo se tornam mais complexas, porque as dependncias e pontos de interao entre os componentes podem no ser evidentes: pequenas alteraes na estrutura de dados

31

de um componente podem ter um impacto inesperado em outros componentes, caso estes acessem aquela estrutura diretamente. A arquitetura monoltica foi a primeira forma de organizar os sistemas operacionais; sistemas UNIX antigos e o MS-DOS seguiam esse modelo. Atualmente, apenas sistemas operacionais embutidos usam essa arquitetura, devido s limitaes do hardware sobre o qual executam. O ncleo do Linux nasceu monoltico, mas vem sendo paulatinamente estruturado e modularizado desde a verso 2.0 (embora boa parte de seu cdigo ainda permanea no nvel de ncleo).

4.6

Sistemas em Camadas

Um sistema em camada divide o SO em camadas sobrepostas. Cada mdulo oferece um conjunto de funes que podem ser utilizadas por outros mdulos. O primeiro sistema em camadas foi criado pelo Holands Dijkstra, este sistema era composto de seis camadas e foi posteriormente chamado de MULTICS (futuro UNICS UNIX). 5 4 3 2 1 0 Operador Programas de Usurios I/O Comunicao Gerncia de Memria Multiprogramao

Figura 11 - Sistemas em Camadas

Uma forma mais elegante de estruturar um sistema operacional faz uso da noo de camadas: a camada mais baixa realiza a interface com o hardware, enquanto as camadas intermedirias provem nveis de abstrao e gerncia cada vez mais sofisticados. Por fim, a camada superior define a interface do ncleo para as aplicaes (as chamadas de sistema). Essa abordagem de estruturao de software fez muito sucesso no domnio das redes de computadores, atravs do modelo de referncia OSI (Open Systems Interconnection), e tambm seria de se esperar sua adoo no domnio dos sistemas operacionais. No entanto, alguns inconvenientes limitam sua aceitao nesse contexto: O empilhamento de vrias camadas de software faz com que cada pedido de uma

aplicao demore mais tempo para chegar at o dispositivo perifrico ou recurso a ser acessado, prejudicando o desempenho do sistema.

32

No bvio como dividir as funcionalidades de um ncleo de sistema operacional

em camadas horizontais de abstrao crescente, pois essas funcionalidades so inter-dependentes, embora tratem muitas vezes de recursos distintos. Em decorrncia desses inconvenientes, a estruturao em camadas apenas parcialmente adotada hoje em dia. Muitos sistemas implementam uma camada inferior de abstrao do hardware para interagir com os dispositivos (a camada HAL Hardware Abstraction Layer, implementada no Windows NT e seus sucessores), e tambm organizam em camadas alguns sub-sistemas como a gerncia de arquivos e o suporte de rede (seguindo o modelo OSI). Como exemplos de sistemas fortemente estruturados em camadas podem ser citados o IBM OS/2 e o MULTICS.

4.7

Sistemas Microncleo (Cliente-Servidor)

Os SOs modernos seguem a tendncia de minimizar o tamanho do seu ncleo. Para implementar esta ideia, o sistema dividido em processos, sendo cada um responsvel por oferecer um conjunto de servios, como, servios de arquivo, servios de criao de processos, servios de memria, servios de escalonamento de processos, dentre outros. Sempre que a aplicao deseja algum servio, ela solicita ao processo responsvel. A aplicao que solicita o servio chamada de cliente, a que atende a solicitao chamada de servidor. funo do kernel do sistema realizar a comunicao, ou seja, troca de mensagens entre o cliente e o servidor. CLIENTE SERV.ARQ SERV.MEM SERV.REDE

NCLEO

HARDWARE
Figura 12 - Sistemas Cliente-Servidor

Uma outra possibilidade de estruturao consiste em retirar do ncleo todo o cdigo de alto nvel (normalmente associado s polticas de gerncia de recursos), deixando no ncleo somente o cdigo de baixo nvel necessrio para interagir com o hardware e criar as abstraes fundamentais (como a noo de atividade). Por exemplo, usando essa abordagem o cdigo de acesso aos blocos de um disco rgido seria mantido no ncleo, enquanto as abstraes de arquivo e diretrio seriam

33

criadas e mantidas por um cdigo fora do ncleo, executando da mesma forma que uma aplicao do usurio. Por fazer os ncleos de sistema ficarem menores, essa abordagem foi denominada microncleo (ou kernel). Um micro-ncleo normalmente implementa somente a noo de atividade, de espaos de memria protegidos e de comunicao entre atividades. Todos os aspectos de alto nvel, como polticas de uso do processador e da memria, o sistema de arquivos e o controle de acesso aos recursos so implementados fora do ncleo, em processos que se comunicam usando as primitivas do ncleo. Em um sistema micro-ncleo, as interaes entre componentes e aplicaes so feitas atravs de trocas de mensagens. Assim, se uma aplicao deseja abrir um arquivo no disco rgido, envia uma mensagem para o gerente de arquivos que, por sua vez, se comunica com o gerente de dispositivos para obter os blocos de dados relativos ao arquivo desejado. Os processos no podem se comunicar diretamente, devido s restries impostas pelos mecanismos de proteo do hardware. Por isso, todas as mensagens so transmitidas atravs de servios do micro-ncleo. Como os processos tm de solicitar servios uns dos outros, para poder realizar suas tarefas, essa abordagem tambm foi denominada cliente-servidor. O micro-ncleos foram muito investigados durante os anos 80. Dois exemplos clssicos dessa abordagem so os sistemas Mach e Chorus. As principais vantagens dos sistemas microncleo so sua robustez e flexibilidade: caso um sub-sistema tenha problemas, os mecanismos de proteo de memria e nveis de privilgio iro confin-lo, impedindo que a instabilidade se alastre ao restante do sistema. Alm disso, possvel customizar o sistema operacional, iniciando somente os componentes necessrios ou escolhendo os componentes mais adequados s aplicaes que sero executadas. Vrios sistemas operacionais atuais adotam parcialmente essa estruturao; por exemplo, o MacOS X da Apple tem suas razes no sistema Mach, ocorrendo o mesmo com o Digital UNIX. Todavia, o custo associado s trocas de mensagens entre componentes pode ser bastante elevado, o que prejudica seu desempenho e diminui a aceitao desta abordagem. O QNX um dos poucos exemplos de micro-ncleo amplamente utilizado, sobretudo em sistemas embutidos e de temporeal.

4.8

Mquinas Virtuais

Para que programas e bibliotecas possam executar sobre uma determinada plataforma computacional, necessrio que tenham sido compilados para ela, respeitando o conjunto de instrues do processador e o conjunto de chamadas do sistema operacional.

34

Da mesma forma, um sistema operacional s poder executar sobre uma plataforma de hardware se for compatvel com ela. Nos sistemas atuais, as interfaces de baixo nvel so pouco flexveis: geralmente no possvel criar novas instrues de processador ou novas chamadas de sistema, ou mudar sua semntica. Por isso, um sistema operacional s funciona sobre o hardware para o qual foi construdo, uma biblioteca s funciona sobre o hardware e sistema operacional para os quais foi projetada e as aplicaes tambm tm de obedecer a interfaces pr-definidas. Todavia, possvel contornar os problemas de compatibilidade entre os componentes de um sistema atravs de tcnicas de virtualizao. Usando os servios oferecidos por um determinado componente do sistema, possvel construir uma camada de software que oferea aos demais componentes servios com outra interface. Essa camada permitir assim o acoplamento entre interfaces distintas, de forma que um programa desenvolvido para uma plataforma A possa executar sobre uma plataforma distinta B. O sistema computacional visto atravs dessa camada denominado mquina virtual.

Figura 13 - Uma Maquina Virtual

Um ambiente de mquina virtual consiste de trs partes bsicas: O sistema real, ou sistema hospedeiro (host system), que contm os recursos reais de

hardware e software do sistema; O sistema virtual, tambm denominado sistema convidado (guest system), que

executa sobre o sistema virtualizado; em alguns casos, vrios sistemas virtuais podem coexistir, executando sobre o mesmo sistema real; A camada de virtualizao, denominada hipervisor ou monitor de virtualizao

(VMM - Virtual Machine Monitor), que constri as interfaces virtuais a partir da interface real.

35

5. Processos Computacionais
Um processo computacional ou simplesmente processo pode ser entendido como uma atividade que ocorre em meio computacional, usualmente possuindo um objetivo definido, tendo durao finita e utilizando uma quantidade limitada de recursos computacionais. Ento, podemos entender um processo como um programa em execuo, o que envolve o cdigo do programa, os dados em uso, os registradores do processador, sua pilha (stack) e o contador de programa alm de outras informaes relacionadas a sua execuo. Desta forma, temos que a impresso de um documento um processo computacional assim como a cpia de um arquivo, a compilao de um programa ou a execuo de uma rotina qualquer. Todas as atividades, manuais ou automticas, que ocorrem dentro de um computador podem ser descritas como processos computacionais. Atualmente quase todos os computadores so capazes de realizar diversas tarefas ao mesmo tempo, onde cada uma destas tarefas pode representar um ou mais processos. Para funcionarem desta forma tais computadores so multiprogramados, ou seja, o processador chaveado de processo em processo, em pequenos intervalos de tempo, isto , o processador executa um programa durante um pequeno intervalo de tempo, para depois executar outro programa por outro pequeno intervalo de tempo e assim sucessivamente. Num instante de tempo qualquer, o processador estar executando apenas um dado programa, mas durante um intervalo de tempo maior ele poder ter executado trechos de muitos programas criando a iluso de paralelismo. Este comportamento , algumas vezes, chamado de paralelismo virtual ou

pseudoparalelismo. Em computadores com dois ou mais processadores possvel a existncia de paralelismo verdadeiro, pois cada processador pode executar um processo independentemente. A administrao de vrios diferentes programas em execuo concomitante o que permite o funcionamento eficiente dos computadores modernos, ao mesmo tempo conferindo-lhe complexa organizao e estrutura, pois tal administrao no simples e requer a considerao de muitos fatores e situaes diferentes, mesmo que improvveis. O termo processo (process) muitas vezes substitudo pelo termo tarefa (task), foi utilizado pela primeira vez no desenvolvimento do MULTICS, na dcada de 60, e pode assumir um dos seguintes significados: Um programa em execuo; Uma atividade assncrona; O esprito ativo de um procedimento; O controle local de um procedimento em execuo;

36

Entidade para o qual o processador est dedicado. Outro ponto importante que os processos computacionais podem ser divididos em subprocessos, ou seja, podem ser decompostos em processos componentes mais simples que o processo como um todo, o que permite um detalhamento da de sua tarefa ou do seu modo de operao. Esta anlise aprofundada dos processos atravs de sua decomposio em sub-processos pode ser feita quase que indefinidamente, at o exagerado limite das micro-instrues do processador que ser utilizado. O nvel adequado de diviso de um processo aquele que permite um entendimento preciso dos eventos em estudo, ou seja, depende do tipo de problema em questo e tambm da soluo pretendida. Processos tambm podem criar novos processos. O processo criador chamado de processo-pai (parent process) enquanto os processos criados so denominados de processos filhos (child process). Um processo filho tambm pode criar novos processos, permitindo a criao de rvores de processos hierarquicamente relacionados. importante estudarmos os processos computacionais porque a razo de ser dos computadores a realizao de certas atividades de maneira mais rpida e confivel do que seria possvel para o homem. Como cada processo precisa de recursos para ser executado e concludo, a ocorrncia de processos significa a utilizao de recursos do computador. Sendo assim, para que um sistema operacional possa cumprir com seu papel de gerente de recursos de um sistema computacional fundamental um entendimento mais profundo dos processos computacionais e de suas particularidades como forma efetiva de criar-se sistemas operacionais capazes de lidar com as exigncias dos processos em termos de recursos.

5.1
incluso.

O PCB (Process Control Block)

O PCB uma estrutura de dados que contem importantes informaes sobre os processos

Ponteiro Estado do Processo Nome do Processo Prioridade do Processo Registradores Limites de Memria Lista de Arquivos Abertos
Figura 14 - Bloco de Controle de Processo

37

O SO gerencia os processos atravs das system calls que realizam operaes como criao, eliminao, sincronizao, suspenso de processos, dentre outros. Pelo motivo dos PCBs precisarem ser manipulados rapidamente pelo SO, muitos sistemas de computadores, contm registradores que sempre mostram ao PCB qual o processo em execuo. As instrues de hardware esto frequentemente disponvel para carregar informaes dentro do PCB e recuperar essas informaes rapidamente.

CONTEXTO DE HARDWARE Constitui-se basicamente do contedo dos registradores, Program Counter (PC), Stack Point (SP) e bits de estado. Quando um processo est em execuo seu contexto de hardware fica gravado nos registradores do processador. No instante em que o processo perde a utilizao da CPU, o sistema salva suas informaes no contexto de hardware do processo. Este contexto aplicado a sistemas que utilizam-se de Time-Sharing, podendo ser interrompido e recuperado como se nada tivesse acontecido.

CONTEXTO DE SOFTWARE So caractersticas de um processo que vo influenciar na execuo de um programa, como por exemplo n.o mximo de arquivos abertos simultaneamente e o tamanho do buffer 7para as operaes de I/O. Um processo contem 3 grupos, de informaes, so eles: - Identificao: os processos criados recebem sempre uma identificao (PID) e em alguns sistemas podem receber alm do PID um nome tambm. - Quotas: so limites de cada recurso do sistema que um processo pode alocar. Caso uma quota no seja o suficiente o processo executado lentamente ou at no ser executado. Ex.: n o mximo de arquivos abertos simultaneamente, tamanho mx. de memria que um processo pode alocar, no mximo de operaes de I/O pendentes, tamanho mx. do buffer para operao de I/O, no mx. de processos e sub-processos que podem ser criados. - Privilgios: determina o que os processos podem ou no fazer em relao ao sistema ou a outros processos.

ESPAO DE ENDEREAMENTO a rea de memria do processo onde o programa executado, alm do espao para os dados utilizados por ele.
7

Buffer uma rea de armazenamento em memria principal para transferncias de I/O.

38

5.2

Estado do Processo
Execuo (Running): Processo na CPU. Pronto (Ready): Aguarda uma oportunidade para ser executado. Espera (Waint): Aguarda algum evento externo ou algum recurso para poder prosseguir seu processamento.

Durante a existncia de um processo, ele passa por vrios estados:

O SO gerencia processos atravs de listas encadeadas, onde cada PCB tem um ponteiro para seu sucessor. Sendo assim, existe uma lista para cada estado do processo.

5.3

Mudanas de estado de Processo

Pronto Execuo: Aguarda a oportunidade para ser executado. Execuo Espera: Aguarda a concluso do evento solicitado. Ex.: I/O. Espera Pronto: Operao solicitada atendida e ele deve retornar a execuo. Obs.: um processo em espera obrigatoriamente volta ao estado de pronto antes de ser executado novamente. Execuo Pronto: passa do estado de pronto sempre que for um evento, pelo sistema. Ex.: Fim da fatia de tempo para este processo.

5.4

Tipos de Processos

Os programas podem ser classificados de acordo com o tipo de processamento que realiza: CPU bound (Ligado a CPU): Quando passa a maior parte do tempo no estado de execuo. I/O bound (Ligado a I/O): Maior parte do tempo no estado de espera, pois realiza um elevado numero de I/O. Um critrio muito importante de anlise dos processos computacionais aquele que considera os processos segundo sua ocorrncia, isto , a observao de seu comportamento considerando o tempo. Neste caso teramos os seguintes tipos de processos: Sequenciais: So aqueles que ocorrem um de cada vez, um a um no tempo,

serialmente, como que de forma exclusiva. Paralelos: aqueles que, durante um certo intervalo de tempo, ocorrem

simultaneamente, ou seja, aqueles que no todo ou em parte ocorrem ao mesmo tempo.

39

5.5

Comunicao entre Processos

Os processos que trabalham junto geralmente compartilham recursos como arquivos, registros, dispositivos e reas de memria. Esse compartilhamento de recurso pode gerar situaes indesejveis, capazes de comprometer todo o sistema. Ex.: dois processos concorrentes trocam informaes de operaes de gravao e leitura em um buffer. Um processo s pode gravar dados no buffer caso ele no esteja cheio. Da mesma forma, um processo s poder ler os dados armazenados se eles existirem no buffer. Os mecanismos que garantem a comunicao entre processos concorrentes e o acesso a recursos compartilhados so chamados mecanismos de sincronizao. Este mecanismo fundamental para projetos de SOs multiprogramveis. A primeira notao para especificao de concorrncia de um programa foram os comandos FORK (criao de processo) e JOIN (sincronizao de processo). A soluo mais simples para evitar problemas de compartilhamento impedir que dois ou mais processos acessem os mesmos recursos no mesmo instante. Essa ideia de exclusividade chamada de EXCLUSAO MTUA. A excluso mtua deve apenas afetar os processos concorrentes quando um deles estiver fazendo acesso ao recurso compartilhado denominada de REGIO CRTICA.

5.5.1

PROBLEMAS DE SINCRONIZAO

Na tentativa de implementao de excluso, algumas solues introduzem novos problemas, que chamaremos de problemas de sincronizao. - Velocidade de execuo dos processos: pode interferir em uma soluo para o problema de excluso mtua. - Starvation: a situao onde um processo nunca consegue executar sua regio critica e, consequentemente, acessar o recurso compartilhado. Este problema ocorrer quando dois ou mais processos esperam por um recurso alocado. No momento em que o recurso liberado, o sistema deve determinar qual processo ganhar o acesso ao recurso. Caso essa escolha seja aleatria, existe a possibilidade de um processo nunca ser escolhido e sofrer starvation. - Sincronizao Condicional: outra situao na qual necessria a sincronizao entre processos concorrentes quando um recurso compartilhado no se encontra pronto para ser utilizado pelos processos. Nesse caso, o processo que deseja acessar o recurso dever ser colocado no estado de espera, at o recurso ficar pronto para o procedimento. Esta sincronizao tambm, conhecida como problema do produtor/consumidor.

40

5.5.2

SOLUES DE SOFTWARE

Alm da excluso mtua, que soluciona os problemas de compartilhamento de recursos, trs fatores mais devem ser levados em conta para a soluo dos problemas de sincronizao: Numero de processadores e tempo de execuo dos processos concorrentes devem ser irrelevantes; Um processo, fora de sua regio critica, no pode impedi que outros processos entrem em sua prprias regies criticas; Um processo no pode permanecer indefinidamente esperando para entrar em sua regio critica. A seguir esto relacionadas algumas ferramentas de software utilizadas para a soluo dos problemas de sincronizao entre processos.

- Semforos Conceito de semforos foi proposto por Dijkstra, como uma das solues geral mais simples de ser implementada. Um semforo uma varivel inteira, no negativa, que s Poe ser manipulada por duas instrues: DOWN e UP, tambm chamadas originalmente de P e V. No caso da excluso mtua, as instrues DOWN e UP funcionam como protocolos de entrada e sada. O semforo fica associado a um recurso compartilhado, indicando quando o recurso est sendo acessado por um processo concorrente. Se seu valor for maior que 0, ento nenhum processo est utilizando o recurso, caso contrario, o processo fica impedido de acesso. O programa a seguir mostra uma soluo para os problemas da excluso mtua entre dois processos atravs do uso de semforos. PROGRAM Semaforo_1; var s: semforo := 1; procedure processo_A; begin repeat down (s); //desocupa a regio Regiao_Critica_A; Up(s); //ocupa a regio until false; end; procedure processo_B; begin repeat Down(s); Regiao_critica_B; Up(s); until false; end; begin parbegin processo_A; processo_B; parend; end.

41

Semforos aplicados ao problema de excluso mtua so chamados mutexes (mutual exclusion semaphones) ou binrios, por apenas assumirem os valores 0 e 1.

- Monitores So mecanismos de sincronizao de alto nvel tentando tornar mais fceis o desenvolvimento e a correo de programas concorrentes. O monitor um conjunto de procedimentos, variveis e estrutura de dados definido dentro do mdulo. Sua caracterstica mais importante a implementao automtica da excluso mtua entre procedimentos do monitor em um determinado instante. Toda vez que algum processo chama um desses procedimentos do monitor. Caso exista, o processo ficar aguardando a sua vez at que tenha permisso para executar.

- Troca de Mensagens um mecanismo de comunicao e sincronizao entre processos, implementado pelo sistema operacional atravs de duas rotinas do sistema: SEND e RECEIVE. A rotina SEND responsvel por enviar uma mensagem para um processo receptor, e a rotina RECEIVE por receber uma mensagem de um processo transmissor. As rotinas podem ser representadas atravs dos procedimentos a seguir: SEND (Receptor, Mensagem); RECEIVE(Transmissor, Mensagem); A comunicao ocorre porque um processo, ao receber uma mensagem, obtm dados enviados de outro processo. A sincronizao obtida porque uma mensagem obtm dados enviados de outro processo. A sincronizao obtida porque uma mensagem somente pode ser lida aps ter sido enviada, restringindo, dessa forma, a ordem na qual os dois eventos devem ocorrer. A comunicao por troca de mensagens possui muitos problemas, como a perda de uma mensagem. Para evitar que esta mensagem no se perca o processo receptor deve enviar ao processo transmissor uma mensagem de recebimento (ACK acknowledgement). Caso o transmissor no receba o ACK ele retransmite a mensagem. O endereamento direto a troca de mensagem entre dois processos diretamente. O endereamento indireto a troca de mensagem entre dois processos utilizando um intermedirio mailbox.

42

5.5.3

DEADLOCKS

Um processo dito em deadlock quando est esperando por um evento que nunca ocorrer. Essa situao conseqncia do comportamento de recursos do sistema entre vrios processos, sendo que cada processo deve ter acesso ao recurso de forma exclusiva (excluso mtua). O problema de deadlock existe em qualquer sistema multiprogramvel, no entanto, as solues implementadas devem considerar o tipo do sistema e o impacto em seu desempenho. - Preveno de Deadlock Para prevenir o deadlock necessrio uma das quatro condies abaixo: Excluso mtua. Evitar que os processos que j possuam recursos garantidos requisitem novos recursos, tambm evitarem o problema do deadlock. Permitir que um recurso seja retirado de um processo quando outro processo necessitar do mesmo recurso. Forar o processo a ter apenas um recurso de cada vez.

- Deteco de Deadlock Os sistemas operacionais para detectar deadlocks, devem manter estruturas de dados capazes de identificar cada recurso do sistema, o processo que o est alocando que esto na espera da liberao do recurso. Toda vez que um recurso alocado ou liberado por um processo, a estrutura deve ser atualizada. Dependendo do tipo de sistema, o ciclo de busca por um deadlock varia. Em sistemas com time sharing, o tempo de busca pode ser maior, sem comprometer o desempenho e a confiabilidade do sistema. J em sistemas de tempo real devem constantemente certificar-se da ocorrncia de deadlocks, porm essa maior segurana gera mais processamento no sistema.

- Correo de Deadlock Uma soluo bastante utilizada na maioria dos SOs eliminar os processos envolvidos no deadlocks e desalocar os recursos j garantindo por eles, quebrando assim a espera circular.

43

6. Responda as seguintes Questes


1) Cite as caractersticas dos Sistemas Operacionais Monogramveis/ monotarefa. 2) Cite as caractersticas dos Sistemas Operacionais Multiprogramveis/ multitarefa. 3) Cite e explique um dos tipos de sistemas multiprogramveis. 4) Faa a comparao entre sistemas mono e multiusurios. 5) Diferencie Sistemas Fortemente Acoplados Simtricos de Assimtricos. 6) Diferencie Sistema Operacional de Rede de Sistema Operacional Distribudo. 7) Quais funes devem ser oferecidas por um SO de rede? 8) Diferencie Interrupo de Exceo. 9) Explique o processo de Spooling. 10) O que Buffering? 11) Defina o que reentrncia. 12) Diferencie Barramento comum de Barramento Cruzado. 13) Sobre o Kernel (ncleo do sistema), marque a opo que contem uma funo que no atribuio do SO: a) Tratamento de interrupes b) Criaao e eliminao de processos c) Processamento rpido de dados d) Gerencia do sistema de arquivos e) Gerencia de memria

14) Sobre as System Calls, marque a alternativa que contem uma afirmao INCORRETA: a) So responsveis por impedir acesso direto ao kernel. b) So interrupes que o SO causa no momento de falha de uma aplicao. c) So responsveis por manter o Kernel estvel. d) o mtodo pelo qual o SO gerencia processos. e) NDA

15) Sobre os sistemas cliente-servidor, assinale a alternativa INCORRETA: a) O sistema dividido em processos cada um responsvel por oferecer um conjunto de servios. b) A aplicao que solicita o servio chamada cliente e a que atende a solicitao chamada servidor. c) funo do SO realizar a comunicao entre o cliente e o servio. d) funo do processador realizar a comunicao entre o cliente e o servio.

44

16) sobre os grupo de System Calls, ligue as colunas: (1) Gerncia de Memria (2) Gerncia de I/O (3) Gerncia de Processos ( ) Criao de processos ( ) Eliminao de processos ( ) Comunicao entre processos ( ) Manipulao de arquivos e diretrios ( ) Alocao de memria ( ) Operaes de Entrada e Sada

17) Sobre os estados de um processo, marque a alternativa INCORRETA: a) Um processo est em execuo quando est na memria. b) Um processo est pronto quando aguarda uma oportunidade para ser executado. c) Um processo est em espera quando aguarda um evento externo para prosseguir seu processamento. d) Um processo est em execuo quando est na CPU. e) Um processo est pronto quando terminou sua execuo.

18) Explique o principio da Excluso Mtua. 19) Explique o que starvation. 20) Explique o que so deadlocks. 21) Quais os mtodos para preveno de deadloacks? 22) O que contexto de software? 23) Quais as principais funes dos sistemas operacionais? 24) Por que a abstrao de recursos importante para os desenvolvedores de aplicaes? Ela tem utilidade para os desenvolvedores do prprio sistema operacional? 25) A gerncia de atividades permite compartilhar o processador, executando mais de uma aplicao ao mesmo tempo. Identifique (por meio de pesquisas) as principais vantagens trazidas por essa funcionalidade e os desafios a resolver para implement-la. 26) O que caracteriza um sistema operacional de tempo real? Quais as duas classificaes de sistemas operacionais de tempo real e suas diferenas? 27) O que diferencia o ncleo do restante do sistema operacional?

45

28) Seria possvel construir um sistema operacional seguro usando um processador que no tenha nveis de privilgio? Por qu? 29) Monte uma tabela com os benefcios e deficincias mais significativos das principais arquiteturas de sistemas operacionais. 30) Relacione as afirmaes aos respectivos tipos de sistemas operacionais: distribudo (D), multiusurio (M), desktop (K), servidor (S), embutido (E) ou de tempo-real (T): [ ] Deve ter um comportamento temporal previsvel, ou seja, com prazos de resposta bem

definidos. [ ] A localizao dos recursos do sistema transparente para os usurios. [ ] Todos os recursos do sistema tm proprietrios e existem regras controlando o acesso aos mesmos pelos usurios. [ ] A gerncia de energia muito importante neste tipo de sistema. [ ] Prioriza a gerncia da interface grfica, recursos multimdia e a interao com o usurio. [ ] Construdo para gerenciar de forma eficiente grandes volumes de recursos. [ ] So sistemas operacionais compactos, construdos para executar sobre plataformas com poucos

recursos.

31) A operao em modo usurio permite ao processador executar somente parte das instrues disponveis em seu conjunto de instrues. Quais das seguintes operaes no deveria ser permitida em nvel usurio? Por qu? (a) Ler uma porta de entrada/sada (b) Efetuar uma diviso inteira (c) Escrever um valor em uma posio de memria (d) Ajustar o valor do relgio do hardware (e) Ler o valor dos registradores do processador (f) Mascarar uma ou mais interrupes

32) Quais as diferenas entre interrupes, excees e traps? 33) Qual a funo da memria principal? 34) O que uma instruo privilegiada? 35) Cite os sistemas de camadas? 36) O que kernel monoltico? 37) Qual a melhor definio para processo? 38) Defina os estados de um processo.

46

39) Comente os comandos Fork e Join. 40) O que uma regio critica? 41) Qual a diferena entre endereamento direto e indireto? 42) Comente sobre monitores e trocas de mensagens. 43) Qual a diferena entre compilador, tradutor e interpretador? 44) Explique o funcionamento do processamento Batch. 45) Qual a melhor definio de SO? 46) Quais os trs principais estados de um processo? Descreva os eventos que fazem com que um processo mude de estado.

47