Sunteți pe pagina 1din 70

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Introduo aos Sistemas Operacionais - ISO

Tcnico em Informtica com habilitao em programao e desenvolvimento de sistemas

Notas de aula

Prof. Dr. Marcelo de Paiva Guimares

Salto, 2010

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Prefcio

O objetivo deste guia servir de referncia inicial a alunos do curso de Introduo aos Sistemas Operacionais. Recomenda-se fortemente que os alunos busquem as informaes complementares e detalhes nos livros citados na referncia bibliogrfica. Seu contedo uma pesquisa de vrios autores, sendo em partes transcries e tradues dos mesmos. Esta apostila visa ser uma primeira leitura para os alunos e tenta sempre mostrar os temas abordados de forma simples e clara. Todas as referncias bibliogrficas utilizadas na construo desta apostila se encontram no final do texto.

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Sumrio
1 Introduo .................................................................................................. 1 1.1 Histrico dos Sistemas Operacionais ......................................................... 2 1.1.1 Vlvulas e Painis de Conexo (1945-1955) ........................................... 2 1.1.2 Transistores e Sistemas de Lote (batch) (1955-1965).............................. 3 1.1.3 Circuitos Integrados e Multiprogramao (1965-1980) .......................... 3 1.1.4 Computadores Pessoais e Redes (1980 - 1990) ....................................... 4 1.2 Tipos de Sistemas Operacionais. ............................................................... 5 1.2.1 Sistema Operacional (Monotarefa) .......................................................... 5 1.2.2 Sistemas Operacionais Multiprogramados (Multitarefa) ......................... 5 1.2.3 Sistemas Operacionais Batch(lote) .......................................................... 5 1.2.4 Sistemas Operacionais de tempo compartilhado (time-sharing) ............. 5 1.2.5 Sistemas Operacionais de Tempo Real (real-time) ................................. 5 1.2.6 Sistemas Operacionais Multiprocessados ................................................ 6 Exerccios ................................................................................................... 6 2 Fundamentos .............................................................................................. 7 2.1 Sistema de computao .............................................................................. 7 2.2 Buffering .................................................................................................... 7 2.3 Spooling ..................................................................................................... 8 2.4 Interrupes................................................................................................ 8 2.4.1 Interrupo de hardware .......................................................................... 9 2.4.2 Interrupo de software.......................................................................... 10 2.5 2.6 2.7 2.7.1 DMA (Acesso direto a memria) ............................................................. 11 Hierarquia de memria ............................................................................ 11 Proteo de hardware .............................................................................. 12 Operao em dois modos ....................................................................... 13 1.3

2.7.2 Operao de E/S ..................................................................................... 13 2.7.3 Proteo de Memria ............................................................................. 13 Exerccios ................................................................................................. 14 3 Estruturas dos sistemas operacionais ....................................................... 16 3.1 Componentes dos Sistemas Operacionais ................................................ 16 3.1.1 Gerncia de processos ............................................................................ 16 3.1.2 Gerncia de memria principal .............................................................. 16 3.1.3 Gerncia de arquivos.............................................................................. 16 3.1.4 Gerncia do sistema de I/O .................................................................... 16 3.1.5 Gerncia de armazenamento secundrio ................................................ 17 3.1.6 Proteo de sistema ................................................................................ 17 3.1.7 Interpretador de comandos ..................................................................... 17 3.2 Estrutura dos Sistemas Operacionais ....................................................... 17 3.2.1 Sistemas Monolticos ............................................................................. 17 2.8

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto 3.2.2 Sistemas em Camada ............................................................................. 19 3.2.3 Sistemas Cliente-Servidor...................................................................... 19 Sistemas Monolticos versus Sistemas Cliente-Servidor ......................... 21 Exerccios ................................................................................................. 21 4 Processos .................................................................................................. 22 4.1 Fundamentos ............................................................................................ 22 4.2 O Ncleo do Sistema Operacional ........................................................... 26 4.3 Escalonamento de Processos.................................................................... 27 4.3.1 Escalonamento FCFS ou FIFO .............................................................. 28 4.3.2 Escalonamento Round Robin ................................................................. 28 4.3.3 Escalonamento com Prioridades ............................................................ 29 4.3.4 Filas Multi-nvel com retorno ................................................................ 30 4.3.5 Escalonamento Menor tarefa Primeiro .................................................. 31 4.4 Exerccios - Reviso ................................................................................ 32 4.5 Comunicao e Sincronizao entre Processos. ...................................... 33 4.5.1 O Problema do Produtor e Consumidor sobre um Buffer Circular. ...... 33 4.5.2 Solues de hardware. ........................................................................... 35 4.5.3 Solues de software.............................................................................. 36 4.5.4 Deadlock: Espera sem fim. .................................................................... 41 4.5.5 Problemas clssicos ............................................................................... 41 5 Gerencia de memria ............................................................................... 43 5.1 Alocao Contgua Simples ..................................................................... 43 5.2 Alocao Particionada ............................................................................. 44 5.2.1 Alocao Particionada Esttica .............................................................. 44 5.2.2 Alocao Particionada Dinmica ........................................................... 46 5.2.3 Estratgias para a escolha da Partio ................................................... 47 5.3 Swapping.................................................................................................. 48 5.4 Memria Virtual....................................................................................... 49 5.4.1 Paginao ............................................................................................... 50 5.4.2 Segmentao. ......................................................................................... 54 5.4.3 Segmentao com Paginao: ................................................................ 55 Exerccios ................................................................................................. 56 6 Sistemas de arquivos ................................................................................ 57 6.2 Exerccios ................................................................................................. 65 Referncias bibliogrficas .......................................................................................... 66 5.5 3.3 3.4

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

1 INTRODUO
Um sistema operacional um programa de computador, que aps o processo de inicializao (boot) da mquina, o primeiro a ser carregado, e que possui duas tarefas bsicas: Gerenciar os recursos de hardware de forma que sejam utilizados da melhor forma possvel, ou seja, tirar o mximo proveito da mquina fazendo com que seus componentes estejam a maior parte do tempo ocupados com tarefas existentes; e Prover funes bsicas para que programas de computador possam ser escritos com maior facilidade, de modo que os programas no precisem conhecer detalhes da mquina para poderem funcionar. justamente neste segundo item que os sistemas operacionais podem ser bem sucedidos ou no, em despertar interesse para que a indstria de software e os programadores independentes construam programas para determinados sistemas operacionais. Isto justifica parte do sucesso do Microsoft Windows, pois, ao mesmo tempo que ele prov uma interface bastante amigvel com o usurio, para o programador, no to difcil criar um programa com janelas, botes, listas, etc, como seria num sistema operacional como o MS-DOS. Alm disso, os sistemas operacionais da Microsoft rodam no hardware mais popular hoje em dia: os computadores baseados em IBM PC. Computadores modernos possuem um ou mais processadores, memria principal, dispositivos de entrada e sada como discos, fitas, teclado, mouse, monitor, interface de rede, entre outros. Escrever programas que utilizem um computador com esta complexidade de forma eficiente muito difcil e trabalhoso. exatamente neste ponto que entram as funes do sistema operacional: abstrair as particularidades do hardware dos programas, fornecendo a eles facilidades para sua operao, tais como: rotinas de acesso a dispositivos diversos; funes de armazenamento de dados como criao de arquivos, leitura e escrita de dados; e rotinas de acesso aos dispositivos de interao com a mquina, como teclado, mouse, monitor, etc. Dada a existncia de softwares como o sistema operacional, os programas normalmente so classificados como software bsico (que inclui o sistema operacional), e softwares de aplicao, que so voltados a resolver problemas dos usurios. Podemos visualizar atravs de um diagrama a integrao entre hardware, software bsico, e softwares aplicativos, como mostra a Figura 1.
Sistema Bancrio Controle de Estoques Editores Jogos
Programas de Aplicao

Compiladores

Interpretador de comandos (shell)

Programas de Sistema (software bsico)

Sistema Operacional
Linguagem de Mquina Microprogramao Dispositivos Fsicos
Figura 1 Integrao entre hardware, software bsico e software aplicativo
Hardware

Olhando para o diagrama, veremos que o que chamamos de hardware na verdade composto de trs camadas. Nem todas as mquinas seguem este esquema, algumas podem ter uma camada a menos, ou mesmo camadas adicionais, mas basicamente, os computadores seguem o esquema ilustrado na Figura 1.

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto No nvel mais inferior, temos os dispositivos eletrnicos em si, como o processador, os chips de memria, controladores de disco, teclado, e outros dispositivos, barramentos, e qualquer dispositivo adicional necessrio para o funcionamento do computador. Um nvel acima, temos a camada de microprogramao, que de forma geral, so pequenos passos (chamados de microoperaes) que formam uma instruo de processador completa, como ADD, MOV, JMP, etc. O conjunto de instrues do computador chamado de linguagem de mquina, e apesar de ser uma espcie de linguagem, podemos dizer que faz parte do hardware porque os fabricantes a incluem na especificao do processador, para que os programas possam ser escritos. Afinal, de nada adianta uma mquina maravilhosa, se no existir documentao alguma de como ela funciona. Assim, as instrues que a mquina entende so consideradas parte integrante do hardware. As instrues tambm incluem, geralmente, operaes que permitem ao processador comunicar-se com o mundo externo, como controladores de disco, memria, teclado, etc. Como a complexidade para acesso a dispositivos muito grande, tarefa do Sistema Operacional esconder estes detalhes dos programas. Assim, o sistema operacional pode, por exemplo, oferecer aos programas uma funo do tipo LEIA UM BLOCO DE UM ARQUIVO, e os detalhes de como fazer isso ficam a cargo do sistema operacional. Acima do sistema operacional esto os demais programas utilizados pelo usurio final, mas alguns deles ainda so considerados software bsico, como o sistema operacional. Entre eles podemos citar o shell, que consiste do interpretador de comandos do usurio, ou seja, a interface com o usurio. Nos sistemas operacionais mais recentes, freqentemente o shell uma interface grfica (ou em ingls GUI Graphics User Interface). Raramente, numa interface grfica bem elaborada, o usurio precisa digitar comandos para o computador. A maneira mais comuns de executar programas, copiar e mover arquivos, entre outras atividades mais comuns, atravs do uso do mouse. Nos tempos do MS-DOS, o teclado era o dispositivo de entrada dominante, por onde o usurio entrava todos os comandos para realizar suas tarefas do dia a dia. O que muito importante observar quanto ao software bsico que, apesar de que editores (ex: bloco de notas do Windows), compiladores (ex: compilador C no Unix), e interpretadores de comando (ex: command.com ou explorer.exe no Windows) normalmente serem instalados junto como sistema operacional em um computador, eles no so o sistema operacional. Eles apenas utilizam o sistema operacional. Portanto, o shell que normalmente usamos em um sistema operacional nada mais do que um programa que utiliza servios do sistema operacional, mas com a finalidade de permitir que os usurios realizem suas tarefas mais freqentes: executar programas e trabalhar com arquivos. A grande diferena entre o sistema operacional, e os programas que rodam sobre ele, sejam software bsico ou software aplicativo, que o sistema operacional roda em modo kernel (ou supervisor), enquanto os demais programas rodam em modo usurio. Estes dois modos de operao dos processadores dos computadores diferem no fato de que em modo supervisor, um programa tem acesso a todo o hardware, enquanto que os programas que rodam em modo usurio, tem acesso somente a determinadas regies de memria, no podem acessar dispositivos diretamente, e precisam pedir para o sistema operacional quando necessitam de alguma tarefa especial. Isto garante que os programas dos usurios, no acabem por invadir reas de memria do sistema operacional, e acabem por travar o sistema. Isto tambm possibilita que programas de diferentes usurios estejam rodando na mesma mquina, de forma que um usurio no consiga interferir nos programas de outro.

1.1 Histrico dos Sistemas Operacionais


Para uma melhor idia do curso de desenvolvimento dos sistemas operacionais atuais, a seguir apresentada a esquematizao da evoluo histrica dos mesmos, enfatizando a relao entre a evoluo dos S.O. e os avanos em hardware. 1.1.1 Vlvulas e Painis de Conexo (1945-1955) Os primeiros computadores foram implementados atravs de vlvulas a vcuo, consistindo em salas

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto inteiras de circuito, consumindo energia eltrica suficiente para cidades inteiras. A programao era realizada atravs de painis onde as conexes realizadas representavam os 0 e 1 dos cdigos binrios da linguagem de mquina. No existia o conceito de sistema operacional, sendo que cada usurio introduzia o seu programa por painis e aguardava os resultados. A probabilidade de falha do sistema durante a execuo de algum programa era altssima, devido baixa confiabilidade das vlvulas a vcuo. 1.1.2 Transistores e Sistemas de Lote (batch) (1955-1965) A introduo dos transistores, com a consequente reduo de tamanho e consumo e o aumento da confiabilidade permitiu o desenvolvimento dos primeiros sistemas realmente utilizveis fora dos crculos acadmicos e governamentais, o que garantiu a a venda comercial dos mesmos. Nesta poca sugiu a distino entre projetistas, construtores, operadores, programadores e pessoal da manuteno. Entretanto, os computadores ainda eram extremamente grandes e caros, devendo ser acondicionados em grandes salas com ar condicionado e operados por pessoal profissional. Ento, o seu uso era restrito entidades governamentais, grandes corporaes e universidades. O processo de execuo de uma tarefa (job) era, resumidamente: i) perfurao de um conjunto de cartes com o programa a ser executado; ii) o operador pega os cartes e os coloca na leitura. Se o compilador FORTRAN for necessrio, ele colocado (tambm como um conjunto de cartes) na leitora; iii) o resultado sai na impressora e levado pelo operador para um local onde o usurio o recolhe. Este processo, alm de lento, desperdia muito tempo de programao devido ao deslocamento do operador pela sala, buscando conjuntos de cartes a serem utilizados e pela lentido dos dispositivos de entrada e sada (leitora de cartes e impressora). Para maximizar a eficincia na utilizao dos processadores, e devido ao surgimento das unidades de fita magntica, foi utilizada um novo procedimento: i) perfurao dos cartes e envio ao operador; ii) o operador junta os conjuntos de cartes e, com a utilizao de um computador mais barato, grava-os em uma fita magntica; iii) a fita magntica levada ao processador principal e lida; iv) os programas da fita so executados e o resultado gravado em outra fita magntica; v) esta fita de sada levada ao computador secundrio (mais barato), lida e seu contedo impresso em uma impressora comum; vi) a sada da impressora entregue aos usurios. Este processo, denominado OFF-LINE, garantiu uma maior eficincia na utilizao do processador principal. Porm aumentou o tempo de resposta do sistema para cada usurio. Este aumento do tempo de resposta do sistema se d em funo de se juntar uma quantidade razovel de conjuntos de cartes para se gravar uma fita. Desta forma, cada usurio, para obter a resposta a seu programa, deve aguardar a execuo de diversos outros programas armazenados na mesma fita. Isto fica ainda mais crtico quando um dos programas de uma fita apresenta um tempo de execuo muito elevado. 1.1.3 Circuitos Integrados e Multiprogramao (1965-1980) Com a introduo de circuitos integrados, houve uma grande reduo no tamanho e custo dos sistemas, bem com um aumento em sua complexidade e generalidade. Isto permitiu o desenvolvimento de dispositivos de entrada e sada inteligentes, de forma que os prprios se responsabilizam pelo controle da transferncia de dados entre eles e a memria principal. Outro desenvolvimento importante foi a introduo dos discos, que permitem um acesso aleatrio informao contida nos mesmos, diferentemente das fitas magnticas, que somente permitem um acesso aos dados na ordem em que os mesmos esto gravados (note que isto pode ficar transparente atravs de uma programao cuidadosa, entretanto com alto custo em tempo de execuo). Estes foram fatores fundamentais para o sucesso do conceito de multiprogramao, apresentado a seguir. Simultaneamente com a utilizao de circuitos integrados, surgiu o conceito de multiprogramao. A idia provm dos seguintes fatos: i) durante a execuo de programas que realizam alta utilizao de clculos (ex: programas 3

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto cientficos) todos os dispositivos de entrada e sada permanecem inativos; ii) durante a execuo de programas com alta utilizao de entrada e sada (ex: programas comerciais com consultas base de dados e impresso de relatrios) o processador permanece durante grande porcentagem do tempo aguardando os dispositivos de entrada/sada. Desta forma, surgiu a idia de se colocar diversas tarefas (jobs) dentro de alguma "partio" da memria principal e executando simultaneamente de forma que, se alguma tarefa precisa aguardar a transferncia de dados para um dispositivo, outra tarefa pode utilizar o processador central neste perodo. Outro conceito introduzido foi o de "SPOOL (de Simultaneous Peripherical Operation On Line) que corresponde leitura imediata dos jobs para o disco no momento da sua chegada, sendo que ao terminar um dos jobs ativos, um novo job imediatamente carregado do disco para a partio de memria vazia e executado (partio um trecho de memria alocado a um job). Este processo tem a vantagem de que, com a leitura simultnea dos dados para um meio de armazenamento mais rpido e com a transferncia de dados entre os meios realizada simultaneamente com a operao da unidade de processamento principal, desapareceu praticamente o tempo manual de montagem e desmontagem de fitas. Alm disso, dispondo de diversos jobs a serem executados no disco, o sistema operacional podia escolher entre eles por prioridade, e no necessariamente por ordem de chegada. Entretanto, at este ponto, o sistema continuava sendo um sistema de lotes, sendo o tempo entre a apresentao de um conjunto de cartes e a retirada do resultado extremamente alto, principalmente quando se est realizando a depurao de programas. Para diminuir o tempo de resposta do sistema a um dado job foi introduzido o conceito de compartilhamento de tempo (time-sharing), no qual cada usurio possui um terminal ligado em linha com o computador, podendo ainda o computador rodar, no fundo, alguns lotes com a utilizao do tempo disponvel devido lentido de entrada de dados dos usurios. Nesta poca tambm surgiram os minicomputadores, com uma menor capacidade de processamento numrico, mas tambm com um custo muito menor. Obs.: Multiprogramao e multiprocessamento: Estes conceitos devem ser claramente distinguidos. Multiprogramao: corresponde a diversos programas distintos executando em um mesmo processador. Multiprocessamento: corresponde a diversos processadores, dentro de um mesmo sistema de computao, executando programas diversos ou cooperando na execuo de um mesmo programa. Note que foi a existncia de multiprocessamento entre os dispositivos de entrada/sada e o processador central que tornou atrativa a introduo da multiprogramao, mas a relao para por a. 1.1.4 Computadores Pessoais e Redes (1980 - 1990) Com a integrao em larga escala e o surgimento dos microcomputadores, surge tambm o conceito de user-friendly para Sistemas Operacionais, que corresponde ao desenvolvimento de sistemas operacionais para serem utilizados por pessoas sem nenhum conhecimento de computao e que, provavelmente, no tm nenhum interesse em vir a conhecer algo. Um outro desenvolvimento interessante que foi bastante impulsionado pelos microcomputadores (apesar de no depender dos mesmos) o de sistemas operacionais para redes de computadores, que consistem em computadores distintos interligados por elementos de comunicao. Os sistemas operacionais para redes so divididos em duas categorias: Sistemas operacionais de rede: no qual cada usurio tem conhecimento de seu prprio computador e pode acessar dados em outros computadores; Sistemas operacionais distribudos: em que o sistema operacional faz com que todos os computadores da rede formem uma unidade, de forma que nenhum usurio tenha conhecimento de quantos computadores h na rede ou de em qual (ou quais) computador o seu especfico programa est executando.

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

1.2 Tipos de Sistemas Operacionais.


Os diferentes tipos de sistemas operacionais so basicamente classificados de acordo com o nmero de processos do usurio que o SO pode executar ou de acordo com o nmero de processadores que o sistema possui. 1.2.1 Sistema Operacional (Monotarefa) Possui as seguintes caractersticas: - executado por um nico processador e capaz de gerenciar a execuo de um nico programa (tarefa) do usurio por vez. - Permite que o processador, a memria e os perifricos fiquem dedicados a um nico usurio; so portanto monousurios (monoterminais). - O processador fica ocioso quando o programa espera pela ocorrncia de uma E/S. - So sistemas de simples implementao. 1.2.2 Sistemas Operacionais Multiprogramados (Multitarefa) Possui as seguintes caractersticas: - executado por um ou vrios processadores. No caso de vrios processadores, classificado como "SO para Multiprocessadores" (discutido a seguir). No caso de apenas um processador, permite que vrios programas disputem os recursos do sistema (paralelismo lgico ou virtual), e: - Podem ser monousurio ou multiusurio: Monousurio: um nico usurio executando vrios programas (monoterminal). Multiusurio: vrios usurios executando vrios programas (multiterminais). - Divide o tempo da cpu entre os vrios programas e entre os vrios usurios. - Diminui a ociosidade, permitindo que durante o tempo de E/S outros processos sejam executados. Inicialmente, os sistemas multiprogramados comearam com os sistemas de batch; depois com os sistemas time-sharing e finalmente com os sistemas real-time. 1.2.3 Sistemas Operacionais Batch(lote) Os programas eram enfileirados em disco ou fita e aguardavam a execuo, um por vez. Normalmente, os programas (jobs) no necessitavam de interao com o usurio. Embora sejam considerados como os precursores dos sistemas multiprogramados, pois aproveitavam os tempos de E/S para a execuo de outros processos, o processamento era puramente sequncial e ofereciam longos tempos de resposta. 1.2.4 Sistemas Operacionais de tempo compartilhado (time-sharing) Os usurios interagem atravs de terminais e teclados on-line. So sistemas multiterminais, cujo processamento controlado por um computador central. O sistema executa uma varredura (polling) nos terminais, compartilhando o tempo entre eles (time-sharing). Neste sistema, o processador executa os programas de forma intercalada no tempo, alocando uma fatia de tempo (time-slice) para cada um, por vez, realizando assim a multiprogramao. Cada usurio tem a iluso que todo o sistema est totalmente dedicado exclusivamente para ele. 1.2.5 Sistemas Operacionais de Tempo Real (real-time) So semelhantes aos sistemas time-sharing, embora exijam tempo de resposta dentro de limites rgidos, na execuo de tarefas. O conceito de time-slice muito pouco utilizado e os processos executam o tempo necessrio e conforme sua prioridade. So sistemas muito utilizados em controle de processos, onde o tempo um fator crucial: refinaria de petrleo, automao industrial, controle de trfego areo etc.. Neste sistema, os processos geralmente so ativados por sensores.

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto 1.2.6 Sistemas Operacionais Multiprocessados

Possui as seguintes caractersticas: - O sistema possui vrios processadores, que podem estar confinados a um mesmo gabinete (centenas de processadores) ou espalhados fisicamente em forma de rede (dezenas de processadores). - Executam vrias tarefas simultaneamente e portanto so multitarefas. - Cada processador pode operar monoprogramado ou multiprogramado. - Ocorre paralelismo fsico ou real, quando mais de um processador est sendo utilizado. Ocorre tambm paralelismo lgico, quando o nmero de tarefas maior que o nmero de processadores disponveis. - Podem ser fracamente acoplados ou fortemente acoplados: Fracamente acoplados (loosely coupled): cada processador possui sua prpria memria e executa seu prprio sistema operacional (Sistema Operacional de Rede) ou parte de um sistema operacional global (Sistema Operacional Distribudo).
UCP Linha de comunicao UCP

MEM

DISPOS E/S

MEM

DISPOS E/S

Figura 2 - Sistemas fracamente acoplados

Fortemente acoplados (tightly coupled): todos os processadores compartilham uma nica memria. Estes processadores geralmente so coordenados por um nico SO localizado em um outro computador hospedeiro, que se encarrega de distribuir as tarefas entre os processadores e gerenciar a execuo.
UCP UCP

MEM DISPOS E/S

DISPOS E/S

Figura 3- Sistemas fortemente acoplados

1.3 Exerccios
1. Quais os principais objetivos e as principais funes de um SO? 2. Qual a diferena entre monoprogramao e mutiprogramao. Exemplifique. 3. Defina as propriedades essenciais dos seguintes tipos de SO: Batch, Multiprogramados, Tempo Compartilhado, Tempo Real e Multiprocessados. 4. Se o computador possuir apenas um processador, possvel ocorrer um processamento paralelo? Justifique a resposta. 5. Quais so as diferenas entre um sistema fracamente e fortemente acoplado? 6. Explique a diferena entre processamento paralelo e concorrente.

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

2 FUNDAMENTOS
Este captulo tem como objetivo introduzir diversos fundamentos que sero utilizados no decorrer do curso.

2.1 Sistema de computao


Um sistema de computao de uso geral moderno consiste de uma CPU e em uma srie de controladoras de dispositivos que so conectadas atravs de um barramento comum que fornece acesso memria compartilhada (Figura 4). Cada controladora de dispositivo est encarregada de um tipo especfico de dispositivo (por exemplo, unidades de disco, dispositivos de udio e monitores de vdeo). A CPU e as controladoras de dispositivo podem executar de modo concorrente, competindo pelos ciclos de memria. Para garantir acesso correto memria compartilhada, uma controladora de memria fornecida e sua funo sincronizar o acesso memria.

Figura 4 - Sistema de computao moderno

2.2 Buffering
A tcnica de buffering consiste na utilizao de uma rea de memria (buffer) para a transferncia de dados entre os perifricos e a memria principal. 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 CPU 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 CPU coloca o dado no buffer para um dispositivo de sada manipular, como mostra a Figura 5.
Memria Principal g l g l g = gravao l = leitura
Figura 5- Buffer

CPU

buffer

Dispositivos de E/S

O buffering uma tcnica utilizada para minimizar o problema da disparidade da velocidade de processamento existente entre a CPU e os dispositivos de E/S. O objetivo do buffering manter, na maior parte do tempo, a UCP e dispositivos de E/S ocupados.

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

2.3 Spooling
A tcnica de spooling foi introduzida nos anos 50 com o processamento batch e hoje utilizada na maioria dos sistemas operacionais. Naquela poca, os programas eram submetidos um a um para o processamento, e como a velocidade de operao dos dispositivos de E/S, muito lenta, a CPU ficava ociosa esperando o carregamento de um programa e dados para a memria, ou esperando pelo trmino de uma impresso. A soluo foi armazenar os vrios programas e seus dados, tambm chamados de jobs, em uma fita magntica e, em seguida, submet-los a processamento. Dessa forma, a CPU poderia processar os jobs, diminuindo o tempo de execuo dos jobs e o tempo de transio entre eles. Da mesma forma, em vez de um job gravar suas sadas na impressora, poderia direcion-las para uma fita, que depois seria impressa integralmente. Essa forma de processamento chamado de spooling, e mostrada na Figura 6.

Arquivo de spool Programa Sistema Operacional


Figura 6- Spool

Impresso

A tcnica de buffering permite que um job utilize um buffer concorrentemente com um dispositivo de entrada e sada. O spooling, basicamente, utiliza o disco como um grande buffer, permitindo que dados sejam lidos e gravados em disco, enquanto outros jobs so processados.

2.4 Interrupes
um sinal informando a um programa que um evento ocorreu. Quando um programa recebe um sinal de interrupo, ele deve tomar uma ao. Existem muito tipos diferentes de sinais que podem disparar uma interrupo, por exemplo, a concluso de uma oprao de I/O, diviso por zero, acesso invlido memria e um pedido por algum servio do sistema operacional. Para cada interrupo, uma rotina de servio designada para tratar a interrupo. Quando a CPU interrompida, ela pra o que est fazendo e imediatamente transfere a execuo para um local fixo. Esse local fixo geralmente contm o endereo de incio onde est localizada a rotina de servio para a interrupo. Um diagrama de tempo dessa operao apresentada na Figura 7.

Figura 7 - Diagrama de tempo de interrupo para um nico processo gerando sada.

Para comear uma operao de I/O, como mostrada na Figura 7, a CPU carrega os registradores adequados dentro da controladora de dispositivo. A controladora de dispositivo, por usa vez, examina o contedo desses registradores para determinar que ao deve ser tomada. Por exemplo, se encontrar um pedido de leitura, a controladora comear a transferir dados do dispositivo para o seu buffer local. Uma vez concluda a transferncia, a controladora de dispositivo informa a CPU que terminou a operao. Essa comunicao feita disparando uma interrupo. 8

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto Essa situao ocorrer, em geral, como resultado de um processo de usurio que solicita I/O. Uma vez iniciada a operao de I/O, dois roteiros so possveis. No caso mais simples, a I/O iniciada; em seguida, quando tiver sido concluda, o controle devolvido para o processo do usurio. Esse caso denominado I/O sncrono. A outra possibilidade, chamada I/O assncrona, devolve o controle ao programa de usurio sem esperar que a I/O termine. A I/O continua enquanto outras operaes de sistema ocorrem Figura 8.

Figura 8 - Dois mtodos de I/O: (a) sncrona e (b) assncrona

Existem dois tipos de interrupes: a de hardware que um sinal originado em algum dispositivo fsico; e a de software que um sinal originado por alguma aplicao. 2.4.1 Interrupo de hardware O hardware da UCP (Unidade Central de Processamento) possui uma linha chamada linha de solicitao de interrupo que a UCP verifica depois de executar cada instruo. Quando a UCP detecta que uma controladora emitiu um sinal na linha de solicitao de interrupo, a UCP salva uma pequena quantidade de informaes de estado, como o valor atual do ponteiro de instrues, e passa para a rotina de tratamento de interrupo em um endereo fsico na memria. A rotina de tratamento de interrupo determina a causa da interrupo, realiza o processamento necessrio e executa uma instruo return from interrupt para retornar a UCP ao estado de execuo antes da interrupo. A Figura 9 resume o ciclo de I/O baseado em interrupes de hardware. Interrupes de hardware podem ser originadas pelos vrios dispositivos perifricos (discos, impressora, teclado e outros) ou pelo relgio. O relgio um dispositivo que decrementa automaticamente o contedo de um registrador, com uma freqncia constante, e interrompe a UCP quando o valor do registrador atinge zero. Os computadores possuem instrues especiais para desabilitar (mascarar, inibir) o sistema de interrupo. Enquanto as interrupes esto desabilitadas elas podem ocorrer, mas no so atendidas pelo processador. Nesse caso, elas ficam pendentes (enfileiradas) e s voltam serem atendidas quando a UCP executa uma instruo especial que habilita (desmascara, desinibe) as mesmas.

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto 1 UCP Driver de dispostivo Driver de dispostivo inicia I/O inicia E/S

Controladora de I/O Inicia I/O

UCP em execuo verifica interrupes entre instrues 7 UCP recebe interrupo, transfere o controle para a rotina de tratamento de interrupo 5 A rotina de tratamento de interrupo processa dados, retorno da interrupo 6 A UCP retorna o processamento da tarefa interrompida 4

3 Entrada pronta, sada completa ou erro Gera sinal de interrupo

Figura 9 Ciclo de E/S baseado em interrupes

2.4.2

Interrupo de software

Uma interrupo de software um sinal gerado por uma instruo especial (portanto, por software) denominada trap, system call ou supervisor call. Quando uma instruo desse tipo executada pela UCP, o computador desencadeia as mesmas aes desencadeadas por uma interrupo de hardware, isto , o programa em execuo suspenso, informaes so salva a rotina especfica do SO executada. Os traps so necessrios principalmente nos computadores que possuem instrues protegidas (privilegiadas). Nesses computadores o registrador (palavra) de estado do processador possui um bit para indicar se a UCP est em estado privilegiado (estado de sistema, estado de supervisor, estado mestre) ou no privilegiado (estado de usurio, estado de programa, estado escravo). Sempre que ocorre uma interrupo ou trap, o novo valor carregado no registrador do estado do processador, indica estado privilegiado de execuo. No estado de supervisor qualquer instruo pode ser executada e no estado de usurio apenas as instrues no protegidas podem ser executadas. Exemplos de instrues protegidas so instrues para desabilitar e habilitar interrupes e instrues para realizar operaes de E/S. Operaes que envolvam o uso de instrues protegidas s podem ser executadas pelo sistema operacional, portanto. Quando um programa de usurio necessita executar alguma dessas operaes, o mesmo deve executar um trap, passando como argumento o nmero que identifica a operao que est sendo requerida. A diferena fundamental dos traps para as interrupes de hardware que eles so eventos previsveis. Isto , dado um programa e seus dados, possvel determinar os pontos em que os traps iro ocorrer. Por outro lado, as interrupes de hardware so geradas por dispositivos perifricos em pontos imprevisveis. As interrupes de software tm prioridade baixa quando comparadas com as de hardware, 10

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto pois uma interrupo de software menos urgente do que uma realizada por uma controladora de dispositivo, pois se a fila (FIFO) da controladora transbordar, pode ocorrer perda de dados.

2.5 DMA (Acesso direto a memria)


O acesso direto a memria (DMA) apresenta o seguinte esquema:
Memria

CPU Dispositivo E/S

Instrues de E/S

Figura 10- DMA

Utilizado para dispositivos de E/S de alta velocidade capazes de transmitir informao com velocidades prximas da memria; O controlador do dispositivo transfere blocos de dados do buffer diretamente para a memria principal sem a interveno da CPU; Somente uma interrupo gerada por bloco, ao contrrio de uma interrupo por byte.

2.6 Hierarquia de memria


Para o correto e eficaz funcionamento da manipulao das informaes (instrues de um programa e dados) para a memria de um computador, verifica-se a necessidade de se ter, em um mesmo computador, diferentes tipos de memria. Para certas atividades, por exemplo, fundamental que a transferncia de informaes seja a mais rpida possvel. o caso das atividades realizadas internamente no processador central, onde a velocidade primordial, porm a quantidade de bits a ser manipulada muito pequena (em geral, corresponde quantidade de bits necessria para representar um nico valor um nico dado). Isso caracteriza um tipo de memria diferente, por exemplo, daquele em que a capacidade da memria (disponibilidade de espao para guardar informaes) mais importante que a sua velocidade de transferncia. Ainda em relao ao tipo de alta velocidade e pequena quantidade de bits armazenveis, que se usa na UCP, existem variaes decorrentes do tipo de tecnologia utilizada na fabricao da memria. Devido a essa grande variedade de tipos de memria, no possvel implementar um sistema de computao com uma nica memria. Na realidade, h muitas memrias no computador, as quais se interligam de forma bem estruturada, constituindo um sistema em si, parte do sistema global de computao, podendo ser denominado subsistema de memria. Esse subsistema projetado de modo que seus componentes sejam organizados hierarquicamente, conforme mostrado na estrutura em forma de pirmide da Figura 11. A pirmide em questo projetada com uma base larga, que simboliza a elevada capacidade, o tempo de uso e o custo do componente que a representa.

11

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Figura 11 - Hierarquia de memrias.

A seguir sero definidos os principais parmetros para anlise das caractersticas de cada tipo de memria componente da hierarquia apresentada na Figura 11. O valor maior (base) ou menor (pico) de algum parmetro foi a causa da utilizao de uma pirmide para representar a hierarquia do sistema de memria de um computador. Tempo de acesso - indica quanto tempo a memria gasta para colocar uma informao no barramento de dados aps uma determinada posio ter sido endereada. Isto , o perodo de tempo decorrido desde o instante em que foi iniciada a operao de acesso (quando a origem - em geral a CPU - passa o endereo de acesso para o sistema de memria) at que a informao requerida (instruo ou dado) tenha sido efetivamente transferida. um dos parmetros que pode medir o desempenho da memria. Pode ser chamado de tempo de acesso para leitura ou simplesmente tempo de leitura. Capacidade - a quantidade de informao que pode ser armazenada em uma memria; a unidade de medida mais comum o byte, embora tambm possam ser usadas outras unidades como clulas (no caso de memria principal ou cache), setores (no caso de discos) e bits (no caso de registradores). Dependendo do tamanho da memria, isto , de sua capacidade, indica-se o valor numrico total de elementos de forma simplificada, atravs da incluso de K (kilo), M (mega), G (giga) ou T (tera). Volatilidade - memrias podem ser do tipo voltil ou no voltil. Uma memria no voltil a que retm a informao armazenada quando a energia eltrica desligada. Memria voltil aquela que perde a informao armazenada quando a energia eltrica desaparece (interrupo de alimentao eltrica ou desligamento da chave ON/OFF do equipamento). Custo - o custo de fabricao de uma memria bastante variado em funo de diversos fatores, entre os quais se pode mencionar principalmente a tecnologia de fabricao, que redunda em maior ou menor tempo de acesso, ciclo de memria, quantidade de bits em certo espao fsico e outros. Uma boa unidade de medida de custo o preo por byte armazenado, em vez do custo total da memria em si. Isso porque, devido s diferentes capacidades, seria irreal considerar, para comparao, o custo pelo preo da memria em si, naturalmente diferente, e no da unidade de armazenamento (o byte), igual para todos os tipos.

2.7 Proteo de hardware


Em relao a proteo de hardware, tem-se os seguintes focos: Operao em dois modos (dual-mode operation); Proteo de E/S; Proteo de memria; Proteo da CPU;

12

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto 2.7.1 Operao em dois modos

O compartilhamento de recursos de sistema requer que o sistema operacional garanta que um programa incorreto no possa causar danos execuo de outros programas. O hardware deve suportar a diferenciao entre pelo menos dois modos de operao: 1) Modo usurio: quando a execuo est sendo feita em nome de um usurio; 2) Modo monitor (privilegiado): tambm conhecido como modo supervisor ou modo de sistema; ativado quando da execuo do prprio sistema operacional. O hardware utiliza um bit (mode bit) que indica qual o modo corrente: monitor (0) ou usurio (1). Quando uma interrupo ou falha ocorre o hardware passa para o modo monitor.
set user mode

Moni tor

User

Interrupo / falha

Figura 12 - Operaes de dois modos

As instrues privilegiadas podem ser executadas somente no modo monitor. Dessa forma se garante que somente o sistema operacional pode execut-las; ou seja, um usurio no poder alterar o sistema operacional acidentalmente ou propositalmente. 2.7.2 Operao de E/S Todas as instrues de E/S so instrues privilegiadas (s podem ser executadas no modo monitor). Deve-se garantir que um programa de usurio nunca poder ganhar controle do computador em modo monitor (por exemplo, um programa de usurio que durante a sua execuo armazena um novo endereo no vetor de interrupes). 2.7.3 Proteo de Memria Deve-se ter proteo de memria pelo menos para o vetor de interrupes e as rotinas de tratamento de interrupes. A fim de que se tenha proteo de memria, deve-se ter dois registradores extras que determinam os limites de espao de endereamento da memria que um programa pode acessar: base register: retm o menor endereo fsico legal de memria; limit register: contm o tamanho do espao acessvel. A memria fora da faixa estabelecida protegida.

13

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Figura 13 - A memria Quando est executando no modo monitor, o sistema operacional tem acesso irrestrito a todo o espao de endereamento. As instrues de carga dos registradores base e limit so instrues privilegiadas. O hardware de proteo atua conforme apresentado na Figura 14:

Figura 14 -A proteo da memria

2.7 Proteo de CPU Timer: interrompe o computador aps um perodo especificado de tempo. O timer decrementado a todo tick de relgio; quando alcana o valor zero (0), uma interrupo ocorre; O timer comumente utilizado para implementar time sharing; O timer tambm utilizado para calcular o tempo corrente; A instruo de load do timer privilegiada.

2.8 Exerccios
1.Qual a funo dos controladores de dispositivos? Por que eles possuem um buffer local? 2.O que uma interrupo? 3.Explique o grfico abaixo (Linha do Tempo de uma Interrupo para um nico Processo Gerando Sadas)4.Um programa de usurio pode alterar a rotina de tratamento de uma interrupo?

14

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

5.O grfico abaixo apresenta interrupes de I/O sncrona/assncrona, em quais situaes utilizado uma ou outra? Justifique sua resposta.

6.O que DMA? Quando utilizado? 7. Compare os dispositivos de armazenamento quanto a custo, velocidade e quantidade de informaes armazenadas. 8. Como funciona a proteo de hardware para acesso memria. 9. Se o sistema de I/O for lento, qual a conseqncia que isto acarretar para as outras aplicaes?

15

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

3 ESTRUTURAS DOS SISTEMAS OPERACIONAIS


Os sistemas operacionais variam internamente em sua constituio, sendo organizados em muitas linhas diferentes. O projeto de um novo sistema operacional uma tarefa importante. Portanto, fundamental que os objetivos do sistema sejam bem definidos antes do incio do projeto,

3.1 Componentes dos Sistemas Operacionais


possvel criar um sistema to grande e complexo quanto um sistema operacional simplesmente dividindo-o em partes menores. Cada uma dessas partes deve ser uma poro bem delineada do sistema, com entradas, sadas e funes cuidadosamente definidas. Obviamente, nem todos os sistemas tm a mesma estrutura. A seguir so descritos os componentes gerais dos sistemas operacionais. 3.1.1 Gerncia de processos Um processo um programa em execuo. Um processo precisa de certos recursos, incluindo tempo de CPU, memria, arquivos, dispositivos de E/S, para realizar suas tarefas. O SO responsvel pelas seguintes atividades com relao a gerncia de processos: - Criao e eliminao de Processos. - Suspenso e retomada de processos. Fornecimento de mecanismos para: - Sincronizao de processo - Comunicao de processo 3.1.2 Gerncia de memria principal Memria um grande array de bytes, cada um com o seu endereo. um depsito de acesso rpido de dados compartilhado pela CPU e E/S. um dispositivo de armazenamento voltil. O SO responsvel pelas seguintes atividades com relao a gerncia de memria: Manter informaes de que partes da memria esto em uso e por quem. Decidir que processos carregar quando espaos de memria esto disponveis. Alocar e liberar espao de memria quando necessrio. 3.1.3 Gerncia de arquivos Um arquivo uma coleo de informaes relacionadas definidas pelo seu criador. Arquivos representam programas e dados. O SO responsvel pelas seguintes atividades com relao a gerncia de arquivos: Criao e deleo de arquivo. Criao e deleo de diretrio. Suporte de primitivas para manipular arquivos e diretrios. Mapeamento de arquivos na memria secundria. Backup de arquivos em meios de armazenagem estveis (no voltil). 3.1.4 Gerncia do sistema de I/O Um dos objetivos do SO ocultar as peculiaridades de hardware especficos dos usurios. O sistema de E/S consiste de: Um sistema de memria intermediria (buffer, caching e spooling) Uma interface geral para drivers de dispositivos Drivers para os dispositivos de hardware especficos

16

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto Um fato importante em relao ao sistema de que apenas o driver de dispositivo conhece as peculiaridades do dispositivo ao qual foi atribudo. 3.1.5 Gerncia de armazenamento secundrio Memria principal voltil e pequena, sistema deve fornecer memria secundria para funcionar como backup da principal. Maioria dos sistemas modernos usam discos. O SO responsvel pelas seguintes atividades com relao a gerncia de disco: Gerncia de espao livre Alocao de memria Escalonamento de disco 3.1.6 Proteo de sistema Proteo refere-se a um mecanismo para controle de acesso de programas, processos, ou usurios a recursos do sistema e usurio. O mecanismo de proteo deve: Distinguir entre uso autorizado e no autorizado. Especificar os controles a serem impostos. Fornecer um meio de forar os mesmos. 3.1.7 Interpretador de comandos Um dos programas de sistema mais importantes para um sistema operacional o interpretador de comandos, que a interface entre o usurio e sistema operacional. Alguns sistemas operacionais incluem o interpretador de comandos no kernel. Outros, tais como MS-DOS e o UNIX, tratam o ele como um programa especial que fica executando quando um job iniciado ou quando um usurio entra no sistema. Por exemplo, os comandos para as seguintes atividades podem ser dados ao SO no interpretador de comandos: criao de processos e gerncia tratamento de E/S gerncia de memria secundria gerncia de memria principal acesso ao sistema de arquivos proteo rede O programa que l e interpreta comandos de controle chamado interpretador de linha de comando. No UNIX o shell. Sua funo capturar e executar o prximo comando de controle.

3.2 Estrutura dos Sistemas Operacionais


A estrutura de um Sistema Operacional est relacionada ao desenho (design) interno do sistema. Os seguintes tipos de estrutura sero examinados nas prximas sees: Sistemas Monolticos, Sistemas em Camada e Sistemas Cliente-Servidor. 3.2.1 Sistemas Monolticos Neste tipo de estrutura (Figura 15), o Sistema Operacional escrito como uma coleo de rotinas, onde cada uma pode chamar qualquer outra rotina, sempre que for necessrio. Portanto, o sistema estruturado de forma que as rotinas podem interagir livremente umas com as outras. Quando esta tcnica usada, cada rotina no sistema possui uma interface bem definida em termos de parmetros e resultados.

17

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Figura 15- Sistema Operacional monoltico

Os servios do Sistema Operacional (gerenciamento de processos, gerenciamento de memria, gerenciamento do sistema de arquivos, ...) so implementados por meio de System Calls em diversos mdulos, executando em Modo Ncleo. Mesmo que as diversas rotinas que fornecem servios estejam separadas umas das outras, a integrao de cdigo muito grande e difcil desenvolver o sistema corretamente. Como todos os mdulos (rotinas) executam no mesmo espao de endereamento, um bug em um dos mdulos pode derrubar o sistema inteiro. Evidentemente que esta uma situao indesejvel. Para construir um cdigo executvel de um SO desta natureza, todas as rotinas (ou arquivos que possuem as rotinas) so compiladas individualmente e unidas pelo linker em um cdigo executvel nico. Tal cdigo executa em Modo Ncleo. No existe ocultao de informao, o que tambm indesejvel, pois cada rotina visvel a qualquer outra. A Figura 16 mostra o processo de criao de um cdigo executvel de um SO Monoltico.

Figura 16- Gerao de Cdigo Executvel de um SO Monoltico. As caixas com borda mais grossa indicam ferramentas do ambiente de desenvolvimento.

Embora possa parecer que no h quase estruturao em um SO Monoltico, existe um pouco de estruturao quando os servios do so solicitados por meio das System Calls. Como vantagem dos SOs Monolticos pode-se afirmar que, se a implementao do sistema est completa e confivel, aps um processo de desenvolvimento em que se supe que tcnicas consagradas de 18

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto Engenharia de Software tenham sido aplicadas, a forte integrao interna dos componentes permite que detalhes de baixo nvel do hardware sejam efetivamente explorados, fazendo com um bom SO Monoltico seja altamente eficiente. Entre os SOs Monolticos esto as verses tradicionais do UNIX, incluindo o Linux, e MS-DOS. 3.2.2 Sistemas em Camada A idia por trs deste tipo de SO fazer a organizao por meio de hierarquia de camadas. O SO dividido em camadas sobrepostas, onde cada mdulo oferece um conjunto de funes que podem ser utilizadas por outros mdulos. Mdulos de uma camada podem fazer referncia apenas a mdulos das camadas inferiores. O primeiro SO construdo de acordo com esta concepo foi o THE, que foi desenvolvido na Technische Hogeschool Eindhoven na Holanda por E. W. Dijkstra (1968) e seus estudantes. O computador que executava o THE possua Memria Principal com capacidade de 32K palavras de 27 bits cada. A estrutura do THE pode ser vista na Figura 17.

Figura 17 - Estrutura do Sistema Operacional THE.

A camada 0 era responsvel pela alocao do processador entre os processos, chaveamento entre processos quando ocorria interrupes ou quando os temporizadores expiravam. Resumindo, a camada 0 fornecia a multiprogramao bsica da CPU. Acima da camada 0, o sistema consistia de processos seqenciais que podiam ser programados sem se preocupar se havia mltiplos processos executando na CPU. A camada 1 realizava o gerenciamento de memria. Ela alocava espao para os processos na Memria Principal do sistema e tambm em um Tambor (dispositivo de armazenamento magntico usado nos computadores antigamente) de 512K palavras, usado para armazenar partes de processos (pginas) para as quais no havia espao na Memria Principal. Acima da camada 1, os processos no tinham que se preocupar se eles estavam na Memria Principal ou no Tambor; a camada 1 do SO era quem tratava deste tipo de situao, trazendo as partes do software para a Memria Principal sempre quando necessrio. A camada 2 manipulava a comunicao entre cada processo e o operador do console. Um console consistia de um dispositivo de entrada (teclado) e um de sada (monitor ou impressora). A camada 3 era responsvel pelo gerenciamento dos dispositivos de E/S. Acima da camada 3, cada processo podia lidar com dispositivos de E/S abstratos, com propriedades mais agradveis, e no com os dispositivos reais em si. Na camada 4 havia os programas do usurio, e na camada 5 havia o processo do operador do sistema. O esquema de camadas do THE era, de fato, apenas um auxlio de desenho (design), pois todas as partes do sistema eram ultimamente unidas em um nico cdigo executvel. 3.2.3 Sistemas Cliente-Servidor Os Sistemas Operacionais com estrutura Cliente-Servidor so baseados em Microncleo (Microkernel). A idia neste tipo de sistema tornar o ncleo do SO o menor e o mais simples possvel (Microncleo), movendo cdigo para camadas superiores. A abordagem usual implementar a maior parte dos servios do SO em processos de usurio. Em tal implementao, o SO dividido em processos, sendo cada um responsvel por oferecer um conjunto de servios tais como: servios de arquivo (servidor de arquivos); 19

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto servios de criao de processos (servidor de processos); servios de memria (servidor de memria), etc... Para requisitar um servio, tal como ler um bloco de dados de um arquivo, um processo de usurio, conhecido como processo cliente, envia uma solicitao a um processo servidor (servidor de arquivos, neste caso), que realiza o trabalho e envia a resposta de volta ao processo cliente. A Figura 18 mostra o modelo Cliente-Servidor.

Figura 18- Modelo Cliente-Servidor

Observe na Figura 17 que diversas funes do SO esto agora sendo executadas no Modo Usurio, e no mais no Modo Ncleo, como era no caso dos Sistemas Monolticos. Somente o Microncleo do SO executa no Modo Ncleo. Ao Microncleo cabe, basicamente, permitir a comunicao entre processos clientes e servidores. Entre as vantagens apresentadas pelos Sistemas Cliente-Servidor esto o fato de, ao dividir o SO em partes onde cada parte manipula um aspecto do sistema tais como servio de arquivos, servio de processo, servio de memria entre outros, cada parte se torna menor e mais fcil de gerenciar. Alm disto, devido ao fato de que todos os processos servidores executarem em Modo Usurio, eles no tm acesso direto ao hardware da mquina. Como conseqncia, se houver um bug no processo servidor de arquivos, este servio pode deixar de funcionar, mas isto usualmente no derrubar (crash) o sistema inteiro. Se esta mesma situao ocorresse em um SO Monoltico, e possvel que o sistema sofresse conseqncias mais srias do que em um Sistema Cliente-Servidor. Uma outra vantagem do modelo Cliente-Servidor a sua adaptabilidade para usar em sistemas com processamento paralelo/distribudo. Se um processo cliente se comunica com um servidor pelo envio de mensagens, o cliente no necessita saber se a mensagem tratada localmente na sua mquina, ou se ela foi enviada por meio de uma rede para um processo servidor executando em uma mquina remota. Do ponto de vista do cliente, o mesmo comportamento ocorreu: um pedido foi requisitado e houve uma resposta como retorno. A Figura 19 mostra esta situao.

Figura 19 - Uso do Modelo Cliente-Servidor em um Sistema Paralelo ou Distribudo

Como exemplos de SO Cliente-Servidor pode-se citar o Minix, o Windows NT e o QNX.

20

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

3.3 Sistemas Monolticos versus Sistemas Cliente-Servidor


Em uma primeira anlise, uma estrutura de SO Cliente-Servidor parece ser bem melhor do que um SO Monoltico. Porm, em termos prticos, a implementao de uma estrutura Cliente-Servidor bastante complicada devido a certas funes do SO exigirem acesso direto ao hardware, como operaes de E/S. Um ncleo Monoltico, por outro lado, possui uma complexidade menor, pois todo cdigo de controle do sistema reside em um espao de endereamento com as mesmas caractersticas (Modo Ncleo). Usualmente, SOs Monolticos tendem a ser mais fceis de desenhar corretamente e, portanto, podem crescer mais rapidamente do que SOs baseados em Microncleo. Existem casos de sucesso em ambas as estruturas. Um aspecto interessante sobre qual a melhor estrutura de SO foi a discusso entre Linus Torvalds, o criador do SO Linux, e Andrew Tanenbaum, um dos principais pesquisadores na rea de SOs e criador do SO Minix. Em 1992, quando o Linux estava no seu incio, Tanenbaum decidiu escrever uma mensagem para o Newsgroup comp.os.minix, acusando justamente o Linux de ser um SO obsoleto. O ponto principal do argumento de Tanenbaum era justamente a estrutura Monoltica, considerada ultrapassada por ele, do Linux. Ele no concebia que um SO, em meados dos anos 90, fosse concebido com um tipo de estrutura que remonta a dcada de 70 (poca em que o Unix foi desenvolvido; o Unix tambm um SO Monoltico). O SO desenvolvido por Tanenbaum, Minix, apresenta estrutura baseada em Microncleo (ClienteServidor). Em sua primeira resposta Torvalds argumentou, entre vrios pontos, um aspecto no muito tcnico: o Minix no era gratuito, enquanto o Linux sim. Do ponto de vista tcnico, Torvalds concordava que um sistema com Microncleo era mais agradvel. Porm, ele acusava o Minix de no realizar corretamente o papel do Microncelo, de forma que havia problemas no que se refere a parte de multitarefa no ncleo do sistema. A discusso continuou entre ambos sobre outros conceitos associados a SOs. Para saber mais sobre este assunto, vide o link http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html#liu. Vrios anos aps tal discusso, o que pode ser afirmado que SOs Monolticos ainda conseguem atrair a ateno de desenvolvedores devido a uma complexidade menor do que Sistemas Cliente-Servidor. Tanto que o Linux hoje uma realidade, sendo um SO bastante usado em servidores em empresas e ambientes acadmicos. Os Sistemas Cliente-Servidor, porm, possuem casos de sucesso como o exemplo do sistema QNX, usado em sistemas de braos de robs nos nibus Espaciais.

3.4 Exerccios
1.Quais so os componentes de um SO ? 2.Qual a responsabilidade do SO em relao Gerncia de Processos ? 3.O que um processo ? 4.Qual a responsabilidade do SO em relao Gerncia de Memria ? 5.Qual a responsabilidade do SO em relao Gerncia de Arquivos ? 6.Qual a responsabilidade do SO em relao Gerncia de I/O ? 7.Qual a responsabilidade do componente de Proteo de Sistema ? 8.Se ocorrer uma diviso por zero, o que ocorre ? quem trata o erro ? 9.Qual a vantagem/desvantagem de desenvolver um SO na linguagem C ? 10.Qual a vantagem/desvantagem de desenvolver um SO na linguagem Assembly ? 11. Compare as abordagens em camadas e microkernel no projeto do SO?

21

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

4 PROCESSOS
Fazendo uma retrospectiva das ltimas dcadas do mercado de computao de alto desempenho, High Performance Computing (HPC), verifica-se que o fator mais constante foi a evoluo. Este mercado tem sido marcado pela rpida mudana de fornecedores, arquiteturas, tecnologias e aplicaes. Apesar desta instabilidade, a evoluo do desempenho em larga escala tem-se mostrado um processo contnuo e constante. A convergncia de desempenho entre os microcomputadores e os supercomputadores com um s processador motivou o aparecimento do processamento paralelo, que vem ultrapassar alguns limites do uniprocessamento, reduzir alguns custos (podem construir-se supercomputadores recorrendo a um conjunto de processadores normais), e tambm para facilitar a expansibilidade de um computador (bastando para isso adicionar mais processadores).

4.1 Fundamentos
O conceito de processo , certamente, o conceito mais importante no estudo de sistemas operacionais. Para facilitar o entendimento deste conceito, considere-se um computador funcionando em multiprogramao (isto , tendo vrios programas simultaneamente ativos na memria). Cada programa em execuo corresponde a um procedimento (seqncia de instrues) e um conjunto de dados (variveis utilizadas pelo programa). conveniente ter as instrues separadas dos dados, pois isso possibilita o compartilhamento do cdigo do procedimento por vrios programas em execuo (neste caso diz-se que o procedimento e reentrante ou puro). Se cada programa em execuo possui uma pilha prpria, ento os dados podem ser criados (alocados) na prpria pilha do programa. Alm das instrues e dados, cada programa em execuo possui uma rea de memria correspondente para armazenar os valores dos registradores da UCP, quando o programa, por algum motivo, no estiver sendo executado. Essa rea de memria conhecida como bloco de controle de processo -BCP (ou bloco descritor, bloco de contexto, registro de estado, vetor de estado) e, alm dos valores dos registradores da UCP, contm outras informaes. A Figura 20 mostra um BCP. Ele contm muitas informaes associadas a um processo especfico: Estado do processo: o estado pode ser pronto, execuo ou bloqueado (espera). Contador do programa: o contador indica o endereo da prxima instruo a ser executada para esse processo. Registradores de UCP: os registradores variam em nmero e tipo, dependendo da arquitetura do computador. Incluem acumuladores, registradores, ponteiros de pilha e registradores de uso geral, alm de informaes de cdigo de condio. Juntamente com o contador do programa, essas informaes de estado devem ser salvas quando ocorre uma interrupo, para permitir que o processo continue corretamente depois. Informaes de escalonamento de UCP: essas informaes incluem prioridade de processo, ponteiros para filas de escalonamento e quaisquer outros parmetros de escalonamento Informaes de gerncia de memria: essas informaes podem incluir dados como o valor dos registradores de base e limite, as tabelas de pginas ou tabelas de segmentos, dependendo do sistema de memria usado pelo sistemas operacional Informaes de contabilizao: essas informaes incluem a quantidade de UCP e tempo real usados, limites de tempo, nmeros de contas, nmeros de jobs ou processos, etc. Informaes de status de E/S: as informaes incluem a lista de dispositivos de E/S alocados para este processo, uma lista de arquivos abertos e outras informaes.

22

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto ponteiro estado do processo

Nmero do processo Contador de programa registradores limites de memria limites de arquivos abertos ...
Figura 20 Bloco de controle de processo (BCP)

Cada programa em execuo constitui um processo. Portanto, pode-se definir processo como sendo um programa em execuo, o qual constitudo por uma seqncia de instrues, um conjunto de dados e um bloco de controle de processo. Num ambiente de multiprogramao, quando existe apenas um processador na instalao, cada processo executado um pouco de cada vez, de forma intercalada. O sistema operacional aloca a UCP um pouco para cada processo, em uma ordem que no previsvel, em geral, pois depende de fatores externos aos processos, que variam no tempo (carga do sistema, por exemplo). Um processo aps receber a UCP, s perde o controle da execuo quando ocorre uma interrupo ou quando ele executa um trap, requerendo algum servio do sistema operacional. As interrupes so transparentes aos processos, pois o efeito das mesmas apenas parar, temporariamente, a execuo de um processo, o qual continuar sendo executado, mais tarde, como se nada tivesse acontecido. Um trap, por outro lado, completamente diferente, pois bloqueia o processo at que o servio requerido pelo mesmo, ao sistema operacional, seja realizado. Deve ser observado que um processo uma entidade completamente definida por si s, cujas operaes (instrues executadas) se desenvolvem no tempo, em uma ordem que funo exclusiva dos valores iniciais de suas variveis e dos dados lidos durante a execuo. Em um sistema com multiprocessamento (com mais de uma UCP), a nica diferena em relao ao ambiente monoprocessado que o sistema operacional passa a dispor de mais processadores para alocar os processos, e neste caso tem-se realmente a execuo simultnea de vrios processos. Um sistema monoprocessado executando de forma intercalada N processos pode ser visto como se possusse N processadores virtuais, um para cada processo em execuo. Cada processador virtual teria 1/N da velocidade do processador real (desprezando-se o overhead existente na implementao da multiprogramao). O overhead de um sistema operacional o tempo que o mesmo perde na execuo de suas prprias funes, como por exemplo o tempo perdido para fazer a multiplexao da UCP entre os processos. o tempo durante o qual o sistema no est produzindo trabalho til para qualquer usurio. Quando a UCP altera a execuo para outro processo, o sistema salva o estado do processo antigo e carregar o estado salvo do novo processo (Troca de contexto). A Figura 21 exemplifica a troca de contexto.

23

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto Processo A
executando

Processo B Salva Processo A

Carrega Processo B
executando

Salva Processo B Carrega Processo A


executando

Figura 21 Troca de contexto

Tanto no paralelismo fsico (real, com vrias UCP) como no lgico (virtual, uma UCP compartilhada), as velocidades relativas com que os processos acessaro dados compartilhados no podem ser previstas. Quando os processos so denominados paralelos quando eles realmente (de maneira fsica) so executados simultaneamente e so denominados concorrentes quando so disputam para serem executados no mesmo perodo de tempo em uma UCP. De acordo com o tipo de interao existente entre eles, podem ser classificados como disjuntos (no interativos), quando operam sobre conjuntos distintos de dados, ou interativos, quando tm acesso a dados comuns. Processos interativos podem ser competitivos, se competirem por recursos, e/ou cooperantes, se trocarem informaes entre si. No caso de computaes realizadas por processos interativos, como a ordem das operaes sobre as variveis compartilhadas pode variar no tempo (pois as velocidades relativas dos processos dependem de fatores externos que variam no tempo), o resultado da computao pode no depender somente dos valores iniciais das variveis e dos dados de entrada. Quando o resultado de uma computao varia de acordo com as velocidades relativas dos processos diz-se que existe uma condio de corrida (race condition). necessrio evitar condies de corrida para garantir que o resultado de uma computao no varie entre uma execuo e outra. Condies de corrida resultam em computaes paralelas errneas, pois cada vez que o programa for executado (com os mesmos dados) resultados diferentes podero ser obtidos. A programao de computaes paralelas exige mecanismos de sincronizao entre processos, e por isso a sua programao e depurao so bem mais difceis do que em programas tradicionais. A maioria das linguagens de programao existentes no permite a programao de computaes paralelas, pois cada programa gera um nico processo durante a sua execuo. Tais linguagens so denominadas seqenciais. Linguagens que permitem a construo de programas que originam vrios processos para serem executados em paralelo so denominadas linguagens de programao concorrente. Exemplos deste tipo de linguagem so: Pascal Concorrente, Modula 2, Ada, Java e algumas extenses de linguagem C. A programao concorrente, alm de ser essencial ao projeto de sistemas operacionais, tambm tem aplicaes na construo de diversos outros tipos de sistema importantes. Qualquer sistema que deva atender a requisies de servio que possam ocorrer de forma imprevisvel pode ser organizado, convenientemente, para permitir que cada tipo de servio seja realizado por um dos processos do sistema. Dessa maneira, diversos servios podero ser executados simultaneamente e a utilizao dos recursos computacionais ser, certamente, mais econmica e eficiente. Exemplos de aplicaes deste tipo so sistemas para controle on-line de informaes (contas bancrias, estoques, etc) e controle de processos externos (processos industriais, processos qumicos, rotas de foguetes, etc). Os processos durante suas execues requerem operaes de E/S que so executadas em dispositivos 24

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto muito lentos que a UCP, pois os dispositivos perifricos possuem componentes mecnicos, que funcionam a velocidades muito inferiores dos dispositivos eletrnicos que funcionam velocidade da luz. Durante o tempo em que um processo deve ficar esperando a realizao de uma operao de E/S -, a UCP pode ser entregue a outro processo. Dessa forma, a utilizao dos recursos ser mais completa e, portanto, mais econmica e mais eficiente. Se um processo passa a maior parte do tempo esperando por dispositivos de E/S, diz-se que o processo ligado a E/S (limitado por E/S ou I/O-bound). Se, ao contrrio, o processo gasta a maior parte do seu tempo usando a UCP ele dito ligado a CPU (limitado por computao ou compute-bound ou UCP-bound). Obviamente, processos I/O-bound devem ter prioridade sobre processos UCP-bound. Alm de uma melhor utilizao dos recursos, a multiprogramao permite que as requisies de servio dos usurios sejam atendidas com menores tempos de resposta. Por exemplo, na situao de um job pequeno e prioritrio ser submetido aps um job demorado j ter iniciado a execuo, a multiprogramao far com que o job pequeno seja executado em paralelo e termine muito antes do trmino do job longo. Os sistemas operacionais acionam os dispositivos de E/S atravs de instrues do tipo Start I/O (Iniciar E/S). Se o dispositivo uma unidade de disco, por exemplo, a instruo faz com que um bloco de setores do disco seja lido para a memria principal. Quando o dispositivo termina a operao, ele manda um sinal de interrupo para a UCP, indicando que est livre para realizar outra operao. Este sinal faz com que o controle da execuo v para o sistema operacional, o qual pode acionar o dispositivo para executar outra operao, antes de devolver a UCP para um processo de usurio. Durante suas execues os processos dos usurios, ocasionalmente, atravs de traps, fazem requisies ao sistema operacional (para gravar um setor de disco, por exemplo). Recebendo a requisio, o sistema operacional bloqueia o processo (deixa de dar tempo de UCP a ele) at que a operao requerida seja completada. Quando isto acontece o processo desbloqueado e volta a competir pela UCP com os demais processos. Quando um processo est realmente usando a UCP, diz-se que o mesmo est no estado executando (running). Quando est esperando pelo trmino de um servio que requereu, diz-se que est no estado bloqueado (blocked). Quando o processo tem todas as condies para ser executado e s no est em execuo porque a UCP est alocada para outro processo, diz-se que o mesmo est no estado pronto (ready). O sistema operacional mantm uma lista (fila) dos processos que esto prontos, a chamada lista de processos prontos (ready list ou ready queue). O diagrama da Figura 22 mostra como os estados de um processo podem mudar durante a execuo.
executando escalonador interrupo pronto interrupo (concluso do servio) bloqueado trap

Figura 22 - Estados sucessivos de um processo no sistema

O componente do sistema operacional que, aps o atendimento de uma interrupo ou trap, escolhe o prximo processo a ser executado denominado escalonador de processos (scheduler) ou despachador de processos (dispatcher). Em geral, um trap faz com que o processo fique bloqueado. Entretanto, em algumas ocasies especiais, quando o sistema operacional pode atender imediatamente a requisio de servio, o processo pode ser novamente despachado, no ocorrendo o bloqueio. Quando um job admitido no sistema, um processo correspondente criado e normalmente inserido 25

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto no final da fila de prontos (ready list). O processo se move gradualmente para a cabea da fila de prontos, conforme os processos anteriores a ele forem sendo usados pela UCP. Quando o processo alcana a cabea da lista, e quando a UCP torna-se disponvel, o processo dado UCP e diz-se que foi feita uma transio do estado pronto para o estado executando. A transferncia da UCP para o primeiro processo da fila de prontos chamado de escalonamento (dispatching), e executada pelo escalonador. Este transio de estado pode ser ilustrada da seguinte forma: Escalone(nomedoprocesso): pronto execuo Para prevenir que um processo monopolize o sistema acidentalmente ou propositadamente, o sistema operacional tem um relgio interno (interrupting clock ou interval timer) que faz com que o processo execute somente por um intervalo de tempo especfico ou quantum. Se o processo voluntariamente no libera a UCP antes de expirar seu intervalo de tempo, o interrupting clock gera uma interrupo, dando ao sistema operacional o controle novamente. O sistema operacional torna o processo corrente (execuo) em pronto e torna o primeiro processo da fila de pronto em corrente. Estas transies de estado so indicadas como: Tempoexpirou(nomedoprocesso): execuo pronto Escalone(nomedoprocesso): pronto execuo Se um processo corrente iniciar uma operao de E/S antes de expirar o seu quantum, o processo corrente voluntariamente libera a UCP (isto , ele se bloqueia, ficando pendente at completar a operao de E/S). Esta transio de estado : Bloqueia(nomedoprocesso): execuo bloqueado Quando terminada a operao que fez com que o estado fique bloqueado, este passa para o estado pronto. A transio que faz tal operao definida como: Acorde(nomedoprocesso): bloqueado pronto Deste modo podemos definir quatro possveis estados de transio: Escalone(nomedoprocesso): pronto execuo Tempoexpirou(nomedoprocesso): execuo pronto Bloqueia(nomedoprocesso): execuo bloqueado Acorde(nomedoprocesso): bloqueado pronto Note que somente um estado de transio inicializado pelo prprio processo a transio Block os outros trs estados de transio so inicializados por entidades externas ao processo.

4.2 O Ncleo do Sistema Operacional


Todas as operaes envolvendo processos so controladas por uma poro do sistema operacional chamada de ncleo, core, ou kernel. O ncleo normalmente representa somente uma pequena poro do cdigo que em geral tratado como sendo todo o sistema operacional, mas a parte de cdigo mais intensivamente utilizada. Por essa razo, o ncleo ordinariamente reside em armazenamento primrio (memria RAM) enquanto outras pores do sistema operacional so chamadas da memria secundria quando necessrio. Uma das funes mais importantes includas no ncleo o processamento de interrupes. Em grandes sistemas multiusurio, uma constante rajada de interrupes direcionada ao processador. Respostas rpidas a essas interrupes so essenciais para manter os recursos do sistema bem utilizados, e para prover tempos de resposta aceitveis pelos usurios. O ncleo desabilita interrupes enquanto ele responde a uma interrupo; interrupes so novamente habilitadas aps o processamento de uma interrupo estar completo. Com um fluxo permanente de interrupes, possvel que o ncleo mantenha interrupes desabilitadas por uma grande poro de tempo; isto pode resultar em respostas insatisfatrias para interrupes. Entretanto, ncleos so projetados para fazer o mnimo processamento possvel para cada interrupo, e ento passar o restante do processamento de uma interrupo para um processo apropriado do sistema que pode terminar de tratlas enquanto o ncleo continua apto a receber novas interrupes. Isto significa que as interrupes podem

26

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto ficar habilitadas durante uma porcentagem muito maior do tempo, e o sistema torna-se mais eficiente em responder a requisies das aplicaes dos usurios. Um sistema operacional normalmente possui cdigo para executar as seguintes funes: Manipulao de interrupes; Criao e destruio de processos; Troca de contexto de processos; Suspenso e reanimao de processos; Sincronizao de processos; Intercomunicao entre processos; Manipulao de BCPs; Suporte a atividades de E/S; Suporte alocao e desalocao de armazenamento; Suporte ao sistema de arquivos; Suporte a um mecanismo de chamada/retorno de procedimentos; Suporte a certas funes do sistema de contabilizao.

4.3 Escalonamento de Processos


Os processos podem estar executando, bloqueados, ou prontos para serem executados. Quando um ou mais processos esto prontos para serem executados, o sistema operacional deve decidir qual deles vai ser executado primeiro. A parte do sistema operacional responsvel por essa deciso chamada escalonador, e o algoritmo usado para tal chamado de algoritmo de escalonamento. Os algoritmos de escalonamento dos primeiros sistemas, baseados em cartes perfurados e unidades de fita, era simples: ele simplesmente deveria executar o prximo job na fita ou leitora de cartes. Em sistemas multi-usurio e de tempo compartilhado, muitas vezes combinados com jobs batch em background, o algoritmo de escalonamento mais complexo. Antes de vermos os algoritmos de escalonamento, vejamos os critrios com os quais eles devem se preocupar: 1. Justia: fazer com que cada processo ganhe seu tempo justo de UCP; 2. Eficincia: manter a UCP ocupada 100% do tempo (se houver demanda); 3. Tempo de Reposta: minimizar o tempo de resposta para os usurios interativos; 4. Tempo de Turnaround: minimizar o tempo que usurios batch devem esperar pelo resultado; 5. Throughput: maximizar o nmero de jobs processados por unidade de tempo. Um pouco de anlise mostrar que alguns desses objetivos so contraditrios. Para minimizar o tempo de resposta para usurios interativos, o escalonador no deveria rodar nenhum job batch (exceto entre 3 e 6 da manh, quando os usurios interativos esto dormindo). Usurios batch no gostaro deste algoritmo, porque ele viola a regra 4. Uma complicao que os escalonadores devem levar em considerao que cada processo nico e imprevisvel. Alguns passam a maior parte do tempo esperando por E/S de arquivos, enquanto outros utilizam a UCP por horas se tiverem chance. Quando o escalonador inicia a execuo de um processo, ele nunca sabe com certeza quanto tempo vai demorar at que o processo bloqueie, seja por E/S, seja em um semforo, seja por outro motivo. Para que um processo no execute tempo demais, praticamente todos os computadores possuem um mecanismo de relgio (clock) que causa uma interrupo periodicamente. Freqncias de 50 ou 60 Hz so comuns, mas muitas mquinas permitem que o sistema operacional especifique esta freqncia. A cada interrupo de relgio, o sistema operacional assume o controle e decide se o processo pode continuar executando ou se j ganhou tempo de UCP suficiente. Neste ltimo caso, o processo suspenso e a UCP dada a outro processo. A estratgia de permitir ao SO temporariamente suspender a execuo de processos que estejam querendo executar chamada de escalonamento preemptivo, em contraste com o mtodo execute at o

27

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto fim dos antigos sistemas batch. Como vimos at agora, em sistemas preemptivos um processo pode perder a UCP a qualquer momento para outro processo, sem qualquer aviso. Isto gera condies de corrida e a necessidade de semforos, contadores de eventos, monitores, ou algum outro mtodo de comunicao interprocessos. Por outro lado, uma poltica de deixar um processo rodar enquanto desejar pode fazer com que um processo que demore uma semana para executar deixe o computador ocupado para os outros usurios durante este tempo. 4.3.1 Escalonamento FCFS ou FIFO

Talvez a disciplina de escalonamento mais simples que exista seja a First-In-First-Out - FIFO (o primeiro a entrar o primeiro a sair). Vrios autores referem-se a este algoritmo como FCFS - FirstCome-First-Served (o primeiro a chegar o primeiro a ser servido). Processos so escalonados de acordo com sua ordem de chegada na fila de processos prontos do sistema. Uma vez que um processo ganhe a UCP, ele roda at terminar. FIFO uma abordagem no preemptiva. Ela justa no sentido de que todos os jobs so executados, e na ordem de chegada, mas injusta no sentido que grandes jobs podem fazer pequenos jobs esperarem, e jobs sem grande importncia fazem jobs importantes esperar. FIFO oferece uma menor varincia nos tempos de resposta e portanto mais previsvel do que outros esquemas. Ele no til no escalonamento de usurios interativos porque no pode garantir bons tempos de resposta. Sua natureza essencialmente a de um sistema batch. 4.3.2 Escalonamento Round Robin

Um dos mais antigos, simples, justos, e mais largamente utilizados dos algoritmos de escalonamento o round robin. Cada processo recebe um intervalo de tempo, chamado quantum, durante o qual ele pode executar. Se o processo ainda estiver executando ao final do quantum, a UCP dada a outro processo. Se um processo bloqueou ou terminou antes do final do quantum, a troca de UCP para outro processo obviamente feita assim que o processo bloqueia ou termina. Round Robin fcil de implementar. Tudo que o escalonador tem a fazer manter uma lista de processos runnable (que desejam executar), conforme a Figura 23(a). Quando o quantum de um processo acaba, ele colocado no final da lista, conforme a Figura 23(b).
Processo corrente Prximo processo Processo corrente Prximo processo

D
(a)

G
(b)

Figura 23 - Escalonamento Round Robin. (a) Lista de processos a executar. (b) Lista de processos a executar depois de terminado o quantum de B

Assim, o algoritmo round robin semelhante ao FIFO, mas com a diferena de que preemptivo: os processos no executam at o seu final, mas sim durante um certo tempo, um por vez. Executando sucessivamente em intervalos de tempo o job acaba por terminar sua execuo em algum momento. O nico aspecto interessante sobre o algoritmo round robin a durao do quantum. Mudar de um processo para outro requer um certo tempo para a administrao salvar e carregar registradores e mapas de memria, atualizar tabelas e listas do Sistema Operacional, etc. Suponha esta troca de contexto dure 5 ms. Suponha tambm que o quantum est ajustado em 20 ms. Com esses parmetros, aps fazer 20 ms de trabalho til, a UCP ter que gastar 5 ms com troca de contexto. Assim, 20% do tempo de UCP gasto com o overhead administrativo. Para melhorar a eficincia da UCP, poderamos ajustar o quantum para digamos, 500 ms. Agora o

28

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto tempo gasto com troca de contexto menos do que 1 %. Mas considere o que aconteceria se dez usurios apertassem a tecla <ENTER> exatamente ao mesmo tempo, disparando cada um processo. Dez processos sero colocados na lista de processo aptos a executar. Se a UCP estiver ociosa, o primeiro comear imediatamente, o segundo no comear antes de segundo depois, e assim por diante. O azarado do ltimo processo somente comear a executar 5 segundos depois do usurio ter apertado <ENTER>, isto se todos os outros processos tiverem utilizado todo o seu quantum. Muitos usurios vo achar que o tempo de resposta de 5 segundos para um comando simples muita coisa. Concluso: ajustar um quantum muito pequeno causa muitas trocas de contexto e diminui a eficincia da UCP, mas ajust-lo para um valor muito alto causa um tempo de resposta inaceitvel para pequenas tarefas interativas. Um quantum em torno de 100 ms freqentemente um valor razovel. 4.3.3 Escalonamento com Prioridades

O algoritmo round robin assume que todos os processos so igualmente importantes. Freqentemente, as pessoas que possuem e operam centros de computao possuem um pensamento diferente sobre este assunto. Em uma Universidade, por exemplo, as prioridades de processamento normalmente so para a administrao em primeiro lugar, seguida de professores, secretrias e finalmente estudantes. A necessidade de se levar em conta fatores externos nos leva ao escalonamento com prioridades. A idia bsica direta: cada processo possui uma prioridade associada, e o processo pronto para executar com a maior prioridade quem ganha o processador. Para evitar que processos com alta prioridade executem indefinidamente, o escalonador pode decrementar a prioridade do processo atualmente executando a cada tick de relgio (isto , a cada interrupo de relgio). Se esta ao fizer com que a prioridade do processo se torne menor do que a prioridade do processo que possua a segunda mais alta prioridade, ento uma troca de processos ocorre. Prioridades podem ser associadas a processos estaticamente ou dinamicamente. Em um computador militar, por exemplo, processos iniciados por generais deveriam comear com a prioridade 100, processos de coronis com 90, de majores com 80, de capites com 70, de tenentes com 60, e assim por diante. Alternativamente, em um centro de computao comercial (incomum hoje em dia), jobs de alta prioridade poderiam custar 100 dlares por hora, os de mdia prioridade a 75 por hora, e os de baixa prioridade a 50 por hora. O sistema operacional UNIX possui um comando, nice, que permite a um usurio voluntariamente reduzir a prioridade de um processo seu, de modo a ser gentil (nice) com os outros usurios. Na prtica, ningum utiliza este comando, pois ele somente permite baixar a prioridade do processo. Entretanto, o superusurio UNIX pode aumentar a prioridade de processos. Prioridades podem tambm ser atribudas dinamicamente pelo sistema para atingir certos objetivos do sistema. Por exemplo, alguns processos so altamente limitados por E/S, e passam a maior parte do tempo esperando por operaes de E/S. Sempre que um desses processos quiser a UCP, ele deve obt-la imediatamente, para que possa iniciar sua prxima requisio de E/S, e deix-la sendo feita em paralelo com outro processo realmente processando. Fazer com que processos limitados por E/S esperem um bom tempo pela UCP significa deix-los um tempo demasiado ocupando memria. Um algoritmo simples para prover um bom servio a um processo limitado por E/S ajustar a sua prioridade para 1/f, onde f a frao do ltimo quantum de processador que o processo utilizou. Um processo que utilizou somente 2 ms do seu quantum de 100 ms ganharia uma prioridade 50, enquanto um processo que executou durante 50 ms antes de bloquear ganharia prioridade 2, e um processo que utilizou todo o quantum ganharia uma prioridade 1. freqentemente conveniente agrupar processos em classes de prioridade e utilizar escalonamento com prioridades entre as classes, mas round robin dentro de cada classe. Por exemplo, em um sistema com quatro classes de prioridade, o escalonador executa os processos na classe 4 segundos a poltica round robin at que no haja mais processos na classe 4. Ento ele passa a executar os processos de classe 3 tambm segundo a poltica round robin, enquanto houverem processos nesta classe. Ento executa processos da classe 2 e assim por diante. Se as prioridades no forem ajustadas de tempos em tempos, os processos nas classes de prioridades mais baixas podem sofrer o fenmeno que chamamos starvation (o

29

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto processo nunca recebe o processador, pois sua vez nunca chega). 4.3.4 Filas Multi-nvel com retorno

Quando um processo ganha a UCP, especialmente quando ele ainda no pde estabelecer um padro de comportamento, o escalonador no tem idia da quantidade de tempo de UCP que ele precisa e que precisar. Processos I/O bound geralmente usam a UCP brevemente antes de gerar em pedido de I/O. Processos CPU bound poderiam utilizar a UCP por horas se ela estivesse disponvel para eles em um ambiente no preemptivo. Um mecanismo de escalonamento deveria: favorecer pequenos jobs; favorecer jobs I/O bounds para atingir uma boa utilizao dos dispositivos de E/S; e determinar a natureza de um job to rpido quanto possvel e escalonar o job de acordo. Filas multi-nvel com retorno (Multilevel feedback queues) fornecem uma estrutura que atinge esses objetivos. O esquema ilustrado na Figura 24:
Nvel 1 (FIFO) Preempo Usa a CPU Preempo Trmino Usa a CPU Trmino

Nvel 2 (FIFO)

Nvel n (round robin) Preempo

Usa a CPU

Trmino

Figura 24 - Filas Multinvel com Retorno

Um novo processo entra na rede de filas ao final da fila do topo. Ele se move atravs desta fila segundo uma poltica FIFO at que ganhe a UCP. Se o job termina ou desiste da UCP para esperar um trmino de E/S ou outro evento, ele deixa a rede de filas. Se o quantum expira antes do processo voluntariamente desistir da UCP, o processo colocado de volta no final da fila um nvel abaixo. O processo avana nesta fila, e em algum momento atinge a cabea da fila. No momento em que no houver processos na primeira fila, ele ganha a UCP novamente. Se ele ainda utiliza todo o quantum, ele vai descendo para as filas de nveis inferiores. Normalmente, a fila de nvel mais baixo possui uma poltica round robin para que todos os processos terminem de executar de uma maneira ou outra. Em muitos sistemas de filas multi-nvel, o quantum dado ao processo conforme ele se move para as filas de nveis inferiores aumentado. Assim, quanto mais um processo permanece no sistema de filas, maior o seu quantum. Entretanto ele passa a no ganhar a UCP com tanta freqncia, porque as filas superiores possuem prioridade maior. Um processo em uma dada fila no pode executar at que as filas superiores estejam vazias. Um processo em execuo suspenso em favor de um processo que chegue em

30

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto uma fila superior. Considere como tal mecanismo responde a diferentes tipos de processos. O mecanismo deveria favorecer processos limitados por E/S para atingir boa utilizao dos dispositivos e bons tempos de resposta aos usurios interativos. Realmente isso funciona porque um processo limitado por E/S vai entrar na primeira fila e rapidamente ganhar a UCP. O quantum da primeira fila ajustado para que a maioria dos jobs limitados por E/S tenham tempo de fazer sua requisio de E/S. Quando o processo faz a requisio de E/S, ele deixa a rede de filas, tendo recebido o tratamento desejado. Agora considere um processo limitado por UCP que necessita de um grande tempo de UCP. Ele entra a rede de filas no nvel mais alto, recebendo rapidamente seu primeiro quantum de UCP, mas quando ele expira, o processo movido para a fila inferior. Agora o processo tem prioridade inferior aos da fila superior, mas eventualmente ele recebe a UCP, ganhando um quantum maior do que o anterior. Conforme o processo ainda precise de UCP, ele vai caminhando pelas filas, at chegar fila de mais baixo nvel, onde ele circula por uma fila round robin at que tenha terminado. Filas Multi-nvel com retorno so ideais para separar processos em categorias baseadas na sua necessidade por UCP. Em um sistema de tempo compartilhado, cada vez que o processo deixe a rede de filas, ele pode ser marcado com a identificao do nvel da fila onde ele esteve pela ltima vez. Quando o processo reentra no sistema de filas, ele pode ser enviado diretamente para a fila onde ele anteriormente completou sua execuo, de forma que um processo retornando para as filas no interfira no desempenho dos processos das filas de nveis mais altos. Se processos so sempre colocados de volta na rede de filas no nvel mais alto que eles ocuparam da ltima vez que estiveram no sistema de filas, ser impossvel para o sistema responder a mudanas no processo, como por exemplo, deixando de ser limitado por UCP para ser limitado por E/S. Este problema pode ser resolvido marcando tambm o processo com o seu tempo de permanncia na rede de filas na ltima vez em que l esteve. Assim, quando o processo reentra no sistema de filas, ele pode ser colocado no lugar correto. Dessa forma, se o processo est entrando em uma nova fase na qual ela deixa de ser limitado por UCP para ser limitado por E/S, inicialmente ele vai sofrer uma penalidade pelo sistema, mas da prxima vez o algoritmo perceber a mudana de comportamento do processo. Uma outra maneira de responder a mudanas no comportamento de um processo coloc-lo em um nvel de filas cima do qual esteve se ele voluntariamente desistir da UCP antes do trmino do seu quantum. O mecanismo de filas multi-nvel com retorno um bom exemplo de um mecanismo adaptativo, que responde a mudanas de comportamento do sistema que ele controla. Mecanismos adaptativos normalmente requerem um maior overhead do que os no adaptativos, mas a sensibilidade a mudanas torna o sistema mais gil e justifica o overhead adicional. Uma variao comum deste algoritmo ter os processos circulando em vrias filas round robin. O processo circula pela primeira fila um certo nmero de vezes, depois desce um nvel, circulando um nmero maior de vezes, e assim por diante. 4.3.5 Escalonamento Menor tarefa Primeiro

Menor tarefa primeiro (Shortest-job-first) um algoritmo no preemptivo no qual o job na fila de espera com o menor tempo total estimado de processamento executado em seguida. O escalonamento de menor tarefa primeiro reduz o tempo mdio de espera sobre o algoritmo FIFO. Entretanto, os tempos de espera tm uma varincia muito grande (so mais imprevisveis) do que no algoritmo FIFO, especialmente para grandes tarefas. O escalonamento de menor tarefa primeiro favorece as tarefas pequenas em prejuzo dos jobs maiores. Muitos projetistas acreditam que quanto mais curta a tarefa, melhor servio ele deveria receber. No h um consenso universal quanto a isso, especialmente quando prioridades de tarefas devem ser consideradas. O escalonamento de menor tarefa primeiro seleciona a tarefa para servio de uma maneira que garante que a prxima tarefa ir completar e deixar o sistema o mais cedo possvel. Isto tende a reduzir o nmero de tarefas esperando, e tambm reduz o nmero de tarefas esperando atrs de grandes tarefas.

31

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto Como resultado, o escalonamento de menor tarefa primeiro pode minimizar o tempo mdio de espera conforme eles passam pelo sistema. O problema bvio com o escalonamento de menor tarefa primeiro que ele requer um conhecimento preciso de quanto tempo uma tarefa demorar para executar, e esta informao no est usualmente disponvel. O melhor que o escalonamento de menor tarefa primeiro pode fazer se basear na estimativa do usurio de tempo de execuo. Em ambientes de produo onde as mesmas tarefas rodam regularmente, pode ser possvel prover estimativas razoveis. Mas em ambientes de desenvolvimento, os usurios raramente sabem durante quanto tempo seus programas vo executar. Basear-se nas estimativas dos usurios possui uma ramificao interessante. Se os usurios sabem que o sistema est projetado para favorecer tarefas com tempos estimados de execuo pequenos, eles podem fornecer estimativas com valores menores que os reais. O escalonador pode ser projetado, entretanto, para remover esta tentao. O usurio pode ser avisado previamente que se o job executar por um tempo maior do que o estimado, ele ser abortado e o usurio ter que ser cobrado pelo trabalho. Uma segunda opo rodar a tarefa pelo tempo estimado mais uma pequena percentagem extra, e ento salvlo no seu estado corrente de forma que possa ser continuado mais tarde. O usurio, claro, teria que pagar por este servio, e ainda sofreria um atraso na completude de sua tarefa. Outra soluo rodar o job durante o tempo estimado a taxas de servios normais, e ento cobrar uma taxa diferenciada (mais cara) durante o tempo que executar alm do previsto. Dessa forma, o usurio que fornecer tempos de execuo sub-estimados pode pagar um preo alto por isso. O escalonamento de menor tarefa primeiro , assim como FIFO, no preemptivo e portanto no til para sistemas de tempo compartilhado nos quais tempos razoveis de resposta devem ser garantidos. A Figura 25mostra exemplifica dois escalonamentos quando h vrios jobs com prioridades iguais e com tempo de processamento conhecido inicialmente (processo A = 8 minutos; processo B = 4 minutos; processo C = 4 minutos; processo D = 4 minutos). Inicialmente eles so escalonados para serem executados seqencialmente - FIFO (tempo mdio = 14 minutos); e em seguida os menores so colocados serem executados primeiro (tempo mdio = 11 minutos). Assim, o escalonamento de menor tarefa primeiro conduz a resultados timos quando todos os jobs estiverem disponveis ao mesmo tempo.
8 4 4 4 4 4 4 8

B C D

B C D A
Mdia = 11 minutos B = 4 minutos C = 8 minutos D = 12 minutos A = 20 minutos
Figura 25- Shortest-job-first

Mdia = 14 minutos A = 8 minutos B = 12 minutos C = 16 minutos D = 20 minutos

4.4 Exerccios - Reviso


1.Quais as diferenas entre interrupes de hardware e de software? 2.Explique todos os passos que ocorrem quando h uma interrupo de hardware. 3.Cada processo possui o seu prprio bloco de controle de processo ? Se sim, explique as informaes contidas nele. 4.Explique os passos que ocorrem em uma troca de contexto. 5.Explique o que um processo limitado por E/S (I/O bound) de processo limitado por computao (UCP-bound). Qual dos dois deve receber prioridade de escalonamento ? Explique. 6.Quais so os possveis estados de um processo ? Explique as mudanas de estado. 32

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto 7.Qual a funo do escalonador de processos ? 8.Explique os seguintes algoritmos de escalonamento e as suas vantagens/desvantagens : FIFO, Round Robin, Prioridades, Filas-mlti-nvel com retorno, Escalonamento com prazos e o de Menor tarefa primeiro. 9.Explique os critrios que devem ser considerados na escolha de um algoritmo de escalonamento. 10.Como o sistema operacional utiliza o relgio interno para prevenir que um processo monopolize o sistema?

4.5

Comunicao e Sincronizao entre Processos.

comum processos que executam concorrentemente (em sistemas multiprogramado ou multiprocessador) compartilharem recursos do sistema, como arquivos, registradores, memria, processadores e outros dispositivos. Esses recursos so compartilhados por dois motivos: ou por disputa/competio ou por que so utilizados como meio comum para comunicao (buffers) entre processos cooperantes. Seja qual for o motivo pelo qual o recurso est sendo compartilhado, dever existir uma maneira de sincronizao dos processos concorrentes para garantir a integridade dos dados durante o acesso simultneo. Para realizar esta sincronizao, os processos tero que de certa forma trocarem algumas informaes. Uma maneira simples e geral de realizar esta sincronizao est na restrio de permitir, somente a um processo por vez, obter ou utilizar o recurso compartilhado. Esta restrio conhecida como excluso mtua, e os trechos do cdigo de cada processo que usam o recurso compartilhado e que so executados um por vez so denominados sees crticas ou regies crticas. Uma vez que existam mtodos de sincronizao que garantam a excluso mtua sobre recursos compartilhados, pode-se ento implementar mecanismos de comunicao, utilizando buffer(s) para a troca de informaes. De certa forma, esta comunicao entre os processos tambm uma forma de sincronizao, em um nvel de abstrao maior, relacionada com o andamento dos processos. Pode-se ento generalizar e dizer que a comunicao entre processos est associada a duas formas de sincronizao: uma relacionada com o acesso controlado s variveis compartilhadas (disputa/competio), e outra, mais geral, relacionada como o andamento dos processos (cooperao). Para todas as formas de mecanismos que possam ser utilizados para qualquer tipo de sincronizao ou para qualquer tipo de comunicao so denominadas de: mecanismos de comunicao e sincronizao entre processos. Questes 1. O que uma varivel compartilhada, por que ela existe e qual o problema gerado em torna dela? 2. Qual a relao que existe entre processos cooperantes e excluso mtua? 4.5.1 O Problema do Produtor e Consumidor sobre um Buffer Circular. Para exemplificar as implicaes do compartilhamento de recursos para processos concorrentes, ser apresentado o problema do produtor e consumidor. Neste problema existe um processo produtor e de um processo consumidor, ambos atuando concorrentemente sobre um buffer compartilhado (Figura 26).

33

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

sincronizao Produtor dados Buffer


Figura 26 -Produtor x Consumidor

Consumidor

dados

Como o produtor e o consumidor podero ser executados concorrentemente, ento existe a possibilidade de os dois tentarem realizar simultaneamente depsito e retirada de mensagens no buffer, assim algumas restries devem ser impostas: 1. O produtor no poder exceder a capacidade finita do buffer; 2. Se o produtor tentar depositar uma mensagem no buffer cheio, ele ser suspenso at que o consumidor retire pelo menos uma mensagem do buffer; 3. Se o consumidor tentar retirar uma mensagem do buffer vazio, ele ser suspenso at que o produtor deposite pelo menos uma mensagem no buffer. Desta maneira, o acesso ao buffer (recurso compartilhado) ser feito pelas operaes depositar e retirar colocadas respectivamente nos processos produtor e consumidor. Essas operaes devero estar associadas com mecanismos de comunicao e sincronizao de forma tal que as restries estabelecidas pelo problema sejam plenamente satisfeitas. 4.5.1.1 Problemas de Compartilhamento de Recursos 4.5.1.1.1 Compartilhamento de um arquivo em disco Este programa l o registro do cliente no arquivo (Reg_Cliente), l o valor a ser depositado ou retirado e atualiza o saldo
Read (Arq_contas, Reg_cliente); Readln (valor_Dep_Ret); Reg_cliente.Saldo:= Reg_cliente.Saldo+Valor_Dep_Ret; Write (Arq_Contas, Reg_Cliente);

Agora, imaginem dois caixas diferentes atualizando o saldo de um mesmo cliente simultaneamente. Caixa comando saldo arquivo valor dep/ret saldo memria 1 read 1.000 * 1.000 1 readln 1.000 -200 1.000 1 := 1.000 -200 800 2 read 1.000 * 1.000 2 readln 1.000 300 1.000 2 := 1.000 300 1.300 1 write 800 -200 800 2 write 1.300 300 1.300 4.5.1.1.2 Compartilhamento de uma varivel em memria Suponha dois processos A e B estejam executando um comando de atribuio, onde o processo A some 1 varivel X, e o processo B diminua 1 da mesma varivel que est sendo compartilhada. Considere inicialmente X=2
Processo A Processo B

34

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


x:= x+1; load x, r1 add 1, r1 store r1, x Processo A A B B A B x:= x-1 load x, r2 sub 1, r2 store r2, x Comando load x, r1 add 1, r1 load x, r2 sub 1, r2 store r1, x store r2, x x 2 2 2 2 r1 2 3 * * 3 1 r2 * * 2 1 3 *

* 1

Em qualquer situao, onde dois ou mais processos tenham acesso a um mesmo recurso compartilhado, devam existir mecanismos de controle que evitem esses tipos de problemas. A parte do programa onde necessria a excluso mtua, ou seja, onde o dado compartilhado acessado denominada regio crtica. A excluso mtua consiste em impedir que dois ou mais processos acessem algum dado compartilhado simultaneamente 4.5.2 Solues de hardware. Antes das solues de software para o problema da excluso mtua serem examinadas, sero apresentadas duas solues de hardware para o mesmo problema. As solues de hardware so importantes porque criam mecanismos que permitem a implementao das solues de software. A 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. Como a mudana de contexto s pode ser realizada atravs de interrupes, o processo que as desabilitou ter acesso exclusivo garantido.
BEGIN Desabilita_Interrupes; Regio_Crtica; Habilita_Interrupes; END;

Esse mecanismo inconveniente por vrios motivos. O maior deles acontece, quando o processo que desabilitou as interrupes no torna a habilit-las. Nesse caso, o sistema provavelmente ter seu funcionamento seriamente comprometido. No entanto, pode ser til ao sistema operacional, quando ele necessita manipular estruturas de dados compartilhadas do sistema, como listas de processos. Dessa forma, o sistema garante que no ocorrero problemas de inconsistncia em seus dados. Uma outra opo, a existncia de uma instruo especial, que permite ler uma varivel, armazenar seu contedo em uma outra rea e atribuir um novo valor a essa varivel. Esse tipo de instruo chamada test-and-set, e caracterizada pela execuo sem interrupo, ou seja, uma instruo indivisvel ou atmica. Assim, no existe a possibilidade de dois processos estarem manipulando uma varivel compartilhada ao mesmo tempo, possibilitando a implementao da excluso mtua. Na execuo da instruo test-and-set o valor lgico da varivel Y copiado para X, e atribudo para varivel Y o valor lgico true (verdadeiro). Para coordenar o acesso concorrente a um recurso, esta instruo utiliza uma varivel lgica global denominada Bloqueio. Quando a varivel Bloqueio for false (falsa), qualquer processo pode alterar seu valor para verdadeiro, atravs da instruo test-and-set e assim, acessar ao 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;

35

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


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 True; End; Procedure Processo_B; Var Pode_B; Boolean; Begin Repeat Pode_B:=true; While (Pode_B) Do test_and_set (Pode_B,Bloqueio); Regiao_Critica_B; Bloqueio:=False; Until True; End;

Begin Bloqueio:= False; Cobegin Processo_A; Processo_B Coend; End.

Num ambiente mutiprogramado, a inibio de interrupo ao longo de um trecho de programa suficiente para implementar excluso mtua no acesso memria compartilhada, eliminando-se temporariamente a possibilidade de comutao de processos. J num ambiente multiprocessador, torna-se necessrio o uso de um mecanismo do tipo test_and_set, uma vez que as interrupes, atuando individualmente em cada processador, no conseguem impor uma limitao afetiva no acesso memria compartilhada. 4.5.3 Solues de software Alm da excluso mtua, que soluciona os problemas do compartilhamento de recursos, existem alguns fatores fundamentais que devero ser atendidos: Dois ou mais processos no podem estar simultaneamente dentro de suas regies crticas correspondentes O nmero de processadores e o tempo de execuo dos processos devem ser irrelevantes. Nenhum processo que esteja rodando fora de sua regio crtica pode bloquear a execuo de outro processo Nenhum processo pode ser obrigado a esperar indefinidamente para entrar na regio crtica Um dos principais problemas existentes nas solues j apresentadas o problema da espera ocupada (busy wait). Na espera ocupada, toda vez que um processo tenta entrar em sua regio crtica e impedido, por j existir outro processo acessando o recurso, ele fica em looping, testando uma condio, at que lhe seja permitido o acesso. Dessa forma, o processo bloqueado consome tempo do processador desnecessariamente. A soluo para o problema da espera ocupada foi a introduo de comandos (primitivas) que permitissem que um processo, quando no pudesse entrar em sua regio crtica, fosse colocado no estado 36

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto de espera, sem consumir processador, at que outro processado o liberasse. Esse mecanismo passou a ser adotado nas solues seguintes. 4.5.3.1 Semforos Semforo um mecanismo de comunicao e sincronizao que envolve a utilizao de uma varivel compartilhada, denominada semforo (S), e de duas operaes primitivas indivisveis que atuam sobre ela (DOWN e UP). A varivel S poder assumir valores inteiros no negativos. Essa varivel dever ter um valor inicial maior ou igual a zero e no poder ser manipulada a no ser por meio de suas primitivas. Essas primitivas podero ser implementadas de duas formas: utilizando espera ocupada (busy wait) sobre a primitiva DOWN ou utilizando uma fila de espera (Q) associada ao semforo S. No caso de haver mais de um semforo, cada semforo Si teria uma fila Qi associada a ele. No primeiro caso, as primitivas seriam definidas do seguinte modo: DOWN(Var Si: Int) Begin While Si<=0 Do ; (* no faz nada *) Si:=Si-1; End; UP(Var Si: Int) Begin Si:=Si+1; end; No segundo caso, as primitivas seriam definidas do seguinte modo: DOWN(Var Si: Int) Begin If Si>0 Then Si:=Si-1 (* E o processo continua. *) Else Suspende_Processo(Qi); (* suspende o processo que executou *) End; (* esta primitiva, colocando em uma *) (* fila de espera Qi *) UP(Var Si: Int) Begin If Fila_Vazia(Qi) Then Si:=Si+1 Else Acorda_Processo(Qi); (* retira o processo que estava *) End; (* suspenso na fila Qi e coloca na *) (* fila dos prontos *) Exemplo 1: Este exemplo mostra uma soluo para o problema da 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. Se o Processo_A executar a instruo DOWN, faz com que o semforo seja decrementado de 1, passando a ter o valor 0. Em seguida, o Processo_A ganha o acesso a regio crtica. O Processo_B tambm executar a instruo DOWN, mas como seu valor igual a zero, ficar aguardando at que o Processo_A execute a instruo UP, ou seja, volte o valor do semforo

37

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto para 1. Seja qual for o processo que entrar primeiro na regio crtica, o problema da excluso ser resolvido. Program Testa_Semforo_1; Var S: Semforo := 1; (* inicializando o semforo *) Procedure Processo_A; Begin Repeat DOWNt(s); Regio_Crtica_A; UP(s); Until False; End; Procedure Processo_B; Begin Repeat DOWN(s); Regio_Crtica_B; UP(s); Until False; End; Begin Cobegin Processo_A; Processo_B; Coend; End. Exemplo 2: Aqui ser apresentada uma soluo para o problema do Produtor e Consumidor. O Programa utiliza 3 semforos, sendo que um utilizado para implementar a excluso mtua e 2 para a sincronizao condicional. O semfaro Mutex permite a execuo das regies crticas Depositar e Retirar de forma mutuamente exclusiva. Os semforos Vazio e Cheio representam, respectivamente, se h posies livres no buffer para serem depositadas e posies ocupadas a serem retiradas. Quando o semforo Vazio for igual a 0 (zero), significa que o buffer est cheio e o processo produtor dever aguardar at que o consumidor retire algum dado. Da mesma forma, quando o semforo Cheio for igual a 0 (zero), significa que o buffer est vazio e o consumidor dever aguardar at que o produtor grave algum dado. Em ambas as situaes, o semforo demonstra a impossibilidade de acesso ao recurso.
Program Produtor_Consumidor; Const TamBuf = 2; Type Tipo_Dado = (* tipo qualquer *); Var Vazio : semforo := TamBuf; Cheio : semforo := 0; (* Inicializao do semforo *) Mutex : Semforo := 1; Buffer : Array[1..TamBuf] of Tipo_Dado; Procedure Produtor; Var Dado : Tipo_Dado; Begin Repeat : : Produz_Dado(Dado);

38

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


DOWN(Vazio); DOWN(Mutex); Depositar(Dado,Buffer); UP(Mutex); UP(Cheio); Until False; End; Procedure Consumidor; Var Dado : Tipo_Dado; Begin Repeat DOWN(Cheio); DOWN(Mutex); Retirar(Dado,Buffer); UP(Mutex); UP(Vazio); Consome_Dado(Dado); : : Until False; End; Cobegin Produtor; Consumidor; Coend;

4.5.3.2 Monitores So mecanismos de sincronizao compostos de um conjunto de procedimentos, variveis e estrutura de dados definidos dentro de um mdulo cuja finalidade a implementao automtica da excluso mtua entre seus procedimentos. Somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante. Toda vez que um processo chamar um destes procedimentos, o monitor verifica se j existe outro processo executando algum procedimento do monitor. Caso exista, o processo fica aguardando a sua vez at que tenha permisso para execut-lo. A implementao da excluso mtua nos monitores realizada pelo compilador do programa e no mais pelo programador. Para isto ele ir colocar todas as regies crticas do programa em forma de procedimentos no monitor e o compilador se encarregar de garantir a excluso mtua destes procedimentos. A comunicao do processo com o monitor passa a ser feita atravs de chamadas a seus procedimentos e dos parmetros passados para eles. Outra caracterstica do monitor que os processos, quando no puderem acessar estes procedimentos, ficaro aguardando em uma fila de espera e enquanto isto, eles podero executar outros procedimentos. Como mostrado no cdigo a seguir o monitor no pode ser executado como uma subrotina comum. A comunicao do processo com o monitor feita unicamente atravs de chamadas aos seus procedimentos e dos parmetros passados para eles. Neste exemplo, a inicializao da varivel compartilhada X com o valor zero s acontecer uma vez (no momento da primeira ativao do monitor Regio_Crtica). O valor final de X ser 0.
PROGRAM Exemplo; MONITOR Regio_Crtica; VAR X: INTEGER; PROCEDURE Soma; BEGIN X:=X+1; END; PROCEDURE Diminui; BEGIN X:=X-1;

39

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


END; BEGIN x:=0; PARABEGIN Regio_Critica.Soma; Regio_Crtica.Diminui; PARAEND; END.

4.5.3.3 Troca de Mensagens. A troca de mensagens um mecanismo de comunicao e sincronizao que exige do sistema operacional tanto a sincronizao quanto a comunicao entre processos, ao contrrio do que acontece com os mecanismos j considerados, que exigem do sistema operacional somente as primitivas de sincronizao, deixando com o programador a sua utilizao na sincronizao e a comunicao de mensagens atravs de memria compartilhada. Este mtodo de comunicao entre processos usa as primitivas send (envia) e receive (recebe). As chamadas send e receive so normalmente implementadas como chamadas ao sistema operacional. Estas primitivas so representadas da seguinte forma:
send ( Receptor , Mensagem ); receive ( Transmissor , Mensagem );

A soluo do problema do produtor/consumidor utilizando troca de mensagens poder ser visualizado no algoritmo abaixo:

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; Cobegin Produtor;

40

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


Consumidor; Coend.

4.5.4

Deadlock: Espera sem fim.

Um processo est em deadlock quando ele est suspenso espera de uma condio que jamais ir acontecer. Por exemplo: Espera circular (Figura 27)

solicitao

Processo A

alocao

Recurso 1

Recurso 2

alocao

Processo B solicitao

Figura 27 -Deadlock

4.5.5

Problemas clssicos

4.5.5.1 Problema dos Filsofos Em uma mesa redonda esto sentados 5 filsofos. Para cada filsofo existe um prato. Entre cada 2 pratos existe um palito chins, como mostra a Figura 28. Cada filsofo gasta seu tempo pensando ou comendo. Para comer cada filsofo necessita dos 2 palitos que cercam seu prato, o da esquerda e o da direita. Cada palito compartilhado entre 2 filsofos. Faa um cdigo genrico para o filsofo(i), i=1,2..5, de forma que eles possam executar concorrentemente, de forma sincronizada, que permita a todos pensar e comer, utilizando semforo.

Figura 28 - Filsofos de glutes

4.5.5.1.1 Soluo 1 (pode gerar deadlock) errada !!!!!! O procedimento pegar_garfo espera at que o garfo especificado esteja livre, e ento aloca-o ao filsofo. Se os cincos filsofos resolverem comer ao mesmo tempo e se conseguirem o garfo a esquerda, quando forem pegar o garfo a direita acarretar uma situao de deadlock 4.5.5.1.2 Soluo 2 (pode gerar starvation) errada !!!!!! Antes de pegar o garfo da esquerda, verificamos se o garfo da direita est livre. Se no estiver, ele deve liberar o garfo da esquerda, esperar um tempo e repetir todo o processo Se todos os filsofos comearem a mesmo tempo, e notarem que o garfo a direita est ocupado, esperaro e retornaro o processo, e assim sucessivamente (starvation) 4.5.5.1.3 Soluo 3 (livre de deadlock e starvation) Utiliza-se um semforo DOWN/UP, para proteger os cincos comandos que seguem o comando pensar. Antes de iniciar a aquisio dos garfos o filsofo precisa executar um DOWN. Aps a devoluo

41

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto de um garfo, o filsofo deve executar um UP. Do ponto de vista terico adequada, mas tem um bug, somente um filsofo pode comer por vez. 4.5.5.2 Problema dos Escritores e Leitores Este problema modela acessos a uma base de dados. Suponha-ses que vrios processos concorrentes possam ler ou escrever sobre um recurso compartilhado, respeitando as seguintes restries: Quando um processo quiser escrever, somente 1 poder faz-lo e nenhum outro poder ler ou escrever. Quando um processo quiser ler, qualquer outro poder ler tambm, menos escrever. Escreva o cdigo para o processo leitor e o cdigo para o processo escritor, usando semforo, de modo que as restries sejam satisfeitas e possam executar concorrentemente. 4.5.5.2.1 Soluo Quando o primeiro leitor tiver acesso base ele executa um DOWN no semforo do banco. Os leitores subseqentes s incrementam o contador e os que deixarem decrementam o contador. O ltimo que sair executa um UP. Assim, o escritor bloqueado, se houver algum, ter acesso a base. Pode-se implementar um esquema de prioridade para os Leitor (maior prioridade) para que eles no sofram starvation.

42

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

5 GERENCIA DE MEMRIA
A organizao e o gerenciamento da memria real (tambm denominada principal, memria fsica ou memria primria) de um sistema de computador tem sido a principal influncia sobre o projeto de sistemas operacionais. Armazenamento secundrio mais comumente disco e fita fornece capacidade macia e barata para a grande quantidade de programas e dados que devem ser mantidos prontamente disponveis pra o processamento, porm lento e no diretamente acessvel por processadores. Para que sema executados e referenciados diretamente, programas e dados devem estar na memria principal. Memria: - principal: voltil, pouca capacidade e muito rpida - secundria: permanente, muita capacidade e lenta Principal funo: armazenar programas para a execuo. - o arquivo que est na memria secundria deve ser carregado para a memria principal para ser executado pelo processador.
Arquivo = programa + dados

: : programa dados : :

instruces variveis

Tipos de Gerenciamento de Memria - alocao contgua simples - alocao particionada (esttica e dinmica) - swapping - paginao - segmentao

5.1 Alocao Contgua Simples


- para sistemas monoprogramveis - memria principal dividida em 2: SO + usurio - usurio tem controle de quase toda a memria - controle de acesso fora dos limites do usurio: registrador de delimitao
registrador de delimitao SO rea p/ programa do usurio

- caso o usurio no utilize toda a memria: espao inutilizado - quando o programa no cabe na memria principal -> dividir em mdulos independentes: overlay (sobreposio) Ex: -> Programa todo: - mdulo principal - 3k - mdulo cadastro - 4k - mdulo impresso - 2k

43

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto -> memria - 10k -> SO - 2k

MP 2k 3k 4k 1k SO mdulo principal rea de overlay rea livre

cadastro 4k

impresso 2k rea livre 2k

rea ocupada pelo maior mdulo - o programador especifica que mdulos sero de overlay - overlay: permite a expanso dos limites da memria principal

Pergunta: Em um sistema monoprogramado, dispondo de uma memria fsica de 10k, como pode ser
executado um programa de 20k? Explique o mtodo. - somente se for utilizado tcnica de overlay, de forma que o mdulo principal mais o maior mdulo de overlay no devem ultrapassar 10k de memria.

5.2 Alocao Particionada


- para sistemas multiprogramveis - memria dividida em parties 5.2.1 Alocao Particionada Esttica - as parties so fixadas durante o boot, em funo do nmero e tamanho dos programas - controlado por uma tabela de parties MP tabela de parties SO Part Tam partio 1 1 2k partio 2 2 5k 3 8k partio 3 - quando os compiladores s geravam cdigo absoluto: A.P.E.Absoluta -> um programa s poderia executar em uma partio pr-estabelecida Ex: MP 1k SO 2k C A partio 1 2k 4k partio 2 5k E B 4k partio 3 8k D 6k

44

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto - se por acaso os programas A e B estivessem executando e a 3o. partio estivesse livre, C e E no poderiam executar - com a gerao do cdigo relocvel: A.P.E.Relocvel -> os programas poderiam ser carregados em qualquer posio Ex: MP SO 2k C
D 6k E 4k A B 5k 8k

poderia executar no lugar de A ou B ou de quem acabar primeiro

- uso de uma tabela de ocupao:


tabela de ocupao Part 1 2 3 Tam Ocp 2k N 5k S 8k N 1 MP SO C 2 -------3 B

- utiliza 2 registradores delimitadores -> para impedir acesso fora dos limites de cada usurio
MP SO

reg. incio reg. final

- tanto a alocao absoluta quanto a relocvel: os programas no preenchiam todos os espaos das parties -> reas livres inutilizadas -> "fragmentao" Ex: MP SO C 1k livre 6k livres A B E 3k livre sem poder 4k 4k de D utilizao 2k livre

45

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Pergunta: De que forma uma memria pode ficar totalmente preenchida (sem fragmentao) por
processos, utilizando o mtodo de Alocao Particionada Esttica? - Somente se por coincidncia, os programas preencherem a memria. 5.2.2 Alocao Particionada Dinmica - sem parties fixas - cada programa utiliza o espao que precisa, se couber - a partio seria do tamanho do prprio programa - Ex: MP
SO A F C 2k 3K 1k B 4k

MP SO B C F A 1k livre

11k

- quando os programas forem acabando aparecem a fragmentao Ex: MP


SO 4k livre D 6k C 3k livre A 1k livre 8k livre, e mesmo assim o prog. D no pode ser executado.

Solues para Diminuir a Fragmentao 1) unir parties adjacentes


MP SO 4k C A 1k 3k 2k 1k 8k livre A 2k 1k livre MP SO

2) relocar as partes ocupadas, criando uma nica rea livre.

46

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


MP SO 4k C A 1k 3k 2k 1k MP SO C A 1k 2k 8k livre

- possui algoritmos complexos, consumindo muito processador e disco, tornando-se invivel. 5.2.3 Estratgias para a escolha da Partio - tentar evitar ou diminuir o problema da "fragmentao" - o SO deve possuir uma lista de reas livres ou "free-list" - 3 tcnicas principais: best-fit, worst-fit e first-fit 1) Best-fit: escolhe a melhor partio, ou seja, aquela em que o programa deixa o menor espao sem utilizao. - a tendncia que a memria fique cada vez mais com pequenas reas livres no contguas, aumentando o problema da partio 2) Worst-fit: escolhe a pior partio, ou seja, aquela em que o programa deixa o maior espao sem utilizao. - deixando espaos maiores, a tendncia permitir que um maior nmero de programas utilize a memria, diminuindo o problema da fragmentao. 3) First-fit: escolhe a primeira partio livre que seja suficiente para carregar o programa. a estratgia mais rpida entre elas. Ex:

47

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


SO 3k Best-fit H 4k I G 1k MP SO 3k G 1k H 4k I 2k First-fit Worst-fit H G I SO G 2k H 4k I 2k 3k 2k SO 3k

Pergunta: Supondo a situao abaixo, responda:


Alocao Particionada Dinmica (Deadline) 10" 40" 10" 25" 15" 30" F E D C B A LIVRE 10k 40k 60k 20k 35k 50k (Tamanho) 100K time-slice = 5" escalonamento a longo prazo = FIFO estratgia p/ escolha da partio = worst-fit escalonamento a curto prazo = round-robin reduo da fragmentao = unio das parties adjacentes obs: considere apenas o tempo de processamento SO 0K Tabela de Parties Part Inic Fim 1 2 : N

a) quanto tempo levar para executar todos os programas ? b) aps 65", qual a situao da memria e da tabela de partio ? c) aps 95", qual a situao da memria e da tabela de partio ?

5.3 Swapping
-> Tcnica para resolver o problema da insuficincia de memria

48

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto antes: O programa ficava na memria at o fim da sua execuo, enquanto os outros esperavam por memria livre. com swapping: O sistema retira temporariamente um programa da memria, coloca-o no disco (swapp out), para a entrada de outro. obs: A escolha do programa a ser retirado depende da implementao. Pode-se por exemplo, retirar aquele que est bloqueado por algum motivo ou aquele que levar mais tempo para ser executado (ltimo da lista dos prontos)
memria principal S.O swapp A H out B 4K C D

memria secundria Quando o programa tiver que ser executado novamente, ento ele novamente carregado para a memria principal (swapp in). Esta operao pode at causar o "swapp out" de um outro programa. memria principal S.O A B C swapp in

B memria secundria

Problema: A relocao (feito pelo loader) no swapp in torna o sistema ineficiente quando existe uma troca intensa de programas. Soluo: Implementao via hardware para a relocao automtica em tempo de execuo -> "relocao dinmica", atravs do registrador de relocao

5.4 Memria Virtual


Combinao entre a memria principal e a memria secundria (disco) para dar ao usurio a iluso de existir uma memria principal bem maior que na realidade. Espao de Endereamento Virtual: Um programa no ambiente de memria virtual no faz referncia a endereos fsicos de memria (endereos reais), mas apenas a endereos virtuais (imaginrios). Durante a execuo, o endereo virtual mapeado para o endereo fsico real da memria principal -> "mapeamento" O conjunto de endereos virtuais que os processos podem enderear chamado de "espao de endereamento virtual", e o conjunto de endereos reais chamado "espao de endereamento real".

49

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


Mem. Virtual Espao de Endere/ Virtual 0 1 2 : : n Mem Secundria Obs: Como os programas podem ser muito maiores que a memria fsica, somente parte deles devem estar na memria fsica em um dado instante. Obs: O usurio no se preocupa com o endereamento, pois para ele, como se a memria fosse contnua e inacabvel. O SO + Compilador que se preocupam com o mapeamento. Mapeamento: Nos sistemas atuais, a tarefa de traduo realizada por um hardware especfico controlado pelo sistema operacional, de forma transparente para o usurio. -> atravs de tabelas de mapeamento para cada processo.
A EEV :: : : B EEV :: tab EEV = Espao de Endere/ Virtual

Mem. Princ. 0 1 2 : : m Espao de Endere/ Real

tab

Mem. Princ.

Controle: Registrador que indica a posio inicial da tabela relativa ao processo que ser executado. Obs: As tabelas mapeiam blocos de informaes, ou seja, cada bloco da memria virtual possui um bloco correspondentes na memria fsica. blocos menores -> - tabelas maiores - maior tempo de acesso ao disco - proporciona um grau maior de multiprogramao blocos maiores -> - tabelas menores - menor tempo de acesso ao disco - proporciona um grau menor de multiprogramao - blocos de tamanhos iguais -> Paginao - blocos de tamanhos diferentes -> Segmentao 5.4.1 Paginao O espao de endereamento virtual e o espao de endereamento real so divididos em blocos de mesmo tamanho chamados "pginas".

50

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


Mem. Virtual Pg. Virt. 0 Pg. Virt. 1 Pg. Virt. 2 : : : Pg. Virt. v Tab. Pg. Mem. Princ. Pg. Real 0 Pg. Real 1 : : : Pg. Real r "frame"

Execuo de Programas: Quando o processador tentar executar uma determinada instruo do programa do usurio (memria virtual), antes, ele dever consultar a tabela de pginas para saber se a pgina que contm aquela instruo j est ou no na memria principal, e se estiver, em que posio real ela est. Se no estiver (page fault), a pgina dever ser carregada para a memria principal. Endereamento: O processador tenta sempre executar um endereo virtual. Este endereo virtual contm duas partes: um nmero da pgina e um deslocamento dentro da pgina. O nmero da pgina serve para o processador consultar a tabela de pginas para saber qual a pgina real (endereo do frame) que a instruo desejada est. Ento o endereo real definitivo obtido concatenando o nmero da pgina real (endereo do frame) com o deslocamento. Note que o deslocamento sempre o mesmo, tanto para pginas virtuais como para pginas reais, j que os tamanhos destas so iguais.

Mem. Virt. end. virt. deslocamento instruo a ser executada

NPV desl Tab. Pags. EF Mem. Princ.

endereo real NPV = nmero da pag. virtual EF = end. do frame

: : :
EF desl desl frame EF

Ex: pginas de 4 bytes : ento, so necessrios 2 bits para o deslocamento.

51

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto


mem. virt. 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 pg 0 pgina virtual nro 2 desloc. nro 2 pg 1 pg 2 NPV desl 01010 Tab. Pag. pg 3 : : : 0 1 2 3 100 : : : pag. real nro 4 100 10 : : : pg 4 Mem. Princ. pg 0 pg 1 pg 2 pg 3

Exemplo genrico: Usando um comprimento de pginas de 4 words e uma memria fsica de 32 words (8 pginas). Obs: offset = deslocamento.

52

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Mem. Virtual 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 a b c d e f g h i j k l m n o p

0 pg 0

pg 0 4 pg 1 0 1 2 3 5 6 1 2 i j k l m n o p pg 1

pg 2

pg 2 12

pg 3 pg 3 16 pg 4 20 a b c d e f g h

pg 5

24

pg 6

28 pg 7

Para localizar o endereo fsico onde se encontra a instruo "a", faz 5x4+0=20; "f" : 6X4+1=25 e "d" : 5x4+3=23. Alm da informao sobre a localizao da pgina virtual, uma entrada na tabela de pginas possui um bit que indica se uma pgina est ou no na memria principal (bit de validade). Se o bit for 0, indica que a pgina virtual no est na memria (page fault) e se for 1, indica que est. Quanto a busca da pgina "faltante" no disco, existem 2 tcnicas de paginao: - paginao por demanda: o sistema s busca a pgina quando ela for referenciada ( a tcnica mais utilizada). - paginao antecipada: o sistema tenta prev a utilizao da pgina e faz uma busca antecipada (antes dela ser referenciada). Fragmentao: Mesmo sendo em menor escala que as tcnicas anteriores vistas, ainda existe o problema da fragmentao, que ocorre sempre na ltima pgina, pelo fato do programa no ocupar todas as pginas por completo.

53

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

pg 0 pg 1 pg 2 pg 3 pg 4

program x; var procedure A; end; { A } begin end.

fragmentao

Working Set: o conjunto de pginas que um processo referencia constantemente, e por isso, deve permanecer na memria, na medida do possvel. Sempre que um processo referencia uma nova pgina, ela entra no working set do processo. O working set deve ter um limite mximo de pginas, assim, quando o sistema estiver com o seu working set no limite e precisar acessar outra pgina (page in), alguma das pginas do working set deve ser liberada (descartada) para permitir o carregamento da pgina nova. Antes da pgina ser descartada, deve ser verificado se ela no foi alterada. Se foi, ela deve ser atualizada (gravada) no disco (page out). Para isso, basta colocar um campo "bit de modificao" na tabela de pginas, que indica se a pgina foi ou no modificada. Sempre que uma pgina for modificada, o SO seta este bit com o valor 1. Existem vrias tcnicas para selecionar a pgina que ser descartada: 1) Aleatria 2) FIFO: escolhe-se a pgina mais antiga do working set 3) LRU (Least-recently used): menos recentemente usada, ou seja, aquela que est a mais tempo sem ser referenciada 4) NUR (Not used recently): no usada recentemente, ou seja, que no seja a ltima que foi referenciada 5) LFU (Least frequently used): menos frequentemente usada, ou seja, menas vezes referenciada. Pergunta: Na paginao, analisando a tabela de pginas, o que acontece se: a) Se o working set de um processo for maior que a tabela de pginas? - Haver sobra de pginas de memria, de modo que o processo no ter necessidade de realizar paginao, pois todo o programa caber na memria. b) Se o working set de um processo for menor que a tabela de pginas? - Neste caso, haver necessariamente paginao, podendo at ser excessiva, conforme o tamanho do working-set. Pergunta: No mecanismo de Paginao, a memria fsica pode ficar fragmentada em diversas posies? Explique? - Sim, pois os programas dificilmente totalizam pginas completas, ficando sempre a ltima pgina com fragmentao. Assim, sempre que as ltimas pginas dos cdigos dos programas estiverem na memria, haver fragmentao. 5.4.2 Segmentao. Aproveita a modularidade do programa, ou seja, a memria no dividida em tamanhos fixos e sim conforme a estruturao do programa. Assim, os programas so divididos logicamente em sub-rotinas e estruturas de dados, e colocados em blocos de informaes na memria. Os blocos tm tamanhos diferentes e so chamados de segmentos, cada um com seu prprio espao de endereamento.

54

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Mem. Virtual program seg; var A: array C: record procedure X; end; function y; end; begin end.

Mem. Princ. procedure X programa principal funo Y; array A record C;

: :
O mecanismo de mapeamento semelhante ao da paginao. Os segmentos so mapeados por uma tabela de mapeamento de segmentos TMS, e os endereos so compostos pelo nmero do segmento e um deslocamento dentro do segmento. Alm do endereo do segmento na memria fsica, cada entrada na tabela de segmentos possui informaes sobre o tamanho do segmento, se ele est ou no na memria etc. O sistema mantm uma lista de reas livres e ocupadas da memria. Na segmentao, apenas os segmentos referenciados so transferidos da memria secundria para a memria principal, e as tcnicas para a escolha da rea livre podem ser as mesmas da Alocao Particionada Dinmica (best-fit, worst-fit ou first-fit). Exemplo genrico: O programa possui 5 segmentos (0-4). A tabela de segmentos possui uma entrada separada para cada segmento, com a posio inicial (base) e o tamanho de cada segmento (limite). Mem. Fsica Tab. Segms subrotina stack

seg 0 sqrt seg 1

seg 3 symbol table seg 4 main program

lim base 0 1000 1400 1 400 6300 2 400 4300 3 1100 3200 4 1000 4700

1400 seg 0 2400 3200 seg 3 4300 seg 2 4700 seg 4 5700 6300 seg 1 6700

seg 2 endereamento lgico

Para localizar o endereo fsico onde se encontra a instruo nro 53 do seg 2: 4300+53=4353; a instruo nmero 852 do segmento 3: 3200+852=4052. 5.4.3 Segmentao com Paginao: Permite a diviso lgica dos programas em segmentos e, por sua vez, cada segmento dividido fisicamente em pginas. Nesse sistema, um endereo formado pelo nmero do segmento, um nmero da pgina dentro deste segmento e um deslocamento dentro dessa pgina. O nro do segmento aponta para uma entrada na tabela de segmentos, que por sua vez aponta para uma tabela de pginas.

55

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

Seg. Virtual end virt

Tab. Seg. etp

etp = ender. da tab. de pag. ef = ender. do frame Mem. Fsica ef

ns np desl ns = nro do segm. np = nro da pag. desl = deslocamento

ef

desl

end. fsico

Thrashing: Excessiva transferncia de pginas e/ou segmentos entre a memria principal e a secundria. Ocorre basicamente em 2 nveis: do processo e do sistema. do processo: - elevado nmero de "page faults" - o programa fica mais tempo esperando por pginas do que executando - causa: - working set muito pequeno -> "aumentar" - mal programao: no respeito da "localidade" -> "reescrever" do sistema: - mais processos concorrendo pela memria do que espao disponvel (atender todos os processos) -> "expandir a memria" Pergunta: Qual a relao do princpio da localidade e overhead no barramento? - Se o programa no respeita o princpio da localidade, o sistema poder acusar muito page-fault e efetuar muita paginao e consequentemente haver muito overhead.

5.5 Exerccios
1. 2. 3. 4. 5. 6. 7. Explique o que alocao contgua simples. Explique o que alocao particionada (esttica e dinmica). Explique o que swapping. Explique o que o esquema de paginao. Explique o que o esquema de segmentao. Explique as seguintes tcnicas para alocao de parties: best-fit, worst-fit e first-fit. Explique as seguintes tcnicas para a escolha da pgina a ser descartada: Aleatria, FIFO, LRU, NUR e a LFU 8. Explique o problema de fragmentao 9. Explique Memria Virtual 10. Explique Paginao sob-demanda 11. Explique a substituio de pgina quando ocorre Page-fault 12. Explique trs algoritmos de substituio de pgina 13. Explique Thrashing

56

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

6 SISTEMAS DE ARQUIVOS
Discos Os discos possuem um formato circular. Suas duas superfcies so cobertas com um material magntico. Durante a formatao, cada superfcie dividida em trilhas e cada trilha dividida em setores (tambm chamado de bloco do disco), onde so armazenadas as informaes. As informaes so lidas ou escritas atravs de uma cabea de leitura/gravao.
Trilha Setor

Furo para acesso do motor Furo de ndice


Figura 29 - Disco

Um setor a menor unidade de informao que pode ser lida ou escrita no disco. Todas as operaes de entrada e sada no disco, so feitas em uma certa quantidade de setores (isto pode gerar fragmentao, se o setor no for totalmente preenchido). O hardware para um sistema de disco basicamente gerenciado pelo controlador de disco, que determina a interao lgica com o computador. O controlador traduz instrues enviadas pela CPU, em um conjunto de sinais que sero utilizados para o controle do disco. O controlador de disco ativado pela CPU atravs de seus registradores de entrada e sada. O sistema operacional implementa vrias camadas de software, para que seja facilitada a gerncia dos discos. As camadas de mais baixo nvel, tentam esconder as caractersticas do hardware dos dispositivos (so camadas vinculadas ao dispositivo) das camadas mais superiores, dando maior portabilidade para estas, permitindo ao sistema operacional trabalhar de forma independente do hardware.

Processo

Solicitao de E/S

Resposta de E/S

Rotinas de E/S Disk Driver Rotina de Interrupo Controlador do disco

DISCO
Figura 30 - Portabilidade

O usurio acessa o disco atravs das rotinas de E/S fornecidas pelo SO. Estas rotinas permitem ao usurio realizar operaes sobre os discos, sem se preocupar com detalhes tais como: como o disco est formatado, qual a trilha ou setor que o arquivo ser gravado, etc.. Estas rotinas tambm so as responsveis pelo controle de permisses do usurio.

57

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto Os disk drivers, ou somente drivers, so todas as rotinas do SO (incluindo as rotinas de interrupo) que devem se comunicar com o disco, em nvel de hardware, atravs dos controladores de discos. Os disk drivers sabem quantos registradores um controlador possui, para que eles servem, como so utilizados e quais so seus comandos. O controlador do disco geralmente possui memria e registradores prprios, para poder executar as instrues enviadas pelo disk driver. Arquivos Os computadores podem armazenar informaes fisicamente em diferentes formas: discos e fitas magnticas so as mais comuns. Cada um destes dispositivos possui organizao e caractersticas prprias. Mas o sistema operacional deve se abstrair das propriedades fsicas e fornecer uma viso lgica para o usurio, definindo uma unidade lgica de armazenamento, o arquivo ou file. Desta forma, os files so mapeados pelo sistema operacional sobre os dispositivos fsicos reais. Um arquivo um conjunto de informaes relacionadas, definidas pelo seu criador. Geralmente, arquivos representam programas (fontes ou objetos) ou dados, que podem ser numricos, alfabticos ou alfanumricos. Podem ser compostos por uma sequncia de bits, bytes, linhas ou registros, mas seu significado definido pelo seu criador e usurio. Arquivos possuem nomes e algumas propriedades, tais como: tipo, data de criao, nome do proprietrio, tamanho etc.., que so armazenadas em seu Descritor de Arquivos. As rotinas de entrada e sada implementam operaes sobre os arquivos, entre elas temos: criao, deleo, leitura, gravao, obteno do tamanho e truncamento. 6.1.1.1 Diretrios Um disco normalmente tem um diretrio indicando quais arquivos esto no disco. Este diretrio uma lista de todos os arquivos por nome. O diretrio tambm contm os endereos de todos os descritores de todos os arquivos, como mostra o exemplo da figura abaixo, que possibilitam qualquer operao sobre eles. Estes diretrios so colocados em um ou mais arquivos especiais, ou em reas de armazenamento. Descritor de Arquivo Nome do Arquivo Diretrio 50 Atributos Arq1 Arq5 5

Arq2 Arq8

20 34

25 10 60

25 10 60 blocos de dados

:
Arq1

:
50

Figura 31 - Diretrios

Para facilitar a manipulao dos arquivos no disco pelo usurio, o Sistema de Arquivos fornece uma estruturao o diretrio da forma mais conveniente. Esta estruturao dever fornece mecanismos para a organizao de muitos arquivos, que podem estar armazenados fisicamente em diferentes discos. O usurio s se preocupa com o diretrio lgico e ignora os problemas da alocao fsica. Existem muitas estruturas propostas para diretrios, mas os tipos principais so: Diretrio de Nvel Simples, Diretrio de Dois Nveis, Diretrio em rvores e Diretrio em Grafos Acclicos. 6.1.1.1.1 Diretrio de Nvel Simples

58

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto a estrutura de diretrio mais simples que contm um nico nvel. Todos os arquivos esto contidos no mesmo diretrio, como mostra a figura abaixo. nome tipo Diretrio ..... etc...

Arquivos
Figura 32 - Nvel simples

Este tipo de estrutura possui limitaes significantes, quando o nmero de arquivos cresce ou quando existe mais do que um usurio, como por exemplo: se todos os arquivos esto em um mesmo diretrio, eles devem possuir nomes diferentes. Como controlar isto se houver mais que um usurio? Mesmo com um nico usurio, se a quantidade de arquivos for grande, como controlar a utilizao sempre de nomes diferentes para os arquivos? 6.1.1.1.2 Diretrio de Dois Nveis Neste tipo de estrutura, cada usurio possui seu prprio diretrio de nvel simples, permitindo que usurios diferentes possam ter arquivos com os mesmos nomes. Assim, o sistema possui um diretrio mestre que indexa todos os diretrios de todos os usurios, como mostra a figura abaixo.

Diretrio Mestre

usurio 1 usurio 2 usurio 3

Diretrios dos Usurios Arquivos


Figura 33 - Dois nveis

Este tipo de estrutura vantajosa quando os usurios so completamente independentes, mas desvantajosa, quando os usurios querem cooperar sobre algumas tarefas e acessar os arquivos de outros. Alguns sistemas simplesmente no permitem que os usurios acessem outros diretrios. Mas se o acesso for permitido, o usurio deve ser hbil em nomear um arquivo em um diretrio de um outro usurio. 6.1.1.1.3 Diretrios em rvores Um diretrio de dois nveis pode ser visto como uma rvore de dois nveis. A generalizao natural extender a estrutura de diretrio para uma rvore rbitrria, como mostra a figura abaixo. Isto permite que os usurios criem seus prprios sub-diretrios. O sistema UNIX por exemplo, utiliza este tipo de estruturao. A rvore possui um diretrio raz. Cada arquivo neste sistema possui um nico caminho ("pathname"). Este caminho comea da raz, percorre todas as subrvores, at o arquivo especificado, como mostra a figura abaixo. Cada diretrio possui um conjunto de arquivos e/ou subdiretrios. Todos os diretrios possui um formato interno. Um bit em cada entrada do diretrio define a entrada como um arquivo (0) ou subdiretrio (1).

59

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

raz dos vacinas

util exe fontes pilha lista pilha lista

norton pctools

scan cura

Figura 34 - Diretrio em rvore

O sistema mantm um arquivo de usurios cadastrados, e para cada entrada neste arquivo existe um nome do usurio e um ponteiro para o seu diretrio inicial. Cada usurio possui um diretrio corrente. Quando feita uma referncia a um arquivo, o diretrio corrente pesquisado. Se o arquivo no est no diretrio corrente, ento o usurio deve especificar o "caminho" (pathname) ou trocar o diretrio corrente. 6.1.1.1.4 Diretrios em Grafos Acclicos Este tipo de estruturao permite o compartilhamento de arquivos e/ou diretrios por vrios usurios, evitando a manipulao de vrias cpias do mesmo arquivo. Quando o arquivo compartilhado por um usurio que possui o direito de acesso, todas as alteraes so efetuadas neste arquivo e imediatamente se tornam visveis aos outros usurios.

raz

alunos

professor

bcc bete lu clipper

pd gil ana

din dema luiz ana dina maria turbo

projeto

trab2

Figura 35 - Grafos Acclicos

Uma maneira usual para implementar este tipo de estrutura, utilizando um link, que funciona da seguinte forma: quando se deseja ter acesso a um arquivo (ou diretrio) atravs de um diretrio, adicionase uma entrada neste diretrio com o nome do arquivo (ou diretrio) desejado e marca-o como sendo do tipo link. Em compensao, adiciona-se nesta entrada o pathname definitivo do arquivo. Este tipo de estruturao apresenta uma srie de incovenientes, entre eles podemos destacar a "deleo". Neste caso teremos que eliminar todos os links para este arquivo. 6.1.1.2 Gerenciamento de Espao Livre em Disco Na criao do arquivo, necessrio que o sistema operacional tenha condies de verificar se cada bloco do disco est livre ou ocupado. Torna-se necessrio, portanto, que sejam mantidas estruturas de

60

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto dados que armazenem as informaes necessrias, de modo a possibilitar ao sistema operacional, o gerenciamento do espao livre presente no disco. Existem vrias formas para o armazenamento das informaes necessrias, entre elas: Mapa de Bit, Lista de Blocos Livres, Bloco de Endereos e Tabela de Blocos Contguos. 6.1.1.2.1 Mapa de Bits Cada bloco representado por 1 bit; se o bloco est livre, o bit "0", seno "1". Por ex: considere um disco onde os blocos 2,3,4,5,8,9,10 esto livres, e o resto dos blocos esto ocupados. 11000011000.... - fcil procura de n blocos consecutivos - gasto de disco para armazenar o mapa de bit - Em uma nica leitura no disco (leitura do mapa de bits), possvel saber a situao de um grande nmero de setores. 6.1.1.2.2 Lista de Blocos Livres Manter todos os blocos livres ligados por uma lista, e guardar a cabea (endereo inicial da lista) da lista. Aproveita os prprios blocos livres para armazenar os endereos da lista. No possvel ter uma viso geral sobre a situao de um conjunto de setores; deve-se ler uma a um, para saber se o setor est disponvel ou no.

head

0 1 2 3 4 5 6 7 8 9 10 11 : : :

Figura 36 - Lista de blocos livres

6.1.1.2.3 Bloco de Endereos Utiliza-se o primeiro bloco livre, como bloco de endereos, para armazenar o endereo dos prximos "n" blocos livres, sendo que o bloco nmero "n", um outro bloco de endereos. Guarda-se o endereo do primeiro bloco de endereos. Este mtodo tambm permite, em uma nica leitura (leitura do bloco de endereos), saber sobre a situao de vrios blocos, incluindo os endereos.

61

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

head

: : :

Figura 37 - Bloco de endereo

6.1.1.2.4 Tabela de Blocos Contguos Aproveitar a idia de que sempre existe vrios blocos livres contguos. Mantm uma tabela de blocos livres, onde cada entrada na tabela contm o endereo do 1 bloco de um grupo de blocos contguos e o tamanho do grupo. Guarda-se o cabea da lista.
1 7 : 2030 3 8 : 20 tamanho da sequencia incio da sequencia
Figura 38 - Blocos contguos

Pergunta: Na figura acima, como poderia ser atualizada a tabela, se o SO alocasse 2 setores da segunda sequncia? - O primeiro campo (incio) seria incrementado de 2 e o segundo campo (quantidade) seria decrementado de 2.
6.1.1.3 Alocao de Espao em Disco
Uma das preocupaes do sistema de arquivos, como alocar os espaos livres do disco para os arquivos, de forma que o disco seja melhor utilizado e os arquivos possam ser acessados mais rapidamente. Os principais mtodos de alocao de espao do disco so: alocao contgua, alocao ligada e alocao indexada.

6.1.1.3.1 Alocao Contgua


Este mtodo procura identificar uma sequncia contnua de blocos que apresente um tamanho suficiente para armazenar todas as informaes relativas ao arquivo, ou seja, caso um arquivo precise de N blocos para o seu armazenamento, o sistema operacional procurar identificar uma sequncia contnua de N blocos livres do disco. Nesta tcnica, o espao s ser alocado se for contguo, caso contrrio, o arquivo no poder ser armazenado ou extendido. Se por acaso existir mais de uma possibilidade, ento poder ser utilizado uma tcnica para selecionar uma opo. Pode se utilizado as tcnicas Worst-Fit, Best-Fit e First-Fit.

62

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto Note que com esse mtodo, para acessar um bloco b+1 aps ter acessado o bloco b, geralmente no haver necessidade de nenhum movimento da cabea de leitura/gravao do disco, a menos que o bloco se encontre em outra trilha. Alm disso, o arquivo que foi alocado com esta tcnica, pode ser acessado tanto sequencialmente quanto diretamente. A alocao contgua de um arquivo definida pelo endereo do primeiro bloco e seu comprimento, e dessa forma colocado no diretrio, como mostra a figura abaixo.

Disco 0 4 8 12 1 5 9 13 :: 2 6 10 14 :: 3 7 11 15 diretrio arquivo incio tamanho carta 2 3 tese 9 5 : : :

Figura 39 - Alocao contgua

Este mtodo encontra duas principais problemas: 1. Encontra o espao contguo suficiente para o arquivo. Isto pode causar fragmentao externa, isto , existe espao no disco mas no contguo. 2. Determinar quanto de espao uma arquivo que est sendo criado ir precisar. Deve-se portanto estimar uma quantidade de blocos. Se for pouco, o arquivo no poder crescer, e se for muito, o disco poder estar sendo sub-utilizado caso o arquivo for pequeno. 6.1.1.3.2 Alocao Ligada Nesta tcnica, os blocos alocados para um arquivo so encadeados em uma lista, no importanto a contiguidade. Desta forma, seria armazenado no diretrio o nome do arquivo e duas variveis, que seriam os identificadores do primeiro e do ltimo bloco do arquivo. Em cada um dos blocos utilizados pelo arquivo, seria reservado um espao para conter o endereo do prximo bloco da lista.

Disco 0 4 8 12 1 5 9 13 :: 2 6 10 14 :: 3 7 11 15 diretrio arquivo incio fim relato 2 11 : : :

Figura 40 - Alocao ligada

Apesar de qualquer bloco poder ser utilizado na aloca, este mtodo apresenta 2 principais desvantagens: o gasto de disco decorrente da necessidade de armazenamento dos ponteiros usados para implementar a lista, e a necessidade de acesso sequencial as informaes armazenadas, que podem causar vrios movimentos da cabea de leitura/gravao. Este mtodo resolve o problema da fragmentao externa e o problema do crescimento do arquivo, no existindo a necessidade de alocao prvia.

63

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto 6.1.1.3.3 Alocao Indexada Neste mtodo, cada arquivo possui seu prprio bloco de ndice, que um vetor de endereos. A isima entrada no bloco de ndice aponta para o i-simo bloco do arquivo, como mostra afigura abaixo: Disco 0 4 8 1 2 3 5 6 7 9 10 11 diretrio arquivo end. bloco ndice carta 15 : :

12 13 14 :: ::

4 2 3 12 -1 -1

bloco de ndices

Figura 41 - Alocao indexada

Quando o arquivo criado, todos os ponteiros do bloco de ndice so inicializados com nil. Quando o i-simo bloco escrito, um bloco removido do espao livre e seu endereo colocado na isima entrada do bloco de ndices do arquivo. mesmo se o arquivo pequeno (1 ou 2 blocos), esta tcnica ir consumir um bloco de ndices, o que na alocao ligada seria utilizado apenas 2 ponteiros. O objetivo ter um bloco de ndices to pequeno quanto possvel, sempre levando em considerao que o tamanho do bloco de ndices limita o tamanho do arquivo, assim, algumas tcnicas podem ser utilizadas: 1. ligar vrios blocos de ndices, de forma que a ltima posio do bloco de ndices contenha o endereo de um outro bloco de ndices ou contenha o valor nil. 2. utilizar uma indexao de 2 nveis, usando um bloco de ndices para conter os endereos de outros blocos de ndices, que por sua vez conteriam os endereos dos blocos de dados do arquivo. Isto pode ser estendido para mais de 2 nveis. 3. usar um mtodo misto (utilizado no sistema UNIX), como por exemplo: o diretrio do disco conteria para cada arquivo 15 ponteiros, que seriam utilizados da seguinte maneira: - 12 apontariam diretamente para os blocos de dados do arquivo e seriam suficientes para arquivos pequenos. Se o bloco = 4096, seriam suficientes para arquivos at 48K. - 3 ponteiros seriam usados para apontar blocos indiretos, onde o primeiro apontaria para um bloco indireto simples, o segundo apontaria para um bloco indireto duplo (ndice de 2 nveis) e o terceiro apontaria para um bloco indireto triplo (ndice de 3 nveis). 6.1.1.4 Escalonamento do Disco Para que o sistema operacional atenda uma solicitao de acesso ao disco por uma aplicao, ele gasta um certo tempo. Este tempo equivalente a somatria do tempos gastos em 3 etapas: 1. Tempo de Seek: tempo gasto para locomover a cabea de leitura/gravao da trilha atual para a trilha desejada. 2. Tempo de Latncia: tempo gasto para esperar que o disco rotacione at que o bloco desejado esteja sob a cabea de leitura/gravao. 3. Tempo de Transferncia: tempo gasto para transferir os dados do bloco do disco para a memria principal.

64

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto Em um sistema multiprogramado, vrias solicitaes de acesso ao dico so feitas pelas diferentes aplicaes, de forma que o sistema operacional deve ser hbil em escalonar qual solicitao atender, visando obter o menor tempo mdio nos acessos ao disco, para obetr o melhor desempenho do sistema. As principais polticas de escalonamento do disco so: First-Come-First-Served, Shortest-SeekTime-First e SCAN. 1. FCFS: As solicitaes so atendidas por ordem de chegada (FIFO) 2. SSTF: A solicitao cuja trilha estiver mais prxima da trilha atual da cabea de leitura/gravao do disco atendida primeiro. 3. SCAN: O sistema atende as solicitaes que estiverem em um determinado sentido (da trilha 0 em direo a ltima trilha ou vice-versa), e quando no houver mais solicitao naquele sentido, o sistema inverte o sentido e repete o processo. Desta forma, a cabea de leitura/gravao executa uma varredura de um lado para o outro do disco. Para exemplificarmos as trs tcnicas, vamos supor que existe uma fila de requisio de acesso ao disco, onde as trilhas que devam ser acessadas esto na seguinte sequncia 98, 183, 37, 122, 14, 124, 65 e 67, de forma que a primeira solicitao que foi feita a trilha 98 e a ultima a 67. Supomos que a cabea de leitura/gravao do disco esteja na posio 53. O grfico abaixo mostra o caminho percorrido utilizando-se as 3 tcnicas. 14 37 53 65 67 98 122 124 183

FCFS 640 trilhas

SSTF 236 trilhas

SCAN 208 trilhas

Figura 42 - varredura

6.2 Exerccios
1) Qual o motivo do SO ter um Sistema de Arquivos ? 2) Explique os mtodos de acesso a arquivos 3) Explique as formas de estruturar diretrios 4) Explique a proteo que o Sistemas de Arquivos devem oferecer 5) Qual o motivo do SO ter um Sistema de Arquivos ? 6) Explique os mtodos de acesso a arquivos 7) Explique as formas de estruturar diretrios 8) Explique a proteo que o Sistemas de Arquivos devem oferecer 9) Explique os algoritmos FCFS, SSTF, SCAN, C-SCAN 10) Qual a importncia do backup ? Como pode ser feito ? (dirio, mensal)

65

Introduo aos Sistemas Operacionais ISO Tcnico em Informtica - IFSP - Salto

REFERNCIAS BIBLIOGRFICAS
MACHADO,F.B. & MAIA,L.P. Introduo arquitetura de Sistemas Operacionais. Rio de Janeiro.Editora LTC- Livros Tcnicos e Cientficos.1992. SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Fundamentos de Sistemas Operacionais, 6 Edio, 2004, LTC. TANENBAUM,A. S. Sistemas Operacionais Modernos. 2Edio. So Paulo. Prentice Hall.2003. TOSCANI, S., OLIVEIRA, R., CARISSIMI, A. Sistemas Operacionais e Programao Concorrente. Srie Didtica do II UFRGS. Ed. Sagra-Luzzato, 2003.

66

S-ar putea să vă placă și