56258529 sop apostila

Upload: silas-dias

Post on 20-Jul-2015

34 views

Category:

Documents


0 download

TRANSCRIPT

Faculdade Cenecista de Varginha - MG FACECA

Bacharelado em Sistemas de Informao

Prof. Jos Eduardo S. Gomes Fevereiro / 2005

SUMRIOPgina 1. Sistemas Operacionais ......................................................................... 1.1. Conceitos Bsicos de Sistema Operacional ..................................... 1.2. Mquina de Nveis ...................................................................... 1.3. Histrico .................................................................................... 1.3.1. Primeira Fase (1945-1955) ................................................. 1.3.2. Segunda Fase (1956-1965) ................................................. 1.3.3. Terceira Fase (1966-1980) ................................................. 1.3.4. Quarta Fase (1981-1990) ................................................... 1.3.5. Quinta Fase (1991-2000) ................................................... 1.4. Conceitos de Hardware e Software ................................................ 1.4.1. Conceitos de Hardware ....................................................... 1.4.1.1. Unidade Central de Processamento .............................. 1.4.1.2. Clock ....................................................................... 1.4.1.3. Registradores ........................................................... 1.4.1.4. Memria Principal ...................................................... 1.4.1.5. Memria Cach ......................................................... 1.4.1.6. Memria Secundria .................................................. 1.4.1.7. Dispositivos de Entrada e Sada .................................. 1.4.1.8. Barramento .............................................................. 1.4.1.9. Pipeline ................................................................... 1.4.1.10. Ativao e Desativao do Sistema ............................ 1.4.1.11. Arquitetura RISC e CISC .......................................... 1.4.2. Conceitos de Software ........................................................ 1.4.2.1. Tradutor .................................................................. 1.4.2.2. Interpretador ............................................................ 1.4.2.3. Linker ...................................................................... 1.4.2.4. Loader ..................................................................... 1.4.2.5. Depurador ................................................................ 1.4.2.6. Linguagem de Controle .............................................. 1.4.2.7. Linguagem de Mquina .............................................. 1.4.2.8. Microprogramao ..................................................... 1.5. Tipos de Sistemas Operacionais .................................................... 1.5.1. Sistemas Monoprogramveis/Monotarefa .............................. 1.5.2. Sistemas Multiprogramveis/Multitarefa ............................... 1.5.2.1. Sistemas Batch ......................................................... 1.5.2.2. Sistemas de Tempo Compartilhado .............................. 1.5.2.3. Sistemas de Tempo Real ............................................ 1.5.3. Sistemas com Multiprocessadores ........................................ 1.5.3.1. Sistemas Fortemente Acoplados .................................. 1.5.3.2. Conceitos e Organizao dos Sist. Fort. Acopl. ............. 1.5.3.3. Sistemas Fracamente Acoplados ................................. 1.5.3.4. Organizao dos Sist. Fracamente Acoplados ................ 1.6. Sistemas Multiprogramveis ......................................................... 1.6.1. Interrupo e Exceo ........................................................ 1.6.2. Operaes de Entrada ........................................................ 1.6.3. Buffering .......................................................................... 1.6.4. Spooling ........................................................................... 1.6.5. Reentrncia ...................................................................... 1.6.6. Proteo do Sistema .......................................................... 1 1 2 3 3 3 3 4 4 4 5 5 5 5 6 6 6 6 6 7 7 7 7 8 8 9 9 9 9 9 9 10 10 10 11 11 11 11 12 12 13 13 14 15 16 17 18 18 18

1.7. Estrutura do Sistema Operacional ................................................. 1.7.1. Ncleo do Sistema ou Kernel (crebro) ................................. 1.7.2. System Calls ..................................................................... 1.7.3. Modos de Acesso ............................................................... 1.7.4. Estruturas de Sistemas Operacionais .................................... 1.7.4.1. Sistemas Monolticos ................................................. 1.7.4.2. Sistemas em Camadas ............................................... 1.7.4.3. Sistemas Cliente/Servidor .......................................... 2. Processos ........................................................................................... 2.1. Introduo ................................................................................. 2.2. Modelo de Processo .................................................................... 2.2.1. Contexto de Hardware ........................................................ 2.2.2. Contexto de Software ......................................................... 2.2.3. Espao de Endereamento .................................................. 2.3. Estados do Processo ................................................................... 2.4. Mudanas de Estado do Processo .................................................. 2.5. Subprocesso e Thread ................................................................. 2.6. Processos do Sistema .................................................................. 2.7. Tipos de Processos ...................................................................... 3. Comunicao entre Processos ............................................................... 3.1. Introduo ................................................................................. 3.2. Especificao de Concorrncia em Programas ................................. 3.3. Problemas de Compartilhamento de Recursos ................................. 3.4. Soluo para Problemas de Compartilhamento ............................... 3.5. Problemas de Sincronizao ......................................................... 3.5.1. Velocidade de Execuo dos Processos ................................. 3.5.2. Starvation ........................................................................ 3.5.3. Sincronizao Condicional ................................................... 3.6. Solues de Hardware para o Problemas de Excluso Mtua ............. 3.6.1. Desabilitao de Interrupes ............................................. 3.6.2. Instruo Test-and-Set ...................................................... 3.7. Solues de Software para o Problemas de Excluso Mtua .............. 3.7.1. Semforos ........................................................................ 3.7.2. Monitores ......................................................................... 3.7.3. Troca de Mensagens .......................................................... 3.8. Deadlock ................................................................................... 4. Gerncia do Processador ...................................................................... 4.1. Introduo ................................................................................. 4.2. Critrios de Escalonamento .......................................................... 4.3. Escalonamento No-preemptivo ................................................... 4.3.1. Escalonamento First-In-First-Out (FIFO) ............................... 4.3.2. Escalonamento Shortest-Job-First (SJF) ................................ 4.3.3. Escalonamento Cooperativo ................................................ 4.4. Escalonamento Preemptivo .......................................................... 4.4.1. Escalonamento Circular ...................................................... 4.4.2. Escalonamento por Prioridades ............................................ 4.4.3. Escalonamento por Mltiplas Filas ........................................ 4.4.4. Escalonamento por Mltiplas Filas com Realimentao ............ 4.4.5. Escalonamento de Sistemas de Tempo Real .......................... 4.5. Escalonamento com Mltiplos Processadores ..................................

19 19 19 20 21 21 21 22 24 24 24 25 25 26 26 27 28 28 29 30 30 30 32 32 33 33 33 33 34 34 34 35 35 37 38 38 39 39 39 40 40 40 40 41 41 41 41 42 42 42

8. Bibliografia .............................................................................. Livros ................................................................................... Endereos Eletrnicos .............................................................

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1. Sistemas Operacionais

1.1. Conceitos Bsicos de Sistema OperacionalEm torno de um computador, existem usurios com problemas para serem resolvidos. Por exemplo, um usurio precisa editar texto, enquanto outro precisa fazer a contabilidade da empresa. O problema de cada usurio ser resolvido por um programa especfico. No exemplo, um editor de textos e um sistema de contabilidade. O dispositivo fsico capaz de executar esses programas o hardware do computador. Os programas possuem muito em comum. Por exemplo, tanto o editor de texto quanto a contabilidade precisam acessar o disco. A forma de acesso aos perifricos a mesma para todos os programas. Para um melhor aproveitamento do hardware, vrios usurios compartilham simultaneamente o computador. Entretanto, os programas podem apresentar necessidades conflitantes, pois disputam os recursos do equipamento. Por exemplo, o editor de texto e a contabilidade podem querer utilizar, ao mesmo tempo, a nica impressora disponvel. O sistema operacional uma camada de software colocada entre o hardware e os programas que executam tarefas para os usurios. Essa viso de um sistema computacional ilustrada na figura abaixo. O sistema operacional responsvel pelo acesso aos perifricos. Sempre que um programa necessita de algum tipo de operao de entrada e sada, ele a solicita ao sistema operacional. Dessa forma, o programador no precisa conhecer os detalhes do hardware. Informaes do tipo como enviar um caractere para a impressora ficam escondidas dentro do sistema operacional. Ao mesmo tempo, como todos os acessos aos perifricos so feitos atravs do sistema operacional, ele pode controlar qual programa est acessando qual recurso. possvel, ento, obter uma distribuio justa e eficiente dos recursos. Por exemplo, a diviso do espao em disco entre os usurios feita pelo sistema operacional. Ela pode ser feita, considerando-se dois aspectos: a eficincia no acesso ao disco e a ocupao equilibrada do disco pelos usurios.

1

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

O sistema operacional no resolve os problemas do usurio final. Ele no serve para editar texto, nem faz a contabilidade da empresa. Entretanto, atravs dele, podemos obter uma maior eficincia e convenincia no uso do computador. A eficincia obtida atravs do compartilhamento dos recursos. A convenincia obtida atravs de uma interface mais confortvel para a utilizao dos recursos computacionais. Normalmente, o processador est executando programas de usurio. Para isso que o computador foi comprado. Somente quando ocorre algum evento especial, o sistema operacional ativado. Dois tipos de eventos ativam o sistema operacional: uma chamada de sistema ou uma interrupo de perifrico. Uma chamada de sistema corresponde a uma solicitao de servio por parte do programa em execuo. Primeiramente, deve ser verificada a legalidade da solicitao. Por exemplo, um pedido para que arquivos de outros usurios sejam destrudos dever ser recusado. No caso de uma solicitao legal, ela realizada, e a resposta devolvida ao programa. Em funo das chamadas de sistema, o sistema operacional envia comandos para os controladores dos perifricos. O controlador deve informar ao sistema operacional quando a operao estiver concluda. Isso feito atravs de uma interrupo. Quando a interrupo acontece, o processador pra o que est fazendo e passa a executar uma rotina especfica do sistema operacional. Como a interrupo do perifrico avisa o trmino de alguma operao de entrada e sada, possivelmente uma chamada de sistema foi concluda. Nesse caso, um programa espera de resposta poder ser liberado. Um sistema operacional (SO) um conjunto de rotinas executadas 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. Funes principais do SO: Facilidade de acesso aos recursos do sistema Compartilhamento de recursos de forma organizada e protegida

1.2. Mquina de Nveis Usurio Sistema Operacional Hardware Aplicativos Utilitrios Sistema Operacional Linguagem de Mquina Microprogramao Dispositivos Fsicos

Hardware2

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1.3. HistricoA evoluo dos SO est relacionada ao desenvolvimento dos equipamentos.

1.3.1. Primeira Fase (1945-1955)Durante a Segunda Guerra. ENIAC 18mil vlvulas, 70 mil resistores, 30 toneladas. Consumia 140 KWatts, 5.000 adies por segundo. Para trabalhar nessas mquinas, era necessrio conhecer profundamente o funcionamento do hardware, pois a programao era feita em painis, atravs de fios, utilizando linguagem de mquina. UNIVAC I criado para o senso americano de 1950. Nesta fase, ainda no existia o conceito de Sistema Operacional.

1.3.2. Segunda Fase (1956-1965)Criao do transistor e das memrias magnticas. Surgimento das primeiras linguagens de programao: Assembly e Fortran. SO com seu prprio conjunto de rotinas para operaes de E/S. Processamento batch.

Cartes Perfurados

Processamento

Fita de Entrada

Fita de Entrada

Processamento

Fita de Sada

Fita de Sada

Processamento

Relatrios

Inicialmente, os programas passaram a ser perfurados em cartes, que, submetidos a uma leitora, eram gravados em uma fita de entrada. A fita, ento, era lida pelo computador, que executava um programa de cada vez, gravando o resultado do processamento em uma fita de sada. Ao trmino de todos programas, a fita de sada era lida e impressa. A esse tipo de processamento, onde um lote (batch) de programas era submetido ao computador, deu-se o nome de processamento batch.

1.3.3. Terceira Fase (1966-1980)Circuitos Integrados (CIs) e microprocessadores. Computadores de porte menor e baixo custo (minicomputadores). Conceitos de multiprogramao: compartilhamento de memria principal e processador. Permite que, enquanto um programa espera por uma operao de leitura/gravao, o processador executa um outro programa.

3

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Substituio das fitas por discos magnticos, permitindo a alterao na ordem de execuo das tarefas que antes era puramente seqencial: spooling. Foram adicionados terminais de vdeo e teclado para interao on-line do usurio. Multiprogramao (diviso da memria em parties, onde cada programa espera sua vez para ser executado e compartilhamento do processador) usando time-sharing (tempo compartilhado). Criao do UNIX (1969), escrito em linguagem C.

1.3.4. Quarta Fase (1981-1990)Integrao em larga escala (LSI) e muito larga escala (VLSI). Surgimento dos microcomputadores PC (Personal Computer), dos sistemas DOS (Disk Operation System) e VMS (Virtual Memory System). Surgem as estaes de trabalho (workstations) que, apesar de monousurias, permitem que se executem diversas tarefas concorrentes, criando o conceito de multitarefa. Mquinas com mais de um processador, exigindo dos SO mecanismos de controle e sincronismo e possibilitando o multiprocessamento. Difuso das redes WAN, MAN e LAN com o desenvolvimento de protocolos de rede e sistemas operacionais para rede.

1.3.5. Quinta Fase (1991-2000)Grandes avanos em termos de hardware, software e telecomunicaes. 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 so alguns exemplos da necessidade cada vez maior. Evoluo da microeletrnica, ULSI (Ultra Large Scale Integration). Arquiteturas paralelas, baseadas na organizao de multiprocessadores no convencionais. Processamento distribudo de forma que as funes do sistema operacional estejam espalhadas por vrios processadores atravs de redes de computadores. Arquitetura cliente-servidor, aplicada basicamente a redes locais, passa a ser oferecida em redes distribudas, permitindo que qualquer pessoa tenha acesso a todo tipo de informao, independente de onde ela esteja armazenada. Desenvolvimento de interfaces grficas para os SO: Windows, Linux, etc.

1.4. Conceitos de Hardware e SoftwareSero apresentados alguns conceitos bsicos sobre hardware e software relacionados organizao de computadores, necessrios para a compreenso dos demais tpicos sobre fundamentos do sistema operacional.

4

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1.4.1. Conceitos de HardwareTodos os componentes de um computador so agrupados em trs subsistemas bsicos: unidade central de processamento, memria principal e dispositivo de entrada e sada.

Unidade Central de Processamento (UCP) Unidade Lgica e Aritmtica (ULA) Unidade de Controle (UC) Dispositivos de Entrada e Sada

Registradores

Memria Principal

1.4.1.1. Unidade Central de Processamento A Unidade Central de Processamento (UCP), ou processador, tem como funo principal unificar todo o sistema, controlando as funes realizadas por cada unidade funcional. A UCP tambm responsvel pela execuo de todos os programas do sistema, que obrigatoriamente devero estar armazenados na memria principal. 1.4.1.2. Clock O clock um dispositivo, localizado na UCP, que gera pulsos eltricos sncronos em um determinado intervalo de tempo (sinal de clock). 1.4.1.3. Registradores Os registradores so dispositivos de alta velocidade, localizados na UCP, para armazenamento temporrio de dados. Alguns registradores de uso especfico: Contador de instruo o registrador responsvel pelo armazenamento do endereo da prxima instruo que a UCP dever executar. Apontador de pilha o registrador que contm o endereo de memria do topo da pilha, que a estrutura de dados onde o sistema mantm informaes sobre as tarefas que esto sendo processadas e tiveram que ser interrompidas por algum motivo. Registrador de estado responsvel por armazenar informaes sobre a execuo do programa. A cada instruo executada, o registrador de estado alterado conforme o resultado gerado pela instruo.

5

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1.4.1.4. Memria Principal A memria principal, tambm conhecida como memria primria ou real, a parte do computador onde so armazenados instrues e dados. 1.4.1.5. Memria Cache A memria cache uma memria voltil de alta velocidade. O tempo de acesso a um dado nela contido muito menor que se o mesmo estivesse na memria principal. Toda vez que o processador faz referncia a um dado armazenado na memria principal, ele olha antes na memria cache. Se o processador encontrar o dado na cache, no h necessidade do acesso memria principal; do contrrio, o acesso obrigatrio. 1.4.1.6. Memria Secundria A memria secundria um meio permanente (no voltil) de armazenamento de programas e dados. Enquanto a memria principal precisa estar sempre energizada para manter suas informaes, a memria secundria no precisa de alimentao. O acesso memria secundria lento, se comparado com o acesso memria cache ou principal, porm seu custo baixo e sua capacidade de armazenamento bem superior da memria principal.

Registradores Maior capacidade de armazenamento Maior custo e maior velocidade de acesso

Memria Cache

Memria Principal

Memria Secundria1.4.1.7. Dispositivos de Entrada e Sada Os dispositivos de entrada e sada (E/S) so utilizados para permitir a comunicao entre o computador e 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. 1.4.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) um conjunto de fios paralelos (linhas de transmisso), onde trafegam informaes, como dados, endereos ou sinais de controle.

6

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1.4.1.9. Pipelining O conceito de processamento pipeline se assemelha muito a uma linha de montagem, onde uma tarefa dividida em subtarefas, executadas em diferentes estgios dentro da linha de produo. 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, uma outra instruo possa estar na fase de busca simultaneamente. 1.4.1.10. Ativao e Desativao do Sistema 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 uma posio especfica do disco (boot block), geralmente o primeiro bloco. 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. 1.4.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 processadores 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 68xxx (Motorola).

1.4.2. Conceitos de SoftwareO hardware, por si s, no tem a menor utilidade. Para torn-lo til, existe um conjunto de programas, utilizado como interface entre as necessidades dos usurios e as capacidades do hardware.

7

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

No decorrer do texto, utilizaremos o termo utilitrio, sempre que desejarmos fazer referncia a softwares relacionados mais diretamente com servios do sistema operacional, como compiladores, linkers e depuradores. Os softwares desenvolvidos pelos usurios sero denominados softwares aplicativos, ou apenas aplicaes. 1.4.2.1. Tradutor Nos sistemas operacionais antigos, o ato de programar era bastante complicado, j que os 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. Apesar das inmeras vantagens proporcionadas pelas linguagens de montagem e alto nvel, os programas escritos nessas linguagens (programas fonte) no esto prontos para serem diretamente executados pela UCP. Para isso, eles tm de passar por uma etapa de converso, onde toda representao simblica dos programas traduzida para cdigo de mquina. Esta converso realizada por um software denominado tradutor. O tradutor, pelo tipo de linguagem de programao utilizada, pode ser chamado de montador ou compilador. O montador (assembler) o utilitrio responsvel por gerar, a partir de um programa escrito em linguagem de montagem, um programa em linguagem de mquina no executvel (mdulo-objeto). A linguagem de montagem est diretamente ligada s caractersticas da arquitetura do processador. Em funo disto, este tipo de linguagem diferente para cada computador, pois a linguagem de mquina e, conseqentemente, a linguagem de montagem so caractersticas especficas do processador. O 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 (mdulo-objeto). As linguagens de alto nvel, como Pascal, Fortran, Cobol, no tm nenhuma relao direta com a mquina, ficando essa preocupao exclusivamente com o compilador. Assim, os programas-fonte podem ser transportados entre computadores de diversos fabricantes, desde que existam regras de definio para a linguagem. Isso permite o desenvolvimento de aplicaes independentes do equipamento. 1.4.2.2. 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.

8

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1.4.2.3. Linker O linker (ligador) o utilitrio responsvel por gerar, a partir de um ou mais mdulos objetos, um nico programa executvel. Suas funes bsicas so resolver todas as referncias simblicas existentes entre os mdulos objetos e reservar memria para a execuo do programa.

Mdulo Objeto Linker Mdulo Objeto1.4.2.4. Loader O loader (carregador) o utilitrio responsvel por colocar fisicamente na memria um programa para execuo. 1.4.2.5. Depurador O depurador (debugger) o utilitrio que permite ao usurio controlar toda a execuo de um programa a fim de detectar erros na sua estrutura. 1.4.2.6. Linguagem de Controle A linguagem de controle (linguagem de comando) a forma mais direta de um usurio se comunicar com o sistema operacional. Esses comandos, quando digitados pelos usurios, so interpretados por um programa denominado interpretador de comandos ou shell. O interpretador reconhece a linha de comando, 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 um arquivo em disco ou consultar um diretrio. 1.4.2.7. Linguagem de Mquina A linguagem de mquina de um computador a linguagem de programao que o processador realmente pode entender. Cada processador possui um conjunto nico de instrues de mquina, definido pelo prprio fabricante. Um programa em linguagem de mquina totalmente codificado em formato binrio, o que torna o entendimento confuso para o usurio. 1.4.2.8. Microprogramao Os microprogramas definem a linguagem de mquina de cada computador.

Programa Executvel

9

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1.5. Tipos de Sistemas OperacionaisOs tipos de Sistemas Operacionais e sua evoluo esto intimamente relacionados com a evoluo do hardware e das aplicaes por ele suportadas. Abordaremos aqui os diversos tipos de sistemas operacionais, suas caractersticas, vantagens e desvantagens: Tipos de SO: 1. Sistemas Monoprogramveis / Monotarefa 2. Sistemas Multiprogramveis / Multitarefa 3. Sistemas com Mltiplos Processadores

1.5.1. Sistemas Monoprogramveis / MonotarefaOs primeiros sistemas operacionais eram voltados para a execuo de um nico programa (job). Qualquer outro programa, para ser executado, deveria aguardar o trmino do programa concorrente. Os sistemas monoprogramveis se caracterizam por permitir que o processador, a memria e os perifricos permaneam exclusivamente dedicados execuo de um nico programa. Os sistemas monotarefa, como tambm so chamados, se caracterizam por permitir que todos os recursos do sistema fiquem exclusivamente dedicados a uma nica tarefa. Vantagem: so simples de implementao, no exigindo preocupao com sistemas de proteo. Desvantagem: a memria e o processador so subutilizados.

1.5.2. Sistemas Multiprogramveis / MultitarefaOs sistemas multiprogramveis so mais complexos e eficientes que os sistemas monoprogramveis. Vrios programas dividem os mesmos recursos de processador, memria e perifricos. A partir do nmero de usurios que interagem com o sistema, podemos classificar os sistemas multiprogramveis como monousurio e multiusurio. Vantagem: aumento da produtividade dos seus usurios e a reduo de custo, a partir do compartilhamento dos diversos recursos do sistema. Desvantagem: sistemas mais complexos, o sistema se preocupa em gerenciar o acesso concorrente aos seus recursos. O conceito de sistema multiprogramvel est tipicamente associado aos mainframes e minicomputadores, onde existe a idia do sistema sendo utilizado por vrios usurios (multiusurio). 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.

10

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Os sistemas multiprogramveis/multitarefas podem ser classificados pela forma com que suas aplicaes so gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado ou de tempo real. 1.5.2.1. Sistemas Batch Os sistemas batch (lote) foram os primeiros sistemas multiprogramveis a serem implementados e caracterizam-se por terem seus programas armazenados em disco ou fita, onde esperam para ser executados sequencialmente. No permitem a interao com o usurio durante a sua execuo. 1.5.2.2. Sistemas de Tempo Compartilhado Os sistemas de tempo compartilhado (time-sharing) permitem a interao dos usurios com o sistema, atravs de terminais que incluem vdeo, teclado e mouse (sistemas on-line). Para cada usurio, o SO aloca uma fatia de tempo (timeslice) do processador. Caso o programa do usurio no esteja concludo neste 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. Estes sistemas so de implementao mais complexa. 1.5.2.3. Sistemas de Tempo Real Os sistemas de tempo real (real-time) so semelhantes aos sistemas de tempo compartilhado, a maior diferena o tempo de resposta exigido no processamento das aplicaes. Nos sistemas de tempo real, 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 termoeltricas e nucleares, ou em qualquer aplicao onde o tempo de resposta fator fundamental.

1.5.3. Sistemas com MultiprocessadoresOs sistemas com multiprocessadores caracterizam-se por mais UCPs interligadas, trabalhando em conjunto. Um desenvolvimento de sistemas com mltiplos processadores comunicao entre as UCPs e o grau de compartilhamento perifricos. possuir duas ou fator-chave no a forma de de memria e

11

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Os conceitos utilizados no projeto de sistemas com mltiplos processadores incorporam os conceitos utilizados para multiprogramao, alm de outras caractersticas e vantagens como: Escalabilidade: possibilidade de aumentar a capacidade computacional com menor custo. Reconfigurao: capacidade de um sistema continuar o processamento mesmo se um dos processadores falhar. Balanceamento: possibilidade de distribuir a carga de processamento entre os diversos sistemas de computao, melhorando o desempenho como um todo. Podemos classificar os Sistemas com Fortemente Acoplados e Fracamente Acoplados. 1.5.3.1. Sistemas Fortemente Acoplados Nos sistemas fortemente acoplados existem dois ou mais processadores compartilhando a mesma memria e controlados por um nico sistema operacional. Permitem que vrios programas sejam executados ao mesmo tempo, ou que um programa seja dividido em subprogramas, para execuo simultnea em vrios processadores, em vez de um processador de alta velocidade e custo elevado. So utilizados em processamento cientfico, simulaes e processamento de imagens. Os sistemas fortemente acoplados ainda podem ser classificados em: Sistemas Assimtricos: caracterizam-se por possuir um processador (primrio), responsvel pelo controle dos demais processadores (secundrios) e pela execuo do sistema operacional. Vantagem: simples de implementar. Desvantagem: dependncia do processador primrio e utilizao ineficiente dos recursos do sistema, no caso do processador mestre receber muitas interrupes dos escravos para serem tratadas. Sistemas Simtricos: todos os processadores realizam as mesmas funes, podendo executar o sistema operacional independentemente. Vantagem: independncia de um processador principal, todos executam a mesma funo. Melhor balanceamento do processamento e das operaes de entrada e sada. Desvantagem: implementao mais complexa. 1.5.3.2. Conceitos e Organizao dos Sistemas Fortemente Acoplados Multiprocessamento: uma tarefa pode ser executada, ao mesmo tempo, por mais de um processador (paralelismo). Podemos analisar o multiprocessamento em dois nveis: Processamento Vetorial: permite a manipulao de vetores inteiros, possibilitando a execuo da mesma operao sobre diferentes elementos de um ou mais vetores. Processamento Paralelo: a possibilidade de uma executada por mais de um processador ao mesmo tempo. aplicao ser Mltiplos Processadores em

12

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Organizao Funcional: O esquema de comunicao interna das UCPs, memria e dispositivos de E/S (unidades funcionais) fundamental no projeto de sistemas com mltiplos processadores. As organizaes funcionais de multiprocessadores podem ser divididas, basicamente, em trs tipos: Barramento Comum: a forma mais simples de comunicao entre mltiplos processadores e outras unidades funcionais interligar todos os componentes a um barramento comum. Barramento Cruzado: as unidades funcionais podem ser conectadas entre si atravs de barramentos cruzados, criando uma rede de interconexes. Memria Multiport: alm das vantagens do barramento cruzado, permite acessos simultneos de processadores a um mesmo mdulo de memria.

1.5.3.3. Sistemas Fracamente Acoplados Os sistemas fracamente acoplados caracterizam-se por possuir dois ou mais sistemas de computao interligados atravs de linhas de comunicao. Cada sistema possui o seu prprio sistema operacional, gerenciando os seus recursos, como processador, memria e dispositivos de E/S. Os sistemas fracamente acoplados ainda podem ser classificados em: Sistemas Operacionais de Rede: cada n (sistema independente) 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 melhor exemplo de utilizao dos sistemas operacionais de rede so as redes locais (Local Area Network-LAN). Sistemas Operacionais Distribudos: cada componente possui seu prprio sistema operacional, memria, processador e dispositivos. O que diferencia o sistema operacional de rede dos sistemas distribudos (cluster) o grau de interao entre os ns. Para o usurio e suas aplicaes como se no existisse uma rede de computadores, mas sim um nico sistema centralizado. Os sistemas distribudos permitem que uma aplicao seja dividida em diferentes partes (aplicaes distribudas), que se comunicam atravs de linha de comunicao, podendo cada parte ser executada por um sistema diferente. A grande vantagem a capacidade de redundncia do sistema, conceito muito utilizado em aplicaes de misso crtica, como controle de trfego areo, conhecidas como sistemas de tolerncia a falhas. 1.5.3.4. Organizao dos Sistemas Fracamente Acoplados A organizao dos sistemas fracamente acoplados ou topologia, define como so interligados fisicamente os diversos sistemas da rede. As principais organizaes so: 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 utilizado geralmente em redes locais. Neste tipo de topologia, caso haja algum problema com o meio de transmisso, todos os ns da rede ficaro incomunicveis.

13

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

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 utilizado geralmente em redes distribudas.

1.6. Sistemas MultiprogramveisA possibilidade de perifricos funcionarem simultaneamente entre si, juntamente com a UCP, permitiu a execuo de tarefas concorrentes, que o princpio bsico para o projeto e implementao de sistemas multiprogramveis. Caractersticas dos sistemas monoprogramveis: Baixa utilizao dos recursos do sistema como: processador, memria e perifricos. Somente um programa pode estar na memria e o processador fica dedicado, exclusivamente, execuo deste nico programa. Subutilizao da memria. Um programa que no ocupe toda a memria ocasiona a existncia de reas livres, sem utilizao. Mais simples de implementar, pois no existem questes de concorrncia para serem tratadas pelo sistema operacional.

Exemplo de Utilizao do SistemaLeitura de um registro Execuo de 100 instrues Total Porcentagem de utilizao da CPU 0,0015 0,0001 0,0016 0,0001 / 0,0015 segundos segundos segundos = 0,066 = 6,6%

Caractersticas dos sistemas multiprogramveis: Vrios programas podem estar residentes na memria, concorrendo pela utilizao da UCP. 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, ou seja, ficando todo este mecanismo transparente para ele.

14

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Em sistemas multiprogramveis possvel compartilhar os perifricos. Como, por exemplo, compartilhar impressoras entre vrios usurios e realizar o acesso concorrente a discos por diversos programas. A eficincia proporcionada por um sistema multiprogramvel resulta em maior complexidade do sistema operacional, j que alguns problemas surgem com esse tipo de implementao. Exemplo:

Nos prximos itens sero mostrados alguns mecanismos e dispositivos que possibilitam a implementao de um sistema de tarefas concorrentes, ou seja, sistema multiprogramvel.

1.6.1. Interrupo e ExceoDurante a execuo de um programa, alguns eventos podem ocorrer durante o seu processamento, obrigando a interveno do sistema operacional. Este 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. Interrupo: gerada pelo sistema operacional ou algum dispositivo de hardware e, neste caso, independe do programa que est sendo executado. Um exemplo quando um perifrico avisa UCP que est pronto para transmitir algum dado. Neste caso, a UCP deve interromper o programa para atender a solicitao do dispositivo. Exceo: o 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. Os mecanismos de tratamento de excees, muitas vezes, podem ser escritos pelo prprio programador. Dessa forma, possvel evitar que um programa seja encerrado no caso de ocorrer, por exemplo, um overflow. No momento em que a unidade de controle detecta a ocorrncia de algum tipo de interrupo, o programa em execuo interrompido, e o controle desviado para uma rotina responsvel pelo tratamento da interrupo. Muitas vezes, aps a execuo dessa rotina, o controle deve voltar ao programa que, anteriormente, estava sendo processado. Para isso acontecer, necessrio que, no momento da interrupo, um conjunto de informaes sobre a execuo do

15

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

programa seja preservado. Essas informaes consistem no contedo de alguns registradores, que devero ser restaurados posteriormente para a continuao do programa. Exemplo:

ProgramaSalva os registradores

Rotina de Tratamento da Interrupo

Identifica a origem da interrupoInterrupo

Obtm o endereo da rotina de tratamento

Restaura os registradores No existe apenas um tipo de interrupo. 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. No caso de mltiplas interrupes ocorrerem, o processador deve saber qual interrupo ter de atender primeiro. Para isso, as interrupes devero possuir prioridades, em funo da necessidade de atendimento de cada uma. As interrupes podem ser classificadas como mascarveis (podem ser desabilitadas pelo processador) e no mascarveis (o tratamento sempre obrigatrio).

1.6.2. Operaes de Entrada / Sada (E/S)Em sistemas 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. A implementao de um dispositivo chamado controlador ou interface permitiu UCP agir de maneira independente dos dispositivos de E/S. Com este novo elemento a UCP no se comunica mais diretamente com os perifricos, mas sim atravs do controlador.

UCP

Memria

Controlador

16

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Existiam duas formas bsicas do processador controlar as operaes de E/S: Na primeira, o processador ficava constantemente testando o estado do perifrico de E/S para saber quando a operao chegaria ao seu final, este controle chamado de E/S Controlada por Programa. Outra forma derivada da anterior, porm mais inteligente, era permitir que, aps o incio da transferncia dos dados, a UCP ficasse livre para se ocupar de outras tarefas. Assim, em determinados intervalos de tempo, o sistema operacional deveria realizar um teste para saber do trmino ou no da operao de E/S em cada dispositivo (Polling). 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 interrompe a UCP para avisar do trmino da operao. Com este 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. Quando a transferncia termina, o prprio perifrico se encarrega de sinalizar o processador. A operao de E/S Controlada por Interrupo muito mais eficiente que a E/S Controlada por Programa. Apesar disto, essa implementao ainda sobrecarregava a UCP, uma vez que toda a transferncia de dados entre memria e perifricos exigia a interveno da UCP. A soluo para este problema foi a implementao, por parte do controlador, de uma tcnica de transferncia de dados denominada DMA (Direct Memory Access), isto , acesso direto a memria. Esta tcnica permite que um bloco de dados seja transferido entre memria e perifricos sem a interveno da UCP, exceto no incio e no final da transferncia. A rea de memria utilizada pelo controlador na tcnica de DMA chamado buffer, sendo reservada exclusivamente para este propsito.

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

Gravao UCP

Memria Principal Buffer

Gravao

Controlador de E/S

Leitura

Leitura17

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1.6.4. SpoolingA tcnica de spooling (simultaneous peripherical operation on-line) foi introduzida no final dos anos 50 para aumentar a produtividade e a eficincia dos sistemas operacionais. O spooling, basicamente, utiliza o disco como um grande buffer, permitindo que dados sejam lidos e gravados em disco, enquanto outras tarefas so processadas. Um exemplo dessa tcnica est presente quando impressoras 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.

Programa

Arquivo De Spool

Sistema Operacional

Impresso

1.6.5. Reentrncia comum, em sistemas multiprogramveis, vrios usurios executarem os mesmos utilitrios do sistema operacional simultaneamente, como, por exemplo, um editor de texto. Se cada usurio que utilizasse o editor de texto 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. A reentrncia permite que cada usurio possa entrar em um ponto diferente do cdigo reentrante, manipulando dados prprios, exclusivos de cada usurio.

1.6.6. Proteo do SistemaNos sistemas multiprogramveis, onde diversos usurios compartilham os mesmos recursos, deve existir uma preocupao, por parte do sistema operacional, de garantir a integridade dos dados pertencentes a cada usurio. O sistema operacional tem que ter mecanismos para proteger que o programa de um usurio acesse o cdigo do programa de outro usurio e do prprio sistema operacional. Quando um programa reserva um perifrico para realizar alguma operao, como, por exemplo, na utilizao de uma impressora, nenhum outro programa deve interferir at que o primeiro programa a libere. Compartilhamento de arquivos em disco permite que dois ou mais usurios acessem um mesmo arquivo simultaneamente e caso o acesso no seja controlado pelo sistema operacional, podem ocorrer problemas de inconsistncia. Para isto os sistemas multiprogramveis implementam o esquema de lock (bloqueio) de arquivo que permite o controle pelo sistema do acesso concorrente a arquivos.

18

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

1.7. Estrutura do Sistema OperacionalExiste uma grande dificuldade em compreender a estrutura e o funcionamento de um sistema operacional, pois ele no executado como uma aplicao tipicamente sequencial, com incio, meio e fim. As rotinas do sistema so executadas sem uma ordem pr-definida, baseadas em eventos dissociados do tempo (eventos assncronos).

1.7.1. Ncleo do Sistema ou Kernel (crebro)Conjunto de rotinas (procedimentos e funes) que oferecem servios aos usurios do sistema e suas aplicaes, bem como outras rotinas do prprio sistema. As principais funes do ncleo so: Tratamento de interrupes; Criao e eliminao de processos; Sincronizao e comunicao entre processos; Escalonamento e controle de processos; Gerncia de memria; Gerncia do sistema de arquivos; Operaes de entrada e sada; Contabilizao e segurana do sistema.

1.7.2. System Calls um mecanismo implementado para proteger o ncleo do sistema, para evitar que uma aplicao, que tenha acesso ao ncleo, realize uma operao que o danifique, fazendo com que o sistema fique 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 portas 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.

Aplicao

System Call

Ncleo (kernel)

Hardware

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 e funes. As system calls 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.

19

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Gerncia de Memria Alocao e desalocao de memria. Gerncia de Entrada/Sada Operaes de entrada/sada; Manipulao de arquivos e diretrios.

1.7.3. Modos de AcessoExistem certas instrues que no podem ser colocadas diretamente disposio das aplicaes, pois a sua utilizao indevida ocasionaria srios problemas integridade do sistema. Sendo assim, algumas instrues, como operaes de entrada e sada, s devem ser executadas pelo sistema operacional, para impedir a ocorrncia de problemas de segurana e at 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 aquelas que no oferecem perigo ao sistema. Para permitir que uma aplicao possa executar uma instruo privilegiada, o processador implementa um mecanismo de modos de acesso. Existem, basicamente, dois modos de acesso: Modo Usurio Quando o processador trabalha em modo usurio, uma aplicao s pode executar instrues no-privilegiadas, tendo acesso a um nmero reduzido de instrues. Modo Kernel Uma aplicao pode ter acesso ao conjunto total de instrues do processador. O modo de acesso 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 uma 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.

Programa Usurio A Memria Principal System Call Programa Usurio B Programas dos Usurios Executam no modo usurio

Rotina do Sistema

Sistema Operacional Executa no modo kernel

20

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

O ncleo do Sistema Operacional sempre executado em modo kernel, pois deve possuir a capacidade de gerenciar e compartilhar todos os seus recursos, solucionando, em diversos nveis, os problemas de acesso s instrues privilegiadas.

1.7.4. Estruturas de Sistemas OperacionaisExistem, basicamente, trs maneiras de organizar o cdigo do sistema operacional e o inter-relacionamento entre seus diversos componentes: Sistemas Monolticos. Sistemas em Camadas. Sistemas Cliente-Servidor. 1.7.4.1. Sistemas Monolticos A organizao mais comum aquela que estrutura o sistema como um conjunto de rotinas que podem interagir livremente umas com as outras. A estrutura monoltica pode ser comparada com uma aplicao formada por vrios procedimentos que so compilados separadamente e depois linkados, formando um grande e nico programa executvel.

Aplicao

Aplicao Modo Usurio Modo Kernel System Calls

Hardware1.7.4.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 de camadas inferiores. A vantagem da estrutura em camadas isolar as funes do sistema operacional, facilitando sua alterao e depurao, alm de criar uma hierarquia de nveis de modos de acesso, protegendo as camadas mais internas.

21

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

5 4 3 2 1 0

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

1.7.4.3. Sistemas 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 arquivo, servios de criao de processos, servios de memria, servios de escalonamento, etc. Sempre que uma aplicao deseja um servio, ela solicita ao processo responsvel. Neste caso, a aplicao que solicita um servio chamada de cliente, enquanto o processo que responde solicitao chamado de 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.

Cliente Servidor de Arquivo

Servidor de Memria Servidor de Processo

Servidor de Rede

Modo Usurio Modo Kernel Ncleo (Kernel)

HardwareA 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 em 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

22

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

isolar as funes do sistema operacional por diversos processos (servidores) pequenos e dedicados a servios especficos. Como conseqncia, o 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 com um processador, com mltiplos processadores (fortemente acoplado) ou num ambiente distribudo (fracamente acoplado). Apesar das vantagens deste modelo, ele de difcil implementao. O que implementado na prtica uma combinao do modelo de camadas com o modelo cliente-servidor. O ncleo do sistema, alm de ser responsvel pela comunicao entre o cliente e servidor, passa a incorporar outras funes crticas do sistema, como escalonamento de processos, gerncia de memria, alm das funes de devices drivers.

23

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

2. Processo

2.1. IntroduoO processo pode ser entendido com um programa em execuo, s que seu conceito mais abrangente. Este conceito torna-se mais claro quando pensamos na forma em que os sistemas multiprogramveis (multitarefa) atendem a diversos usurios (tarefas) e mantm informaes a respeito dos vrios programas que esto sendo executados concorrentemente. Como sabemos, um sistema multiprogramvel simula um ambiente de monoprogramao para cada usurio, isto , cada usurio do sistema tem a impresso de possuir o processador exclusivamente para ele. Nesses sistemas, o processador executa a tarefa de usurio durante um intervalo de tempo (time-slice) e, no instante seguinte, est processando outra tarefa. A cada troca, necessrio que o sistema preserve todas as informaes da tarefa que foi interrompida, para quando voltar a ser executada no lhe faltar nenhuma informao para a continuao do processamento. A estrutura responsvel pela manuteno de todas as informaes necessrias execuo de um programa, como contedo de registradores e espao de memria, chama-se processo.

2.2. Modelo de ProcessoO sistema operacional materializa o processo atravs de uma estrutura chamada bloco de controle de processo (Process Control Block- PCB). A partir do PCB, o sistema mantm todas as informaes sobre o processo, como sua identificao, prioridade, estado corrente, recursos alocados por ele e informaes sobre o programa em execuo.

Ponteiros Estado do Processo Nome do Processo Prioridade do Processo Registradores Limites de memria Lista de Arquivos Abertos : : :O sistema gerencia os processos atravs de system calls, que realizam operaes como criao, eliminao, sincronizao, suspenso de processos, entre outras.

Bloco de Controle do Processo (PCB)

24

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

O processo pode ser dividido em trs elementos bsicos: Contexto de hardware; Contexto de software; Espao de endereamento.

2.2.1. Contexto de HardwareO contexto de hardware constitui-se, basicamente, do contedo de registradores: program counter (PC), stack pointer (SP) e bits de estado. Quando um processo est em execuo, seu contexto de hardware est armazenado nos registradores do processador. No momento em que o processo perde a utilizao da UCP, o sistema salva suas informaes no seu contexto de hardware. A troca de um processo por outro na UCP, realizada pelo sistema operacional, denominada mudana de contexto (context switching). A mudana de contexto consiste em salvar o contedo dos registradores da UCP e carreg-los com os valores referentes ao do processo que esteja ganhando a utilizao do processador. Essa operao resume-se, ento, em substituir o contexto de hardware de um processo pelo de outro. Processo A executando Salva Registradores do Processo A

Sistema Operacional

Processo B

Carrega Registradores do Processo B executando Salva Registradores do Processo B

Carrega Registradores do Processo A executando

2.2.2. Contexto de SoftwareO contexto de software especifica caractersticas do processo que vo influir na execuo de um programa, como, por exemplo, o nmero mximo de arquivos abertos simultaneamente ou o tamanho mximo do buffer para operaes de E/S. Essas caractersticas so determinadas no momento da criao do processo, podendo ser alteradas durante sua existncia. O contexto de software define basicamente trs grupos de informaes sobre um processo: sua identificao, suas quotas e seus privilgios. Identificao: Cada processo criado pelo sistema recebe uma identificao nica (PID process identification), representada por um nmero. Atravs do PID, o sistema operacional e outros processos podem fazer referncia a um determinado processo e, por exemplo, alterar uma de suas caractersticas.

25

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

O processo tambm possui uma identificao do usurio ou do processo que o criou (owner). Cada usurio possui uma identificao nica no sistema (UID user identification), atribuda ao processo no momento de sua criao. Quotas: So os limites de cada recurso do sistema que o processo pode alocar. Caso uma cota seja insuficiente, o processo poder ser executado lentamente ou mesmo no ser executado. Alguns exemplos de quotas que aparecem na maioria dos sistemas operacionais so: Nmero mximo de arquivos abertos simultaneamente; Tamanho mximo de memria que o processo pode alocar; Nmero mximo de operaes de E/S pendentes; Tamanho mximo do buffer para operaes de E/S; Nmero mximo de processos e subprocessos que podem ser criados.

Privilgios: Definem o que o processo pode ou no fazer em relao ao sistema e aos outros processos.

2.2.3. Espao de EndereamentoO espao de endereamento a rea de memria do processo onde o programa ser executado, alm do espao para os dados utilizados por ele. Cada processo possui o seu prprio espao de endereamento, que deve ser protegido do acesso dos demais processos.

2.3. Estados do ProcessoUm processo, em um sistema multiprogramvel (multitarefa), no executado todo o tempo pelo processador. Durante sua existncia, ele passa por uma srie de estados. Basicamente, existem trs estados em que um processo pode se encontrar no sistema: Execuo (running): Um processo dito em estado de execuo quando est sendo processado pelo UCP. Em sistemas com apenas um processador, somente um processo pode estar sendo executado em um dado instante de tempo. J em sistemas com mltiplos processadores, vrios processos podem estar sendo executados ao mesmo tempo, dependendo do nmero de processadores. Existe tambm a possibilidade de um mesmo processo ser executado por mais de um processador (processamento paralelo). Pronto (ready): Um processo est no estado de pronto quando apenas aguarda uma oportunidade para executar, ou seja, espera que o sistema operacional aloque a UCP para sua execuo. Espera (wait): Um processo est no estado de espera quando aguarda algum evento externo ou por algum recurso para poder prosseguir o seu processamento. Como exemplo, podemos citar o trmino de uma operao de entrada e sada ou a espera de uma determinada data e/ou hora para poder continuar sua execuo.

26

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

O sistema operacional gerencia os processos atravs de listas encadeadas, onde cada PCB (bloco de controle de processo) tem um ponteiro para o seu sucessor. Assim:

Lista de processos em estado de pronto

PCB #5

PCB #1

: :PCB #9

: :PCB #2 PCB #4

Lista de processos em estado de espera

: :

: :

: :

2.4. Mudanas de Estado do ProcessoUm processo muda de estado diversas vezes, durante o seu processamento, em funo de eventos originados por ele prprio (eventos voluntrios) ou pelo sistema operacional (eventos involuntrios). Basicamente, existem quatro mudanas de estado que podem ocorrer a um processo:

Execuo

bEspera

d aPronto

cPronto Execuo: Quando um processo criado, o sistema o coloca em uma lista de processos no estado de pronto, onde aguarda a oportunidade de ser executado (a). Cada sistema tem seus prprios critrios e algoritmos para a escolha da ordem em que os processos sero executados (escalonamento). Execuo Espera: Um processo em execuo passa para o estado de espera por eventos gerados pelo prprio processo, como, por exemplo, uma operao de entrada/sada (b). Espera Pronto: Um processo passa do estado de espera para o estado de pronto quando a operao solicitada atendida, ou o recurso esperado concedido. Um processo no estado de espera sempre ter de passar pelo estado de pronto antes de poder ser novamente selecionado para execuo (c). No existe a mudana do estado de espera para o estado de execuo diretamente.

27

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Execuo Pronto: Um processo em execuo passa para o estado de pronto por eventos gerados pelo sistema, como, por exemplo, o fim da fatia de tempo que o processo possui para sua execuo (d). Neste caso, o processo volta para a fila de pronto, onde aguarda por uma nova oportunidade para continuar o seu processamento.

2.5. Subprocesso e ThreadUm processo pode criar outros processos de maneira hierrquica. Quando um processo (processo pai) cria um outro, chamamos o processo criado de subprocesso ou processo filho. O subprocesso, por sua vez, pode criar outros subprocessos. Como conseqncia desta estrutura, caso um processo deixe de existir, os subprocessos subordinados so eliminados. O uso de subprocessos no desenvolvimento de aplicaes concorrentes demanda o consumo de diversos recursos do sistema (contexto de hardware, contexto de software e espao de endereamento). Na tentativa de diminuir o tempo gasto na criao/eliminao de processos, bem como economizar recursos do sistema como um todo, foi introduzido o conceito de thread (linha). Threads compartilham o processador da mesma maneira que um processo. Por exemplo, enquanto um thread espera por uma operao de E/S, outro thread pode ser executado. A grande diferena entre subprocessos e threads em relao ao espao de endereamento. Enquanto subprocessos possuem, cada um, espaos de endereamento independentes e protegidos, threads compartilham o mesmo espao de endereamento do processo, sem nenhuma proteo, permitindo assim que um thread possa alterar dados de outro thread.

2.6. Processos do SistemaO conceito de processo, alm de estar associado a aplicaes de usurios, pode tambm ser implementado na prpria estrutura de um sistema operacional, para retirar cdigo do seu ncleo, tornando-o menor e mais estvel. No caso de uma ou mais funes no serem desejadas, basta no ativar os processos responsveis, o que permitir liberar memria para os processos dos usurios. Algumas das funes do sistema operacional que podem ser implementadas atravs de processos: Auditoria e segurana; Servios de rede; Contabilizao do uso de recursos; Contabilizao de erros; Gerncia de impresso;

28

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Gerncia de jobs batch; Temporizao; Comunicao de eventos; Interface de comandos (shell).

2.7. Tipos de ProcessosOs processos podem ser classificados processamento que realizam. Assim: de acordo com o tipo de

CPU-bound (ligado a CPU) quando o processo passa a maior parte do tempo no estado de execuo, ou seja, utilizando o processador. Este tipo de processo realiza poucas operaes de entrada/sada e encontrado em aplicaes matemticas ou cientficas, que efetuam muitos clculos e poucas operaes de leitura/gravao. I/O-bound (ligado E/S) quando o processo passa a maior parte do tempo no estado de espera, pois realiza um elevado nmero de operaes de entrada/sada. Esse tipo de processo encontrado em aplicaes comerciais, que se baseiam em leitura, processamento e gravao.

29

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

3. Comunicao entre Processos

3.1. Introduo comum processos que trabalham juntos (concorrentes) compartilhem recursos do sistema, como arquivos, registros, dispositivos e reas de memria. Na verdade, no importa quais recursos so compartilhados, pois problemas decorrentes dessa interao sero os mesmos. De maneira geral, o compartilhamento de recursos entre processos pode gerar situaes indesejveis, capazes at de comprometer o sistema. Vejamos um exemplo onde dois processos trocam informaes atravs de operaes de gravao e leitura em um buffer. Um processo s poder gravar dados no buffer caso ele no esteja cheio. Da mesma forma, um processo s poder ler dados armazenados do buffer se existir algum dado a ser lido. Em ambos os casos, os processos devero aguardar at que o buffer esteja pronto para as operaes de gravao ou de leitura.

Processo Gravador

Sincronizao Dados Buffer Dados

Processo Leitor

Os mecanismos que garantem a comunicao entre processos concorrentes e o acesso a recursos compartilhados so chamados mecanismos de sincronizao. No projeto de sistemas operacionais multiprogramveis, fundamental a implementao de mecanismos de sincronizao que garantam sua integridade e confiabilidade. Este captulo se detm na comunicao entre processos em sistemas fortemente acoplados.

3.2. Especificao de Concorrncia em ProgramasNa abordagem dos problemas e solues decorrentes da comunicao entre processos, utilizaremos diversos algoritmos. Para implement-los ser necessria a utilizao de estruturas que permitam a especificao de concorrncia em programas. A primeira notao para a especificao da concorrncia em um programa foram os comandos FORK e JOIN.

30

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

program A; . . Fork B; . . Join B; . end.

program B; . . . end.

O programa A comea a ser processado e, ao encontrar o comando FORK, faz com que seja criado um outro processo para a execuo do programa B, concorrentemente a A. O comando JOIN permite que o programa A sincronize-se com B, ou seja, quando o programa A encontrar o comando JOIN, s continuar a ser processado aps o trmino de B. Uma das implementaes mais simples de expressar concorrncia em um programa a utilizao dos comandos PARBEGIN e PAREND.

parbegin comando_1; comando_2; (...) comando_n; parend;O comando PARBEGIN especifica que a seqncia de comandos seja executada concorrentemente em uma ordem imprevisvel, atravs da criao de um processo (Processo_1, Processo_2, ..., Processo_n) para cada comando (Comando_1, Comando_2, ..., Comando_n). O comando PAREND define um ponto de sincronizao, onde o processamento s continuar quando todos os processos criados j tiverem terminado suas execues.

Processo Principal

Processo 1

Processo 2

Processo 3

Processo n

Processo Principal

Para compreendermos realmente como funciona esta estrutura, vejamos em uma aplicao prtica, onde calculamos o valor da expresso aritmtica:

x := SQRT (1024) + (35.4 * 0.23) (302 / 7); 31

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

PROGRAM Expressao; VAR X, Temp1, Temp2, Temp3 : REAL; BEGIN PARBEGIN Temp1 := SQRT (1024); Temp2 := 35.4 * 0.23; Temp3 := 302 / 7; PAREND; X := Temp1 + Temp2 Temp3; WRITELN (x = , X); END.Os comandos de atribuio situados entre PARBEGIN e PAREND so executados concorrentemente entre si. O clculo final de X s poder ser realizado quando todas as variveis dentro da estrutura tiverem sido calculadas.

3.3. Problemas de Compartilhamento de RecursosPara compreender melhor como a sincronizao entre processo fundamental quando recursos so compartilhados em sistemas multiprogramveis, vejamos um problema aplicado a situaes prticas: Suponha um arquivo de contas bancrias, onde cada cliente tem seu saldo controlado. Suponha ento que dois caixas diferentes possam atualizar o saldo um mesmo cliente simultaneamente. O primeiro caixa l o registro de cliente e soma ao campo saldo o valor do lanamento. Antes de gravar o novo saldo no arquivo, outro caixa l o registro do mesmo cliente, que est sendo atualizado, para realizar outro lanamento. Independente de qual caixa atualize primeiro o saldo no arquivo, o dado gravado estar inconsistente.

3.4. Soluo para Problemas de CompartilhamentoA soluo mais simples, para evitar o problema de compartilhamento anterior, impedir que dois ou mais processos acessem um mesmo recurso no mesmo instante. Para isso, enquanto um processo estiver acessando determinado recurso, todos os outros que queiram acessar esse mesmo recurso devero esperar at que o primeiro processo termine o acesso. Esta idia de exclusividade de acesso denominada excluso mtua. A excluso mtua deve apenas afetar os processos concorrentes quando um deles estiver fazendo acesso ao recurso compartilhado. A parte do cdigo do programa onde feito o acesso ao recurso compartilhado denominada regio crtica. Os mecanismos que implementam a excluso mtua utilizam um protocolo de acesso regio crtica. Toda vez que um processo for executar sua regio crtica, ele obrigatoriamente executar, antes, um protocolo de entrada nessa regio. Da mesma forma que, ao sair, dever executar um protocolo de sada.

32

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

begin (...) Entra_regiao_critica; (* protocolo de entrada *) Regiao_critica; Sai_regiao_critica; (* protocolo de sada *) (...) end

3.5. Problemas de SincronizaoNa tentativa de implementar a excluso mtua, algumas solues introduzem novos problemas, que chamaremos de problemas de sincronizao. Qualquer soluo para os problemas de compartilhamento de recursos entre processo, passa necessariamente pela soluo dos problemas de sincronizao. A seguir, examinaremos alguns problemas, bastante comuns, decorrentes da sincronizao entre processos.

3.5.1. Velocidade de Execuo dos ProcessosA velocidade de execuo dos processos pode interferir em uma boa soluo para o problema de excluso mtua. Um processo mais rpido que queira acessar sua regio crtica pode ficar muito tempo esperando, por estar esperando por um processo mais lento.

3.5.2. StarvationUm outro problema, tambm decorrente da sincronizao entre processos, denominado starvation. Starvation a situao onde um processo nunca consegue executar sua regio crtica e, conseqentemente, acessar o seu recurso compartilhado. Isto pode acontecer, por exemplo, quando um processo tem baixa prioridade em relao aos outros, que concorram pelo mesmo recurso. Uma soluo bastante simples para esse problema a criao de filas de pedidos de alocao para cada recurso compartilhado. O esquema de o primeiro a chegar ser o primeiro a ser atendido (FIFO) elimina o problema do starvation.

3.5.3. Sincronizao CondicionalOutra 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 processamento. Esse tipo de sincronizao chamado sincronizao condicional. Um exemplo clssico a comunicao entre dois processos atravs de operaes de gravao e leitura em um buffer. Nessa comunicao, um processo grava dados em um buffer, enquanto outro l, concorrentemente, os dados do buffer. Os processos envolvidos devem estar sincronizados, de forma que um processo no tente gravar dados em um buffer cheio ou ler de um buffer vazio.

33

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

3.6. Solues de Hardware para o Problema de Excluso Mtua3.6.1. Desabilitao de InterrupesA soluo mais simples para o problema da excluso mtua fazer com que o processo, antes de entrar em sua regio crtica, desabilite todas as interrupes externas e as reabilite aps deixar a regio crtica. Um dos problemas deste mecanismo quando o processo que desabilitou as interrupes no torna a habilit-las. Nesse caso, o sistema, provavelmente, ter seu funcionamento seriamente comprometido.

3.6.2. Instruo Test-and-SetMuitos processadores possuem uma instruo especial que permite ler uma varivel, armazenar seu contedo em outra rea e atribuir um novo valor a essa varivel. Esse tipo especial de instruo chamado instruo test-and-set e tem como caracterstica ser sempre executada sem interrupo, ou seja, trata-se de uma instruo indivisvel. Assim, no existe a possibilidade de dois processos estarem manipulando uma varivel compartilhada ao mesmo tempo, possibilitando a implementao da excluso mtua. A instruo test-and-set possui o formato abaixo e na sua execuo o valor lgico da varivel Y copiado para X, sendo atribudo varivel Y o valor lgico verdadeiro.

Test-and-Set (X,Y);Para coordenar o acesso concorrente a um recurso, a instruo test-and-set utiliza uma varivel lgica global que chamaremos bloqueio. Quando a varivel bloqueio for falsa, qualquer processo poder alterar seu valor para verdadeiro, atravs da instruo test-and-set e, assim, acessar o recurso de forma exclusiva. Ao terminar o acesso, o processo deve simplesmente retornar o valor da varivel para falso, liberando o acesso ao recurso.

program programa_test_and_set; var bloqueio: boolean; procedure processo_A; var pode_a : boolean; begin repeat pode_a := true; while (pode_a) do test_and_set (pode_a, bloqueio); regiao_critica_A; bloqueio := false; until false; end; procedure processo_B; var pode_b : boolean; begin 34

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

repeat pode_b := true; while (pode_b) do test_and_set (pode_b, bloqueio); regiao_critica_B; bloqueio := false; until false; end; begin bloqueio := false; PARBEGIN processo_A; processo_B; PAREND; end.

3.7. Solues de Software para o Problema de Excluso MtuaAlm da excluso mtua, que soluciona os problemas de compartilhamento de recursos, trs fatores fundamentais para a soluo dos problemas de sincronizao devero ser atendidos: O nmero de processadores e o tempo de execuo dos processos concorrentes devem ser irrelevantes. Um processo, fora de sua regio crtica, no pode impedir que outros processos entrem nas suas prprias regies crticas. Um processo no pode ficar indefinidamente esperando para entrar em sua regio crtica. As ferramentas mais recentes de software utilizadas para a soluo de problemas de sincronizao entre processos so os SEMFOROS, uma soluo de alto nvel denominada MONITORES e a TROCA DE MENSAGENS.

3.7.1. SemforosO conceito de semforo foi proposto como uma soluo mais geral e simples, para os problemas de sincronizao entre processos concorrentes. Um semforo uma estrutura composta de uma FILA e uma varivel inteira, no negativa, que s pode ser manipulada por duas instrues: DOWN e UP. Estas instrues funcionam como protocolo de entrada e sada no caso de excluso mtua. Sempre que deseja entrar na sua regio crtica, um processo executa uma instruo DOWN. Se o semforo for maior que 0, este decrementado de 1, e o processo que solicitou a operao pode executar sua regio crtica. Entretanto, se uma instruo DOWN executada em um semforo cujo valor seja igual a 0, o processo que solicitou a operao ficar no estado de espera, em uma fila associada ao semforo.

35

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

O processo que est acessando o recurso, ao sair da sua regio crtica, executa uma instruo UP, incrementando o semforo de 1 e liberando o acesso ao recurso. Se um ou mais processos estiverem esperando, devido a operaes DOWN pendentes o sistema escolhe um processo na fila de espera e muda seu estado para pronto. As instrues DOWN e UP em sintaxe PASCAL no convencional:

type semaforo = record fila_espera : fila; valor : integer; end; procedure DOWN (var s : semaforo); begin if (s.valor = 0) then coloca_processo_na_fila_de_espera else s.valor := s.valor 1; end; procedure UP (var s : semaforo); begin if (tem_processo_esperando) then tira_da_fila_de_espera else s.valor := s.valor + 1; end;As operaes DOWN e UP so indivisveis; assim, garantido que, se uma das operaes for iniciada, nenhum outro processo poder ter acesso ao semforo at o trmino dessa operao. O programa a seguir mostra uma soluo para o problema de excluso mtua entre dois processos atravs do uso de semforos. Inicialmente, o semforo est com o valor 1, indicando que nenhum processo est executando sua regio crtica. O Processo_A executa a instruo DOWN, fazendo com que o semforo seja decrementado de 1 e passe a ter o valor 0. Em seguida, o Processo_A ganha o acesso a sua regio crtica. O Processo_B tambm executa a instruo DOWN, mas como seu valor igual a 0, ficar aguardando at que o Processo_A execute a instruo UP, ou seja, volte o valor do semforo para 1.

program semaforo; var s : semaforo; procedure processo_A; begin repeat DOWN(s); regiao_critica_A; UP(s); until false; end;

36

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

procedure processo_B; begin repeat DOWN(s); regiao_critica_B; UP(s); until false; end; begin s.valor := 1; PARBEGIN processo_A; processo_B; PAREND; end. 3.7.2. MonitoresO uso de semforos exige do programador muito cuidado, pois qualquer engano pode levar a problemas de sincronizao imprevisveis. Monitores so mecanismos de sincronizao de alto nvel, que tentam tornar mais fcil o desenvolvimento e a correo de programas concorrentes. Vejamos um exemplo bem simples, onde dois processos somam e diminuem, concorrentemente, o valor da varivel compartilhada X.

program exemplo; monitor regiao_critica; var x : integer; procedure soma; begin x:= x + 1; end; procedure diminui; begin x := x 1 ; end; begin x := 0; end; begin PARBEGIN regiao_critica.soma; regiao_critica.diminui; PAREND; end;A inicializao da varivel compartilhada X com o valor zero s acontece uma vez, no momento da primeira ativao do monitor regiao_critica. Neste exemplo, pode-se garantir que o valor de X ao final da execuo concorrente dos procedimentos de soma e diminuio ser igual a zero. Isso porque, como os procedimentos esto definidos dentro do monitor, estar garantida a execuo mutuamente exclusiva entre eles.

37

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

3.7.3. Troca de MensagensTroca de mensagem 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);Os procedimentos SEND e RECEIVE, mesmo no sendo suas execues mutuamente exclusivas, permitem tanto a comunicao entre processos como a sincronizao entre eles. A comunicao ocorre porque um processo, ao receber 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. Exemplo:

program produtor_consumidor; procedure produtor; var msg: tipo_msg; begin repeat produz_mensagem (msg); SEND (msg); until false; end; procedure consumidor; var msg: tipo_msg; begin repeat RECEIVE (msg); consome_mensagem (msg); until false; end; begin PARBEGIN produtor; consumidor; PAREND; end.

3.8. DeadlockUm processo dito em deadlock quando est esperando por um evento que nunca ocorrer. Esta situao consequncia, na maioria das vezes, do compartilhamento de recursos do sistema entre vrios processos, sendo que cada processo deve ter acesso ao recurso de forma exclusiva (excluso mutua).

38

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

4. Gerncia do Processador4.1. IntroduoO conceito bsico que gerou a implementao dos sistemas multiprogramveis foi a possibilidade de a UCP ser compartilhada entre diversos processos. Por isso, o procedimento para o escalonamento de processos (seleo de processos entre os vrios que esto na fila de pronto para utilizao do processador), uma das principais funes executadas pelo sistema operacional multiprogramvel.

Execuo (UCP)

Processo Escalonamento Processo Pronto

Espera Processo Processo ProcessoPrincipais Objetivos do Escalonador de Processos: Manter a UCP ocupada o maior tempo possvel; Balancear a utilizao do processador entre os diversos processos; Maximizar o throughput do sistema (nmero de processos executados num intervalo de tempo); Oferecer um tempo de resposta razovel para os usurios interativos. Para atender alguns desses objetivos, os sistemas operacionais devem levar em considerao as caractersticas dos processos, ou seja, se um processo do tipo batch, interativo, CPU-bound ou I/O-bound. Sistemas de tempo real e de tempo compartilhado tambm so aspectos fundamentais para a implementao de uma poltica de escalonamento.

4.2. Critrios de EscalonamentoUtilizao de UCP: desejvel que o processador fique a maior parte do seu tempo ocupado; Throughput: O throughput representa o nmero de processos (tarefas) executados em um intervalo de tempo. A maximizao do throughput desejada na maioria dos sistemas. Tempo de Turnaround: Tempo que um processo leva desde sua admisso no sistema at o seu trmino, levando em considerao o tempo de espera para alocao de memria, espera na fila de processos prontos para execuo, processamento na UCP e operaes de E/S.

39

FACECA Faculdade Cenecista de Varginha SOP Sistemas Operacionais

Sistemas de Informao Prof. Jos Eduardo S. Gomes

Tempo de Resposta: Em sistemas interativos, o tempo de resposta o tempo decorrido do momento da submisso de um pedido at a primeira resposta produzida. De um modo geral, qualquer algoritmo de escalonamento busca otimizar a utilizao da UCP e o throughput, enquanto tenta diminuir o tempo de turnaround e de resposta.

4.3. Escalonamento No-preempitivoO escalonamento no-preemptivo aquele que quando um processo ganha o direito de utilizar a UCP, nenhum outro processo pode tirar esse recurso. Alguns escalonamentos no-preemptivos so:

4.3.1. Escalonamento First-In-First-Out (FIFO)O processo que chega primeiro (first-in) ao estado de pronto o primeiro a ser selecionado para ocupar a UCP (first-out). Problema: Impossibilidade de prever quando o processo ter sua execuo iniciada.

4.3.2. Escalonamento Shortest-Job-First (SJF)Este algoritmo associa cada processo (ou job) ao seu tempo de execuo. Dessa forma, quando o processador est livre, o processo em estado de pronto que precisar de menor tempo de UCP para terminar o seu processamento selecionado para execuo. Problema: Determinar quanto tempo de UCP cada processo necessita para o seu processamento.

4.3.3. Escalonamento CooperativoA partir do momento que o processo est em execuo, voluntariamente libera o processador, retornando a fila de pronto. este

Problema: Um programa pode no liberar o processador, monopolizando desta forma a UCP. Observao: Escalonamento FIFO e SJF no podem ser aplicados em sistemas de tempo compartilhado, onde um tempo de resposta razovel deve ser garantido para usurios interativos. Exerccio: Simule as polticas de escalonamento no-preemptivas: FIFO, SJF e HRN, para situao de chegada de processos representada pela rgua de tempo: Tempo 1 (A,4), (B,2) 2 (C,3) 3 (D,2), (E,5) 4 5 (F,1) 6 (G,3), (H,2) 7 (I,1)

Onde: (X,Y), representa um identificador do processo (X) e o tempo estimado de execuo do processo (Y).

40

FACECA Faculdade Ceneci