Escolar Documentos
Profissional Documentos
Cultura Documentos
Este Caderno foi elaborado em parceria entre o Instituto Federal de Educao, Cincia e Tecnologia de So Paulo - Campus So Joo da Boa Vista e o Sistema Escola Tcnica Aberta do Brasil e-Tec Brasil.
Equipe de Elaborao IFSP Coordenao Institucional Campus So Joo da Boa Vista Professor-autor Fbio Justo do Santos Comisso de Acompanhamento e Validao Gustavo Aurlio Prieto Yara Maria Guisso de Andrade Facchini Projeto Grfico Eduardo Meneses e Fbio Brumana Diagramao Matheus Flix de Andrade Reviso Elizabeth Gouveia da Silva Vanni
Assim, a modalidade de Educao a Distncia oferece nova interface para amais expressiva expanso da rede federal de educao tecnolgica dos ltimos anos: aconstruo dos novos centros federais (CEFETs), a organizao dos Institutos Federaisde Educao Tecnolgica (IFETs) e de seus campi. O Programa e-Tec Brasil vai sendo desenhado na construo coletiva e participaoativa nas aes de democratizao e expanso da educao profissional no Pas,valendo-se dos pilares da educao a distncia, sustentados pela formao continuadade professores e pela utilizao dos recursos tecnolgicos disponveis. A equipe que coordena o Programa e-Tec Brasil lhe deseja sucesso na sua formaoprofissional e na sua caminhada no curso a distncia em que est matriculado(a). Braslia, Ministrio da Educao setembro de 2008.
Sumrio
3 5 9 11
13 13 13 13 14 14 17 18
19
20 22 24 25 26 28 30 30
33
34 34 36 37 38
3.6 Memria Virtual 3.6.1 Paginao 3.6.1.1 Algoritmo timo de substituio de pginas 3.6.1.2 Troca de pginas no usadas recentemente (NUR) 3.6.1.3 Algoritmo FIFO 3.6.1.4 Algoritmo segunda chance 3.6.1.5 Algoritmo da pg. usada h mais tempo 3.6.2 Segmentao Exerccios
39 40 42 42 43 44 44 45 47
50
51 52 54 54 55 56 56 57 58
60
61 61 62 63 63 64 64 66 66 68 70
Referncias
68
e-Tec Brasil
A Unidade de Ensino Descentralizada de So Joo da Boa Vista uma unidade educacional subordinada ao Centro Federal de Educao Tecnolgica de So Paulo, autorizada pela Portaria n 1715 do Ministro da Educao, publicada no Dirio Oficial da Unio de 20/10/2006. Tem estrutura administrativa definida pela resoluo n 136/06 de 16/11/2006 do Conselho Diretor do CEFET-SP. A histria do campus se inicia no ano de 1998 quando formulado o projeto para a criao do CEPRO em So Joo da Boa Vista. No ano seguinte o anteprojeto aprovado pelo Programa de Expanso da Educao Profissional (PROEP). No mesmo ano se d o incio das obras para construo do prdio em terreno doado por Paulo Roberto Merlin e Flvio Augusto Canto. Em 2004, o prdio entregue com 2529m, sendo constitudo de onze laboratrios, seis salas de aulas, um auditrio com capacidade para 150 lugares, sala de multimdia e demais dependncias. As atividades do Centro de Educao Profissional so iniciadas em 2005. Em 2006 firmado o convnio entre o CEPRO e CEFET-SP, com apoio da prefeitura municipal para a federalizao da unidade. Em Janeiro de 2007 o CEFET-SP / UNED SBV iniciou suas atividades no municpio. O IFSP, no municpio de So Joo da Boa Vista, veio para atender a necessidade de educar os jovens so joanenses e da regio, a fim de habilit-los para o ingresso nos setores de indstria e informtica, os quais demandam trabalhadores capacitados para o progresso no desenvolvimento econmico e para o fortalecimento do plo educacional na regio leste do estado. Atuao do IFSP na Educao a Distncia No contexto da poltica de expanso da educao superior no pas, implementada pelo MEC, a EaD coloca-se como uma modalidade importante no seu desenvolvimento. Nesse sentido, criou-se uma direo para EaD dentro do IF SP. No mbito da poltica de expanso da educao profissionalizante, o Ministrio da Educao, por meio da articulao da Secretaria de Educao a Distncia e Secretaria de Educao Profissional e Tecnolgica, lana o Edital 01/2007/SEED/SETEC/MEC, dispondo sobre o Programa Escola Tcnica Aberta do Brasil (e-Tec Brasil). Tal iniciativa constitui-se uma das aes do Plano de Desenvolvimento da Educao. Visando oferta de cursos da educao tcnica e profissional o IF SP foi selecionado pelo programa e-Tec Brasil para iniciar suas atividades em 2009. Tais atividades foram efetivamente implantadas em agosto de 2009 com a criao de dois cursos tcnicos a saber: tcnico em informtica para internet e tcnico em administrao atingindo 5 municpios do estado de So Paulo (Araraquara, Barretos, Itapevi, Franca e Jaboticabal) e ampliando em 500 a oferta de vagas do Instituto.
e-Tec Brasil
UNIDADE 1 - INTRODUO
Objetivos da aula
- Compreender os conceitos bsicos, referentes aos sistemas operacionais
As recentes mudanas na indstria da informtica tornaram os computadores pessoais (PC Personal Computer), ou desktop, mais baratos e ao mesmo tempo mais poderosos. Atualmente, possvel encontrar no mercado desde computadores pequenos e baratos, at grandes e poderosos. Independente de seu tamanho, custo e capacidade, todos os computadores possuem vrias caractersticas em comum, sendo a principal delas a necessidade de um sistema operacional para seu correto funcionamento. Mas ento, o que um sistema operacional (SO)? Basicamente um SO tem duas funes principais. A primeira delas gerenciar o funcionamento de todo o hardware do computador e, a segunda, fornecer os recursos lgicos para que os aplicativos possam funcionar corretamente. Desta forma podemos definir um sistema operacional como: O software responsvel por gerenciar todos os recursos de hardware e por fornecer a base lgica sobre a qual diversos programas e aplicativos so executados. A partir desta definio podemos concluir que, se o SO quem gerencia todos os recursos de hardware, tambm ele quem d as instrues ao mesmo, ou seja, o usurio utiliza-se do SO para aproveitar da melhor maneira seus recursos de hardware. Desta forma, cabe ento ao sistema operacional servir de interface entre os usurios e os recursos de hardware disponveis. A Figura 1.1 ilustra este processo. Shay (1996) utiliza uma analogia bastante interessante para descrever a funo de um SO. Imagine que voc tenha a nica calculadora disponvel em um determinado reino totalmente isolado do resto da populao e que neste lugar houvesse muitas pessoas querendo usar esta calculadora.
11
e-Tec Brasil
Figura 1: Atuao do sistema operacional como intermediador entre o hardware, os aplicativos e o usurio
Como voc atenderia a necessidade de todos com apenas uma calculadora? Quem usaria a calculadora primeiro? O que voc faria se algum se apossasse da calculadora por muito tempo? O que faria se algum insistisse que seus clculos so secretos e que ningum poderia ter conhecimento? O que faria se quisessem armazenar seus resultados em algum lugar? Estas situaes so semelhantes s que um SO enfrenta corriqueiramente. Desta forma, um sistema operacional responsvel por muitas coisas, dentre as quais podemos destacar (Shay, 1996): Permite que os programas armazenem e obtenham informaes; Isola (livra) os programas dos detalhes especficos de hardware; Controla o fluxo de dados entre os componentes do computador; Permite que os programas sejam executados sem a interferncia de outros programas; Responde aos erros ou a solicitaes do usurio. Ao contrrio do que muitos imaginam, existe uma ampla variedade de SO. Neste documento estaremos apresentando cinco diferentes tipos de sistemas operacionais, conforme abordagem apresentada em Tanenbaum (2003).
e-Tec Brasil
12
13
e-Tec Brasil
o. Por exemplo, se um carro est se movendo por uma linha de montagem, determinadas aes devem ser realizadas em momentos especficos. Se um rob soldador adiantar ou atrasar o momento em que deve efetuar seu servio (soldar), certamente aquele veculo ser perdido. Dois exemplos de sistemas operacionais de tempo real bastante conhecidos so o VxWorks e o QNX.
e-Tec Brasil
14
cessos concorrentes. Um sistema multitarefa gerencia vrios processos em execuo ao mesmo tempo, transparecendo ao usurio que todos eles so executados simultaneamente. Multiprogramao um conceito mais amplo do que multitarefa, e denota um sistema operacional que realiza o gerenciamento total dos recursos de hardware, como: CPU, memrias, sistemas de arquivos, dentre outros, alm de suportar a execuo concorrente de processos. Para exemplificar melhor o conceito de sistema multiprogramado, a Figura 1.2 representa seu uso comparado a um sistema monoprogramado.
Ainda que a boa parte dos computadores possua uma nica CPU que executa instrues uma a uma, certos projetos permitiram que a velocidade de processamento fosse incrementada, tornando possvel a execuo de vrias instrues ao mesmo tempo. Um computador com mltiplos processadores que compartilhem uma memria principal, chamado de multiprocessador ou sistemas fortemente acoplados. Desta forma, o conceito de multiprocessamento est diretamente relacionado ao uso de dois ou mais processadores em um mesmo sistema. H outro conceito relacionado, denominada multicomputadores ou sistemas fracamente acoplados. Nestes casos, estes sistemas caracterizam-se por possuir dois ou mais sistemas computacionais conectados atravs de linhas de comunicao. Cada sistema funciona de forma independente, possuindo seu prprio sistema operacional e gerenciando seus prprios recursos, como: UCP, memria e dispositivos de E/S (Machado & Maia, 2007). O Shell, ou interpretador de comandos, um processo responsvel pela interface entre o sistema operacional e o usurio. Esse processo l um dispositivo de entrada espera de comandos, analisa-os e passa seus parmetros ao sistema operacional. Servios como login e logout do usurio, execuo de programas e manipulao de arquivos so solicitadas atravs do interpretador de comandos. Da mesma forma que o interpretador de comandos a interface entre o sistema operacional e o usurio, as chamadas de sistema (system
15
e-Tec Brasil
calls) constituem a interface entre programas aplicativos e o sistema operacional. As chamadas de sistema so funes que podem ser ligadas com os aplicativos, provendo servios como leitura do relgio interno, operaes de E/S (Entrada e Sada) e comunicao interprocessos. A Figura 1.3 representa o modo de atuao de uma chamada de sistema dentro de um sistema operacional.
O ncleo da Figura 1.3, identificada pelo nmero 1, representa o kernel do sistema operacional, onde esto os cdigos responsveis por manipular o hardware da mquina e gerenciar todo o funcionamento da mesma. Para esconder os comandos de baixo nvel existentes no ncleo do sistema operacional, a camada identificada pelo nmero 2 representa as chamadas de sistemas e o interpretador de comandos j explicados anteriormente. Por fim, interagindo com a camada 2, esto os aplicativos e os usurios, respectivamente. Outro termo relativamente comum nos estudos de sistemas operacionais o deadlock. Um deadlock uma ocorrncia de sistemas multiprogramados, onde um ou mais processos aguardam por um evento ou recurso que jamais ir ocorrer. Um bloqueio perptuo, ou deadlock, ocorre em duas situaes diferentes. Na primeira delas um processo colocado em espera por algo que SO no possui nenhuma previso de quando o atendimento desta espera poder ocorrer. Neste caso, dizemos que ocorreu um deadlock de um processo nico (one-process deadlock). A segunda situao culmina em um arranjo circular onde um processo A, que detm um recurso R1, necessita de um recurso R2 para ser executado. Entretanto, R2 encontra-se alocado para um processo B, que por sua vez, est aguardando o recurso R1 alocado para o processo A. Como nenhum dos dois processos se dispe a liberar o recurso alocado para ele, ocorre ento uma situao de deadlock.
e-Tec Brasil
16
17
e-Tec Brasil
6. Descreva em uma linha processos. 7. Qual a relao entre chamadas de sistema e interpretador de comandos? O que eles possuem em comum? 8. Monte uma apresentao (ou discuta no frum) a respeito das caractersticas tcnicas de um sistema operacional alternativo. Pesquise na Internet sobre estes tipos de sistema e discuta com o professor atravs dos fruns no ambiente virtual sobre qual a melhor opo de tema para estudo (individual). Procure levantar caractersticas como a aplicao do SO em estudo, plataforma, caractersticas de hardware necessrio, tipo de SO, dentre outras. O estudo e o desenvolvimento de sistemas operacionais requerem a compreenso de um conceito fundamental: processo computacional. Como mencionado no captulo anterior, um processo nada mais do que um programa em execuo. Este programa certamente possui um objetivo definido, requer o uso de determinados recursos e possui uma durao finita. Dentre as propriedades pertencentes a um processo, duas delas merecem destaque. A primeira o resultado de sua execuo, independente da velocidade com que ela ocorre. A segunda propriedade diz que se um processo for executado novamente com os mesmos dados, necessariamente ele passar pelo mesmo conjunto de instrues, executados na mesma sequncia e, o resultado fornecido ser o mesmo em todas as vezes que for executado (Tanenbaum, 2003). Atualmente, todos os computadores modernos so capazes de realizar diversas tarefas em paralelo. Enquanto executa o programa de um usurio, o mesmo computador capaz de ler uma unidade de armazenamento de dados ou utilizar um perifrico qualquer. Normalmente, o que ocorre internamente o compartilhamento da CPU por parte dos processos que a requer, em perodos da ordem de milsimos de segundos, dando ao usurio a impresso de paralelismo. Isso nos leva concluso de que o tempo total para a execuo de um processo em funo da quantidade de processos competindo pela CPU. Isto implica que o tempo de execuo de um processo varia a cada nova execuo, dependendo diretamente da carga da mquina, em razo da concorrncia entre os processos pela CPU. Entretanto, o quando executado com os mesmos dados e instrues, o resultado da execuo ser o mesmo independente do tempo requerido para sua concluso.
e-Tec Brasil
18
19
e-Tec Brasil
(de programas no interativos como, por exemplo: compilao e impresso) devem esperar pela sada; Throughput (vazo): maximizar o nmero de jobs processados e finalizados em uma unidade de tempo (usualmente uma hora). Embora cada processo seja uma entidade independente, muitas vezes eles precisam concorrer por recursos e interagir com outros processos. Na Figura 2.1, extrada de Tanenbaum (2003), so apresentados os trs estados de um processo e suas possveis interaes.
Conforme descrito em Tanenbaum (2003), quatro mudanas de estado so possveis de acordo com a figura acima. A transio 1 ocorre sempre que um processo descobre que no tem mais condies lgicas de prosseguir em seu processamento, seja por ter que aguardar algum dado ou alguma instruo do usurio, ou ento por precisar aguardar o resultado de outro processo ou a liberao de um recurso. Em alguns sistemas, para ir ao estado de bloqueado, executada uma chamada de sistema block, alterando o estado de um processo de executando para bloqueado. As transies 2 e 3 so causadas pelo escalonador de processos quando um processo preemptado, sem que o mesmo tome conhecimento das rotinas responsveis por esta mudana. A transio 2 ocorre, quando o escalonador decide que o processo corrente j ocupou o processador por tempo suficiente ou ento pelo fato de existir outro processo de maior prioridade no estado pronto, sendo, portanto, o momento de deixar que outro processo assuma a CPU e v para o estado executando. A transio 3 ocorre quando um outro processo libera a CPU e d a oportunidade para que o primeiro da fila seja executado. A funo do escalonador de processos (decidir qual processo vai rodar e por quanto tempo) importantssima, sendo nosso prximo objeto de estudo. Sempre que um evento externo pelo qual o processo bloqueado estava aguardando ocorrer, esta ao resultar na ocorrncia da transio 4. Como
e-Tec Brasil
20
exemplo, a concluso de uma operao de E/S pode alterar o estado de um processo de bloqueado para pronto. Se nenhum outro processo estiver rodando neste momento, a transio 3 acionada imediatamente, e o processo que aguardava uma determinada ocorrncia ser executado. Caso contrrio, ele permanecer no estado pronto at que o processador fique disponvel e o escalonador o escolha para rodar. Existem duas classes de polticas de escalonamento de processos, a preemptiva e a no preemptiva. O escalonamento no preemptivo foi o primeiro tipo de escalonamento implementado nos sistemas multiprogramveis, onde predominava tipicamente o processamento batch. Neste tipo de escalonamento, quando um processo assume a CPU, nenhum evento externo ir interromp-lo at que ele seja concludo, ou seja, ele somente ir sair do estado de execuo quando for concludo ou se houver alguma instruo do prprio cdigo que ocasione uma mudana para o estado de espera (Machado & Maia, 2007). No escalonamento preemptivo, o sistema operacional pode interromper um processo em execuo a fim de liberar processamento para outro processo que se encontra na fila de pronto. Com o uso da preempo possvel ao sistema priorizar a execuo de determinados processos, como no caso de aplicaes de tempo real, onde o fator tempo crtico (Machado & Maia, 2007). Outro benefcio a possibilidade de implementar polticas de escalonamento que compartilhem o processador de maneira uniforme, aumentando assim o throughput, diminuindo o tempo de espera e permitindo uma programao concorrente mais justa Dentre os algoritmos de escalonamento no preemptivos que iremos estudar, sero abordados o First-In-First-Out (FIFO) e o Shortest-Job-First (SJF), este ltimo tambm conhecido como Menor Job Primeiro No Preemptivo. Os algoritmos preemptivos apresentados neste documento so o de Menor Job Primeiro Preemptivo, o Round Robin e o de Maior Prioridade Preemptivo.
2.1.1 FIFO
Tambm conhecido como First-Come-First-Served (FCFS) o FIFO talvez seja a estratgia de escalonamento mais simples que exista. Neste algoritmo os processos so selecionados para execuo de acordo com sua ordem de chegada na fila de processos prontos do sistema. Uma vez que um processo assuma o controle da CPU, ele ir rodar at ser concludo. Por esta caracterstica FIFO considerado um algoritmo de escalonamento no preemptivo.
21
e-Tec Brasil
Esta poltica de escalonamento justa no sentido de que todos os processos sero executados e na ordem de chegada, mas injusta no sentido que grandes processos podem fazer pequenos processos esperarem. Outro problema, que jobs sem grande importncia podem ser executados antes de jobs de maior importncia, fazendo com que estes ltimos tenham que esperar. Apesar de garantir que, em situaes onde no ocorra, por exemplo, um deadlock, todos os processos/jobs sejam executados, este algoritmo no apresenta bons resultados no escalonamento de processos interativos e em sistemas multitarefa/multiprogramado, por no garantir bons resultados nos tempos de resposta. Para exemplificar o funcionamento deste algoritmo, suponha que quatro processos (P1, P2, P3 e P4) tenham sido criados e que cada um possua, respectivamente, a durao (Burst Time) de 4, 8, 6 e 5 unidades de tempo (u.t.) cada um. Vamos supor que estes processos chegaram para ser executados no mesmo instante (zero) e na ordem acima (P1, P2, P3 e P4). Para representar a execuo destes processos podemos construir o grfico de Gantt conforme apresentado na Figura 5.
Mas quais so as informaes mais importantes que podemos extrair deste grfico? Uma informao importante o tempo mdio de espera apresentado por cada algoritmo. O procedimento para calcular este valor simples. Basta saber o quanto cada processo aguardou para ser executado. A mdia aritmtica destes valores apresentar o Tempo Mdio de Espera do algoritmo analisado para uma determinada situao. A frmula abaixo nos permite calcular o tempo de espera para cada processo Pi , com i = 1,2,...,n , onde n representa o nmero total de processos criados e o processo em anlise. (1)
e-Tec Brasil
22
Onde:
Depois de calculado o TEPi para todos os processos, o Tempo Mdio de Espera (TME) do algoritmo para uma determinada situao calculado pela mdia aritmtica, conforme a Equao (2). (2) Este parmetro torna-se um importante valor de referncia para determinar qual o melhor algoritmo em cada uma das situaes possveis. As Equaes (1) e (2) podem ser utilizadas para calcular o tempo mdio de espera em qualquer um dos algoritmos de escalonamento de processos apresentados neste material.
23
e-Tec Brasil
Figura 6: Grfico de Gantt para a execuo de quatro processos com o algoritmo SJF No Preemptivo
Algum poderia perguntar. Por que o processo P3 executado depois do P1 , sendo que o algoritmo prioriza o menor job (processo) para ser executado primeiro? A resposta simples e, para entender o porqu, temos que nos atentar coluna do momento da chegada do processo. Por se tratar de um algoritmo no preemptivo, aps assumir a CPU, o processo ser executado at ser concludo, permanecendo na CPU durante todo seu tempo de durao. Como o P1 entrou no processador no instante 0 (zero), ele ficar l at ser concludo. Se observarmos bem, o processo P3 chega fila de pronto somente no instante 4. Assim, como ele chegou fila no instante 4, era praticamente impossvel atend-lo antes deste momento. Ao final, as equaes (1) e (2) so aplicadas no clculo do TME que apresenta como valor 4,75 u.t. (unidades de tempo) para este algoritmo com estes processos.
e-Tec Brasil
24
Caso seja menor, como ocorre com os processos P2 e P3 ,o processo em execuo ser preemptado e a CPU ser entregue ao processo de menor tamanho.
Figura 7: Grfico de Gantt para a execuo de quatro processos com o algoritmo SJF Preemptivo
Da mesma forma como ocorre em todos os clculos do TME independente do algoritmo aplicado, as Equaes (2) e (3) so utilizadas para determinar o TME apresentado na Figura 2.4.
Figura 8: Escalonamento Round Robin. (a) A lista de processos prontos. (b) A lista de processos aps o quantum de B haver expirado
25
e-Tec Brasil
O algoritmo Round Robin semelhante ao um FIFO, com a diferena de ser preemptivo. Nele os processos no executam at o seu final, mas sim durante um certo tempo (quantum), um por vez. Assim, executando sucessivamente em intervalos de tempo determinados pelo quantum, em algum momento o job acaba por terminar sua execuo. Neste algoritmo, um aspecto que merece ateno especial a durao (tamanho) do quantum. Mudar de um processo para outro requer um certo tempo para a administrao de tarefas burocrticas, como: salvar e carregar registradores e mapas de memria, atualizar tabelas e listas do SO, dentre outras. Suponha que esta troca de processos, denominada troca de contexto, tenha durao de 5 ms. Suponha tambm que o quantum est ajustado em 20 ms. Com esses parmetros, aps fazer 20 ms de trabalho til, a CPU ter que gastar 5 ms com troca de contexto. Assim, 20% do tempo de CPU ser gasto com o overhead administrativo (Tanenbaum, 1999). Para melhorar a eficincia da CPU, poderamos ajustar o quantum para 500 ms. Agora o tempo gasto com a troca de contexto menor do que 1% (um por cento). Entretanto, imagine se dez usurios apertassem a tecla <ENTER> exatamente ao mesmo tempo, cada um deles disparando processo. Dez processos seriam colocados no estado de pronto e ficariam na lista de processos aptos a executar. Se a CPU estiver ociosa, o primeiro comear imediatamente. O segundo processo no comear antes de segundo (500 ms) depois, e assim sucessivamente. O azarado do ltimo processo ser executado somente 5 segundos aps o usurio ter pressionado <ENTER>, considerando que todos os outros processos utilizaram todo o seu quantum. Muitos usurios vo achar que o tempo de resposta de 5 segundos para um simples comando um tempo demasiadamente grande (Tanenbaum, 1999). A partir destas informaes, podemos concluir que ajustar um quantum muito pequeno causam muitas trocas de contexto e diminui a eficincia da CPU. Por outro lado, ajust-lo para um valor muito alto, causa um tempo de resposta inaceitvel para pequenas tarefas interativas. Assim, um valor frequentemente utilizado para quantum est em torno de 100 ms. Assim como nos grficos de Gantt mostrados nos algoritmos anteriores, o tempo necessrio para troca de contexto ser desconsiderado no clculo do TME. A Figura 2.6, adaptada de Silberschatz, et. al (1999), apresenta o grfico de Gantt com o escalonamento dos processos apresentados.
e-Tec Brasil
26
A Figura 9 apresenta o grfico de Gantt com 4 processos de diferentes tamanhos em diferentes instantes de chegada. Como prtica de exerccio, faa uma anlise dos momentos em que os processos so preemptados e calcule o Tempo Mdio de Espera (TME) para a situao acima.
27
e-Tec Brasil
Um problema comum neste tipo de algoritmo, que, se as prioridades no estiverem bem sintonizadas, pode ocorrer dos processos das classes mais baixas nunca serem executados. Para ilustrar o funcionamento deste algoritmo, a Figura 11, adaptada de Silberschatz, et. al (1999), apresenta o grfico de Gantt para quatro processos com seus nveis de prioridade.
Os resultados apresentados por este tipo de algoritmo podem variar de acordo com a prioridade dos processos, o tamanho e seus momentos de chegada. Desta forma, em determinadas situaes, este algoritmo pode ter um excelente desempenho e, em outras, um desempenho ruim quando o valor de referncia para isso for o TME.
e-Tec Brasil
28
ser realizado o controle de qual processo assumir o controle do processador em determinadas situaes. Inmeras so as alternativas de algoritmo e suas possveis combinaes, entretanto, certamente a que apresentar o menor TME o escalonamento SJF Preemptivo. Atividades 1. Suponha uma situao na qual um processo A, de alta prioridade, e um processo B de baixa prioridade interagem de forma a levar A a um loop eterno no uso da CPU. Tal situao persistiria se utilizssemos o escalonamento Round Robin em vez do escalonamento com prioridade? Comente. 2. Pesquise a respeito de Threads. Descreva seu objetivo, funcionamento e benefcios. 3. Suponha que voc deseja minimizar na mdia o tempo de espera no seu escalonamento, que poltica voc deveria usar? Qual a maior dificuldade em aplicar esta poltica na prtica? 4. Suponha que os seguintes processos chegaram para execuo nos tempos indicados. Cada processo rodar a quantidade de tempo listada na tabela. Processo P1 P2 P3 P4 Chegada 0 1 3 6 Tamanho 8 5 1 4
Calcule o tempo mdio de espera e para os escalonamentos: a) FCFS; b) SJF (no preemptivo); c) SJF (preemptivo);
29
e-Tec Brasil
d) Round Robin (Quantum = 2); e) Prioridade Preemptivo, sendo 2, 3, 1, 5, respectivamente as prioridades de P1 a P4; 5. Em um sistema operacional, o escalonador de curto prazo utiliza duas filas. A fila A contm os processos do pessoal do CPD e a fila B contm os processos dos alunos. O algoritmo entre filas fatia de tempo. De cada 13 unidades de tempo de processador, 5 so fornecidas para os processos da fila A, e 8 para os processos da fila B. O tempo de cada fila dividido entre os processos tambm por fatias de tempo (Round Robin), com quantum igual a 2. A tabela a seguir mostra o contedo das duas filas no instante zero. Considere que est iniciando um ciclo de 13 unidades, e agora a fila A vai receber as suas 5 unidades de tempo. Mostre a sequncia de execuo dos processos, com os momentos em que feita a troca de contexto e calcule o Tempo Mdio de Espera. Fila A A A B B B B B Processo P1 P2 P3 P4 P5 P6 P7 P8 Tamanho 8 7 5 1 5 2 6 3 Chegada 0 1 3 3 7 12 13 25
Obs.: Se terminar a fatia de tempo da fila X no meio da fatia de tempo de um dos processos, o processador passa para a outra fila. Entretanto, esse processo permanece como primeiro da fila X, at
e-Tec Brasil
30
que toda sua fatia de tempo seja consumida. A Lei de Parkinson aplicada ao uso e gerncia de memria, diz que o tamanho dos programas utilizados tende a crescer de forma a ocupar toda a memria disponvel para armazen-los. Mesmo atualmente com a reduo de custo e consequente aumento da capacidade da memria principal, seu gerenciamento um dos fatores mais importantes no projeto de sistemas operacionais. O mdulo do sistema operacional responsvel pela gerncia da memria disponvel denominado Gerenciador de Memria. Dentre suas funes, seu trabalho controlar quais partes da memria esto em uso e quais no esto, de forma a alocar memria aos processos quando estes precisarem. Outra funo do gerenciador de memria ao ser concludo um processo, liberar a memria que ele estava utilizando, alm de tratar do swapping entre a memria principal e secundria, quando a memria principal no for grande o bastante para armazenar todos os processos (Tanenbaum, 1999). Os sistemas de gerncia de memria podem ser divididos em duas grandes categorias: aqueles que movem os processos entre a memria principal e os discos realizando operaes de swapping, e aqueles que no movimentam os processos entre tais dispositivos de armazenamento. Os itens 3.1, 3.2 e 3.3 tratam de uma abordagem mais simples, sem o uso de swapping. A partir do item 3.4 os sistemas de gerncia de memria abordados permitem o uso de swapping de memria. Seguindo a abordagem apresentada em Tanenbaum (1999), algumas das polticas de gerncia de memria existentes sero apresentadas na sequncia.
31
e-Tec Brasil
33
e-Tec Brasil
Outro fator comum, que, para um processo em loop de leitura um bloco de dados de um arquivo em disco, tambm comum a realizao de alguma operao sobre o contedo dos blocos lidos. Em sistemas multiprogramados esta ao perfeitamente possvel e implementvel. Para exemplificar seu grau de importncia, se for gasto 40ms para ler um bloco e o processamento deste bloco demandar apenas 10ms, durante 80% do tempo total que o processo levar para ser concludo a CPU estar ociosa. Com o uso da multiprogramao possvel incrementar o percentual de utilizao da CPU. Colocando a questo de forma bem grosseira, se tivermos 5 processos carregados na memria e cada um utilizar o processador apenas 20% de seu tempo (tempo de espera na memria + tempo de execuo), a CPU dever estar ocupada o tempo todo. Entretanto, este modelo muito otimista e irreal, uma vez que assume que nunca dois ou mais processos estaro esperando por E/S ao mesmo tempo. Um modelo mais realista procura considerar o uso do processador de forma probabilstica. Suponha que determinado processo gaste uma frao de seu tempo esperando por E/S. Com n processos na memria simultaneamente, a probabilidade de todos eles aguardarem por entrada e sada ao mesmo tempo, caso em que o processador ficar ocioso, Pn. Desta forma, um clculo mais realista do uso aproximado de um processador pode ser realizado com a Equao (3). (3) Onde:
Com base na Equao (3), a Figura 3.1, extrada de Tanenbaum (2003), apresenta a percentagem de utilizao do processador em funo do grau de multiprogramao (quantidade de processos na memria).
e-Tec Brasil
34
Com uma rpida anlise na figura, possvel concluir que quando os processos consomem 80% de seu tempo aguardando por E/S, no mnimo 10 processos devem estar ao mesmo tempo na memria para manter o grau de ociosidade do processador abaixo de 10%. Como prtica de exerccio, realize uma anlise do grfico de multiprogramao apresentado.
35
e-Tec Brasil
Figura 13: (a) Parties fixas de memria com filas de entrada separadas para cada uma. (b) Parties fixas de memria com uma nica fila de entrada
A desvantagem de se organizar os processos que chegam em filas separadas, torna-se aparente quando a fila para a maior partio est vazia, entretanto, as filas para as parties menores esto cheias, como no caso das parties 1 e 3 da Figura 3.2 (a). Uma forma alternativa de organizar a chegada dos processos, manter uma fila nica como na Figura 3.2 (b). Toda vez que uma partio liberada, a mesma alocada ao primeiro processo da fila que caiba nela. Uma vez que no vivel gastar uma partio grande com um processo pequeno, uma estratgia mais eficaz procurar em toda fila de entrada o maior job que caiba na partio liberada. Observe que, embora a ltima estratgia utilize melhor as parties da memria, ela tambm discrimina os processos menores, quando normalmente desejvel dar a eles melhor tratamento, e no pior.
e-Tec Brasil
36
Figura 14: A alocao muda conforme os processos so criados e copiados do disco para a memria e vice-versa. As regies sombreadas no esto alocadas no momento
Na figura acima, no instante (a) somente o processo A est na memria. Na sequncia, os processos B e C so criados ou trazidos para do disco. No instante (d) o processo A finalizado ou sofre um swap-out (os dados saem da memria principal e retornam para o disco). Na sequncia, D vem para a memria e B sai. Por fim, o processo E chega. Uma das principais questes a serem tratadas neste algoritmo como administrar os buracos criados aps vrias operaes de swap-in (os dados so carregados do disco para a memria principal) e swap-out. Para tratar este problema um procedimento conhecido como compactao de memria dever ser executado, nada mais do que movimentar todos os processos para os endereos mais baixos da memria. Apesar de funcional, esta tcnica bem pouco utilizada pelo fato de requerer muito processamento de CPU para realizar a compactao dos dados. Outro problema deste mtodo como gerenciar o crescimento de um processo. Se um processo for de tamanho fixo, no haver nenhum problema com a quantidade de memria alocada a ele. Entretanto, se um processo aumentar de tamanho e ele tiver outros processos adjacentes a ele, o prprio processo que est crescendo ou um dos processos adjacentes a ele dever ser movido para outro endereo. Em ltima situao, outro processo dever ser removido da memria para liberar o espao necessrio.
37
e-Tec Brasil
Sempre que os processos e os buracos forem mantidos numa lista ordenada por endereos, vrios algoritmos podem ser utilizados na alocao de memria para um processo que precise ser transferido do disco para a memria principal. Segundo Tanenbaum (1999), quatro so os algoritmos de alocao de espao em memria. O algoritmo mais simples First-fit (primeiro buraco), o primeiro buraco (segmento) livre de tamanho suficiente para carregar o processo ser escolhido para aloc-lo. Caso um segmento de tamanho n aloque um processo de tamanho m, onde n>m, buraco ser quebrado em dois segmentos, sendo que o primeiro ser do tamanho do processo e o segundo ser de tamanho n-m, resultando em um novo segmento livre na memria. Para cada novo processo que precisar ser alocado, o algoritmo iniciar sua busca a partir do incio da lista de segmentos livres. No algoritmo Best-fit (melhor buraco), o buraco escolhido ser o que resultar na menor sobra de espao sem utilizao. O maior problema deste algoritmo so os pequenos buracos resultantes de sequentes alocaes de segmentos aos processos, tornando necessrio o uso da compactao de memria. Por outro lado, por evitar o uso demasiado dos buracos, este algoritmo aumenta as chances de um processo grande encontrar um espao disponvel na memria. Ao contrrio do algoritmo do melhor buraco, o Worst-fit (pior buraco) busca na memria o segmento que resultar na maior sobra de espao sem alocao aps a alocao do processo. Apesar de utilizar as maiores parties, a tcnica do pior buraco deixa espaos livres maiores que permitem a um maior nmero de processos serem carregados para a memria (Machado & Maia, 2007). Um algoritmo semelhante ao do primeiro buraco o Next-fit (prximo buraco). A diferena neste algoritmo que ao ser alocado um segmento a um processo, a busca pelo segmento a ser utilizado pelo prximo processo ser inicializada a partir do segmento resultante desta alocao ou do prximo segmento, caso o processo ocupe todo o segmento a ele destinado.
e-Tec Brasil
38
vrios programas carregados na memria, situao em que normalmente a quantidade de memria existente acaba sendo inferior a requerida pela soma dos programas. Para sanar este problema, em 1961 Fortheringham props um mtodo denominado memria virtual. Este mtodo foi desenvolvido com o objetivo de particionar os programas e carregar parte deles em memria de disco atravs do processo de swapping. Neste sistema, um programa de 4 MB pode rodar em uma mquina com 1 MB de memria atravs do uso da memria virtual, onde o sistema operacional responsvel por selecionar a parte programa que ser carregada na memria principal e tambm qual parte ficar em disco.
3.6.1 Paginao
A maioria dos sistemas que utilizam o recurso da memria virtual, usam a tcnica de paginao para implement-lo. Todos os sistemas computacionais permitem que um programa faa referncias a um determinado conjunto de endereos. Estes endereos gerados pelos programas so chamados endereos virtuais e formam o espao de endereamento virtual (Tanenbaum, 2003). Qualquer referncia feita a estes endereos no ir direto ao barramento de memria. Antes disso, estas referncias realizadas pelo processador sero encaminhadas unidade de gerncia de memria (MMU Manager Memory Unit), que responsvel por mapear os endereos virtuais em endereos reais, conforme mostrado na Figura 3.4 extrada de Tanenbaum (2003).
A Figura 15, extrada de Tanenbaum (2003), apresenta um exemplo de como trabalha esse mapeamento. Neste exemplo temos um processador que gera endereos de 16bits, de 0 64K, correspondente ao endereamento virtual
39
e-Tec Brasil
do processador. Entretanto, este computador tem apenas 32K de memria fsica. Embora possamos carregar e executar programas de at 64K, no podemos mant-los carregados na memria principal. Sendo assim, uma cpia completa do programa deve ser mantida em disco, de maneira que pedaos dele possam ser carregados memria principal quando necessrios.
Figura 16: A relao entre endereos virtuais e endereos fsicos da memria dada pela tabela de pginas
O espao de endereamento virtual dividido em pginas e suas unidades correspondentes no espao de endereamento fsico so denominadas moldura de pgina. Independente do tamanho das pginas, sua moldura de pgina correspondente necessariamente precisa ser de mesmo tamanho. O exemplo acima, elas so de 4KB, entretanto, em sistemas reais, pginas de 512 bytes 64 KB tm sido utilizadas (Tanenbaum, 2003). Ao fazer referncia ao endereo virtual 0, a MMU detecta que o endereo referenciado est na pgina virtual 0 (de 0 a 4095), que, de acordo com o mapeamento, corresponde moldura de pgina de nmero 2. Desta forma, a MMU transforma o endereo virtual 0 no endereo fsico 8192 e, s ento, envia memria atravs do barramento. Desta forma, de acordo com a Figura 3.5, a MMU mapeia todos os endereos virtuais de 0 a 4095 em seus endereos na moldura de pgina de 8192 a 12287 respectivamente (Tanenbaum, 2003). Mas o que aconteceria se o software realizasse uma referncia a um endereo que no est mapeado como, por exemplo, 40967, correspondente ao
e-Tec Brasil
40
stimo byte dentro da pgina virtual 10? Este evento, denominada falta de pgina (page fault) gera um desvio da CPU para o sistema operacional que deve definir qual das molduras de pginas dever ceder lugar para a pgina virtual referenciada. Esta operao nada mais do que o processo de swap explicado anteriormente. Aps a operao do swap, o mapeamento das pginas dever ser atualizado. Mas qual moldura de pgina dever sair da memria para ceder lugar ao contedo referenciado pelo processo? Para resolver esta questo, Tanenbaum (1999) apresenta alguns algoritmos para troca de pgina.
41
e-Tec Brasil
mente, para identificar quais pginas no tem sido utilizadas recentemente, o bit R pode ser zerado a cada interrupo de tempo. Na ocorrncia de falta de pgina, o sistema operacional substitui a pgina da menor classe. A definio da classe a qual uma pgina pertence feita com base nos binrios indicados pelos bits R e M, conforme apresentado na Tabela.
Apesar da situao apresentada na classe 1 no parecer possvel, uma pgina pode ser colocada nesta classe quando ela for modificada e, numa interrupo de tempo, o sistema operacional zerar seu bit de referncia. Caso mais de uma pgina seja classificada na menor classe, o algoritmo ir substituir uma pgina randomicamente.
e-Tec Brasil
42
analisar a pgina mais antiga na sequncia. Este processo se repetir at que o algoritmo identifique a pgina mais antiga e que tenha o bit de referncia igual a 0. Se por ventura todas as pginas tiverem o bit de referncia igual a 1, o comportamento deste algoritmo ser o mesmo do FIFO.
3.6.2 Segmentao
A memria virtual apresentada at o momento unidirecional pelo fato de seu endereamento ir de 0 at um limite fsico imposto pela quantidade de memria. Embora a paginao permita que um grande espao de endereamento seja implementado em uma quantidade limitada de memria, processos que manipulam tabelas, pilhas e filas, podem gerar alguns problemas, pois normalmente estas tabelas devem ser alocadas na memria de forma contgua, o que no possvel com a paginao pelo fato das pginas possurem um tamanho fixo. Nestas aplicaes, um espaamento enderevel bidimensional pode ser mais adequado. Esta alternativa suportada atravs do conceito de segmentao, onde posies de memria so identificadas pelo par segmento, deslocamento. Cada segmento tem um espao de endereamento independente dos outros, que tem incio no endereo 0 do segmento e vai at o limite daquele
43
e-Tec Brasil
segmento especfico. O crescimento de um segmento no afeta os demais e, geralmente, cada segmento possui um tamanho diferente do outro. A Figura 3.6, extrada de Tanenbaum (2003), mostra como cada segmento organizado. Na segmentao, o sistema operacional deve manter uma tabela mapeando os segmentos para os endereos da memria. Uma diferena importante que segmentos tm dimenses distintas e, portanto, a informao sobre o comprimento de cada segmento deve ser mantida. Se por um lado este mtodo permite que o uso de tabelas, pilhas e filas seja melhor administrado, o fato de se trabalhar com parties de tamanhos variveis implica que aps um tempo de uso a fragmentao poder ocorrer e, para sanar este problema, mecanismos de compactao tambm podero ser aplicados na tcnica de segmentao. A Figura 3.7, extrada de Tanenbaum (2003), ilustra este processo.
Figura 17: Uma memria segmentada permite que cada segmento altere seu tamanho independente das outras tabelas
A fragmentao externa (pertencente aos sistemas segmentados) apresentada na Figura 3.7, removida com a compactao da memria. Vale ressaltar que nos sistemas paginados o tipo de fragmentao que ocorre a interna, ou seja, dentro da pgina. Na fragmentao externa, o espao livre externo ao segmento.
e-Tec Brasil
44
Figura 18: (a)(d). Desenvolvimento de fragmentao externa. (e) Compactao da memria e consequente remoo da fragmentao
A traduo de endereos segmentados para endereos fsicos ocorre de maneira similar traduo de endereos virtuais. Para exemplificar o processo de traduo de endereos, vamos nos basear na Figura 3.8, adaptada de Tanenbaum (2003).
Suponha que um processo gere o endereo lgico do byte C2, ou seja, segmento 00 e deslocamento 00001. A tabela de segmentos informa que o segmento 00 possui base 01000 e limite 0110. O deslocamento de 00001 vlido, pois menor que o limite 0110. Somando a base 01000 do segmento 00 com o deslocamento 00001, teremos o endereo fsico 01001. Esse o endereo do byte C2 na memria fsica.
45
e-Tec Brasil
Os sistemas mais atuais utilizam uma mistura das tcnicas de segmentao e paginao para gerncia de memria virtual. Caso deseje mais informaes a respeito da gerncia de memria virtual, o aluno poder consultar (Tanenbaum, 2003). Atividades 1. Um computador tem espao suficiente em sua memria para armazenar quatro programas. Estes programas esperam por E/S durante a metade de seu tempo de processamento. Nesta situao, que frao do tempo do processador desperdiada? 2. Usando o modelo da Figura 3.1, podemos prever um acrscimo do throughput como funo do grau de multiprogramao do sistema. Suponha que um computador tenha 2 MB de memria dos quais o sistema operacional ocupe 512 KB, ou seja, um quarto da memria total, e que cada programa tambm ocupe os mesmos 512 KB. Se todos os programas esperarem por 60% do tempo por E/S, qual a porcentagem de aumento do throughput se adicionarmos mais 1 MB de memria. Faa o mesmo clculo considerando a opo de adicionarmos 2 MB de memria, fazendo com que o sistema totalize 4 MB nesta ltima configurao. 3. Qual a diferena entre endereo fsico (real) e endereo virtual? 4. De maneira anloga a discutida na Figura 3.5, uma referncia ao endereo virtual 8192 seria mapeado em qual endereo fsico (real)? 5. Explique a diferena entre fragmentao interna e fragmentao externa. Qual delas ocorre nos sistemas paginados? Qual ocorre em sistemas com segmentao pura? 6. Um computador tem quatro molduras de pginas. O momento da carga, o momento do ltimo acesso e os bits R e M para cada uma das pginas na memria so mostrados abaixo (os tempos so em intervalos de interrupes de tempo): Pgina 0 1 Carga 230 120 ltima referncia 260 272 1 1 R 0 1 M
e-Tec Brasil
46
2 3
160 126
280 279
1 0
1 0
a. Qual pgina ser substituda pelo algoritmo NUR? b. Qual pgina ser substituda pelo algoritmo LRU? c. Qual pgina ser substituda pelo algoritmo FIFO? d. Qual pgina ser substituda pelo algoritmo da segunda chance? Justifique sua resposta para cada uma das alternativas acima 7. Considere um sistema de swapping no qual os seguintes buracos esto na memria, na ordem apresentada: 10K, 4K, 20K, 18K, 7K, 9K, 12K e 15K. Se usarmos o esquema do primeiro buraco, quais espaos de memria sero alocados a segmentos que sucessivamente requisitarem: a) 12K, b) 10K, c) 9K. Repita a questo para os algoritmos do melhor buraco, do pior buraco e do prximo buraco. A parte com que o usurio mais tem contato do SO o sistema de arquivos. Programas aplicativos utilizam o sistema de arquivos constantemente (atravs de chamadas de sistema) para criar, ler, gravar e remover arquivos. Como um acesso a disco demora cerca de vezes mais tempo que um acesso memria principal, surge ento necessidade de uma estrutura de dados e algoritmos que melhore a eficincia dos acessos ao disco. A usabilidade de um sistema operacional fortemente determinada pela interface, estrutura e confiabilidade de seu sistema de arquivos. Uma das principais tarefas do sistema de arquivos implementar em software um recurso no existente em hardware, ou seja, estabelecer uma maneira lgica de armazenar os dados a partir de recursos fsicos existentes no sis-
47
e-Tec Brasil
tema computacional. Desta forma, segundo Tanenbaum (2003), para armazenarmos informaes por longo prazo, temos trs requisitos essenciais: (1) Deve ser possvel armazenar uma quantidade muito grande de informao; (2) A informao deve sobreviver ao trmino do processo que a usa; e (3) Mltiplos processos tm de ser capazes de acessar a informao concorrente. Para atender a todos estes requisitos, a soluo apresentada a organizao das informaes em arquivos. Quando falamos sobre sistemas de arquivos, podemos dividi-los em dois grupos de estudo. O primeiro deles tem relao com a interface do usurio, onde tratamos sobre os arquivos e diretrios. O segundo grupo est relacionado implementao dos sistemas de arquivos. Neste material iremos estudar os conceitos bsicos dos dois grupos baseando-se na abordagem apresentada em Tanenbaum (2003).
4.1 Arquivos
Arquivo um mecanismo de abstrao que fornece meios de armazenar dados e informaes no disco para que elas possam ser lidas posteriormente, sendo que estas operaes (leitura e gravao) devem ocorrer de forma transparente ao usurio. Dentro deste contexto, possivelmente a caracterstica mais importante ao usurio a forma como os arquivos devem ser gerenciados e nomeados. No existe uma s regra para definir como deve ser feita a nomeao dos arquivos, pois cada sistema operacional possui suas caractersticas particulares. Entretanto, de uma forma geral, comumente dividimos o nome dos arquivos em duas partes. Um nome seguido de um ponto e uma extenso para identificar seu tipo. Via de regra, a extenso do arquivo no costuma exceder 3 caracteres e seu nome, dependendo do sistema, pode possuir at 255 caracteres. A Tabela 4.1 apresenta alguns tipos comuns de arquivos.
e-Tec Brasil
48
Como mencionado anteriormente, um arquivo normalmente identificado atravs do seu nome e tipo. Alm destas caractersticas, os arquivos possuem outros atributos que so mantidos pelo SO. A lista apresentada abaixo no tem a pretenso de esgotar todas as possibilidades de atributos, pois esta varia de um SO para outro, entretanto, a relao apresenta os principais atributos existentes: Proteo (quem tem acesso ao arquivo e de que maneira); Tamanho (quantidade de bytes do arquivo); Data e hora do ltimo acesso; Data e hora da ltima alterao; Identificao do usurio que criou o arquivo; Password (se necessrio, senha para acesso ao arquivo); Flags de Ocultao, Leitura/Escrita, Sistema, Temporrio, entre outras (0 desativada, 1 ativada). Independente do SO em questo, um arquivo suporta diversas operaes. As principais operaes e suas chamadas de sistema so: Criao do arquivo (Create); Remoo do arquivo (Delete);
49
e-Tec Brasil
4.2 Diretrios
Para o controle dos arquivos, em geral um SO utiliza diretrios que em alguns sistemas, como o Linux, tambm so tratados como arquivos. Independente de como o diretrio tratado, a forma mais comum de organizar os arquivos atravs da poltica de diretrios hierrquicos. Esta estratgia permite que os usurios agrupem seus arquivos de forma natural, diferente do que ocorreria em uma poltica de diretrio de nvel nico. A Figura 20, adaptada de Tanenbaum (2003), apresenta estas polticas. Existem duas formas de especificar o nome de um arquivo. A primeira delas atravs do caminho relativo, que traz consigo o conceito de diretrio de trabalho ou diretrio corrente (atual), onde um arquivo pode ser referenciado simplesmente pelo seu nome. A outra forma atravs do caminho absoluto, onde para referenciar um arquivo preciso especificar o caminho at ele
e-Tec Brasil
50
partindo do diretrio raiz. Um exemplo nos dois casos, seria o caminho caixapostal.bak para caminho relativo ao arquivo (desde que o diretrio atual seja o do arquivo referenciado) e /usr/ast/caixapostal.bak o cominho absoluto para o mesmo arquivo, onde ele referenciado independente do diretrio atual que o usurio estiver.
Figura 20: (a) Sistema de diretrio de nvel nico; (b) Sistema de diretrios hierrquicos
De forma anloga aos arquivos, as principais operaes sobre diretrios so: Criar um diretrio (Create); Ler diretrio (Open); Excluir diretrios (Delete); Renomear diretrio (Rename); Existem outras chamadas de sistema que podem ser realizadas nos diretrios. Independente do SO, essas so algumas das mais comuns. Ocasionalmente algumas chamadas podem mudar de um SO para outro.
51
e-Tec Brasil
ter de tamanho grande significa que pequenos arquivos iro gerar um desperdcio de espao. Por outro lado, clusters de tamanho pequeno podem comprometer a leitura de arquivos maiores pelo fato de aumentar o tempo de seek dos arquivos. Normalmente os clusters variam de um sistema para outro. Entretanto, um tamanho usual est entre 512 bytes e 4 KB. Alguns dos mtodos mais comuns para a implementao de arquivos so apresentados na sequncia.
Figura 21: (a) Alocao contgua; (b) Fragmentao do disco aps a remoo de dois arquivos
Embora pouco aconselhvel em sistemas de armazenamento de arquivos, onde o usurio realiza diversas operaes sobre eles, em CD-ROM esta estratgia amplamente utilizada e apresenta excelentes resulta-
e-Tec Brasil
52
dos. Isso ocorre pelo fato dos arquivos a serem gravados na mdia serem previamente conhecidos e no sofrerem alteraes aps sua gravao.
53
e-Tec Brasil
4.3.4 I-nodes
Esta estratgia mantm uma tabela de i-nodes (index nodes) que contm os endereos em disco dos blocos do arquivo. A grande vantagem deste mtodo que o i-node ser carregado na memria, somente quando o arquivo indexado por ele estiver aberto.
Ao abrir um arquivo, os primeiros blocos do arquivo so mantidos no prprio i-node. Caso o i-node o contedo do arquivo no caiba dentro do prprio i-node, ele ir apontar os blocos que compem o arquivo. A Figura 4.5, extrada de Tanenbaum (2003), apresenta a estrutura base de um i-node. Como podemos perceber, alm de apontar para os blocos que compem um arquivo, um i-node tambm armazena os atributos do arquivo. Sistemas GNU/ Linux usam desta estratgia para organizar seus arquivos.
e-Tec Brasil
54
Independente de como o sistema de arquivos for implementado, ele deve apresentar uma boa velocidade na leitura e na gravao dos arquivos, alm de ser consistente e confivel. Atividades 1. Identifique e descreva o significado de trs diferentes tipos de arquivos dos apresentados na Tabela 4.1. 2. Cite e explique trs atributos e trs operaes possveis em um arquivo. 3. Qual a diferena entre caminho relativo e caminho absoluto? 4. A alocao contgua de espao em disco leva fragmentao. Por qu? Tal fragmentao interna ou externa? Comente. 5. Alguns Sistemas Operacionais colocam disposio de seus usurios uma chamada rename, para possibilitar a mudana do nome de determinado arquivo. Existe alguma diferena entre usar esta chamada para dar um novo nome a um arquivo, e simplesmente copiar o arquivo velho em outro, apagando o original? 6. A compactao peridica do espao em disco vantajosa? Justifique. 7. Tem sido sugerido que a primeira parte de cada arquivo Unix/Linux seja man-
55
e-Tec Brasil
tida no mesmo bloco de disco que seu i-node. Qual a vantagem deste esquema? 8. Quando um arquivo removido, normalmente seus blocos so colocados de volta na lista de blocos livres, no sendo apagados do disco. Voc acha que seria uma boa idia o sistema operacional apagar cada bloco antes de liber-lo? Considere tanto o aspecto da segurana quanto o da performance e explique os efeitos da adoo desta medida em cada um deles. 9. Descreva resumidamente os sistemas de arquivos abaixo. Apresente suas vantagens, desvantagens e limitaes. a. Alocao contgua; b. Alocao por lista encadeada; c. Lista encadeada com tabela na memria d. I-nodes 10 Pesquise a respeito dos sistemas de arquivos FAT-16, FAT-32, ext3 e ext4. Monte um trabalho apresentando as principais caractersticas de cada um, ressaltando suas limitaes, vantagens e desvantagens prticas. Uma das tarefas mais complexas de um sistema operacional a gerncia de entrada e sada. Devido grande diversidade dos dispositivos de E/S, para atender esta necessidade o sistema operacional implementa o que chamamos de subsistema de E/S. Seu cdigo representa uma parte significativa de todo o SO. Desta forma, so vrias as atribuies ao subsistema de E/S. Neste material estudaremos os princpios do hardware e os princpios do software, alm de detalharmos algumas caractersticas inerentes aos discos de armazenamento. De uma forma geral, o subsistema de entrada e sada responsvel por desempenhar as funes comuns a todos os tipos de dispositivos. As particularidades especficas de cada dispositivos fica a cargo dos device drivers (drivers dos dispositivos). Assim, o subsistema de E/S tem com objetivo fornecer uma interface comum a todos os dispositivos (Machado & Maia, 2007). Embora seja um conceito simples, vale ressaltar a diferena entre drive e driver. O primeiro refere-se a um hardware de armazenamento como, por exemplo, um driver de CD-ROM. Por outro lado, driver refere-se ao software
e-Tec Brasil
56
responsvel pelo correto funcionamento de um dispositivo de E/S ou um perifrico qualquer. Sem o driver correto, uma placa de vdeo poderia no fornecer todos os recursos 3D e quantidade que ela dispe, limitando assim o uso de seus recursos mais valiosos.
57
e-Tec Brasil
Alm de servir como intermediadora na comunicao entre o dispositivo e o sistema operacional, uma controladora tambm responsvel por converter um fluxo serial de dados em um bloco de bytes. Por intermdio de seus drivers, os registradores de uma controladora recebem instrues oriundas do processador, que sero interpretadas e executadas na sequncia.
e-Tec Brasil
58
mria por si mesmo. Com a E/S programada, a CPU tinha de transferir cada um dos caracteres entre o disco e a memria principal, e o controlador no podia acessar a memria de forma independente (Shay, 1996). De uma forma simplificada, uma operao de leitura de disco utilizando DMA pode ser descrita pelos seguintes passos. O processador, atravs do device driver, inicializa os registradores do controlador DMA e, a partir deste ponto, a CPU fica livre para realizar outras atividades. O controlador DMA por sua vez, solicita ao controlador de disco a transferncia do bloco do disco para o buffer interno. Terminada a transferncia, o controlador de disco verifica a existncia de erros e, caso no haja erros, o controlador DMA acessa a memria principal e transfere o contedo armazenado em buffer. Ao trmino da transferncia, o controlador de DMA gera uma interrupo avisando o processador que o dado j se encontra na memria (Machado e Maia, 2007).
59
e-Tec Brasil
5.2.1 Drivers
Como mencionado anteriormente, um driver o software responsvel pelo pleno funcionamento de um dispositivo de hardware. Segundo Shay (1996), de uma forma geral, um driver possui duas responsabilidades principais. A primeira preparar-se para as operaes de E/S, o que envolve verificar o estado do dispositivo, aloc-lo e iniciar a transferncia dos dados. A segunda responsabilidade finalizar a operao de E/S, ou seja, verificar o resultado da operao (terminada ou abortada) e responder adequadamente. Aps a emisso de um comando ou vrios comandos, destinados ao driver, podem ocorrer duas situaes. Em muitos casos, o driver deve aguardar at que o controlador conclua as operaes requisitadas. Se estas operaes forem
e-Tec Brasil
60
lentas, o driver deve se autobloquear at que as operaes sejam concludas e uma interrupo seja gerada para desbloque-lo. Em casos onde as operaes so rpidas, o driver no precisa ser bloqueado (Tanenbaum, 1999). Como muitas coisas podem sair erradas durante a execuo das instrues, a resposta aos erros pode ser complexa. Desta forma, geralmente os drivers tambm so responsveis pelo tratamento dos erros. Por exemplo, se uma impressora estiver sem papel ou desligada, as operaes de escrita no podero ser executadas. Assim, o driver responsvel por alertar sobre o erro e esperar que algum corrija (Shay, 1996).
61
e-Tec Brasil
vos abstratos, usando o mesmo tamanho lgico dos blocos, independente do tamanho fsico do setor.
Figura 27: (a) Sem interface padro do driver; (b) com interface padronizada
A utilizao do buffer, ou bufferizao, uma zona de memria onde os dados so temporariamente armazenados enquanto esto sendo transferidos entre as diversas camadas da comunicao. Um exemplo de bufferizao o que ocorre em protocolos de comunicao: o usurio pode desejar transmitir 128 Kbytes de dados, mas a interface de rede capaz de enviar sequncias de 4 Kbytes. Neste caso, a requisio do usurio armazenada em buffer e enviada em blocos de 4 Kbytes. Alguns dispositivos, tais como fitas magnticas, s podem ser utilizados somente por um processo por vez. Desta forma, cabe ao software de E/S, independente do dispositivo, examinar as requisies de uso a um determinado dispositivo e aceitar ou rejeitar os pedidos de alocao do recurso. Ao final de seu uso, o recurso de alocado dever ser liberado. A manipulao de erros tambm feita nesta camada. Um erro tpico causado por um bloco do disco que foi danificado e no pode ser mais lido ou escrito. Aps o driver tentar ler o bloco vrias vezes, ele desiste de realizar a operao e informa ao software independente do dispositivo a razo do erro, para que o mesmo possa ser tratado. Se ocorrer na leitura de um arquivo pertencente a um usurio, suficiente informar o erro para o mesmo. Entretanto, se o erro ocorreu numa rea crtica, o sistema operacional deve apresentar uma mensagem e terminar a execuo (Tanenbaum, 1999).
e-Tec Brasil
62
5.3 Discos
Nesta seo sero apresentadas algumas questes de software e de hardware relativas aos discos magnticos.
Dentre as tcnicas de implementao do RAID/JBOD, duas tcnicas so utilizadas, a RAID 0 e a RAID 1. H ainda uma terceira tcnica, conhecida como RAID 01, que combina o uso das duas anteriores. O RAID 0, tambm conhecido como Striping, consiste na implementao de dois ou mais discos para trabalharem como um. O RAID 0 tem como objetivo distribuir as operaes de E/S entre os diversos discos do array (dispositivo
63
e-Tec Brasil
virtual criado para o tratamento de dois ou mais discos como um s) (Machado & Maia, 2007). O uso do RAID Striping com dois discos chega a otimizar a velocidade das operaes de E/S dos discos em cerca de 98% (noventa e oito por cento). Com trs discos, o ganho de desempenho chega a 180% (cento e oitenta por cento) (Ferreira, 2005). O RAID 1, tambm conhecido como Mirroring, nada mais do que replicar todo o contedo do disco principal em outro disco. Caso haja uma falha no disco principal, a redundncia implementada pelo RAID 1 garante que o disco secundrio seja utilizado de forma transparente pelo sistema de arquivos (Machado & Maia, 2007). Ao implementar o RAID 1, todo o contedo gravado no disco principal, automaticamente tambm ser gravado no mirror (disco espelho), de forma a garantir que seu contedo seja fiel ao do disco principal. Para implementar o RAID 01 surge a necessidade de termos, no mnimo, 4 (quatro) discos, sendo dois para o Striping e dois para o Mirroring.
e-Tec Brasil
64
determinado por trs fatores: o tempo de seek (o tempo que o brao leva para se mover at o cilindro desejado), a latncia rotacional (o tempo para que o setor procurado se coloque debaixo da cabea de leitura), e o tempo de transferncia propriamente dito (Tanenbaum, 1999). Se o driver do disco receber as requisies e for atend-las executando com a poltica FCFS, por exemplo, pouqussimo poder ser feito para melhorar a performance do seek. No entanto, outras estratgias de busca podem ser implementadas de forma a melhorar o tempo de seek. Vamos considerar um exemplo extrado de Tanenbaum (2003). Imagine um disco com 40 cilindros. A primeira requisio a chegar para a leitura do cilindro 11. Enquanto se d o seek para tal cilindro, novos pedidos chegam para os cilindros 1, 36, 16, 34, 9 e 12, nessa ordem. Quando a requisio atual (para leitura do cilindro 11) for concluda, o driver do disco dever escolher qual requisio ser a prxima a ser tratada. Usando o FCFS, a prxima requisio a ser atendida ser a da leitura do cilindro 1, depois o 36, e assim por diante. Observe que este algoritmo requer movimentos do brao por 10, 35, 20, 18, 25 e 3 cilindros, respectivamente, totalizando 111 cilindros percorridos. Alternativamente o driver poder atender sempre a requisio do posicionamento mais curto primeiro (Shortest Seek First - SSF), de forma a minimizar o tempo do seek. Utilizando o exemplo anterior, os cilindros a serem atendidos sero 12, 9, 16, 1, 34 e 36, conforme mostra a Figura 5.4 extrada de Tanenbaum (2003). Seguindo a sequncia de leitura determinada pelo algoritmo, o brao ser deslocado por 1, 3, 7, 15, 33 e 2 cilindros, num total de 61 cilindros, quase a metade apresentada pelo algoritmo FCFS.
65
e-Tec Brasil
Um problema apresentado por este algoritmo ocorre no caso de novas requisies irem chegando constantemente. Nesta situao, a tendncia do algoritmo fazer com que o brao fique no meio do disco, atendendo as requisies prximas a ele, fazendo com que as requisies feitas para as extremidades possam nem ser atendidas. Os objetivos de reduo do tempo mdio de resposta e justia igual para todas as requisies esto em conflito neste algoritmo (Tanenbaum, 2003). Uma soluo para o problema apresentado o algoritmo do elevador. O princpio o mesmo do SSF, entretanto, o brao procura manter a mesma direo at que no haja nenhuma requisio pendente nela. Este algoritmo requer um campo que contenha um indicador para a direo do elevador. Quando este campo apresentar o valor 1 (up) sua direo dever ser para cima, e quando apresentar o valor 0 (down) sua direo dever ser para baixo (Tanenbaum, 2003). A Figura 5.5, extrada de Tanenbaum (2003), demonstra sua aplicao no exemplo citado anteriormente.
Na Figura 30 estamos supondo que o sinal de direo est sinalizado como up. Desta forma, aps a leitura do cilindro 11 a ordem dos cilindros servidos seria 12, 16, 34, 36, 9 e 1, que faz com que o brao percorra 1, 4, 18, 2, 27 e 8 cilindros, perfazendo um total de 60. Neste caso o algoritmo do elevador ligeiramente melhor que o SSF, apesar dele constantemente apresentar um desempenho pior que o deste ltimo (Tanenbaum, 2003).
e-Tec Brasil
66
Atividades 1. Qual a diferena entre drive e driver? 2. Quais as duas grandes categorias de dispositivos de E/S existentes? Explique-as e d dois exemplos de dispositivos para cada uma delas. 3. Quais as principais funes de um controlador de dispositivos? 4. O que e como funciona o DMA? Quais suas vantagens? 5. Explique detalhadamente a funo e as responsabilidades de um driver. 6. Os pedidos para acesso a um disco chegam a seu driver para os cilindros 8, 17, 43, 32, 40, 6 e 33, nesta ordem. O tempo de seek de 6 ms por cilindro. Qual o tempo gasto com posicionamento para atender estas requisies utilizando as polticas de seek abaixo: a) FCFS b) Cilindro mais prximo primeiro c) Algoritmo do elevador (brao inicialmente para cima) Em todos os casos, o brao est inicialmente no cilindro 22. 7. Explique resumidamente RAID 0, RAID 1 e RAID 01. 8. O uso de RAID 01 elimina a necessidade de backups extras peridicos? Por qu? 9. O que independncia de dispositivo?
67
e-Tec Brasil
Referncias
Ferreira, Silvio; Hardware Montagem, Configurao e Manuteno de Micros. Editora AXCEL, (2005); Machado, F. B. & Maia, L.P; Arquitetura de sistemas operacionais, 4.ed; LTC (2007); Shay, W. A; Sistemas operacionais; Makron Books (1996); Silberschatz, A; Galvin, P. & Gagne, G; Applied Operating System Concepts 1th. ed; Wiley, (1999); Tanenbaum, A. S; Sistemas operacionais modernos, 2.ed; LTC Livros Tcnicos e Cientficos Editora S.A. (1999); Tanenbaum, A. S; Sistemas operacionais modernos, 2.ed; Person Prentice Hall (2003).
e-Tec Brasil
68
Anotaes
69
e-Tec Brasil
e-Tec Brasil
70
71
e-Tec Brasil
e-Tec Brasil
72