Você está na página 1de 28

1.2 Histrico Antes da dcada de 50, os computadores eram muito difceis de serem programados.

Era necessrio conhecer totalmente sua arquitetura, e tal operao era efetuada em painis com cerca de 6.000 conectores, em linguagem de mquina. Nesta fase os computadores no possuam ainda dispositivos para interagir com o usurio, como teclados e monitores. Na dcada de 50, j com a utilizao de transistores, sucedeu-se um grande avano tecnolgico, melhorando a velocidade dos processadores e a capacidade dos meios de armazenamento, em especial a memria e os discos magnticos. Por volta de 1953 foi introduzido o primeiro sistema operacional, um programa de controle que permitia uma interao, mesmo que limitada, entre o operador e a mquina, otimizando a execuo das tarefas. Em 1959 foi criada uma verso de sistema operacional que j implementava conceitos de memria virtual, conceito este largamente utilizado nos sistemas atuais. Na dcada de 60, a partir do surgimento dos circuitos integrados, foi possvel difundir u uso de sistemas computacionais em empresas, com diminuio de custos e tamanho dos equipamentos. Alm disso, esta dcada presenciou inmeras inovaes na rea de sistemas operacionais, presentes at hoje, como os ambientes de multitarefa, multiprogramao, multiprocessamento e time-sharing, tendo o desenvolvimento destas tcnicas avanado at o meado da dcada de 70, onde tambm foram implementadas as tecnologias baseadas em arquitetura VLSI (chips), as primeiras redes de computadores, e o desenvolvimento de diversas linguagens de programao de alto nvel. A dcada de 80 foi marcada pela criao dos microcomputadores, baseados em microprocessadores de uso pessoal. Liderados pela IBM, diversos fabricantes seguiram por essa linha, porm alguns deles no abandonando a fabricao dos computadores de grande porte, como foi o caso da prpria IBM. Nota-se que, a partir do meado da dcada de 80, acontece uma diviso de guas, com a indstria passando a produzir equipamentos de grande porte e muitos modelos de microcomputadores, que tambm precisavam de sistemas operacionais bastante evoludos. Foram, ento, utilizadas as tcnicas modernas j existentes nos ambientes de grande porte na implementao de sistemas operacionais para os microcomputadores, com verses diversas, todas inicialmente monousurio/monotarefa (devido baixa capacidade de armazenamento dos micros, naquela poca). Com o avano da tecnologia, os micros ganharam discos rgidos e outros perifricos, possibilitando a criao de sistemas operacionais mais evoludos nesta categoria de computadores, quando surgiram os sistemas monousurio/multitarefa, que executam at hoje. Cronologia

1.3 Resumo Nessa unidade de introduo ao estudo de sistemas operacionais importante fixar o conceito de sistema operacional(Um sistema operacional um programa ou um conjunto de programas cuja funo servir de interface entre um computador (hardware) e o usurio) e suas funes de acordo com o modo de referencia. O histrico apresenta o contexto evolutivo dos sistemas operacionais e uma linha cronolgica que ajuda sua compreenso. Unidade II Tipos de Sistemas Operacionais 2.1 Sistemas Monoprogramveis/Monotarefa Os primeiros sistemas operacionais eram voltados tipicamente para a execuo de um nico programa. Qualquer outra aplicao, para ser executada, deveria aguardar o trmino do programa corrente. Neste tipo de sistema, o processador, a memria e os perifricos permanecem exclusivamente dedicados execuo de um nico programa. Os sistemas monoprogramveis esto diretamente ligados ao surgimento, na dcada de 50/60, dos primeiros computadores. Embora os sistemas operacionais j tivessem evoludo com as tecnologias de multitarefa e multiprogramveis, os sistemas monoprogramveis voltaram a ser utilizados na plataforma de microcomputadores pessoais e estaes de trabalho devido baixa capacidade de armazenamento destas mquinas, na poca. Era muito clara a desvantagem deste tipo de sistema, no que diz respeito limitao de tarefas (uma de cada vez), o que provocava um grande desperdcio de recursos de hardware.

Comparados a outros sistemas, os monoprogramveis so de simples implementao, no existindo muita preocupao com problemas decorrentes do compartilhamento de recursos como memria, processador e dispositivos de E/S.

2.2 Sistemas Multiprogramveis/Multitarefa

Constituindo-se uma evoluo dos sistemas monoprogramveis, neste tipo de sistema os recursos computacionais so compartilhados entre os diversos usurios e aplicaes: enquanto um programa espera por um evento, outros programas podem estar processando neste mesmo intervalo de tempo. Neste caso, podemos observar o compartilhamento da memria e do processador. O sistema operacional se incumbe de gerenciar o acesso concorrente aos seus diversos recursos, como processador, memria e perifricos, de forma ordenada e protegida, entre os diversos programas. As vantagens do uso deste tipo de sistema so a reduo do tempo de respostadas aplicaes, alm dos custos reduzidos devido ao compartilhamento dos recursos do sistema entre as diferentes aplicaes. Apesar de mais eficientes que os monoprogramveis, os sistemas multiprogramveis so de implementao muito mais complexa.

Os sistemas multiprogramveis/multitarefa podem ser classificados de acordo com a forma com que suas aplicaes so gerenciadas, podendo ser divididos em sistemas batch, de tempo compartilhado e de tempo real, de acordo com a figura abaixo.

2.2.1 Sistemas BATCH Foram os primeiros sistemas multiprogramveis a serem implementados na dcada de 60. Nesta modalidade, os programas eram submetidos para execuo atravs de cartes perfurados e armazenados em disco ou fita, para posterior execuo. Vem da o nome batch (lote de cartes). O processamento em batch tem como caracterstica no exigir interao do usurio com o sistema ou com a aplicao. Todas as entradas ou sadas so implementadas por meio de algum tipo de memria secundria, geralmente disco ou fita. Aplicaes deste tipo eram utilizadas em clculo numrico, compilaes, back-ups, etc. Estes sistemas, se bem projetados, podem ser bastante eficientes devido melhor utilizao do processador, mas podem oferecer tempos de resposta bastante longos. Atualmente, os sistemas operacionais simulam este tipo de processamento, no havendo sistemas dedicados a este tipo de execuo. 2.2.2 Sistemas de Tempo Compartilhado Tambm chamados sistemas de time-sharing, permitem que diversos programas sejam executados a partir da diviso de tempo do processador em pequenos intervalos, denominados fatia de tempo (ou time-slice). Caso a fatia de tempo no seja suficiente para a concluso do programa, este interrompido pelo sistema operacional e substitudo no processador por outro, enquanto aguarda nova fatia de tempo. Neste tipo de processamento, cada usurio tem a impresso de que a mquina est dedicada ao seu programa, como se ele fosse o nico usurio a se utilizar do sistema. Geralmente permitem interao do usurio com a aplicao atravs de terminais compostos por monitor, teclado e mouse. Estes sistemas possuem uma linguagem de controle que permite ao usurio interagir com o sistema operacional atravs de comandos. Assim, possvel verificar arquivos armazenados em disco ou cancelar execuo de programas. Normalmente, o sistema responde em apenas alguns segundos maioria destes comandos, o que se levou a cham-los tambm de sistemas on-line. A maioria das aplicaes comerciais atualmente processada em ambiente de tempo compartilhado, que oferece tempos baixos de respostas a seus usurios e menores custos, em funo do alto grau de compartilhamento dos diversos recursos do sistema. 2.2.3 Sistemas de Tempo Real Este tipo de sistema implementado de forma bastante semelhante ao de tempo compartilhado. O que caracteriza a diferena entre eles o tempo exigido no processamento das aplicaes. Enquanto nos sistemas de tempo compartilhado o tempo de processamento pode variar sem comprometer as aplicaes em execuo, nos sistemas de tempo real os tempos de execuo devem estar dentro de limites rgidos, que devem ser obedecidos, caso contrrio podero ocorrer problemas irreparveis. No sistema de tempo real no existe a idia de fatia de tempo como nos sistemas de tempo compartilhado. Um programa ocupa o processador o tempo que for necessrioou at que aparea um outro com um nvel de prioridade maior. Esta prioridade de execuo definida pela prpria aplicao e no pelo sistema operacional, como nos sistemas de tempo compartilhado. Estes sistemas so utilizados em aplicaes de controle de processos, como monitoramento de refinarias de petrleo, controle de trfego areo, de usinas, ou em qualquer aplicao onde o tempo de processamento fator fundamental. 2.3 Sistemas com Mltiplos Processadores Os sistemas com mltiplos processadores caracterizam-se por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. A vantagem deste tipo de sistem permitir que vrios programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em vrias partes para serem executada

simultaneamente em mais de um processador. Esta tcnica permitiu a criao de sistemas computacionais voltados para processamento cientfico, prospeco de petrleo, simulaes, processamento de imagens e CAD. Um fator chave no desenvolvimento dos sistemas multiprocessados a forma de comunicao entre as CPUs e o grau de compartilhamento da memria e dos dispositivos de E/S. Em funo destes fatores, podemos classificar os sistemas multiprocessados de acordo com a figura a seguir:

Na figura podemos perceber a diviso dos sistemas multiprocessados em duas categorias iniciais: sistemas fortemente acoplados e fracamente acoplados. A grande diferena entre estas duas categorias que nos sistemas fortemente acoplados existe apenas uma memria a ser compartilhada pelos processadores do conjunto, enquanto que nos fracamente acoplados cada sistema tem sua prpria memria individual. A taxa de transferncia entre processadores e memria em sistemas fortemente acoplados muito maior que nos fracamente acoplados. Nos sistemas fortemente acoplados a memria principal e os dispositivos de E/S so gerenciados por um nico sistema operacional. Quando todos os processadores na arquitetura so iguais, diz-se que o sistema simtrico. No entanto, quando os processadores so diferentes, d-se arquitetura a denominao assimtrica. Nos sistemas fracamente acoplados, como os processadores esto em arquiteturas diferentes, somente interligados por cabos de interconexo, cada CPU constitui uma mquina independente, com memria prpria, dispositivos de E/S e sistemas operacionais independentes. Nesta subdiviso, temos como exemplo as redes e os sistemas distribudos. No ambiente de rede, existem dois ou mais sistemas independentes (hosts), interligados por linhas telefnicas, que oferecem algum tipo de servio aos demais, permitindo que um host compartilhe seus recursos, como impressora e diretrios, com os outros hosts da rede. Enquanto nos sistemas em rede os usurios tm conhecimento dos hosts e seus servios, nos sistemas distribudos os sistema operacional esconde os detalhes dos hosts individuais e passa a trat-los como um conjunto nico, como se fosse um sistema s, fortemente acoplado. Os sistemas distribudos permitem, por

exemplo, que uma aplicao seja dividida em partes e que cada parte seja executada por hosts diferentes na rede. Para os usurios e suas aplicaes como se no existisse a rede, mas um nico sistema centralizado. Outros exemplos de sistemas distribudos so os clusters. Em um cluster podem existir dois ou mais servidores ligados por algum tipo de conexo de alto desempenho, e o usurio no conhece os nomes dos membros do cluster e nem quantos so. Quando necessrio algum servio, basta solicitar ao cluster para obt-lo, sem se preocupar com quem vai dispor e oferecer tal servio. Clusters so muito utilizados em servidores de bancos de dados e Web. Cilclo de Vida S.O. pg 12

Para cada tipo de interrupo existe uma rotina de tratamento associada, para onde o fluxo do programa desviado. A identificao do tipo de evento ocorrido fundamental para determinar o endereo da rotina adequada ao tratamento da interrupo. As interrupes podem ser geradas: - Pelo programa do usurio (entrada de dados pela console ou teclado) - Pelo hardware (operaes de E/S) - Pelo sistema operacional (ao trmino da fatia de tempo do processador destinada ao programa) As interrupes sempre so tratadas pelo Sistema Operacional. A exceo um evento semelhante interrupo, pois tambm de fato interrompe um programa. A principal diferena que a exceo o resultado da execuo de uma instruo dentro do prprio programa, como a diviso por zero ou a ocorrncia de um overflow (estouro de capacidade de um campo) numa operao aritmtica.

Na maioria das vezes, a exceo provoca um erro fatal no sistema, causando o trmino anormal do programa. Isto se deve ao fato de que a exceo melhor tratada dentro do prprio programa, com instrues escritas pelo programador. 3.6 Operaes de Entrada e Sada Nos primeiros sistemas computacionais, a comunicao entre o processador e os perifricos era direta, sendo o processador responsvel por efetuar as operaes de leitura/gravao nos dispositivos. O surgimento do controlador de E/S permitiu ao processador agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, o processador no mais se comunicava diretamente com os perifricos, mas sim via controlador. Passou a existir ento trs maneiras bsicas de se implementar operaes de E/S: - por programa: o processador sincronizava-se com o perifrico e iniciava a transferncia de dados, ficando permanentemente testando o estado do perifrico para saber quando a operao chegaria ao seu final. O processador ficava ocupado at o trmino da operao de E/S. - por interrupo: evoluindo o processo anterior, aps o incio da transferncia de dados o processador passou a ficar livre para realizar outras tarefas. Assim, em determinados intervalos de tempo o sistema operacional deveria testar o estado dos perifricos para saber se a operao de E/S tinha terminado. Este tipo de operao permitiu um certo grau de paralelismo, j que um programa poderia ser processado enquanto uma operao de leitura/gravao em perifrico estava sendo efetuada. Isto permitiu a implementao dos primeiros sistemas multiprogramveis.

- A necessidade de se transmitir cada vez um volume maior de informaes trouxe uma evoluo significativa nas operaes de E/S. Em vez de o processador ser interrompido vrias vezes para interrogar os dispositivos para saber do resultado das operaes, o que diminua sua eficincia devido ao excesso de interrupes, foi criado um dispositivo de transferncia de dados chamado de DMA Direct Memory Access. Esta tcnica permite que um bloco de dados seja transferido entre a memria e os dispositivos de E/S sem a interveno do processador, a no

ser no incio (quando a operao solicitada) e no final da transferncia (quando o processador notificado sobre o trmino da operao). Na figura a seguir, podemos ver a implementao do canal de E/S gerenciando vrios controladores e, ligados a estes, vrios perifricos. O canal de E/S funciona ento como uma interface entre os controladores e a CPU, como mostra a figura a seguir:

Unidade IV Estrutura do Sistema Operacional

O sistema operacional formado por um conjunto de rotinas que oferecem servios essenciais aos usurios, s suas aplicaes, e tambm ao prprio sistema. A esse conjunto de rotinas d-se o nome de ncleo do sistema ou kernel. fundamental no se confundir o ncleo do sistema com aplicaes, utilitrios ou o interpretador de comandos, que acompanham o sistema operacional. As aplicaes so utilizadas pelos usurios de maneira transparente, escondendo todos os detalhes da interao com o sistema. Os utilitrios, como os compiladores, editores de texto e interpretadores de comandos permitem aos usurios, desenvolvedores e administradores de sistema uma interao amigvel com o sistema. Existe uma grande dificuldade em compreender a estrutura e o funcionamento do sistema operacional, pois ele no executado como uma aplicao tipicamente seqencial, com incio, meio e fim. Os procedimentos do sistema so executados concorrentemente sem uma ordem especfica ou predefinida, com base em eventos dissociados do tempo. Muitos desses eventos esto relacionados ao hardware e a tarefas internas do prprio sistema operacional. 4.2 Funes do Sistema As principais funes do ncleo encontradas na maioria dos sistemas comerciais so as seguintes: - Tratamento de interrupes e excees: j explicados anteriormente, em detalhes; - Criao e eliminao de processos: funo responsvel por alocar em memria todos os recursos necessrios execuo do processo. esta funo que aloca em memria, alm do executvel, o contexto do processo, o buffer de leitura/gravao (se necessrio), alm de listas e estruturas de controle utilizadas pelo sistema operacional. Nesta funo tambm so estabelecidos vnculos fsicos a arquivos em disco, fitas e outros perifricos que sero usados no processamento. Quando do fim da execuo do programa, esta funo que desaloca todos os espaos em memria ocupados pelo processo, liberando-os para futuras alocaes a outros processos; - Escalonamento e controle de processos: funo responsvel por organizar a fila de acesso ao processador. Utiliza parmetros do sistema e do perfil do usurio para estabelecer a ordem em que os processos permanecero espera pela liberao da CPU, para ento entrarem em execuo; - Gerncia de memria: funo responsvel por fornecer funo de criao/eliminao de processos os endereos em memria disponveis para alocao; - Gerncia de sistemas de arquivos: responsvel pelo gerenciamento dos arquivos, bem como seu compartilhamento pelos diversos usurios, implementando mecanismos de controle da segurana e direitos de acesso s reas utilizadas pelos usurios nos diversos dispositivos; - Gerncia de dispositivos de E/S: responsvel por gerenciar os dispositivos, prestando auxlio criao/eliminao de processos e gerncia de sistemas de arquivos no que diz respeito ao endereamento e associao de arquivos em perifricos; - Suporte a redes e teleprocessamento: esta funo que executa todos os servios de rede, fazendo o empacotamento das mensagens vindas dos terminais para a CPU central e vice-versa, alm de controlar e confirmar o envio e recebimento de todas as mensagens que trafegam pela rede; - Contabilizao de uso do sistema: responsvel por contabilizar o uso de todos os recursos do sistema consumidos pelos usurios e suas aplicaes. So registrados: tempo de CPU, tempo corrido, quantidade de rea alocada em memria, em disco, linhas impressas, pginas de papel, entre outros. Isto se faz necessrio para servir de subsdio para anlise de performance, estatsticas de gastos com material de consumo e tambm para definio de custos de processamento.; - Auditoria e segurana do sistema: funo extremamente importante, pois detecta e registra (num arquivo especial de LOG) todas as ocorrncias de erro e violao de direitos de acesso ao sistema, aos arquivos, memria e a todos os

recursos do sistema. O arquivo de LOG usado pela gerncia de sistemas, com o intuito de verificar e aperfeioar os mecanismos de segurana e proteo ao sistema. A estrutura do sistema, a maneira como ele organizado e o inter-relacionamento entre seus diversos componentes pode variar conforme a concepo do projeto do sistema. 4.3 System Calls Uma grande preocupao no projeto de sistemas operacionais se refere implementao de mecanismos de proteo ao ncleo do sistema e tambm o controle de acesso aos servios oferecidos pelo sistema. Caso uma aplicao que tenha acesso ao ncleo realize alguma operao que altere sua integridade, todo o sistema poder ficar comprometido e inoperante. As system calls podem ser entendidas como uma porta de entrada para acesso ao ncleo do sistema e aos seus servios. Sempre que um usurio ou uma aplicao necessita de algum servio do sistema, realizada uma chamada a uma de suas rotinas atravs de uma system call. Atravs dos parmetros fornecidos na system call, a solicitao processada e uma resposta enviada aplicao juntamente com um estado de concluso indicando o sucesso ou no da operao. Para cada servio disponvel existe uma system call associada, e cada sistema operacional possui seu prprio conjunto de chamadas, com nomes, parmetros e formas de ativao especficos. Isto explica por que uma aplicao desenvolvida utilizando servios de um determinado sistema operacional no pode ser diretamente portada para um outro sistema.

4.5 Arquiteturas: Sistemas monolticos, em camadas e microkernel - Arquitetura monoltica: caracterizada por possuir seus mdulos compilados separadamente mas linkados formando um nico e enorme programa executvel.Onde os mdulos podem interagir livremente. Os primeiros sistemas operacionais foram desenvolvidos com base nesta arquitetura, o que tornava seu desenvolvimento e, principalmente, sua manuteno muito difceis. Como vantagens desta arquitetura podemos citar a rapidez de execuo e simplicidade de implementao. Como desvantagens, a limitao quanto a inovaes futuras e a dificuldade de manuteno.

- Arquitetura em camadas: com o aumento do tamanho do cdigo dos sistemas operacionais, tcnicas de programao estruturada e modular foram incorporadas em seu projeto.Na arquitetura em camadas, o sistema dividido em nveis sobrepostos. Cada camada oferece um conjunto de funes que podem ser utilizadas somente pelas camadas superiores. Neste tipo de implementao as camadas mais internas so mais privilegiadas que as camadas mais externas. A vantagem da estruturao em camadas o isolamento das funes do sistema, facilitando sua manuteno. Uma desvantagem o desempenho, comprometido devido s vrias mudanas de estado do processador provocado pela mudana de camadas. A figura a seguir mostra esta arquitetura.

- Arquitetura microkernel (cliente x servidor): uma tendncia nos sistemas operacionais modernos tornar o ncleo do sistema o menor e o mais simples possvel. Para implementar esta idia, os servios do sistema so disponibilizados atravs de processos, onde cada um responsvel por oferecer um conjunto especfico de funes, como gerncia de arquivos, gerncia de processos, gerncia de memria e escalonamento. Sempre que uma aplicao deseja algum servio, realizada uma solicitao ao processo responsvel. Neste caso, a aplicao que est solicitando o servio chamada de cliente, enquanto o processo que responde solicitao chamado de servidor. Um cliente, que pode ser uma aplicao do usurio ou um outro componente do sistema operacional, solicita um servio enviando uma mensagem para o servidor. O servidor responde ao cliente atravs de uma outra mensagem. A principal funo do ncleo realizar a comunicao, ou seja, a troca de mensagens entre o cliente e o servidor. A utilizao deste modelo permite que os servidores operem em modo usurio, no tendo acesso direto a certos componentes do sistema. Apenas o ncleo do sistema, responsvel pela comunicao entre clientes e servidores, executa em modo kernel. Como consequncia, se ocorrer um erro em algum servidor, este poder parar, mas o sistema no ficar inteiramente comprometido, aumentando assim a sua disponibilidade. Como os servidores se comunicam atravs de trocas de mensagens, no importa se os clientes e servidores processam em um sistema com um nico processador, com vrios processadores ou ainda em um ambiente de sistema distribudo. A arquitetura microkernel permite isolar as funes do sistema operacional por diversos servidores pequenos e dedicados a servios especficos, tornando o ncleo menor, mais fcil de depurar (procurar e solucionar erros) e, com isso, aumentando a sua confiabilidade. Apesar de todas as vantagens deste modelo, sua implementao muito difcil. A comear pelo desempenho, comprometido devido s vrias trocas de modo de acesso a cada troca de mensagens entre cliente e servidor. Outro problema que certas funes do sistema operacional, como operaes de E/S, exigem acesso direto ao hardware. Assim, o ncleo do sistema, alm de promover a comunicao entre clientes e servidores, passa a incorpora funes crticas do sistema, como escalonamento, tratamento de interrupes e gerncia de dispositivos.

Unidade V Conceito de Processo O conceito de processo a base para a implementao de um sistema multiprogramvel. O processador projetado apenas para executar instrues, no sendo capaz de distinguir qual programa se encontra em execuo.A gerncia de um ambiente multiprogramvel funo exclusiva do sistema operacional, que deve controlar a execuo dos diversos programas e o uso concorrente do processador.

A gerncia do processador uma das principais funes de um sistema operacional. Atravs dos processos, um programa pode alocar recursos, compartilhar dados e trocar informaes. 5.1 Componentes do processo Um processo pode ser entendido inicialmente como um programa em execuo, que tem suas informaes mantidas pelo sistema operacional. Num sistema multiusurio, cada usurio tem a impresso de possuir o processador e todos os demais recursos reservados exclusivamente para si, mas isto no verdade.Todos os recursos esto sendo compartilhados, inclusive a CPU. Neste caso, o processador executa o processo do usurio por um intervalo de tempo e, no instante seguinte, poder estar processando um outro programa, do mesmo ou de outro usurio. Para que a troca de processos possa ser feita sem problemas, necessrio que todas as informaes do programa que est sendo interrompido sejam guardadas, para que ele possa retornar CPU exatamente do ponto em que parou, no lhe faltando nenhuma informao vital sua continuao. Todas as informaes necessrias execuo de um programa fazem parte do processo. Um processo tambm pode ser definido como o ambiente onde o programa executado. Este ambiente, alm das informaes sobre a execuo, possui tambm a quantidade de recursos do sistema que o programa pode utilizar,como espao de endereamento, tempo do processador e rea em disco. Um processo formado por trs partes: contexto de software, contexto de hardware e espao de endereamento, que juntas mantm todas as informaes necessrias execuo de um programa.

Contexto de Software/Segmento de Dados: neste contexto so especificadas caractersticas e limites dos recursos que podem ser alocados pelo processo, como nmero mximo de arquivos abertos, prioridade de execuo, nmero mximo de linhas impressas, etc. Muitas destas caractersticas so criadas no momento da criao do processo, quando da sua alocao. O sistema operacional obtm, a partir do cadastro de usurios e do cadastro de contas no sistema, as informaes e caractersticas que valero para o processo.

O contexto de software composto por trs grupos de informaes: - Identificao: neste grupo so guardadas informaes sobre o usurio que criou o processo, e, em funo disso, suas reas de atuao no sistema. - Quotas: so os limites de recursos do sistema que um processo pode alocar, como rea utilizada em disco, em memria, limite de linhas impressas, nmero mximo de arquivos abertos, nmero mximo de operaes de E/S pendentes, tempo limite de CPU, etc. - Privilgios: diz respeito principalmente s prioridades assumidas pelo processo durante sua execuo. Contexto de Hardware/Pilha: armazena o contedo dos registradores gerais da CPU, alm dos registradores de uso especfico. Quando um processo est em execuo, o seu contexto de hardware est armazenado nos registradores da CPU. No momento em que o processo perde a utilizao da CPU, o sistema salva as informaes no contexto de hardware do processo. A troca de um processo por outro no processador, comandada pelo sistema operacional, denominada troca de contexto, que consiste em salvar o contedo dos registradores do processo que est deixando a CPU e carrega-los com os valores referentes ao do novo processo que ir executar. Essa operao resume-se em substituir o contexto de hardware de um processo pelo de outro. Espao de endereamento/Segmento de Texto: a rea de memria pertencente a um processo onde as instrues e os dados do programa so armazenados para execuo. Cada processo possui seu prprio espao de endereamento, que deve ser devidamente protegido do acesso dos demais processos. Os contextos de software e de hardware no fazem parte do espao de endereamento. Bloco de Controle do Processo: a estrutura de dados que compe o processo, contendo os contextos de software(segmento de dados) e de hardware(pilha) e o espao de endereamento(segmento de texto). O BCP reside em memria, numa rea reservada ao sistema operacional. 5.2 Estados do processo Num sistema multiprogramvel, um processo no deve alocar a CPU com exclusividade, de forma que possa existir um compartilhamento no uso do processador. Os processos passam por diferentes estados ao longo do processamento, em funo de eventos gerados pelo sistema operacional, pelo hardware, ou pelo prprio programa. So estados possveis de um processo: - Criao(FORK): neste estado o processo est sendo alocado na memria,sendo criado no sistema. Todos os recursos necessrios execuo do processo so reservados durante a passagem do processo por este estado, o que acontece uma nica vez. Vrios processos podem estar neste estado, ao mesmo tempo. - Pronto: o estado onde os processos, depois de criados ou quando retornam do tratamento de uma interrupo, permanecem aguardando a liberao da CPU para que possam iniciar ou continuar seuprocessamento. como se fosse uma fila, gerenciada pelo sistema operacional, que se incumbe de organizar os processos de acordo com as informaes contidas no contexto de software (identificao, quotas e privilgios). Vrios processos podem estar neste estado, ao mesmo tempo. - Execuo: onde o processo efetivamente utiliza a CPU. Ele permanece no processador at que seja interrompido ou termine sua execuo. Neste estado, somente um processo pode permanecer de cada vez, j que existe apenas um processador. - Espera: neste estado esto todos os processos que sofreram algum tipo de interrupo de E/S, onde permanecem at que a interveno seja resolvida. Vrios processos podem estar neste estado, ao mesmo tempo.

- Sada: o estado final do processo, quando este termina seu processamento. Vrios processos podem estar neste estado, ao mesmo tempo. 5.3 Mudanas de estado do processo Um processo muda de estado diversas vezes durante sua permanncia no sistema, devido aos eventos ocorridos durante sua execuo. So mudanas possveis: - Criao Pronto: o processo foi criado, tem seus recursos alocados, e est apto a disputar o uso da CPU. - Pronto Execuo: o processo o primeiro da fila de pronto e a CPU fica disponvel. Neste momento o processo passa a ocupar a CPU, permanecendo em execuo at que seja interrompido ou termine sua execuo. - Execuo Pronto: o processo foi interrompido por fatia de tempo ou por prioridade. Ainda precisa de mais tempo na CPU para terminar sua execuo, no tem nenhuma interveno pendente, por isso volta fila de pronto para disputar novamente o uso da CPU. - Execuo Espera: esta transio acontece quando o processo foi interrompido por E/S. Significa que deve permanecer no estado de espera at que a interrupo seja tratada pelo sistema. Neste estado o processo fica impedido de disputar o uso da CPU. - Espera Pronto: Aps o trmino do tratamento da interrupo, o processo volta fila de pronto para disputar novamente o uso da CPU. - Execuo Sada: o processo terminou, e no mais disputar o uso da CPU. A seguir, a figura mostra as mudanas possveis de estado de um processo.

5.4 Tipos de processos Alm dos processos do usurio, a CPU tambm executa processos do sistema. So aqueles que oferecem os servios do sistema operacional aos usurios, como criao/eliminao de processos, tratamento de interrupo e todos

aqueles correspondentes s funes do sistema j estudadas. Estes executam sempre, comcerta prioridade, concorrendo com os processos do usurio. Os processos em execuo, do usurio, podem assumir dois tipos diferentes, de acordo com suas caractersticas de uso de CPU e perifricos: - Processo CPU-bound: aquele processo que utiliza muito a CPU. Ele ganha uma fatia de tempo e a utiliza por inteiro, sem desperdiar nenhum tempo. o caso de programas cientficos, de clculo numrico, estatstica, matemtica, e tambm na rea de simulao. Normalmente fazem pouca ou nenhuma entrada de dados, e muito processamento. - Processo I/O-bound: o tipo de processo que utiliza muito mais E/S do que CPU. Aplicaes em Banco de Dados, onde se faz consultas e atualizaes constantes em arquivos em disco so um bom exemplo deste tipo de processo. De acordo com essas caractersticas, podemos dizer que este tipo de processo permanece mais tempo em espera (tratando interrupes) do que propriamente em execuo, ocupando a CPU por perodos mnimos de tempo. 5.5 Deadlock Deadlock (blocagem, impasse), no contexto do sistemas operacionais (SO), caracteriza uma situao em que ocorre um impasse e dois ou mais processos ficam impedidos de continuar suas execues, ou seja, ficam bloqueados. Tratase de um problema bastante estudado no contexto dos Sistemas Operacionais, assim como em outras disciplinas, como banco de dados, pois inerente prpria natureza desses sistemas. O deadlock ocorre com um conjunto de processos e recursos no-preemptveis, onde umou mais processos desse conjunto est aguardando a liberao de um recurso por um outro processo que, por sua vez, aguarda a liberao de outro recurso alocado ou dependente do primeiro processo. A definio textual de deadlock normalmente, por ser muito abstrata, mais difcil de se compreender do que a representao por grafos, que ser resumida mais adiante. No entanto, algumas observaes so pertinentes: O deadlock pode ocorrer mesmo que haja somente um processo no SO, considerando que este processo utilize mltiplos threads e que tais threads requisitem os recursos alocados a outros threads no mesmo processo; O deadlock independe da quantidade de recursos disponveis no sistema; Normalmente o deadlock ocorre com recursos como dispositivos, arquivos, memria etc. Apesar da CPU tambm ser um recurso para o SO, em geral um recurso facilmente preemptvel, pois existem os escalonadores para compartilhar o processador entre os diversos processos, quando trata-se de um ambiente multitarefa. Um exemplo onde erros de deadlock ocorrem no banco de dados. Suponha que uma empresa tenha vrios vendedores e vrios pontos de venda/caixas. O vendedor A vendeu 1 martelo e 1 furadeira. O sistema ento solicita o travamento do registro da tabela ESTOQUE que contm o total de martelos em estoque e em seguida solicita o travamento do registro que contm o total de furadeiras em estoque. De posse da exclusividade de acesso aos dois registros, ele l a quantidade de martelos, subtrai 1 e escreve de novo no registro, o mesmo com o registro de furadeiras. Observe, no entanto que existem diversos caixas operando simultaneamente de forma que se algum outro caixa naquele exato instante estiver vendendo um furadeira, ele ficar de aguardando a liberao do registro das furadeiras para depois alter-lo. Note que ele s altera os registro depois que for dada exclusividade para ele de TODOS os recursos que ele precisa, ou seja, de todos os registro. Suponha agora que em outro caixa a venda foram vendidos 1 furadeira e 1 martelo e que o outro caixa solicitou o travamento do registro com a quantidade de furadeiras e agora quer o acesso ao de martelos, no entanto o de martelos est travado para o primeiro caixa. Nenhum deles devolve o recurso (registro) sobre o qual tem exclusividade e tambm no consegue acesso ao outro registro que falta para terminar a operao. Isto um deadlock.

Condies necessrias para a ocorrncia de deadlock No texto acima, foi dito que o deadlock ocorre naturalmente em alguns sistemas. No entanto, necessrio ressaltar que tais sistemas precisam obedecer a algumas condies para que uma situao de deadlock se manifeste. Essas condies esto listadas abaixo, onde as trs primeiras caracterizam um modelo de sistema, e a ltima o deadlock propriamente dito: processos que estejam de posse de recursos obtidos anteriormente podem solicitar novos recursos. Caso estes recursos j estejam alocados a outros processos, o processo solicitante deve aguardar pela liberao do mesmo; Condio de no-preempo: recursos j alocados a processos no podem ser tomados a fora. Eles precisam ser liberados explicitamente pelo processo que detm a sua posse; Condio de excluso mtua: cada recurso ou est alocado a exatamente um processo ou est disponvel; Condio de posse-e-espera: cada processo pode solicitar um recurso, ter esse recurso alocado para si e ficar bloqueado esperando por um outro recurso; Condio de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que est com o prximo membro da cadeia. Representao de deadlock em grafos O deadlock tambm pode ser representado na forma de grafos dirigidos, onde o processo representado por um crculo e o recurso, por um quadrado. Quando um processo solicita um recurso, uma seta dirigida do crculo ao quadrado. Quando um recurso alocado a um processo, uma seta dirigida do quadrado ao crculo. Na figura do exemplo, podem-se ver dois processos diferentes (A e B), cada um com um recurso diferente alocado (R1 e R2). Nesse exemplo clssico de deadlock, facilmente visvel a condio de espera circular em que os processos se encontram, onde cada um solicita o recurso que est alocado ao outro processo.

Tratamento de deadlock

As situaes de deadlock podem ser tratadas ou no em um sistema, e cabe aos desenvolvedores avaliar o custo/benefcio que essas implementaes podem trazer. Normalmente, as estratgias usadas para detectar e tratar as situaes de deadlocks geram grande sobrecarga, podendo at causar um dano maior que a prpria ocorrncia do deadlock, sendo, s vezes, melhor ignorar a situao. Existem trs estratgias para tratamento de deadlocks: Ignorar a situao; Detectar o deadlock e recuperar o sistema; Evitar o deadlock; Algoritmo do Avestruz (Ignorar a situao) A estratgia mais simples para tratamento (ou no) do "deadlock", conhecida como Algoritmo do Avestruz, simplesmente ignor-lo. Muitos defendem que a frequncia de ocorrncia deste tipo de evento baixa demais para que seja necessrio sobrecarregar a CPU com cdigos extras de tratamento, e que, ocasionalmente, tolervel reiniciar o sistema como uma ao corretiva. Detectar o deadlock e recuperar o sistema Nessa estratgia, o sistema permite que ocorra o deadlock e s ento executa o procedimento de recuperao, que resume-se na deteco da ocorrncia e na recuperao posterior do sistema. na execuo desse procedimento que ocorre a sobrecarga, pois existem dois grandes problemas: primeiramente, como/quando detectar o deadlock e depois, como corrigi-lo. Para detectar o deadlock, o sistema deve implementar uma estrutura de dados que armazene as informaes sobre os processos e os recursos alocados a eles. Essas estruturas devero ser atualizadas dinamicamente, de modo que reflitam realmente a situao de cada processo/recurso no sistema. S o mero procedimento de atualizao dessas estruturas j gera uma sobrecarga no sistema, pois toda vez que um processo aloca, libera ou requisita um recurso, as estruturas precisam ser atualizadas. Alm disso, o SO precisa verificar a ocorrncia da condio de espera circular nessas estruturas para a efetiva deteco do deadlock. Esse procedimento, por sua vez, gera outra sobrecarga, que pode ser mais intensa se no for definido um evento em particular para ser executado, como a liberao de um recurso, por exemplo. Assim, ou o SO verifica periodicamente as estruturas (o que no aconselhvel, pois pode aumentar consideravelmente o tempo de espera dos processos no-bloqueados), ou pode-se implementar uma poltica, onde o SO verifica as estruturas quando o mesmo realizar algum procedimento de manuteno do sistema, por exemplo. Finalmente, s aps detectar a presena do deadlock no sistema, o SO precisa corrigi-lo, executando um procedimento de recuperao. Quanto deteco do deadlock, vamos apresentar uma das tcnicas usadas para detectar a ocorrncia de deadlock em sistemas que possuem vrios recursos de cada tipo. Deteco de deadlock com vrios recursos de cada tipo O algoritmo de deteco de deadlock com vrios recursos de cada tipo baseia-se em um ambiente que possua vrios recursos do mesmo tipo e os processos solicitam apenas pelo tipo de recursos, no especificando qual recurso desejam utilizar. Assim, um processo pode requisitar uma unidade de CD para leitura. Se o sistema possuir duas, o processo pode utilizar a que estiver disponvel, em vez de especificar uma delas. Dessa forma, o processo solicita o recurso pelo tipo, sem discriminao.

O algoritmo para essa deteco trabalha com duas variveis, trs matrizes unidimensionais (vetores) e duas matrizes bidimensionais, descritas a seguir: Estruturas: o n: Varivel inteira. Representa a Quantidade de Processos Ativos; o m: Varivel inteira. Representa a Quantidade de Tipos de Recursos; o Matriz E = : Matriz unidimensional, de tamanho m. Representa a Matriz de Recursos Existentes; o Matriz A = : Matriz unidimensional, de tamanho m. Representa a Matriz de Recursos Atualmente Disponveis; o Matriz W = : Matriz unidimensional, de tamanho m. Representa uma Matriz Auxiliar, presente somente para facilitar o clculo durante a execuo do algoritmo; o Matriz C = : Matriz bidimensional, de tamanho n x m. Representa a Matriz de Alocao Corrente; o Matriz R = : Matriz bidimensional, de tamanho n x m. Representa a Matriz de Recursos Requisitados. 5.7 Comunicao Interprocesso A comunicao entre processos, em ingls Inter-Process Communication (IPC), o grupo de mecanismos que permite aos processos transferirem informao entre si. A execuo de um processo pressupe por parte do sistema operacional, entre outras coisas, a criao de um contexto de execuo prprio que, de certa forma, abstrai o processo dos componentes reais do sistema. Devido a esta virtualizao dos recursos, o processo no tem conhecimento acerca dos outros processos e, como tal, no consegue trocar informao. Mecanismos locais Pipes nomeados (FIFO) Os pipes nomeados, ou FIFOs, so arquivos especiais que servem de canal de comunicao entre processos. Um processo abre o FIFO para escrita, outro para leitura. Pipes unidireccionais Esta a forma mais utilizada de IPC. Um exemplo: C:\> TYPE AUTOEXEC.BAT | MORE Este exemplo em DOS iria canalizar o output do comando TYPE como input para o programa MORE. Filas de mensagens Uma fila de mensagens ou message queue permite criar uma zona de intercmbio de mensagens de tamanho fixo ao nvel do sistema operacional, oferecendo um maior nvel de segurana sobre quais os processos que a ela podem acessar Alm do sistema de permisses, a fila de mensagens criada com uma chave que dever ser apenas do conhecimento dos utilizadores deste recurso. Uma das caracterstica deste mecanismo que as mensagens podem ser retiradas selectivamente, j que cada uma identificada por um tipo de mensagem. A extrao pode ser por tipo ou do tipo FIFO. Memria Compartilhada Tal como o mecanismo anterior, este oferece as mesmas vantagens em termos de segurana. A memria partilhada uma zona de memria que vrios processos podem acessar, mediante apresentao da chave e permisses corretas.

Este mecanismo necessita de sincronizao entre processos, j o acesso assncrono pode originar a condies de corrida. Mecanismos cliente/servidor Sockets Os sockets tambm so considerados IPC, embora mais orientados para uma arquitectura cliente-servidor. Remote Procedure Calls Os RPC so tambm considerados IPC. Sincronizao entre processos A sincronizao entre processos permite gerir o acesso concorrente a recursos do sistema operacional de forma controlada por parte dos processos, de maneira que um recurso no seja modificado em simultneo, ou que os processos no fiquem em espera que o recurso seja libertado. Sinais A sinalizao um mecanismo largamente utilizado em UNIX e funciona analogamente a um trigger (disparo). Um processo receptor de um sinal ir parar a sua execuo imediatamente, para passar a processar o sinal. Desta forma, o processo assim "despertado" para um qualquer evento, consoante o sinal recebido. Um exemplo comum o sinal KILL (matar) enviado a um processo bloqueado: # kill -KILL 3516 Semforos Os semforos so o mecanismo de sincronizao mais complexo, j que permitem, simultaneamente, gerir o acesso concorrente quer em modo de exclusividade (1utilizador) quer em modo de cooperao (N utilizadores). Em modo de exclusividade o semforo apenas permite um utilizador do recurso. A parte do cdigo do processo delimitada pela activao do semforo e sua libertao denomina-se seco crtica. Esta dever ser o mais pequena e rpida possvel, a fim de minimizar o tempo de espera dos processos concorrentes. Este mecanismo bloqueante, em oposio aos sinais. 5.8 Resumo Nessa unidade foram apresentados os conceitos de processo, deadlock, threads ecomunicao interprocesso. Processo pode ser entendido inicialmente como um programa em execuo, que tem suas informaes mantidas pelo sistema operacional. Deadlock (blocagem, impasse), no contexto do sistemas operacionais (SO), caracteriza uma situao em que ocorre um impasse e dois ou mais processos ficam impedidos de continuar suas execues. Thread, ou linha de execuo em portugus, uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente Comunicao entre Processos(IPC), o grupo de mecanismos que permite aos processos transferirem informao entre si. 6.3 Escalonamentos No-Preemptivos e Preemptivos Escalonamentos do tipo no-preemptivos so aqueles onde o sistema operacionalno pode interromper o processo em execuo para retir-lo da CPU. Assim sendo, se nenhum evento externo ocorresse durante a execuo do

processo, este permanecia na CPU at terminar ou ento alguma instruo do prprio programa o desviasse para o estado de espera (operao de E/S). J os escalonamentos preemptivos so caracterizados pela possibilidade de o sistema operacional interromper o processo em execuo para retir-lo da CPU e dar lugar a outro. Neste caso o processo retirado da CPU volta ao estado de pronto, onde permanece aguardando nova oportunidade de ocupar a CPU. Com o uso da preempo, possvel ao sistema priorizar a execuo de processos, como no caso de aplicaes em tempo real. Outro benefcio a possibilidade de implementar polticas de escalonamento que compartilhem o processador de uma maneira mais uniforme, balanceando o uso da CPU entre os processos. So escalonamentos no-preemptivos: - FIFO: o processo que chegar primeiro fila de pronto selecionado para execuo, e permanece utilizando o processador at terminar sua execuo ou ser interrompido por E/S. Neste caso, o prximo processo da fila de pronto selecionado para execuo. Todo processo que chega fila de pronto entra no final desta fila, conservando a ordem de chegada na fila, at ser escalonado novamente. Apesar de simples, este escalonamento apresenta algumas deficincias, principalmente no que diz respeito dificuldade de se prever o incio da execuo de um processo, j que a ordem de chegada fila de pronto deve ser observada risca. Outro problema quanto aos tipos de processo, onde os CPU-bound levam vantagem no uso do processador em relao aos do tipo I/O-bound, pois o sistema no trata este tipo de diferena. O escalonamento FIFO foi inicialmente implementado em sistemas monoprogramveis, sendo ineficiente se aplicado em sistemas interativos de tempo compartilhado. Abaixo, um exemplo de escalonamento utilizando o mtodo FIFO: a ordem de chegada dos processos (A, B, C) na fila de pronto foi obedecida, e, no tendo sido interrompidos por E/S, os processos executaram inteiramente at terminar, de acordo com seus tempos necessrios para execuo. 0 Processo A 10 u.t. 10 Processo B 8 u.t. 18 27 Processo C 9 u.t.

- SJF (Shortest Job First): este escalonamento seleciona o processo que tiver o menor tempo de processador ainda por executar. Desta forma, o processo que estiver na fila de pronto com menor necessidade de tempo de CPU para terminar o seu processamento ser o escolhido para ocupar a CPU. Funciona com um parmetro passado ao sistema via contexto de software, onde o tempo estimado para o processo informado baseando-se em estatsticas de execues anteriores. Como exemplo, vamos utilizar os mesmos processos executados no escalonamento FIFO acima, com seus respectivos tempos de execuo em u.t.(unidades de tempo): processo A com 10 u.t., processo B com 8 u.t, e o processo C com 9 u.t. Como neste escalonamento o que importa o tempo de execuo, a nova ordem de escalonamento para utilizao da CPU ser B, C e A, como segue: 0 8 17 Processo A 27

Processo B Processo C

- Cooperativo: este escalonamento busca aumentar o grau de concorrncia no processador. Neste caso, um processo em execuo pode voluntariamente liberar o processador retornando fila de pronto, possibilitando que um novo processo seja escalonado, permitindo melhor distribuio do tempo do processador. A liberao da CPU uma tarefa exclusiva do programa em execuo, que de maneira cooperativa libera o processador para um outro processo. Neste mecanismo, o processo em execuo verifica periodicamente uma fila de mensagens para saber se existem outros processos na fila de pronto. Porm, como a interrupo do processo no depende do sistema operacional, situaes indesejveis podem ocorrer, como por exemplo, se um programa em execuo no verificar a fila de mensagens, os demais programas no tero chance de executar enquanto a CPU no for liberada. As primeiras verses do Windows chegaram a utilizar este tipo de escalonamento.

So escalonamentos preemptivos: - Circular: um tipo de escalonamento projetado especialmente para sistemas em tempo compartilhado. muito semelhante ao FIFO (obedece a ordem de chegada fila de PRONTO), mas quando um processo passa para o estado de execuo h um limite de tempo para o uso contnuo do processador, chamado fatia de tempo (timeslice) ou quantum. Assim, toda vez que um processo selecionado para execuo uma nova fatia de tempo lhe concedida. Caso esta fatia de tempo expire, o sistema operacional interrompe o processo, salva seu contexto e o direciona para a fila de PRONTO. Este mecanismo conhecido como preempo por tempo. A principal vantagem deste escalonamento no permitir que um processo monopolize a CPU. Outrossim, uma desvantagem que os processos CPU-bound so beneficiados no uso do processador em relao aos processos I/O-bound, pois tendem a utilizar totalmente a fatia de tempo recebida. A figura a seguir mostra o escalonamento circular com 3 processos, onde a fatia de tempo igual a 2 u.t. No exemplo no esto sendo levados em considerao tempos de troca de contexto entre os processos, nem o tempo perdido em operaes de E/S. Os processos A, B e C, gastam 10 u.t, 6 u.t e 3 u.t., respectivamente.

- Por Prioridades: funciona com base num valor associado a cada processo, denominado prioridade de execuo. O processo com maior prioridade na fila de PRONTO sempre o escolhido para ocupar o processador, sendo os processos com prioridades iguais escalonados pelo critrio FIFO. Neste escalonamento o conceito da fatia de tempo no existe. Como conseqncia disto, um processo em execuo no pode sofrer preempo por tempo. Neste escalonamento a perda do uso do processador somente ocorrer no caso de uma mudana voluntria para o estado de espera (interrupo por E/S), ou quando umoutro processo de prioridade maior passa (ou chega) para o estado de pronto. Neste caso o sistema operacional interrompe o processo em execuo, salva seu contexto e o coloca na fila de pronto, dando lugar na CPU ao processo prioritrio. Este mecanismo chamado de preempo por prioridade. A figura a seguir mostra a execuo dos processos A, B e C, com tempos de execuo de 10, 4 e 3 u.t. respectivamente, e valores de prioridades de 2, 1 e 3, tambm respectivamente. Na maioria dos sistemas, valores menores correspondem MAIOR prioridade. Assim, a ordem de execuo ser invertida para B, A e C.

A prioridade de execuo faz parte do contexto de software do processo, e pode ser esttica (quando no pode ser alterada durante a existncia do processo) ou dinmica (quando pode ser alterada durante a existncia do processo). Este escalonamento muito usado em sistemas de tempo real, com aplicaes de controle de processos, controle de trfego (sinais de trnsito, de trens/metr, areo), robtica, entre outros. - Escalonamento Circular com Prioridades: implementa o conceito de fatia de tempo e de prioridade de execuo associada a cada processo. Neste escalonamento, um processo permanece no estado de execuo at que termine seu processamento, ou voluntariamente passe para o estado de espera (interrupo por E/S), ou sofra uma preempo por tempo ou prioridade. A principal vantagem deste escalonamento permitir um melhor balanceamento no uso do processador, com a possibilidade de diferenciar o grau de importncia dos processos atravs da prioridade (o Windows utiliza este escalonamento). - Por Mltiplas Filas: Este escalonamento implementa vrias filas de pronto, cada uma com prioridade especfica. Os processos so associados s filas de acordo com caractersticas prprias, como importncia da aplicao, tipo de processamento ou rea de memria necessria. Assim, no o processo que detm a prioridade, mas sim a fila. O processo em execuo sofre preempo caso um outro processo entre em uma fila de maior prioridade. O sistema operacional s pode escalonar processos de uma fila quando todas as outras filas de maior prioridade estejam vazias. Os processos sempre voltam para a mesma fila de onde saram. - Por Mltiplas Filas com Realimentao: semelhante ao anterior, porm permitindo ao processo voltar para uma outra fila de maior ou menor prioridade, de acordo com seu comportamento durante o processamento. O sistema operacional identifica dinamicamente o comportamento de cada processo e o redireciona para a fila mais conveniente ao longo de seu processamento. um algoritmo generalista, podendo ser implementado na maioria dos sistemas operacionais. 6.4 Resumo As funes da gerncia do processador, podemos citar: manter o processador ocupado a maior parte do tempo. Balancear o uso da CPU entre processos, privilegiar a execuo de aplicaes crticas, maximizar o throughput e oferecer tempos de resposta razoveis aos usurios interativos.

Throughput (ou taxa de transferncia) a quantidade de dados transferidos de um lugar a outro, ou a quantidade de dados processados em um determinado espao de tempo. 7.8 Swapping uma tcnica aplicada gerncia de memria que visa dar maior taxa de utilizao memria principal, melhorando seu compartilhamento. Visa tambm resolver o problema da falta de memria principal num sistema. Toda vez que um programa precisa ser alocado para execuo e no h espao na memria principal, o sistema operacional escolhe entre os processos alocados que no tem previso de utilizar a CPU nos prximos instantes (quase sempre entre aqueles que esto em interrupo de E/S ou no final da fila de pronto), e descarrega este processo da memria para uma rea especial em disco, chamada arquivo de swap, onde o processo fica armazenado temporariamente. Durante o tempo em que o processo fica em swap, o outro que necessitava de memria entra em execuo ocupando o espao deixado pelo que saiu. Pouco antes de chegar a vez do processo armazenado em swap utilizar a CPU, o sistema escolhe um outro processo para descarregar para swap e devolve o anterior da rea de swap para a memria principal, para que este possa ser executado novamente. E vai trabalhando assim at que os processos vo terminando. O problema dessa tcnica que pode provocar um nmero excessivo de acesso memria secundria (disco), levando o sistema a uma queda de desempenho. 7.9 Memria Virtual Anteriormente foram apresentadas diversas tcnicas de gerenciamento de memria que evoluram no sentido de maximizar o nmero de processos residentes na memria principal e reduzir o problema da fragmentao, porm os esquemas vistos se mostraram muitas vezes ineficientes. Alm disso, o tamanho dos programas e de suas estruturas de dados estava limitado ao tamanho da memria disponvel. Como vimos, a utilizao da tcnica de overlay para contornar este problema de difcil implementao na prtica e nem sempre uma soluo garantida e eficiente. Memria virtual uma tcnica sofisticada e poderosa de gerncia de memria onde as memrias principal e secundria so combinadas, dando ao usurio a impresso de que existe muito mais memria do que a capacidade real de memria principal. O conceito de memria virtual baseia-se em no vincular o endereamento feito pelo programa aos endereos fsicos da memria principal. Desta forma, o programa e suas estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel, pois podem possuir endereos vinculados memria secundria, que funciona como uma extenso da memria principal. Outra vantagem desta tcnica permitir um nmero maior de processos compartilhando a memria principal, j que apenas partes de cada processo estaro residentes. Isto leva a uma utilizao mais eficiente do processador, alm de minimizar (ou quase eliminar) o problema da fragmentao. A seguir, os conceitos que envolvem a gerncia de memria virtual, incluindo a paginao: - espao de endereamento virtual: o conjunto de endereos virtuais que um processo pode enderear. - Espao de endereamento real: analogamente, o conjunto de endereos reais que um processo pode enderear. - Mapeamento: como o espao de endereamento virtual no tem nenhuma relao com o espao de endereamento real, um programa pode fazer referncia a um endereo virtual que esteja fora dos limites da memria principal (real), ou seja, os programas e suas estruturas de dados no esto mais limitados ao tamanho da memria fsica disponvel. Quando um programa executado, apenas uma parte do seu cdigo fica residente na memria principal, permanecendo o restante na memria virtual at o momento de ser referenciado. Este esquema de endereamento virtual ignorado pelo programador no desenvolvimento das aplicaes. Cabe ao compilador e ao linkeditor gerar cdigos executveis em funo doendereamento virtual, e

o sistema operacional se incumbe de administrar os detalhes durante a sua execuo. O processador apenas executa instrues e referencia dados residentes no espao de endereamento real. Portanto, deve existir um mecanismo que transforme os endereos virtuais em endereos reais. Este mecanismo o que chamamos de mapeamento, e consiste em permitir a traduo do endereo virtual em endereo real. Como conseqncia, um programa no mais precisa estar necessariamente em endereos contguos na memria real para ser executado. - Tabela de endereamento de pginas: estrutura mantida pelo sistema para armazenar, entre outras informaes, o mapeamento. nica e exclusiva para cada processo, relacionando os endereos virtuais do processo s suas posies na memria real. - Memria virtual por paginao: a tcnica de gerncia de memria onde o espao de endereamento virtual e o espao de endereamento real so divididos em blocos do mesmo tamanho chamados pginas. As pginas do espao virtual so chamadas pginas virtuais, enquanto as pginas do espao real so chamadas pginas reais ou frames. - Page fault: a falha de pgina. Sempre que o processo referencia um endereo virtual, o sistema verifica se a pgina correspondente j est carregada na memria real. Se no estiver, acontece o page fault. Neste caso, o sistema deve transferir a pgina virtual para um endereo na memria real.Esta transferncia chamada de paginao. O nmero de page faults gerados por um processo em um determinado intervalo de tempo chamado de taxa de paginao do processo. Se esta taxa atingir valores elevados, pode haver um comprometimento do desempenho do sistema. Um page fault provoca uma interrupo no processo, pois h a necessidade de acessar operaes de E/S. Assim, sempre que acontece a paginao, uma interrupo de E/S far com que o processo em execuo seja interrompido e colocado em estado de espera at que sua interveno de E/S seja realizada, quando ento o processo voltar fila de pronto e entrar em execuo de acordo com o escalonamento normal. Enquanto o sistema trata a interrupo deste processo, um outro ocupar a CPU. - Working-set: o conjunto de pginas de um processo, em memria real, em um determinado instante. Este conceito surgiu com o objetivo de reduzir o problema do thrashing e est relacionado ao princpio da localidade Existem dois tipos de localidade que so observados durante a execuo da maioria dos programas. A localidade espacial a tendncia de que, aps uma referncia a um endereo de memria, sejam realizadas novas referncias a endereos prximos ou adjacentes. A localidade espacial a tendncia de que, aps a referncia a uma posio de memria, esta mesma posio seja referenciada novamente num curto intervalo de tempo. A partir desse princpio de localidade, o processador tender a concentrar suas referncias a um conjunto de pginas do processo durante um determinado perodo de tempo. Imagine um loop principal de um programa que ocupe trs pginas. A tendncia que estas trs pginas tenham um alto ndice de referncias durante a execuo do programa. - Thrashing: o efeito causado pelo excesso de page faults durante a execuo de um processo. Pode acontecer a nvel de programa ou de sistema. A nvel de programa, pode ser provocado por um programa mal escrito, com desvios incondicionais espalhados por seu cdigo (desobedecendo portanto aos princpios da localidade), ou por um limite de working-set muito pequeno (que no comporte o loop principal do programa, por exemplo). A soluo para estes casos reescrever o programa ou aumentar o limite do working-set. No caso de thrashing de sistema, significa que h mais pginas sendo requeridas na memria real do que ela pode realmente suportar. A soluo aumentar o tamanho da memria fsica.- Tamanho da pgina: deve estar entre 512 bytes e 128KB, aproximadamente. Pginas menores promovem maior compartilhamento da memria, permitindo que mais programas possam ser executados. Pginas maiores diminuem o grau de compartilhamento da memria, com menos programas disputando o processador. Assim conclui-se que quanto menor o tamanho da pgina, MAIOR o grau de compartilhamento da memria e da CPU. - Polticas de busca de pginas: definem como as pginas sero carregadas da memria virtual para a memria real. A poltica por demanda estabelece que uma pgina somente ser carregada quando for referenciada. Este mecanismo conveniente, pois leva para a memria real somente as pginas realmente necessrias execuo do programa, ficando as outras na memria virtual. A outra poltica, chamada paginao antecipada, funciona carregando antecipadamente vrias pginas da memria virtual para aprincipal, na tentativa de economizar

tempo de E/S. Nem sempre o sistema acerta na antecipao, mas o ndice de acertos quase sempre maior que o de erros. - Polticas de alocao de pginas: determinam quantos frames cada processo pode manter na memria real. A poltica de alocao fixa determina um limite de working-set igual para todos os processos, e pode ser vista como uma poltica injusta, na medida em que processos maiores normalmente necessitam de um working-set maior. A outra poltica a varivel, que define um limite de working-set diferente e varivel para cada processo, em funo de seu tamanho, taxa de paginao ou at mesmo da taxa de ocupao da memria principal. - Polticas de substituio de pginas: definem onde sero trocadas as pginas, quando se fizer necessria uma substituio. Na poltica local, somente as pginas do processo que gerou o page fault so candidatas a serem substitudas.J na poltica global, todas as pginas alocadas na memria principal so candidatas substituio, independente do processo que gerou o page fault. Como uma pgina de qualquer processo pode ser escolhida, pode ser que este processo sofra um aumento temporrio da taxa de paginao em funo da diminuio das suas pginas alocadas em memria. Unidade VIII Gerncia de Sistemas de Arquivos 8.1 Estrutura de Diretrios como o Sistema organiza logicamente os arquivos. Contm entradas associadas aos arquivos, com as informaes de localizao, nome, organizao e outros atributos: Nvel nico: a implementao mais simples de uma estrutura de diretrios, onde existe um nico diretrio contendo todos os arquivos do disco. muito limitado, no permitindo a criao de arquivos com o mesmo nome. Diretrio pessoal: Evoluo do modelo anterior, permite a cada usurio ter ser diretrio particular, sem a preocupao de conhecer os outros arquivos do disco. Neste modelo h um diretrio master que indexa todos os diretrios particulares dos usurios, provendo o acesso a cada um. Mltiplos nveis (RVORE): o modelo utilizado hoje em dia em quase todos os Sistemas Operacionais. Nesta modalidade cada usurio pode criar vrios nveis de diretrios (ou sub-diretrios), sendo que cada diretrio pode conter arquivos e sub-diretrios. O nmero de nveis possveis depende do Sistema Operacional. 8.2 Sistemas de alocao de arquivos FAT: sistema criado no MS-DOS e depois utilizado no Windows. Usa listas encadeadas, tem um limite de rea utilizvel em parties de 2 GB, caracteriza-se por um baixo desempenho no acesso e armazenamento. FAT32: igual ao FAT no que diz respeito a organizao e desempenho, mas pode trabalhar com parties de at 2TB. NTFS: NT File System, original da plataforma Windows NT/2000/XP. Opera com uma estrutura em rvore binria, oferecendo alto grau de segurana e desempenho: - nomes de arquivo com at 255 caracteres, podendo conter maisculas, minsculas e espaos em branco; - dispensa ferramentas de recuperao de erros; - bom sistema de proteo de arquivos; - criptografia; - suporta discos de at 264 bytes.

UNIX: Usa diretrio hierrquico, com um raiz e outros diretrios subordinados. Neste Sistema Operacional todos os arquivos so considerados apenas como uma seqncia de bytes, sem significado para o Sistema. responsabilidadeda aplicao controlar os mtodos de acesso aos arquivos. O UNIX utiliza tambm alguns diretrios padronizados, de exclusividade do Sistema. O EXT3 atualmente o sistema de arquivos mais utilizado no mundo Linux. Usado por padro pela grande maioria das distribuies. Tudo comeou com o sistema EXT (Extended File System), introduzido em 1992. Nos estgios primrios de desenvolvimento, o Linux utilizava um sistema de arquivos bem mais antigo, o MinixFS (o Minix um sistema Unix, que Linux Torvalds usou como base nos estgios primrios do desenvolvimento do Linux). Entretanto, o MinixFS possua pesadas limitaes, mesmo para a poca. Os endereos dos blocos de dados tinham apenas 16 bits, o que permitia criar parties de no mximo 64 MB. Alm disso, o sistema no permitia nomes de arquivos com mais de 14 caracteres. O EXT3 (assim como o EXT2) utiliza endereos de 32 bits e blocos (anlogos aos clusters usados no sistema FAT) de at 8 KB. Tanto o tamanho mximo da partio, quanto o tamanho mximo dos arquivos so determinados pelo tamanho dos blocos, que pode ser escolhido durante a formatao: Tamanho dos blocos Tamanho mximo da partio Tamanho mximo dos arquivos

1 KB 2 KB 4 KB 8 KB

2 TB 8 TB 16 TB 32 TB

16 GB 256 GB 2 TB 2 TB

Uma observao que, em verses antigas do Kernel, o limite para o tamanho mximo de arquivos no EXT2 j foi de 2 GB e em seguida de 16 GB, mas ambas as limitaes caram a partir do Kernel 2.6, chegando tabela atual. 8.4 Proteo de acesso Considerando-se que os meios de armazenamento so compartilhados por vrios usurios, fundamental que mecanismos de proteo sejam implementados para garantir a integridade e proteo individual dos arquivos e diretrios: - Senha de acesso: mecanismo de simples implementao, mas apresenta duas desvantagens: no possvel determinar quais os tipos de operao podem ser efetuadas no arquivo, e, se este for compartilhado, todos os usurios que o utilizam devem conhecer a senha de acesso. - Grupos de usurio: muito utilizada em muitos Sistemas Operacionais. Consiste em associar cada usurio a um grupo. Os grupos so organizados logicamente com o objetivo de compartilhar arquivos e diretrios no disco. Este mecanismo implementa trs nveis de proteo: OWNER (dono), GROUP (grupo) e ALL (todos). Na criao do arquivo o usurio especifica se o arquivo pode ser acessado somente pelo seu criador, pelo grupo ou por todos os usurios, alm de definir que tipos de acesso podem ser realizados (leitura, escrita, execuo e eliminao) - Lista de controle de acesso: uma lista associada ao arquivo onde so especificados quais os usurios e os tipos de acesso permitidos. O tamanho dessa estrutura pode ser bastante extenso se considerarmos que um arquivo pode ser compartilhado por vrios usurios. Alm deste problema, h o inconveniente de se fazer acesso seqencial lista toda vez que um acesso solicitado. Em determinados sistemas de arquivos pode-se utilizar uma combinao de proteo por grupos de usurios ou por listas de acesso, oferecendo assim maior flexibilidade ao mecanismo de proteo de arquivos e diretrios.

8.5 Resumo Um sistema de arquivos um conjunto de estruturas lgicas e de rotinas, quepermitem ao sistema operacional controlar o acesso ao disco rgido. Diferentes sistemas operacionais usam diferentes sistemas de arquivos. Conforme cresce a capacidade dos discos e aumenta o volume de arquivos e acessos, esta tarefa torna-se mais e mais complicada, exigindo o uso de sistemas de arquivos cada vez mais complexos e robustos. Existem diversos sistemas de arquivos diferentes, que vo desde sistemas simples como o FAT16, que utilizamos em cartes de memria, at sistemas como o NTFS, EXT3 e ReiserFS, que incorporam recursos muito mais avanados.

No mundo Windows, temos apenas trs sistemas de arquivos: FAT16, FAT32 e NTFS. O FAT16 o mais antigo, usado desde os tempos do MS-DOS, enquanto o NTFS o mais complexo e atual. Apesar disso, temos uma variedade muito grande de sistemas de arquivos diferentes no Linux (e outros sistemas Unix), que incluem o EXT2, EXT3, ReiserFS, XFS, JFS e muitos outros. Para quem usa apenas o Windows, estes sistemas podem parecer exticos, mas eles so velhos conhecidos de quem trabalha com servidores, j que neles o Linux que o sistema mais popular.