livroso2008.pdf

58
ii Conte´ udo Lista de Figuras v Lista de Tabelas vii 1 Introdu¸ ao 1 1.1 Definindo os Sistemas Operacionais ...................... 1 1.2 Objetivos de um Sistema Operacional ..................... 3 1.3 Breve hist´ orico - A Evolu¸c˜ ao dos Sistemas Operacionais ........... 3 1.3.1 Primeira Gera¸ c˜ao (Anos 50) ...................... 4 1.3.2 Segunda Gera¸ c˜ao (Anos 60) ...................... 4 1.3.3 TerceiraGera¸c˜ ao (Meio dos anos 60 ao meio dos anos 70) ...... 5 1.3.4 Quarta Gera¸ c˜ao (Meio dos anos 70 ao final dos anos 80) ...... 5 1.3.5 Quinta Gera¸c˜ao (Final dos anos 80 ao presente) ........... 6 1.4 Conceitos B´ asicos em Sistemas Operacionais ................. 6 1.4.1 Processos ................................ 6 1.5 Classifica¸c˜ ao ................................... 7 1.6 Requisitos B´asicos - Projeto de um S.O .................... 8 2 Classifica¸ ao dos Sistemas Operacionais 9 2.1 Quanto ao n´ umero de usu´arios ......................... 9 2.1.1 Monousu´ario .............................. 9 2.1.2 Multiusu´ario ............................... 10 2.2 Quanto ao n´ umero de programas que s˜ ao executados ............ 10 2.2.1 Sistema Monoprogramado ou Monotarefa ............... 10 2.2.2 Sistema Multiprogramado ou Multitarefa ............... 10 2.3 Do ponto de vista do n´ umero de processadores ................ 12

Upload: sandrarosangela

Post on 10-Nov-2015

7 views

Category:

Documents


1 download

TRANSCRIPT

  • ii

    Conteudo

    Lista de Figuras v

    Lista de Tabelas vii

    1 Introducao 1

    1.1 Definindo os Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . 1

    1.2 Objetivos de um Sistema Operacional . . . . . . . . . . . . . . . . . . . . . 3

    1.3 Breve historico - A Evolucao dos Sistemas Operacionais . . . . . . . . . . . 3

    1.3.1 Primeira Geracao (Anos 50) . . . . . . . . . . . . . . . . . . . . . . 4

    1.3.2 Segunda Geracao (Anos 60) . . . . . . . . . . . . . . . . . . . . . . 4

    1.3.3 Terceira Geracao (Meio dos anos 60 ao meio dos anos 70) . . . . . . 5

    1.3.4 Quarta Geracao (Meio dos anos 70 ao final dos anos 80) . . . . . . 5

    1.3.5 Quinta Geracao (Final dos anos 80 ao presente) . . . . . . . . . . . 6

    1.4 Conceitos Basicos em Sistemas Operacionais . . . . . . . . . . . . . . . . . 6

    1.4.1 Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.5 Classificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1.6 Requisitos Basicos - Projeto de um S.O . . . . . . . . . . . . . . . . . . . . 8

    2 Classificacao dos Sistemas Operacionais 9

    2.1 Quanto ao numero de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2.1.1 Monousuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2.1.2 Multiusuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.2 Quanto ao numero de programas que sao executados . . . . . . . . . . . . 10

    2.2.1 Sistema Monoprogramado ou Monotarefa . . . . . . . . . . . . . . . 10

    2.2.2 Sistema Multiprogramado ou Multitarefa . . . . . . . . . . . . . . . 10

    2.3 Do ponto de vista do numero de processadores . . . . . . . . . . . . . . . . 12

  • iii

    2.3.1 Sistema Monoprocessado . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.3.2 Sistema Multiprocessado . . . . . . . . . . . . . . . . . . . . . . . . 12

    3 Sistemas de Arquivo 15

    3.1 Conceito de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.2 Armazenamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.3 Gerenciamento de Espaco em Disco . . . . . . . . . . . . . . . . . . . . . . 17

    3.3.1 Lista de Espacos Livres . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3.3.2 Metodos de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.3.3 Metodos de Alocacao de Arquivos . . . . . . . . . . . . . . . . . . . 18

    3.4 Sistema de Diretorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    3.4.1 Diretorio em um Unico Nvel . . . . . . . . . . . . . . . . . . . . . . 23

    3.4.2 Diretorio em Dois Nveis . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.4.3 Diretorio Estruturado em Arvore . . . . . . . . . . . . . . . . . . . 23

    3.4.4 Diretorio em Grafo Acclico e Grafo Geral . . . . . . . . . . . . . . 25

    3.5 Protecao de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.5.1 Senha de Acesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.5.2 Grupo de Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    4 Gerencia do Processador 28

    4.1 Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.1.1 Conceito de Multiprogramacao . . . . . . . . . . . . . . . . . . . . 28

    4.1.2 Conceito de Processo . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.1.3 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.1.4 Criacao de Processos . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.1.5 Estados de um Processo . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.2 Objetivos do Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.3 Nveis de Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.4 Escalonamento Preemptivo e Nao-Preemptivo . . . . . . . . . . . . . . . . 32

    4.5 Qualidade do Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.6 Algoritmos de Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.6.1 Escalonamento FIFO (First In First Out) . . . . . . . . . . . . . . 34

    4.6.2 Escalonamento HPF (Highest Priority First) . . . . . . . . . . . . . 35

  • iv

    4.6.3 Escalonamento SJF (Shortest Job First) . . . . . . . . . . . . . . . 36

    4.6.4 Escalonamento RR (Round-Robin) . . . . . . . . . . . . . . . . . . 38

    4.6.5 Escalonamento MQ (Multilevel Queues) . . . . . . . . . . . . . . . 38

    4.7 Comparacao dos algoritmos de escalonamento . . . . . . . . . . . . . . . . 40

    5 Gerenciamento de Memoria 42

    5.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    5.2 Bare Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    5.3 Monitor Residente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    5.4 Organizacao de Memoria: Particoes Fixas X Particoes Variaveis . . . . . . 45

    5.4.1 Particoes Fixas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    5.4.2 Particoes Variaveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    5.5 Memoria Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    5.5.1 Swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.5.2 Paginacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    Bibliografia 52

  • vLista de Figuras

    1.1 Sistema de Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2.1 Classificacao dos Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . 9

    2.2 Sistema Monoprogramado/Monotarefa . . . . . . . . . . . . . . . . . . . . 10

    2.3 Sistemas Multiprogramaveis - Multitarefa . . . . . . . . . . . . . . . . . . . 11

    2.4 Sistemas Fortemente Acoplados . . . . . . . . . . . . . . . . . . . . . . . . 14

    2.5 Sistemas Fracamente Acoplados . . . . . . . . . . . . . . . . . . . . . . . . 14

    3.1 Caractersticas fsicas de um disco . . . . . . . . . . . . . . . . . . . . . . . 17

    3.2 Alocacao contgua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    3.3 Alocacao encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3.4 Alocacao indexada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.5 Diretorio de um unico nvel . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.6 Diretorio em dois nveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    3.7 Diretorio em arvore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    4.1 Estados de um processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.2 Representacao grafica do tempo de permanencia . . . . . . . . . . . . . . . 33

    4.3 Avaliacao do escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.4 Escalonamento RR (Round Robin) . . . . . . . . . . . . . . . . . . . . . . 38

    4.5 Escalonamento MQ (Multiple queues) . . . . . . . . . . . . . . . . . . . . . 39

    5.1 Hierarquia de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    5.2 Monitor residente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    5.3 Fila de processos separadas e unificada . . . . . . . . . . . . . . . . . . . . 46

    5.4 Hardware de suporte para os registradores de limite superior e inferior . . . 47

    5.5 Hardware de suporte para os registradores de base e limite . . . . . . . . . 47

  • vi

    5.6 Exemplo de alocacao de memoria e escalonamento de processos . . . . . . 48

    5.7 Swapping de dois programas utilizando um disco . . . . . . . . . . . . . . . 50

  • vii

    Lista de Tabelas

    4.1 Transicao dos estados de um processo . . . . . . . . . . . . . . . . . . . . . 31

    4.2 Exemplo de fila de processos sob escalonamento FIFO . . . . . . . . . . . . 35

    4.3 Exemplo de fila de processos sob escalonamento HPF . . . . . . . . . . . . 36

    4.4 Exemplo de fila de processos sob Escalonamento SJF . . . . . . . . . . . . 37

    4.5 Algoritmos de escalonamento nao-preemptivos . . . . . . . . . . . . . . . . 40

    4.6 Algoritmos de escalonamento preemptivos . . . . . . . . . . . . . . . . . . 41

  • 1Captulo 1

    Introducao

    Um Sistema Operacional e um programa que atua como uma interface entre o hardwaredo computador e o usuario do sistema, fornecendo um ambiente no qual se possa executarprogramas. Sua principal meta e tornar o sistema do computador conveniente ao usofazendo a utilizacao do hardware de modo eficiente.

    Neste captulo sao apresentadas algumas definicoes de Sistema Operacional, seus obje-tivos, um breve historico, conceitos basicos, uma breve classificacao e os requisitos basicospara um projeto de Sistema Operacional.

    1.1 Definindo os Sistemas Operacionais

    Em cada uma das fases de desenvolvimento e evolucao, os computadores sempre foramsistemas muito sofisticados se comparados ao estagio tecnologico de suas epocas. Ao longodos ultimos 50 anos evoluram incrivelmente e, embora tenham se tornado mais comunse acessveis, sua popularizacao ainda esconde sua tremenda complexidade interna [Jr04].

    Como nao poderia deixar de ser, a evolucao dos Sistemas Operacionais acompanhoua evolucao dos computadores. Segundo Deitel [Dei92], Sistemas Operacionais podemser definidos como programas, implementados como software ou firmware, que tornam ohardware utilizavel. O hardware oferece capacidade computacional bruta. Os SistemasOperacionais disponibilizam convenientemente tais capacidades aos usuarios, gerenciandocuidadosamente o hardware para que se obtenha uma performance adequada.

    Em outras palavras, o Sistema Operacional tem a funcao de tornar o hardware uti-lizavel para o usuario final, escondendo deste caractersticas especficas de funcionamentode cada equipamento, o que exigiria grande conhecimento e esforco para execucao de tare-fas simples como ler ou escrever em um disco. Neste momento, alguns conceitos se fazemnecessarios:

    Hardware: o conjunto de dispositivos eletricos, eletronicos, opticos e eletromecanicosque compoe o computador, sendo este a maquina fsica propriamente dita.

    Software: o conjunto de todos os programas de computador. Firmware: e representado por programas (rotinas) especiais armazenados de forma

    permanente no hardware do computador que permitem o funcionamento elementar e

  • CAPTULO 1. INTRODUCAO 2

    a realizacao de operacoes basicas em certos dispositivos do computador, geralmenteassociadas a alguns perifericos e a execucao de outros programas tambem especiais.

    Figura 1.1: Sistema de Computador

    A Figura 1.1 apresenta a arquitetura de um sistema (computador). Os tres nveisinferiores, abaixo do Sistema Operacional, sao responsaveis pelo funcionamento do equi-pamento em si. Como exemplos de dispositivos existentes num sistema podemos citar oscircuitos integrados de memoria, as unidades de disco flexvel e rgido e o processador dosistema, sendo este ultimo um dispositivo microprogramado. O firmware geralmente vemacondicionado em circuitos de memoria nao volatil (armazenamento que nao e perdido aodesligar o computador), como ROM, PROM ou EPROM, sendo os programas ali grava-dos escritos geralmente em linguagem de maquina e destinados a execucao de operacoesespeciais como a auto-verificacao inicial do sistema e a carga do Sistema Operacional apartir de algum dispositivo adequado.

    O software ou os programas do sistema sao representados pelo Sistema Operacionale todos os seus componentes (bibliotecas de funcoes e programas utilitarios) alem detodos os outros programas acessarios do sistema, tais como editores de texto, compila-dores, interpretadores de comando (shells), aplicativos de comunicacao e ferramentas deadministracao e manutencao do sistema. Os programas de aplicacao sao todos os demaissoftwares, desenvolvidos com finalidades particulares, que sao utilizados num dado sistemacomputacional sob suporte e supervisao do Sistema Operacional, tais como softwares degestao, programas de correio eletronico, navegadores (browsers), jogos, aplicacoes mul-timdia, etc.

    Um Sistema Operacional e um programa, ou conjunto de programas, especialmentedesenvolvido para oferecer, da forma mais simples e transparente possvel, os recursosde um sistema computacional aos seus usuarios, controlando e organizando o uso destesrecursos de maneira que se obtenha um sistema eficiente e seguro. Esta camada inter-mediaria, entre hardware e os programas de aplicacao e de fundamental importancia tantopara oferecer um ambiente de programacao mais adequado como tambem um ambientede trabalho mais simples, seguro e eficiente.

    Tanenbaum [Tan92] define um Sistema Operacional como o mais fundamental de todosos programas do sistema, que controla todos os recursos computacionais e prove uma basesobre a qual programas de aplicacao podem ser escritos .

  • CAPTULO 1. INTRODUCAO 3

    O Sistema Operacional, por meio de uma interface orientada a operacao, permite queo usuario utilize funcionalidades do hardware disponvel, sem lidar com a complexidadeinerente ao dispositivo. Desta forma, ao se desenvolver uma aplicacao (um programa),o programador nao precisa conhecer detalhes especficos do funcionamento do hardware,bastando incluir em seu programa, instrucoes para o Sistema Operacional (em linguagemde alto nvel).

    Imaginando que multiplos programas em execucao desejem fazer uso dos diversosrecursos do hardware, nao e razoavel que o controle destes recursos seja transferido aosprogramadores pois isto resultaria em uma sobrecarga desnecessaria a cada programa, semque fosse possvel otimizar o uso dos recursos. Alem disso, pequenos erros ou omissoes,mesmo que involuntarias, poderiam provocar erros de dimensoes gigantescas, acarretandoperda de grandes quantidades de dados, violacoes importantes de seguranca e etc. O Sis-tema Operacional deve se encarregar de controlar os recursos do computador, garantindoseu uso adequado, buscando tambem otimizar tal uso objetivando um melhor eficienciado sistema. Assim sendo, o Sistema Operacional se comporta como gerente dos recursosdo computador.

    1.2 Objetivos de um Sistema Operacional

    Existem varios Sistemas Operacionais existentes no mercado. Alguns sao mais conhe-cidos: Linux, Unix, Windows, entre outros. Porem, qualquer SO devem suportar algunsprincpios basicos:

    oferecer os recursos do sistema de forma simples e transparente; gerenciar a utilizacao dos recursos existentes buscando seu uso eficiente em termos

    do sistema;

    garantir a integridade e a seguranca dos dados armazenados e processados no sis-tema.

    Alem destes objetivos, um Sistema Operacional tambem deve proporcionar uma inter-face adequada para que ele possa ser utilizado por seus usuarios. Historicamente as primei-ras interfaces dos Sistemas Operacionais eram baseadas em um conjunto de palavras-chave(comandos) e mensagens de dialogo que permitiam a execucao de tarefas e a comunicacaoentre homem (o operador) e maquina. Estes comandos e mensagens definiam a Inter-face Humano-Computador (IHC) daquele sistema. Atualmente a maioria dos sistemasconta com interfaces graficas modernas e simples que buscam facilitar a utilizacao docomputador atraves de sua aparencia atraente e uso intuitivo.

    1.3 Breve historico - A Evolucao dos Sistemas Ope-

    racionais

    Antigamente existia somente o hardware do computador [dC02]. O operador e pro-gramador da maquina eram uma so pessoa. Todo o controle do sistema era feito atraves

  • CAPTULO 1. INTRODUCAO 4

    de botoes e displays no console. O operador/programador monitorava a execucao de umprograma interativamente. A ativacao (setup) do computador era muito lenta e a de-puracao extremamente trabalhosa. Assim, era necessario buscar solucoes que tornassemmais facil e mais eficiente a utilizacao do computador. Os Sistemas Operacionais foramentao criados com estas finalidades.

    Os Sistemas Operacionais, assim como os dispositivos eletronicos, vem sofrendo mu-dancas ao longo das ultimas decadas. Podem ser identificadas varias geracoes, que estaodescritas a seguir.

    1.3.1 Primeira Geracao (Anos 50)

    Em 1953 surgiu o primeiro Sistema Operacional. Construdo pela GM, ele foi desen-volvido para um computador IBM modelo 701. Os primeiros sistemas eram voltados parao processamento em batchs (lotes). O Sistema Operacional era responsavel pela entradade um programa e sada de outro, isto e, o sequenciamento de jobs. Uma vez que houvesseum processo rodando, ele tinha completo controle sobre a maquina. Ao termino (normalou anormal) do processo, o controle retornava ao Sistema Operacional que preparava amaquina para receber o proximo programa. Ainda assim, o tempo de ativacao (setup) docomputador era enorme.

    1.3.2 Segunda Geracao (Anos 60)

    Nesta epoca, varias empresas ja fabricavam Sistemas Operacionais. O principal ob-jetivo era terminar o maior numero de processos por unidade de tempo, aumentando odesempenho de um sistema de computador.

    Foram desenvolvidos tambem nesta epoca os primeiros sistemas com caractersticasde:

    multiprogramacao - a mutiprogramacao permite que varios processos sejam exe-cutados simultaneamente;

    multiprocessamento - no multiprocessamento varios programas sao processadosao mesmo tempo em processadores diferentes;

    time-sharing - sao ditos de tempo compartilhado. Usuarios interagem com amaquina de uma maneira conversacional atraves de terminais;

    tempo real - dentre eles se destaca o SABRE para reservas de passagens da Ame-rican Airlines.

    Apareceu tambem nesta geracao, o conceito de dispositivo independente. Nos siste-mas da primeira geracao, o usuario que precisasse escrever dados em uma fita, deveriareferenciar, no seu programa, especificamente qual fita ele desejava. Na segunda geracao,o usuario deveria apenas referenciar a necessidade de uma fita. O sistema, entao, ficariaresponsavel por reservar uma fita disponvel para ele.

    Em abril de 1964, a IBM lancou a serie de computadores System/360 que eram com-patveis em termos de arquitetura e tinham o mesmo Sistema Operacional OS/360. Esse

  • CAPTULO 1. INTRODUCAO 5

    sistema era adequado tanto para aplicacoes cientficas quanto para aplicacoes comerciais.Antes disso, cada vez que fosse necessario um sistema computacional mais potente, eramoferecidos sistemas totalmente diferentes, o que implicava em uma conversao de hardwaree de software lenta e muito cara. Com a serie 360 era possvel passar anos e anos semprecisar de conversoes. Foi um verdadeiro sucesso.

    1.3.3 Terceira Geracao (Meio dos anos 60 ao meio dos anos 70)

    A terceira geracao comecou efetivamente com a introducao da famlia 360. Os compu-tadores dessa geracao foram desenvolvidos para serem sistemas de proposito geral. Eramsistemas que suportavam simultaneamente o processamento batch, time-shared, tempo-real e multiprocessado. Eram sistemas grandes e caros. Este conceito vendeu muitoscomputadores, mas existia um overhead muito alto relativo ao tempo em que a maquinagastava executando rotinas do Sistema Operacional. Alem disso, determinadas aplicacoesnao necessitavam de todos os modos de processamento.

    Uma excecao deste conceito foi o Sistema Operacional UNIX, que foi construdo nestaepoca. No final dos anos 60, Ken Thompson e Dennis Ritchie, entre outros membros daequipe do Bell Laboratories desenvolveram e implementaram um ambiente interativo, oUNIX. Usando esse sistema, desenvolveram tambem a linguagem C. Uma grande partedo Sistema Operacional foi escrita em C o que contribuiu para a popularidade de ambos.

    Os sistemas comecaram a ser escritos em linguagens de alto nvel e surgiram as lin-guagens de controle que permitem controlar a execucao de processos.

    Outro marco importante foi o surgimento da engenharia de software. Esta viria a ditarregras para a construcao de sistemas. Os Sistemas Operacionais que eram um aglomeradode programas escritos por pessoas com muito mais nocao de hardware do que software,passaram a ser escritos de uma maneira mais disciplinada.

    1.3.4 Quarta Geracao (Meio dos anos 70 ao final dos anos 80)

    Nesta fase apareceram os Sistemas Operacionais para redes de computadores, onde ousuario ganha acesso a redes locais ou geograficamente dispersas. O ponto importanteera transferir informacao entre computadores interconectados. Correio eletronico, trans-ferencia de arquivo e aplicacoes de acesso a banco de dados proliferaram. O modelocliente/servidor tornou-se difundido. Os clientes sao os processos dos usuarios que neces-sitam de varios servicos e os servidores sao os componentes de hardware/software da redeque realizam estes servicos. Os servidores sao geralmente dedicados a um tipo de tarefatais como impressao, acesso a banco de dados entre outros.

    O conceito de processamento distribudo tornou-se largamente difundido. Quandonecessario, dados eram trazidos para serem processados em alguma instalacao de compu-tador central de larga escala.

    Com o advento do microprocessador, surgem os computadores pessoais, um dos maisimportantes desenvolvimentos com consequencias sociais das ultimas decadas. Um com-putador poderia ser adquirido por um preco acessvel a muitos usuarios que passariam ater o seu proprio computador.

  • CAPTULO 1. INTRODUCAO 6

    A quantidade de pessoas com acesso a um computador tornou-se consideravelmentemaior e o termo user friendly comecou a ser muito utilizado. Ele significa que o sistemaapresenta, para usuarios leigos, um ambiente de acesso facil ao computador.

    O conceito de maquina virtual tornou-se largamente utilizado. Os usuarios nao pre-cisavam mais se preocupar com detalhes fsicos do sistema do computador que estavasendo usado. Ao inves disso, o usuario via uma maquina virtual criada pelo SistemaOperacional.

    O campo da engenharia de software continuou a ter uma importancia significativa.

    1.3.5 Quinta Geracao (Final dos anos 80 ao presente)

    Nos anos 90 entramos na verdadeira era da computacao distribuda. As computacoessao divididas em subcomputacoes. Essas sao executadas em diferentes processadores,que podem ser computadores multiprocessadores ou redes de computadores. As subcom-putacoes podem ser distribudas de tal maneira que se possa obter vantagens utilizandocomputadores de proposito especial atraves das redes.

    As redes podem ser configuradas dinamicamente. Elas continuam operando ainda quenovos dispositivos e softwares sejam adicionados ou removidos. Quando cada novo servi-dor for adicionado, ele dara a` rede, atraves de um procedimento de registro, informacoessobre suas capacidades, polticas de ligacao, acesso entre outras. Os clientes podem entaousar os servidores, quando necessario, de acordo com os termos descritos durante o re-gistro. Para atingir flexibilidade real, clientes nao teriam conhecimento dos detalhes darede.

    Este tipo de conectividade e facilitada por padroes de sistemas abertos e protocolos.Esses padroes estao sendo desenvolvidos por alguns grupos internacionais como Internati-onal Organization for Standardization, Open Software Foundation, X/Open entre outros.Eles pretendem chegar a um acordo sobre um ambiente internacionalmente aceito parapadroes de comunicacao e de computacao. A tendencia e a computacao tornar-se muitopoderosa e portatil.

    Nos anos recentes, foram introduzidos os computadores laptop e palmtop, que possibili-tam a`s pessoas transportarem seus computadores por toda parte. Com o desenvolvimentode protocolos de comunicacao, os computadores portateis podem ser ligados em redes decomunicacao e transmitir dados com alta confiabilidade.

    1.4 Conceitos Basicos em Sistemas Operacionais

    1.4.1 Processos

    Um conceito fundamental em sistemas operacionais e o de processo ou tarefa. Um pro-cesso (a`s vezes chamado de processo sequencial) e basicamente um programa em execucao,sendo uma entidade ativa que compete por recursos (principalmente CPU) e interage comoutros processos.

    Em um instante qualquer, um processo esta em um determinado estado. Estes estadospodem ser:

  • CAPTULO 1. INTRODUCAO 7

    executando (usando a CPU para executar as instrucoes do programa); bloqueado (aguardando recursos, que nao CPU, indisponveis no momento); ativo (aguardando apenas CPU para executar).Um processo em execucao passa por um sequencia de estados ordenados no tempo.

    Um processo possui duas importantes propriedades:

    o resultado da execucao de um processo independe da velocidade com que e execu-tado;

    se um processo for executado novamente com os mesmos dados, ele passara preci-samente pela mesma sequencia de instrucoes e fornecera o mesmo resultado.

    Estas propriedades enfatizam a natureza sequencial e determinstica de um processo.O processo sequencial e definido pelo resultado de suas instrucoes, nao pela velocidadecom que as instrucoes sao executadas.

    1.5 Classificacao

    Quanto ao numero de usuarios:

    Monousuario Multiusuario - permitem acessos simultaneos ao computador atraves de dois ou mais

    terminais de entrada.

    Quanto ao numero de programas na Memoria Principal:

    Monotarefa Multitarefa - suporta a execucao concorrente de processos sobre um processador

    unico, sem necessariamente prover elaborada forma de gerenciamento de recursos(CPU, memoria, etc). Embora frequentemente associada com multiprogramacao,multitarefa nao implica necessariamente em uma operacao multiusuario. Operacaomultiprocessos sem suporte de multiusuarios pode ser encontrada em sistemas ope-racionais de alguns computadores pessoais (por exemplo, Windows 98) e em sistemasde tempo-real.

    Quanto ao numero de CPU:

    Monoprocessados Multiprocessados - Embora a maioria dos computadores disponha de uma unica

    CPU que executa instrucoes uma a uma, certos projetos mais avancados incremen-taram a velocidade efetiva de computacao permitindo que varias instrucoes sejamexecutadas ao mesmo tempo. Um computador com multiplos processadores quecompartilhem uma memoria principal comum e chamado um multiprocessador. Osistema que suporta tal configuracao e um sistema que suporta o multiprocessa-mento.

  • CAPTULO 1. INTRODUCAO 8

    Quanto ao tipo de processamento:

    Batch - a principal caracterstica desse grupo e o fato de que o usuario perde ocontrole do programa a partir do momento em que ele o submete ao sistema;

    On-line - a caracterstica marcante desse grupo e permitir a monitoracao e o controledo programa, atraves de um terminal, enquanto durar o processamento;

    Tempo real - os sistemas de tempo real sao aqueles que devem fornecer uma respostaa estmulos externos num perodo de tempo extremamente pequeno.

    1.6 Requisitos Basicos - Projeto de um S.O

    Concorrencia- usuario compartilha memoria, dispositivos de E/S e processadores; no entanto

    cada usuario imagina que tem sua propria maquina;

    - um usuario pode executar multiplas atividades;

    - SO deve evitar que os processos interajam de maneira erronea ou nao-intencional;

    Suporte a E/S- dispositivos de E/S sao lentos, por isso e desejavel que a CPU nao fique ociosa

    durante operacoes de E/S;

    - dispositivos operam independentemente; CPU fornece comandos para os dis-positivos e vai executar outra coisa; quando a operacao se completa, o dispositivointerrompe a CPU que para o que estava fazendo, trata a interrupcao e depois con-tinua. O SO deve garantir que interrupcoes nao perturbem o estado corrente damaquina; em algumas situacoes, deve-se gerenciar interrupcoes multiplas;

    Memoria- usuarios/processos tem que compartilhar uma quantidade limitada de memoria;

    - SO tem que coordenar esse compartilhamento disponibilizando memoria realquando um processo esta sendo executado, atraves de paginacao ou segmentacao;

    - programas sao escritos como se a maquina tivesse um tamanho muito maior;

    Sistema de Arquivos- arquivos nao podem desaparecer e sao pessoais;

    - SO tem que alocar espaco em discos e fitas;

    - SO tem que prover protecao.

  • 9Captulo 2

    Classificacao dos SistemasOperacionais

    A Figura 2.1 apresenta um panorama geral sobre a Classificacao dos Sistemas Operacio-nais. Os Sistemas Operacionais podem ser classificados sob tres pontos de vista diferentes.

    Figura 2.1: Classificacao dos Sistemas Operacionais

    2.1 Quanto ao numero de usuarios

    2.1.1 Monousuario

    Apenas um e so um usuario trabalha de cada vez. Ex.: DOS e Windows (versoes maisantigas e algumas versoes recentes porem limitadas).

  • CAPTULO 2. CLASSIFICACAO DOS SISTEMAS OPERACIONAIS 10

    2.1.2 Multiusuario

    Permite o uso da maquina por varios usuarios ao mesmo tempo, ou seja, cada usuariopode executar um ou mais programas simultaneamente. Ex.: Linux, Unix e Windows(algumas versoes mais recentes).

    2.2 Quanto ao numero de programas que sao execu-

    tados

    2.2.1 Sistema Monoprogramado ou Monotarefa

    Processador, memoria principal e dispositivos de E/S (perifericos) ficam dedicadosa um unico processo/programa (Figura 2.2). Os programas sao executados instrucao-a-instrucao, ate que seu processamento seja concludo, ou seja, todos os recursos da maquinasao alocados para um unico programa ate a conclusao de sua execucao.

    Figura 2.2: Sistema Monoprogramado/Monotarefa

    Por exemplo, enquanto o programa aguarda a digitacao de um dado, o processador ficaocioso sem realizar qualquer tarefa. Neste caso, a memoria e subtilizada caso o programanao a preencha totalmente e os perifericos, como discos e impressoras, nem sempre saoutilizados de forma integral. O Sistema Operacional so tem capacidade de controlar egerenciar um programa de cada vez. Sao de simples implementacao, se comparados aoutros sistemas, nao havendo muita preocupacao com problemas de protecao, pois soexiste um usuario/programa utilizando-o.

    2.2.2 Sistema Multiprogramado ou Multitarefa

    Os recursos da maquina sao alocados de modo dinamico entre o numero de programasativos, de acordo com o nvel de prioridade ou o estagio de execucao de cada um dos pro-

  • CAPTULO 2. CLASSIFICACAO DOS SISTEMAS OPERACIONAIS 11

    gramas. O Sistema Operacional gerencia o acesso concorrente aos seus diversos recursos,de forma ordenada e protegida, pelos diversos programas. Dessa forma e possvel aumen-tar a produtividade e reduzir os custos de utilizacao do sistema, aproveitando melhor ohardware.

    Por exemplo, enquanto um programa espera por uma operacao de leitura ou gravacaoem disco, outros programas podem estar sendo processados no mesmo intervalo de tempo.

    Figura 2.3: Sistemas Multiprogramaveis - Multitarefa

    Estes tipos de SO sao mais complexos e eficientes do que os sistemas monoprograma-dos, ja que varios programas utilizam os mesmos recursos (Figura 2.3). Podem ser clas-sificados pela forma com que suas aplicacoes sao gerenciadas/interacao com os usuarios,sendo que um Sistema Operacional pode suportar um ou mais desses tipos de processa-mento:

    BATCH (LOTE) - Os programas quando executados sao armazenados em disco oufita, onde esperam para serem atendidos. Normalmente, os programas (jobs outarefas) que sao executados nesses sistemas nao exigem interacao com os usuarios(por exemplo, compilacoes);

    TIME-SHARING (TEMPO-COMPARTILHADO) - O Sistema Operacional alocauma fatia de tempo (time-slice) do processador para cada usuario. Caso o pro-grama do usuario nao esteja concludo nesse intervalo de tempo, ele e substitudopor um de outro usuario e fica esperando por uma nova fatia de tempo. Permitema interacao dos usuarios com o sistema;

    REAL-TIME (TEMPO-REAL) - Semelhante ao time-sharing, sendo a maior dife-renca o tempo de resposta exigido na execucao. Enquanto em sistemas de tempocompartilhado o tempo de resposta pode variar sem comprometer as aplicacoes em

  • CAPTULO 2. CLASSIFICACAO DOS SISTEMAS OPERACIONAIS 12

    execucao, nos sistemas de tempo real os tempos de resposta devem estar dentrode limites rgidos. Nao existe a ideia de fatia de tempo, um programa executa otempo que for necessario, ou ate que apareca outro prioritario em funcao de suaimportancia. Essa importancia ou prioridade de execucao e controlada pela propriaaplicacao e nao pelo Sistema Operacional, como acontece no sistema de tempo-compartilhado. Esse tipo de sistema esta normalmente presente em controle deprocessos, como no monitoramento de refinarias de petroleo, controle de trafegoaereo, usinas termoeletricas e nucleares, ou em qualquer aplicacao onde a segurancae fator fundamental.

    2.3 Do ponto de vista do numero de processadores

    2.3.1 Sistema Monoprocessado

    Caracteriza-se por possuir um unico processador, sendo este controlado pelo SistemaOperacional instalado.

    2.3.2 Sistema Multiprocessado

    Caracteriza-se por possuir mais de um processador, sendo que estes podem compar-tilhar o mesmo Sistema Operacional, ou cada um pode possuir o seu proprio sistema.Multiplos processadores permitem que varios programas sejam executados ao mesmotempo, ou que um programa seja dividido em subprogramas, para execucao simultaneapor mais de um processador. Sistemas com multiplos processadores possibilitam aumen-tar a capacidade computacional com menor custo (escalabilidade), alem de permitirema reconfiguracao e o balanceamento do sistema. A reconfiguracao e a capacidade deum sistema poder continuar o processamento, mesmo se um dos processadores falhar ouparar de funcionar, embora com menor capacidade de computacao. O balanceamentopossibilita distribuir a carga de processamento entre os diversos sistemas da configuracao,melhorando o desempenho como um todo.

    O multiprocessamento mantem todos os conceitos de multiprogramacao, so que aplica-dos a varios processadores. Com o multiprocessamento, novos problemas de concorrenciaforam surgindo, pois varios processadores podem estar acessando as mesmas areas dememoria, alem da dificuldade de interligacao eficiente dos processadores, memoria e pe-rifericos. Para o desenvolvimento de Sistemas Operacionais com multiplos processadorese importante que se conheca a forma de comunicacao entre esses processadores e o graude compartilhamento da memoria principal e dos dispositivos de E/S. Em funcao dessesfatores, podemos classificar os sistemas em:

    Fortemente acoplados (Figura 2.4) - dois ou mais processadores (multiprocessado-res) compartilhando uma unica memoria e controlados por apenas um unico SistemaOperacional. Podem ser divididos conforme a simetria existente entre os processa-dores, ou seja, se todos os processadores podem executar ou nao as mesmas funcoes:

    - nos sistemas assimetricos ou mestre/escravo somente um processador (mestre)pode executar servicos do Sistema Operacional, como realizar operacoes de E/S.

  • CAPTULO 2. CLASSIFICACAO DOS SISTEMAS OPERACIONAIS 13

    Sempre que um processador do tipo escravo precisar realizar uma operacao de E/S,tera que requisitar o servico ao processador mestre;

    - nos sistemas simetricos (SMP Simmetric MultiProcessing) todos os processa-dores realizam as mesmas funcoes, ficando a cargo de um unico processador algumaspoucas funcoes, como, por exemplo, a inicializacao (boot).

    Fracamente acoplados (Figura 2.5) - caracterizam-se por possuir dois ou mais pro-cessadores (multicomputadores), conectados atraves de linhas de comunicacao, ondecada um desses sistemas funciona de forma independente, possuindo seu(s) proprio(s)processador(es), memoria principal e dispositivos de E/S. Em uma rede multicom-putadores, onde existem dois um mais sistemas independentes, tambem chamadosde nos, hosts ou estacoes, podemos classificar os sistemas como sendo:

    - Sistemas Operacionais de Redes - cada no possui seu proprio SO, alemde hardware e software que possibilitam ao sistema ter acesso o outros nos da rede.Cada no e totalmente independente um do outro, podendo inclusive possuir SistemasOperacionais diferentes. Os Sistemas Operacionais de redes permitem copia dearquivos, impressao e ate gerencia remotas, alem de servicos de correio eletronico,emulacao de terminais. A ideia e prover o compartilhamento de recursos e troca deinformacoes. Ex.: Redes locais.

    - Sistemas Operacionais Distribudos - cada no tambem possui seu proprioSistema Operacional, memoria principal, processador e dispositivos de E/S. Porem,existe um relacionamento mais forte entre esses nos, que, geralmente, possuem omesmo SO. Para o usuario e suas aplicacoes, o conjunto de computadores e vistocomo um unico sistema, como se nao existisse uma rede de computadores. A grandevantagem e a possibilidade do balanceamento de carga, ou seja, quando um pro-grama e admitido para execucao, o sistema escolhe o no que esta com menor cargade processamento e este vai executa-lo. Tambem e permitido o compartilhamentode recursos independentemente do computador em que a aplicacao estiver sendoexecutado. Esse tipo de sistema distribudo e muitas vezes chamado de cluster.

  • CAPTULO 2. CLASSIFICACAO DOS SISTEMAS OPERACIONAIS 14

    Figura 2.4: Sistemas Fortemente Acoplados

    Figura 2.5: Sistemas Fracamente Acoplados

  • 15

    Captulo 3

    Sistemas de Arquivo

    E com o sistema de arquivos que o usuario mais nota a presenca do Sistema Operaci-onal [dC02]. Os dados e programas sao armazenados em arquivos. O armazenamentode informacoes possibilita a recuperacao, reutilizacao e modificacao nos dados e nos pro-gramas. Os computadores podem armazenar informacoes em varios dispositivos fsicosdiferentes, tais como fitas magneticas e discos magneticos e opticos. Neste captulo, saoapresentados o conceito de arquivos e suas formas de armazenamento. Nas secoes a seguirdiscutiremos os metodos de acesso e de armazenamento de arquivos no dispositivo fsico.Serao abordadas ainda as estruturas de diretorios que mantem a organizacao no acesso eas formas de protecao a` arquivos.

    3.1 Conceito de Arquivos

    Os arquivos (files) podem ser definidos como uma unidade logica de armazenamentode informacao, destinada a abstrair as propriedades fsicas dos meios de armazenamento.Ou ainda, uma sequencia de registros cujo significado e definido pelo seu criador.

    Um arquivo e referenciado por seu nome e tem propriedades como: tipo, tempo decriacao, tamanho, nome do proprietario entre outras. Estas informacoes ficam armazena-das num diretorio, que e uma tabela de smbolos que permite identificar tais informacoes.As estruturas de diretorios serao vistas com mais detalhes na Secao 3.4.

    Diferentes tipos de informacao podem ser armazenadas em um arquivo, como progra-mas fonte e objeto, dados entre outros. Um arquivo tem uma certa estrutura definidade acordo com seu uso. Por exemplo, um arquivo texto e uma sequencia de caracteresorganizada em linhas e possivelmente em paginas.

    Diferentes Sistemas Operacionais possuem diferentes tipos de sistemas de arquivos.Alguns exemplos mais comuns sao: FAT, FAT32, NTFS, EXT, EXT2, EXT3 e ReiserFS.Sao varias as diferencas entre a maneira de tratamento dos arquivos. Ambientes Win-dows (FAT e NTFS), por exemplo, diferenciam arquivos pela extensao (ex.: teste.doc),enquanto sistemas como Linux (EXT e ReiserFS) tratam as extensoes simplesmente comoparte do nome do arquivo, nao associando portanto uma extensao a um determinado pro-grama (como faz o Windows).

    Se o Sistema Operacional reconhece a estrutura de um arquivo, ele pode entao opera-

  • CAPTULO 3. SISTEMAS DE ARQUIVO 16

    lo de maneira satisfatoria. A desvantagem neste caso e que o Sistema Operacional podese tornar muito grande, pois havera a necessidade de um trecho de codigo para cada tipode estrutura diferente. No outro extremo, o Sistema Operacional nao fornece nenhumsuporte aos tipos de arquivo. Esta abordagem foi adotada no Sistema Operacional UNIX,nele todo arquivo e simplesmente uma sequencia de bytes.

    Um arquivo e um tipo abstrato de dados. Para defin-lo, e necessario considerar asoperacoes que podem ser realizadas sobre os mesmos. Estas operacoes sao realizadasatraves de chamadas ao Sistema Operacional e sao:

    criacao sao necessarios dois passos para se criar um arquivo. Encontrar umespaco para ele no dispositivo de armazenamento e colocar a entrada do arquivo nodiretorio informando seu nome e sua localizacao no dispositivo;

    escrita a escrita e feita atraves de uma chamada ao sistema especificando o nomedo arquivo e a informacao a ser escrita;

    leitura a leitura e realizada por uma chamada ao sistema especificando o nomedo arquivo e a localizacao onde o bloco lido sera colocado;

    apagar o diretorio e pesquisado e quando a entrada associada ao arquivo e en-contrada, ela e invalidada e liberado todo o espaco destinado ao arquivo.

    3.2 Armazenamento

    As formas fsicas mais comuns que os sistemas de computadores utilizam para arma-zenar informacoes sao fitas magneticas e discos. Cada um destes dispositivos tem suasproprias caractersticas e organizacao fsica.

    A vantagem da utilizacao de fitas magneticas e a simplicidade, porem algumas vezese ineficiente. Quando ha arquivos muito grandes pode ser necessario o armazenamentoem varias fitas. A fita possui um diretorio para determinar quais sao os arquivos contidosnela e a localizacao de cada um deles. Podem ser guardadas, tambem, outras informacoesadicionais, como o tamanho do arquivo. O diretorio normalmente e colocado no incio dafita para aumentar a velocidade de acesso. Pela natureza fsica das fitas magneticas pode-se perder muito tempo quando sao realizados acessos alternados em arquivos armazenadosdistantes um do outro, pois a fita possui acesso sequencial.

    Neste captulo abordaremos as formas de armazenamento em disco magnetico.Fisicamente os discos sao relativamente simples, como ilustrado na Figura 3.1. Eles

    possuem duas superfcies recobertas com um material magnetico, similar ao das fitasmagneticas. Os discos sao divididos em trilhas que variam de tamanho segundo o diskdriver. Cada trilha e dividida em setores. Um setor e a menor unidade de informacaoque pode ser lida ou escrita em um disco. Para acessar o disco, o sistema de arquivo deveespecificar superfcie, trilha e setor. Os discos, como as fitas, possuem um diretorio cominformacoes sobre cada arquivo armazenado.

  • CAPTULO 3. SISTEMAS DE ARQUIVO 17

    Figura 3.1: Caractersticas fsicas de um disco

    3.3 Gerenciamento de Espaco em Disco

    O sistema de arquivos deve ser capaz de controlar a area de espaco livre nos discos,utilizar metodos de acesso a`s informacoes armazenadas e metodos de alocacao que sejamconvenientes e eficientes. A seguir sao abordados cada um destes tres pontos.

    Uma vez que os discos possuem uma quantidade limitada de espaco, e necessario reu-tilizar os espacos liberados pelos arquivos que foram apagados. Para manter informacoessobre os espacos livres em disco, o Sistema Operacional tem uma lista de espacos livres.

    As informacoes armazenadas em arquivos devem ser buscadas e colocadas dentro damemoria do computador para serem utilizadas. Os metodos de acesso a`s informacoes deum arquivo podem ser feitos de modo sequencial ou direto. Alguns sistemas fornecemsomente um dos metodos, outros oferecem os dois. Esta escolha e uma decisao de projeto.

    Por permitir acesso direto aos arquivos, os discos possibilitam flexibilidade na imple-mentacao de arquivos. Muitos arquivos podem ser armazenados em um disco. Os tresprincipais metodos de alocacao de espaco em disco utilizados sao: contguo, encadeado(linked) e indexado.

    3.3.1 Lista de Espacos Livres

    A lista de espacos livres (free space list) registra o endereco de todos os blocos que estaolivres no disco. Para criar um arquivo, faz-se uma busca a essa lista para procurar a quan-tidade de blocos necessaria e atribuir os blocos ao novo arquivo. O endereco destes blocosentao e retirado da lista de espacos livres. Quando um arquivo e apagado, seu espaco eadicionado a` lista. Existem basicamente quatro formas diferentes de implementacao dalista de espacos livres, e que estao descritas a seguir.

    Frequentemente, a lista de espacos livres e implementada como um vetor de bits.Cada bloco e representado por um bit. Se o bit estiver desativado (0) o bloco esta livre.Por exemplo, na sequencia 00111011 ..., os blocos 0, 1 e 5 estao livres. As vantagensdesta implementacao sao a simplicidade e a eficiencia para encontrar n blocos livres econsecutivos no disco. A desvantagem e um overhead em termos de ocupacao de espacode disco extra para armazenar o mapa de bits.

    Uma outra maneira de implementacao da lista e encadear todos os blocos livres, man-

  • CAPTULO 3. SISTEMAS DE ARQUIVO 18

    tendo o ponteiro do primeiro bloco livre na lista. Este bloco contem um ponteiro para oproximo bloco e assim por diante. Para atravessar a lista devemos ler cada bloco. Istotorna este esquema pouco eficiente, pois requer um tempo substancial de E/S.

    Podemos ainda, armazenar o endereco dos n blocos livres no primeiro bloco livre, ecolocar o ponteiro deste primeiro bloco na lista. Se houver mais blocos livres do que aquantidade que pode ser armazenada em um bloco, a ultima posicao do bloco e o enderecode um outro bloco contendo os ponteiros para outros n blocos livres. Nesta implementacaopodemos encontrar blocos livres mais rapidamente.

    Existe outro esquema que pode tirar vantagem do fato de que, geralmente, diversosblocos contguos podem ser alocados e liberados simultaneamente. Dessa forma, pode-semanter uma lista de enderecos livres, guardando o endereco do primeiro bloco livre e onumero n de blocos contguos livres. Cada entrada na lista entao consiste de um enderecoe um contador.

    Os discos permitem acesso direto aos arquivos. Assim, necessitamos de metodos paraalocar os arquivos nos discos que utilizem de modo apropriado o espaco do disco e per-mitam acesso rapido aos arquivos.

    3.3.2 Metodos de Acesso

    Os acessos aos arquivos tanto podem ser sequenciais quanto diretos. A seguir descre-vemos estes dois metodos de acesso.

    Acesso Sequencial O acesso sequencial e o modo de acesso de arquivos mais comum.A informacao e buscada em ordem, uma posicao apos a outra. Apos um registro avanca-seo ponteiro para o proximo registro no arquivo e assim por diante.

    O grande volume de operacoes em um arquivo sao leituras e escritas. Tal arquivopode ser reposicionado, e em alguns sistemas, um programa pode ser capaz de deslocar nregistros para frente ou para tras, por algum valor de n inteiro.

    Acesso Direto No acesso direto o arquivo e visto como uma sequencia numerada deblocos. Um bloco e geralmente uma quantidade de informacao de tamanho fixo, definidapelo Sistema Operacional. O acesso direto nao tem restricoes na ordem de acesso a cadabloco. Dessa forma, qualquer bloco pode ser lido ou escrito aleatoriamente.

    O metodo de acesso direto e bastante utilizado para acesso imediato a grandes quan-tidades de informacao.

    3.3.3 Metodos de Alocacao de Arquivos

    Os tres principais metodos de alocacao de espaco em disco que sao utilizados sao ocontguo, o encadeado (linked) e o indexado. Estes metodos sao descritos nas secoesa seguir, ressaltando suas vantagens e desvantagens.

    Alocacao Contgua

    O metodo de alocacao contgua (contiguos allocation) requer que cada arquivo ocupeum conjunto de enderecos contguos no disco. A alocacao contgua e definida pelo enderecode disco do primeiro bloco e o tamanho do arquivo. Se um arquivo possui tamanho n, e

  • CAPTULO 3. SISTEMAS DE ARQUIVO 19

    comeca na localizacao b, entao ele ocupa os blocos b, b + 1, b + 2, ..., b + n 1. Estasinformacoes sao armazenadas no diretorio. A Figura 3.2 ilustra esta forma de alocacao.

    Figura 3.2: Alocacao contgua

    Os acessos aos arquivos sao razoavelmente faceis e podem ser feitos sequencialmenteou diretamente. No acesso sequencial, o sistema de arquivo conhece o ultimo enderecode acesso e quando necessario, le o proximo bloco. No acesso direto a um bloco i de umarquivo que comeca num bloco b, podemos imediatamente realizar o acesso ao bloco bi.

    Uma das dificuldades com alocacao contgua e encontrar espaco livre para um novoarquivo. Esta decisao depende da implementacao da lista de espacos livres. Uma outradificuldade e saber o tamanho do arquivo na hora de ser criado. E trivial em uma copia,mas difcil de estimar num arquivo novo que esteja sendo gerado.

    Uma vez que a lista de espacos livres e definida, podemos decidir como encontrar espacopara um arquivo alocado contiguamente. Para um arquivo a ser criado de comprimentode n blocos, devemos buscar na lista por n blocos livres que sejam contguos. Se a lista deespacos livres for implementada como um vetor de bits, devemos encontrar n bits 0s emuma linha. Para uma lista de espacos livres implementada com enderecos e contadores,devemos encontrar um contador com pelo menos n (numeros de blocos dos arquivos).

    Para alocar os arquivos utilizando esse metodo, as solucoes padrao sao first-fit e best-fit. A solucao first-fit encontra o primeiro espaco livre que seja suficiente para atender opedido. A solucao best-fit encontra o menor espaco livre que seja grande o suficiente paraatender o pedido.

    Com relacao a eficiencia destes algoritmos, o algoritmo first-fit e mais rapido que o best-fit, pois o algoritmo best-fit necessita realizar uma busca pela lista inteira. A desvantagemdo algoritmo first-fit e a fragmentacao que pode ser maior que no algoritmo best-fit.

    A alocacao contgua provoca fragmentacao externa. A fragmentacao externa existequando ha espaco total de disco suficiente para satisfazer um pedido, mas este espaco naoe contguo. Isto e, a memoria do dispositivo esta fragmentada em um grande numero deespacos pequenos.

  • CAPTULO 3. SISTEMAS DE ARQUIVO 20

    Para solucionar o problema da fragmentacao externa pode ser utilizada a tecnica decompactacao. Ela consiste basicamente em copiar o sistema de arquivos inteiro para outrodisco ou fita e depois copia-lo de volta ao disco, deixando novamente um espaco contguomaior. O custo desta compactacao e o tempo, que pode ser relevante. Em sistemas comoWindows, esta tecnica se chama desfragmentacao.

    Alocacao Encadeada

    O metodo de alocacao encadeada (linked allocation) soluciona o problema da necessi-dade de estimar o tamanho de um arquivo no armazenamento contguo. Neste metodo,cada arquivo e uma lista encadeada de blocos de disco. Os blocos do disco podem estarespalhados em qualquer lugar. O diretorio contem um ponteiro para o primeiro e o ultimobloco do arquivo. E ainda, cada bloco possui um ponteiro para o proximo bloco. A Figura3.3 mostra este metodo de alocacao.

    Figura 3.3: Alocacao encadeada

    A criacao de um arquivo e facil, basta somente criar uma nova entrada no diretoriodo dispositivo. O ponteiro do incio do arquivo deve ser iniciado com valor nulo, parasignificar arquivo vazio. A` medida em que o arquivo vai sendo escrito, o endereco doprimeiro bloco e retirado da lista de espacos livres e colocado no diretorio. Os ponteirosdos blocos seguintes vao sendo retirados da lista de espacos livres e encadeados ao finaldo arquivo. Para ler um arquivo, lemos os blocos seguindo os ponteiros. Com o metodode alocacao encadeada nao e necessario saber o tamanho do arquivo. Alem disso, estemetodo nao provoca fragmentacao externa.

    Uma desvantagem na alocacao encadeada e somente permitir o acesso sequencial, emcada arquivo. Para encontrar o bloco i de um arquivo, devemos comecar no incio daquelearquivo e seguir os ponteiros ate o i esimo bloco. Outras desvantagens sao a perda doespaco ocupado pelos ponteiros e a confiabilidade. Se perdermos um ponteiro todo orestante do arquivo apos o ponteiro ficara perdido.

  • CAPTULO 3. SISTEMAS DE ARQUIVO 21

    Alocacao Indexada

    O metodo de alocacao indexada (indexed allocation) soluciona os problemas de de-claracao do tamanho do arquivo e de fragmentacao externa, relativos a alocacao contgua;e do acesso sequencial e dos ponteiros espalhados pelo disco, relativos a alocacao encade-ada. A alocacao indexada resolve este problema colocando todos os ponteiros juntos emum local chamado bloco de ndices (index block).

    Cada arquivo tem o seu proprio bloco de ndices, que e um array de enderecos deblocos de disco. A i esima entrada no bloco de ndices aponta para o i esimo bloco doarquivo. No diretorio e armazenado o endereco do bloco de ndices, como pode ser vistona Figura 3.4.

    Figura 3.4: Alocacao indexada

    Quando um arquivo e criado, todos os ponteiros no bloco de ndices sao iniciados comvalor nulo. Quando o i esimo bloco e escrito, e removido um bloco da lista de espacoslivres e seu endereco e colocado na i esima entrada do bloco de ndices.

    A alocacao indexada suporta o acesso direto sem sofrer de fragmentacao externa.Qualquer bloco livre em qualquer lugar do disco pode satisfazer um pedido por maismemoria. Porem, este metodo de alocacao sofre de perda de espaco. Geralmente, ooverhead no armazenamento dos ponteiros no bloco de ndices e maior do que na alocacaoencadeada. Muitos arquivos sao pequenos. Assim dependendo do tamanho do bloco dendices a perda de espaco pode ser um problema.

    Neste ponto a questao e que tamanho deveria ser um bloco de ndices. Ele deveriaser o menor possvel, porem se for muito pequeno nao sera suficiente para armazenar osponteiros para um arquivo maior. Um bloco de ndices normalmente e do tamanho deum setor de disco. Para arquivos grandes que necessitam de mais de um setor, os blocosde ndice usam ou uma alocacao encadeada do blocos de ndices ou blocos de ndices queapontam para outros blocos de ndices.

  • CAPTULO 3. SISTEMAS DE ARQUIVO 22

    Existem Sistemas Operacionais que suportam mais de um metodo de alocacao.

    3.4 Sistema de Diretorio

    Os arquivos sao representados por entradas no diretorio do dispositivo. O diretorioarmazena informacoes tais como nome, localizacao, tamanho, tipo, para todos os arquivosdaquele dispositivo.

    Quando existe um aumento expressivo da quantidade de memoria e do numero deusuarios no sistema do computador, e necessario impor uma estrutura de diretorio nosistema de arquivos. A estrutura de diretorio e um meio de organizar os muitos arquivospresentes no sistema.

    No diretorio sao armazenados dois tipos de informacao. A primeira esta relacionadacom o dispositivo fsico (a localizacao do arquivo, seu tamanho e metodo de alocacao).A segunda, por sua vez, esta relacionada a` organizacao logica dos arquivos (nome, tipo,proprietario, codigos de protecao).

    As informacoes mantidas para cada arquivo nos diretorios variam de um SistemaOperacional para outro Sistema Operacional. Algumas das informacoes que podem existirsao listadas a seguir:

    nome do arquivo o nome simbolico de um arquivo; tipo do arquivo para aqueles sistemas que suportam tipos diferentes de arquivos; localizacao localizacao do arquivo no dispositivo; tamanho o tamanho corrente do arquivo e o tamanho maximo; posicao corrente um ponteiro para a posicao corrente de leitura/escrita no

    arquivo;

    protecao informacao de controle de acesso para leitura, escrita e execucao; contabilidade de uso indica o numero de processos que estao correntemente

    usando o arquivo;

    tempo, data e identificacao do processo Estas informacoes podem ser man-tidas para criacao, ultima modificacao e ultimo uso. Podem ser uteis para protecaoe monitoracao de uso.

    Muitas estruturas de diretorio diferentes tem sido utilizadas. O diretorio e essencial-mente uma tabela de smbolos. O Sistema Operacional utiliza o nome do arquivo simbolicopara achar o arquivo. Quando considerarmos uma estrutura de diretorio em particular,devemos ter em mente as operacoes que podem ser realizadas no diretorio. Dentre estasoperacoes podemos citar: busca, criacao, apagar, listar seu conteudo e fazer copias parabackup.

    A seguir descrevemos algumas estruturas de diretorio, iniciando pela mais simples,que e o diretorio em um unico nvel, ate uma estrutura mais complexa, como o diretorioem grafo geral.

  • CAPTULO 3. SISTEMAS DE ARQUIVO 23

    3.4.1 Diretorio em um Unico Nvel

    A estrutura de diretorio em um unico nvel e a mais simples. Todos os arquivos estaocontidos no mesmo diretorio (mesmo nvel). E facil de dar suporte e entender. Este tipode diretorio tem a limitacao de que todos os arquivos devem ter nomes distintos. A figura3.5 a seguir ilustra esta estrutura.

    Figura 3.5: Diretorio de um unico nvel

    A desvantagem desta estrutura e a possibilidade de confusao entre os nomes de arquivosde usuarios diferentes. Todos os usuarios compartilham o diretorio.

    3.4.2 Diretorio em Dois Nveis

    Uma solucao possvel para o problema do diretorio em um unico nvel e criar umdiretorio para cada usuario. Este diretorio e logico, uma vez que todos os arquivos estaofisicamente no mesmo dispositivo.

    Na estrutura de diretorio em dois nveis, cada usuario tem seu proprio diretorio dearquivo de usuario (user file directory - UFD). Cada diretorio de usuario tem uma es-trutura similar. Quando um usuario entra no sistema, o diretorio de arquivo mestre(master file directory - MFD) do sistema e pesquisado. O MFD e indexado pelo nomedo usuario ou um numero de contabilidade. Cada entrada aponta para o diretorio de umusuario. Quando um usuario se refere a um arquivo em particular, somente o seu diretorioe pesquisado. A figura 3.6 mostra esta estrutura.

    Esta estrutura isola um usuario de outro. A desvantagem da estrutura em dois nveisexiste quando um usuario quer utilizar arquivos de outros usuarios. Alguns sistemas naopermitem este acesso. Se o acesso e permitido, ele e feito atraves do nome do usuario e donome do arquivo, que definem o nome do caminho (path name). Todo arquivo no sistematem um unico path name. Por exemplo, se o usuario 1 deseja realizar um acesso ao seuproprio arquivo cat basta referencia-lo. Para se referenciar ao arquivo cat do usuario 2ele deve indicar o caminho como /user2/cat.

    3.4.3 Diretorio Estruturado em Arvore

    O diretorio em dois nveis pode ser visto como uma arvore com profundidade dois. Enatural estender esta estrutura para uma arvore com profundidade qualquer, que sao osdiretorios estruturados em arvore. Nesta estrutura existe um diretorio raiz da arvore. Osnos intermediarios da arvore sao os diretorios dos usuarios, que podem ainda criar seus

  • CAPTULO 3. SISTEMAS DE ARQUIVO 24

    Figura 3.6: Diretorio em dois nveis

    proprios subdiretorios e organizar seus arquivos. Esta estrutura pode ser vista na figura3.7.

    Figura 3.7: Diretorio em arvore

    Todo o arquivo no sistema tem um unico nome considerando o seu path name. O pathname e o caminho da raiz atraves de todos os subdiretorios ao arquivo especificado. Asequencia de diretorios pesquisada quando um arquivo e buscado e chamada de caminhode busca (search path). O path name pode ser apresentado de duas maneiras diferentes:

    completo define um caminho da raiz ao arquivo;

  • CAPTULO 3. SISTEMAS DE ARQUIVO 25

    relativo define um caminho do diretorio corrente ao arquivo.

    Os arquivos podem ser facilmente compartilhados. Por exemplo, um usuario pode criarum subdiretorio contendo os arquivos que serao compartilhados com outros usuarios. Umdestes usuarios pode fazer o acesso aos arquivos compartilhados especificando o path namedos arquivos.

    E importante ressaltar que o acesso deve respeitar a hierarquia de diretorios. Se umusuario nao tiver acesso a um determinado diretorio, este usuario nao tera acesso aossubdiretorios (mesmo seja liberado o acesso aos subdiretorios).

    A maneira de se apagar um diretorio estruturado em arvore e uma poltica de decisaointeressante. Se um diretorio esta vazio ele pode ser apagado. Se ele nao estiver vaziopodemos decidir entre duas abordagens. A primeira, e so apagar o diretorio se estivervazio. Isso implica em apagar todos os arquivos e subdiretorios contidos nele primeiro.A segunda abordagem, e assumir que quando e pedido para se apagar um diretorio,deva-se apagar tambem todos os seus arquivos e subdiretorios. A escolha da forma deimplementacao e uma decisao de projeto e ambas sao utilizadas nos sistemas.

    3.4.4 Diretorio em Grafo Acclico e Grafo Geral

    Estas estruturas nao serao vistas em detalhes nesta apostila pois o conceito de Grafosnao sera abordado no Curso Tecnico.

    Diretorio em Grafo Acclico

    permite que subdiretorios e arquivos sejam compartilhados (ao contrario da estru-tura em arvore que nao permite o compartilhamento explcito); a maneira maiscomum de compartilhar arquivos e por meio de uma entrada no diretorio, chamadalink 1;

    estrutura de diretorio e mais flexvel que uma estrutura em arvore simples, mastambem e mais complexa;

    Um arquivo pode ter varios nomes completos (atraves dos links). Dessa forma,nomes com caminhos diferentes podem se referenciar a um mesmo arquivo;

    Como cada arquivo tem mais de uma trajetoria de busca, a eliminacao de um arquivopode ser feita de varias maneiras.

    Diretorio em Grafo Geral

    permite que subdiretorios formem ciclos; existem diversos caminhos que levam a um mesmo arquivo ou diretorio; a existencia de ciclos pode gerar problemas quando se deseja apagar arquivos ou

    diretorios.

    1Um link e um ponteiro para outro subdiretorio ou arquivo

  • CAPTULO 3. SISTEMAS DE ARQUIVO 26

    3.5 Protecao de Arquivos

    Num sistema de computador e importante manter a protecao das informacoes contradanos fsicos (confiabilidade) e contra acessos improprios (protecao).

    A confiabilidade geralmente e obtida realizando uma copia dos arquivos em intervalosregulares. A protecao de arquivos e um resultado direto da habilidade de realizar acessosa eles. Sistemas que nao permitem a um usuario referenciar os arquivos de outro usuario,nao precisam de protecao. Um extremo seria fornecer protecao completa proibindo oacesso. O outro extremo e fornecer livre acesso sem nenhuma protecao. Essas abordagenssao muito radicais. Na verdade o que e necessario e um controle de acesso.

    Uma maneira e associar uma senha (password) a cada arquivo. So podem ser feitosacessos a este arquivo o usuario que conhecer a senha.

    Outros mecanismos de protecao fornecem acesso controlado, limitando os tipos deacesso que podem ser feitos ao arquivo. Existem diversas operacoes que podem ser con-troladas como leitura, escrita, execucao, copia, edicao, entre outras.

    O controle de acesso e feito com a identidade do usuario. Varios usuarios podem ternecessidade de acessos de tipos diferentes a arquivos e a diretorios. Uma lista de acesso(acess list) e associada com cada arquivo e com cada diretorio, especificando o nome dousuario e os tipos de acesso permitidos. Quando e feito um pedido, o Sistema Operacionalverifica a lista de acesso, permitindo-o ou nao. Uma desvantagem com este mecanismo eo tamanho da lista de acesso.

    Uma solucao para reduzir o tamanho da lista de acesso e tentar classificar os usuariosem tres grupos:

    proprietario o usuario que criou o arquivo; grupo um conjunto de usuarios que compartilham o arquivo e necessitam de

    acesso similar;

    universo todos os usuarios do sistema.

    Com esta classificacao, somente tres campos sao necessarios para garantir a protecao.Cada campo e uma colecao de bits que permitem ou previnem a operacao associada comcada bit. Por exemplo, no Sistema Operacional Linux existem tres campos (proprietario,grupo, outros) de tres bits cada: rwx. O bit r controla o acesso de leitura, o bit w controlao acesso de escrita e o bit x controla a execucao. Neste esquema nove bits por arquivossao necessarios para registrar a protecao da informacao. Para ilustrar o controle de acessoa arquivos no SO Linux, alguns exerccios serao trabalhados em aula.

    3.5.1 Senha de Acesso

    A associacao de uma senha de acesso a um arquivo e um princpio bastante simples. Ocontrole de acesso se resume ao usuario ter o conhecimento da senha e, consequentemente,ter a liberacao do acesso ao arquivo concedida pelo sistema.

    Como cada arquivo possui apenas uma senha e o acesso e liberado ou nao na suatotalidade. Isso significa que nao e possvel determinar quais tipos de operacao podem ou

  • CAPTULO 3. SISTEMAS DE ARQUIVO 27

    nao ser concedidas. Outra desvantagem desse metodo e a dificuldade de compartilhamentode arquivos, pois alem do dono do arquivo todos os demais usuarios teriam que conhecera senha de acesso.

    3.5.2 Grupo de Usuarios

    A protecao baseada em grupos de usuarios e implementada por diversos SistemasOperacionais. Esse tipo de protecao tem como princpio a associacao de cada usuario dosistema a um grupo. Os grupos de usuarios sao organizados logicamente com o objetivode compartilhar arquivos e diretorios, sendo que os usuarios que desejam compartilhararquivos entre si devem pertencer a um mesmo grupo.

    Esse mecanismo implementa tres nveis de protecao ao arquivo: owner (dono), group(grupo) e all (todos). Nessa especificacao e necessario associar o tipo de acesso aos tresnveis de protecao. Por exemplo: leitura, escrita, execucao e eliminacao.

  • 28

    Captulo 4

    Gerencia do Processador

    O escalonamento da CPU - Unidade Central de Processamento - e o conceito mais re-levante de Sistemas Operacionais multiprogramados/multitarefa. E atraves do chavea-mento do processador entre os varios processos, que o Sistema Operacional pode tornara maquina mais eficiente e produtiva [dC02].

    O escalonamento de processos e a forma como o processador (existente em umsistema computacional) e utilizado para efetuar o processamento, isto e, como os processossao distribudos (escalonados) para execucao no processador.

    Tanenbaum [Tan92] propoe a seguinte definicao para escalonamento de processos:Quando mais de um processo e executavel, o Sistema Operacional deve decidir qualsera executado primeiro. A parte do SO dedicada a esta decisao e chamada escalonador(scheduler) e o algoritmo utilizado e chamado algoritmo de escalonamento (schedulingalgorithm) .

    Simplificando, podemos afirmar que em um sistema onde so exista um unico processa-dor, o escalonamento representa a maneira e a ordem como os processos serao executados.A forma com que se da o escalonamento e, em grande parte, responsavel pela produti-vidade e eficiencia atingidas por um sistema computacional. Mais do que um simplesmecanismo, o escalonamento deve representar uma poltica de tratamento dos processosque permita obter os melhores resultados possveis em um sistema.

    4.1 Processos

    4.1.1 Conceito de Multiprogramacao

    Sem duvida, o conceito de multiprogramacao e um dos mais importantes nos sistemasoperacionais modernos. Se existirem varios programas carregados na memoria ao mesmotempo, a CPU pode ser compartilhada entre eles, aumentando a eficiencia da maquina eproduzindo mais resultados em menos tempo.

    A ideia por tras da multiprogramacao e bastante simples. Quando um programalibera a CPU, seja para realizar alguma operacao de E/S ou por outro motivo, ela ficaparada. Enquanto espera que o programa volte para executar, a CPU nao realiza nenhumtrabalho util. Para acabar com a ociosidade deste tempo varios programas sao mantidosao mesmo tempo na memoria e o sistema operacional se encarrega de escolher um deles

  • CAPTULO 4. GERENCIA DO PROCESSADOR 29

    para executar. Assim, sempre que um programa e interrompido, um outro e escolhidopara ser executado em seu lugar. Com isso, a CPU estara durante grande parte do tempoocupada processando instrucoes de programas.

    Os benefcios da multiprogramacao sao varios, entre eles e possvel citar: aumento dautilizacao da CPU e da taxa de sada do sistema computacional, isto e, da quantidade detrabalho realizada dentro de um intervalo de tempo (throughput).

    4.1.2 Conceito de Processo

    Informalmente, um processo e um programa em execucao. Um programa e umasequencia de instrucoes executaveis e pode conter diferentes fluxos de execucao. Ele podeser visto como uma entidade passiva ou ainda como uma entidade ativa que descreve aexecucao de um dos possveis fluxos do programa. A execucao de um processo se da demaneira sequencial, ou seja, em qualquer instante de tempo, no maximo uma instrucaoesta sendo executada (em sistemas monoprocessados).

    Uma outra ideia associada a` definicao de processo, esta na necessidade de descrever aexistencia de varias atividades que ocorrem em paralelo dentro do sistema computacional.Em um ambiente multiprogramado/multitarefa, varios usuarios podem estar executandoseus programas simultaneamente, dificultando a gerencia de multiplas atividades parale-las. Dessa forma, o modelo de processo e uma maneira de se decompor este problema emcomponentes mais simples. Todo o software no computador e organizado em processossequenciais ou apenas processos.

    Com a multiprogramacao, cada usuario tem a sensacao de ter uma maquina (proces-sador) so para si, o que na pratica nao acontece. Na verdade, o processador central sereveza entre os varios usuarios e uma das tarefas do Sistema Operacional e tornar istoo mais transparente possvel. Quando o processador muda de um processo para outro,e necessario que o sistema salve todas as informacoes necessarias para a retomada doprocesso interrompido. Assim, pode-se dizer que ao conceito de processo estao associadasinformacoes que caracterizam o seu contexto de execucao. Estas informacoes sao arma-zenadas numa estrutura que recebe o nome de Bloco de Controle do Processo (PCB) eque deve estar armazenada na area de memoria destinada ao sistema operacional, paraevitar que o usuario possa realizar o acesso a ele. Os PCBs representam os processos parao sistema operacional e a sua quantidade varia com o tempo a` medida que processos saocriados e terminam dinamicamente. Algumas informacoes armazenadas em um PCB sao:idenificacao, estado, prioridade, ponteiro-codigos, ponteiro-dados, entre outras.

    4.1.3 Threads

    As threads sao um mecanismo que aumenta a eficiencia do sistema operacional redu-zindo o overhead causado pela troca de contexto dos processos. Elas podem ser vistascomo a menor unidade de execucao do sistema e compartilham todos os recursos com oprocesso que as criou.

    Em sistemas com threads, um processo com exatamente uma thread e equivalente aum processo classico. Cada thread pertence a exatamente um unico processo. Sob oponto de vista de threads, processos sao estaticos e apenas as threads sao escalonadas

  • CAPTULO 4. GERENCIA DO PROCESSADOR 30

    para execucao. Cada thread representa um fluxo de controle separado com sua pilha e seuestado da maquina. Como todos os recursos, exceto o processador, sao controlados peloprocesso que cria a thread o chaveamento da CPU entre threads e mais rapido e eficiente.Entretanto, o chaveamento entre threads de processos diferentes gastam um tempo maior,pois envolve o processo todo.

    4.1.4 Criacao de Processos

    Nos sistemas mais antigos so o sistema operacional podia criar novos processos. Atu-almente, a maioria dos sistemas permitem que os usuarios criem e destruam seus propriosprocessos. Um grande numero de programas pode se beneficiar disto, como programas desimulacao, ordenacao e computacao cientfica.

    Para um programa poder criar novos processos o sistema operacional deve fornecer pri-mitivas especficas (chamadas ao sistema) para tal finalidade. Quando um novo processoe criado, inicialmente o seu PCB e preparado com as informacoes basicas. Em seguidae feita uma chamada ao sistema operacional para a sua criacao. Algumas linguagens deprogramacao oferecem suporte para o controle de processos.

    4.1.5 Estados de um Processo

    A execucao de um processo comeca por um ciclo de execucao na CPU. Este ciclo eseguido por um ciclo de E/S, do qual a CPU participa no incio e no final. Novamente haum ciclo de CPU e outro de E/S ate que o processo termine a sua execucao. O tamanhodos ciclos de CPU e de E/S varia de processo para processo. Sendo assim, podemosidentificar dois tipos de processos. Uns que requisitam mais E/S e tem ciclos de CPUmuito pequenos e outros que gastam mais tempo executando instrucoes e tem ciclos deE/S pequenos [dC02].

    Durante a execucao de um programa o processo pode se encontrar em um dos estadosa seguir:

    executando diz-se que um processo esta executando se ele esta usando o proces-sador. Em sistemas com uma unica CPU, no maximo um processo pode estar nesteestado em qualquer instante de tempo;

    pronto um processo esta no estado pronto quando espera que a CPU seja liberadapelo processo que a esta usando. Este estado pode ser considerado como a entradapara que um processo novo possa competir pelo processador com outros processos,que tambem estejam neste estado;

    bloqueado um processo esta bloqueado quando nao pode ser executado porqueespera que alguma condicao externa aconteca. Por exemplo, o fim de uma operacaode E/S. Assim que a condicao e satisfeita, o processo volta para o estado pronto;

    terminado um processo esta terminado quando a ultima instrucao do programafoi executada.

    A maneira como um processo passa de um estado para o outro e mostrada na Figura4.1 e na Tabela 4.1, a seguir.

  • CAPTULO 4. GERENCIA DO PROCESSADOR 31

    Figura 4.1: Estados de um processo

    Evento Transicao Significado

    tempo executando > pronto fatia de tempo do processo executando expiroudespacho pronto > executando Sistema Operacional entrega o processador

    a um processo no estado prontobloqueio executando > bloqueado processo solicitou operacao de E/Sdespertar bloqueado > pronto evento esperado acontece

    Tabela 4.1: Transicao dos estados de um processo

    4.2 Objetivos do Escalonamento

    A poltica de escalonamento deve levar em conta uma serie de diferentes necessidades,contemplando os seguintes objetivos:

    Ser justo: todos os processos devem ser tratados igualmente, tendo possibilidadesidenticas de uso do processador, devendo ser evitado o adiamento indefinido;

    Maximizar a produtividade (throughput): procurar maximizar o numero detarefas processadas por unidade de tempo;

    Ser previsvel: duas tarefas devem ser sempre executadas com aproximadamenteo mesmo tempo e custo computacional se submetidas a ambientes identicos;

    Minimizar o tempo de resposta para usuarios interativos; Maximizar o numero possvel de usuarios interativos; Minimizar a sobrecarga (overhead): recursos nao devem ser desperdicados; Favorecer processos bem comportados: processos que tenham comportamento

    adequado podem receber um servico melhor;

    Balancear o uso de recursos: o escalonador deve manter todos os recursos ocu-pados, ou seja, processos que usam recursos sub-utilizados devem ser favorecidos;

    Exibir degradacao previsvel e progressiva em situacoes de intensa carga de trabalho.

  • CAPTULO 4. GERENCIA DO PROCESSADOR 32

    Como pode ser observado, alguns destes objetivos sao contraditorios, pois, dado que aquantidade de tempo disponvel de processamento (tempo do processador) e finita, assimcomo os demais recursos computacionais, para que um processo seja favorecido outro deveser prejudicado.

    O maior problema existente no projeto de algoritmos de escalonamento esta associadoa natureza imprevisvel dos processos, pois nao e possvel prever se um dado processoutilizara intensamente o processador, ou se precisara de grande quantidade de memoriaou se necessitara numerosos acessos aos dispositivos de E/S (entrada e sada).

    4.3 Nveis de Escalonamento

    Existem tres nveis distintos de escalonamento em um sistema computacional quandose considera a frequencia e complexidade das operacoes envolvidas [Jr04].

    Escalonamento de alto nvel- chamado tambem de escalonamento de tarefas,corresponde a admissao de processos, isto e, a determinacao de quais tarefas passaraoa competir pelos recursos do sistema. Uma vez admitidas, as tarefas transformam-seem processos.

    Escalonamento de nvel intermediario - Corresponde a determinacao de quaisprocessos existentes competirao pelo uso do processador (processos ativos). Corres-pondem a rotinas internas do SO.

    Escalonamento de baixo nvel - Rotinas que determinam qual processos, dentreos processos ativos, sera o proximo processo que efetivamente utilizara o processador.

    Os nveis de escalonamento alto, intermediario e baixo tambem sao conhecidos res-pectivamente como escalonamento de longo prazo, medio prazo e curto prazo. O esca-lonamento de alto nvel ou de longo prazo ocorre menos frequentemente em um sistemaenquanto o escalonamento de baixo nvel ou de curto prazo ocorre constantemente, dadoque representa a troca de contexto e o chaveamento do processador entre os processosativos.

    4.4 Escalonamento Preemptivo e Nao-Preemptivo

    Um algoritmo de escalonamento e dito nao-preemptivo quando temos que o processa-dor designado para um certo processo nao pode ser retirado deste ate que o processo sejafinalizado (completion). Analogamente, um algoritmo de escalonamento e consideradopreemptivo quando o processador designado para um processo pode ser retirado deste emfavor de um outro processo.

    Algoritmos preemptivos sao mais adequados para sistemas em que multiplos proces-sos requerem atencao do sistema, ou seja, no caso de sistemas multiusuario interativos(sistemas em tempo repartido) ou em sistema de tempo real. Nestes casos, a preempti-vidade representa a troca do processo em execucao, assim sendo, para que o processadorseja retirado de um processo (interrompendo seu trabalho) e designado a outro processo,

  • CAPTULO 4. GERENCIA DO PROCESSADOR 33

    anteriormente interrompido, e fundamental que ocorra a troca de contexto dos proces-sos. Tal troca exige que todo o estado de execucao de um processo seja adequadamentearmazenado para sua posterior recuperacao, representando uma sobrecarga (um custo)computacional para realizacao desta troca e armazenagem de tais dados. Usualmente osalgoritmos preemptivos sao mais complexos dada a natureza imprevisvel dos processos.

    Por sua vez, os algoritmos nao-preemptivos sao mais simples e adequados para oprocessamento nao interativo, semelhante aos esquemas de processamento em lote dossistemas batch. Embora nao proporcionando interatividade, sao geralmente mais eficientese previsveis quanto ao tempo de entrega de suas tarefas.

    A preemptividade de certos algoritmos se baseia no fato de que o processador e, na-turalmente, um recurso preemptivo, ou seja, um recurso que pode ser retirado de umprocesso e posteriormente devolvido sem prejuzo. O mesmo acontece com a memoria.Por outro lado, outros tipos de recursos nao podem sofrer preempcao, tais como impresso-ras e ate mesmo arquivos, dado que muitas vezes nao podem ser retirados de um processosem que ocorra prejuzo para este.

    4.5 Qualidade do Escalonamento

    Existem varias criterios que permitem a avaliacao da qualidade do servico oferecidopor um algoritmo de escalonamento [SGG01]: uso do processador, throughput, tempo deresposta e tempo de permanencia. O tempo de permanencia (ou tempo de retorno) e umcriterio simples dado pela soma do tempo de espera, com o tempo de servico (tempo deexecucao), como pode ser visto a seguir:

    tp = tpermanencia = tespera + tservico

    Normalmente espera-se que o tempo de permanencia seja o menor possvel. Na Figura4.2 temos uma representacao grafica do tempo de permanencia.

    Figura 4.2: Representacao grafica do tempo de permanencia

    Uma outra forma de avaliar o escalonamento e utilizando-se o tempo de permanencianormalizado (tpn), ou seja, a razao entre o tempo de permanencia (tp) e o tempo deservico (ts) (Figura 4.3).

    Se a espera for 0 (zero), o que constitui o melhor caso possvel, teremos que o tempode permanencia normalizado de um processo sera 1 (um). Assim sendo, valores maioresdo que este indicam um pior servico oferecido pelo algoritmo de escalonamento.

  • CAPTULO 4. GERENCIA DO PROCESSADOR 34

    Figura 4.3: Avaliacao do escalonamento

    4.6 Algoritmos de Escalonamento

    Existem varios algoritmos que sao utilizados para a realizacao do escalonamento debaixo nvel ou de curto prazo. Em todos eles, o principal objetivo e designar o proces-sador para um certo processo dentre varios processos existentes, otimizando um ou maisaspectos do comportamento geral do sistema. Stasllings [Sta92] divide os algoritmos deescalonamento em 2 categorias:

    Orientados ao usuario: quando procuram otimizar os tempos de resposta e per-manencia alem da previsibilidade.

    Orientados ao sistema: quando enfatizam a produtividade, a taxa de utilizacaodo processador, o tratamento justo e o balanceamento do uso de recursos.

    Nesta apostila serao abordados os seguintes algoritmos de escalonamento:

    First In First Out Highest Priority First Shortest Job First Round Robin Multilevel QueuesObs.: Os algoritmos Highest Response-Ratio Next e Shortest Remaining Time nao

    serao abordados aqui uma vez que ambos se baseiam em estimativas de tempo de execucaode processos, ou seja, possuem deficiencias quanto a` precisao das estimativas e abusos porparte dos usuarios (definicao imprecisa do tempo de execucao).

    4.6.1 Escalonamento FIFO (First In First Out)

    E a forma mais simples de escalonamento. No escalonamento FIFO os processosprontos sao colocados em uma fila organizada por ordem de chegada, o que correspondedizer que sua funcao de selecao e min(tchegada).

    Com esta funcao de selecao, seleciona-se dentre os processos na fila de espera aquelecom menor tempo de chegada. Tal processo recebe o uso do processador ate que sejacompletado, ou seja, o processo permanece em execucao ate que seja finalizado, de formaque os demais processos na fila fiquem esperando por sua oportunidade de processamento.Assim sendo, o escalonamento FIFO e um algoritmo nao-preemptivo, pois os processosem execucao nao sao interrompidos.

  • CAPTULO 4. GERENCIA DO PROCESSADOR 35

    Embora de igual tratamento a todos os processos, ocorre que processos de pequenaduracao nao sao favorecidos pois tem seu tempo de resposta fortemente influenciado (au-mento consideravel) em funcao da quantidade de processos posicionados a` frente e tambempela duracao destes. Outro ponto e que processos importantes podem ficar a espera de-vido a` execucao de outros processos menos importantes dado que o escalonamento FIFOnao concebe qualquer mecanismo de distincao entre processos (por exemplo, processoscom diferentes nveis de prioridade).

    Avaliemos o exemplo ilustrado pela Tabela 4.2, onde quatro processos A, B, C e Dcom tempos de processamento distintos, respectivamente 3, 35, 12 e 4 segundos, saoescalonados conforme sua chegada pelo SO.

    Processo tchegada tservico tespera tperm tpn

    A 0 3 0 3 1.00B 1 35 2 37 1.06C 2 12 36 48 4.00D 3 4 47 51 12.75

    Medias 21.25 34.75 4.7

    Tabela 4.2: Exemplo de fila de processos sob escalonamento FIFO

    Podemos perceber que, em funcao de como ocorreu o escalonamento, o menor processoobteve o pior servico, num esquema de escalonamento que tende a ter tempos medios deresposta maiores quanto maior o numero de processos em espera. Esta forma de escalona-mento, semelhante aos sistemas de processamento em lote (batch systems) nao e utilizadacomo esquema principal de escalonamento, mas como forma auxiliar de escalonamentopara processamento de filas batch (lote).

    4.6.2 Escalonamento HPF (Highest Priority First)

    O escalonamento HPF (Highest Priority First) ou escalonamento por prioridades euma variante do escalonamento FIFO onde os processos em espera pelo processador saoorganizados numa fila segundo sua prioridade. Sao colocados a frente os processos demaior prioridade, isto e, sua funcao de selecao e max (prioridade), favorecendo os processosconsiderados mais importantes [Tan92].

    Apos iniciados, os processos nao sao interrompidos, ou seja, e uma forma de escalona-mento nao-preemptivo, oferecendo como a vantagem de proporcionar tempos medios deespera menores para processos prioritarios.

    A prioridade e, em geral, representada por um numero inteiro, no entanto nao existeconsenso em definir prioridade maiores como numeros maiores (indicando sua maior im-portancia) ou o inverso (indicando sua ordem preferencial). A prioridade pode ser definidainterna ou externamente ao sistema (com ou sem participacao do usuario). Quando de-terminada internamente, o sistema pode utilizar diversos fatores, tais como quantidadede memoria necessaria, estimativas do tempo de servico e outros elementos para calculara prioridade. Notemos que o tempo de processamento de um job nao pode ser deter-minado antes de seu processamento, sendo necessario o uso de estimativas feitas pelo

  • CAPTULO 4. GERENCIA DO PROCESSADOR 36

    usuario ou pelo programador, as quais sao com frequencia pouco precisas. No caso deprioridade externamente, a mesma e simplesmente atribuda ao processo pelo operadorou pelo programador, de maneira emprica (chute).

    Avaliemos o mesmo exemplo utilizado para o escalonamento FIFO (Secao 4.6.1), ondequatro processos A, B, C e D com tempos de processamento distintos, respectivamente 3,35, 12 e 4 segundos, sao escalonados conforme suas prioridades, definidas externamente,como mostra a Tabela 4.3.

    Processo tchegada Prio tservico tespera tperm tpn

    A 0 4 3 0 3 1.00C 2 1 12 1 13 1.08B 1 2 35 14 49 1.4D 3 3 4 47 51 12.75

    Medias 15.5 29.00 4.06

    Tabela 4.3: Exemplo de fila de processos sob escalonamento HPF

    Podemos perceber que, ao ordenar os processos segundo sua prioridade, alguns pro-cessos podem ser prejudicados em funcao de outros de maior prioridade, pois se processosgrande sao executados primeiro ocorre uma degradacao significativa para os demais pro-cessos.

    Observe tambem que o processo A, embora tenha prioridade mais baixa que os demais,comecou a ser executado antes devido ao seu tempo de chegada, nao sendo interrompidocom a chegada de processos de maior prioridade, pois este algoritmo nao e preemptivo.Por outro lado, devemos considerar tambem que um processo de prioridade relativamentebaixa pode ter sua execucao adiada indefinidamente pela chegada contnua de processosde maior prioridade, ou seja pode sofrer de estagnacao.

    No caso do HPF, existe uma solucao, relativamente simples, para a solucao do pro-blema da estagnacao denominada envelhecimento. Tal solucao consiste em progres-sivamente aumentar a prioridade dos processos que aguardam na fila a medida que otempo passa, ou seja, como forma de compensar a espera e evitar a estagnacao, processospoderiam ter sua prioridade incrementada ate que sejam executados [SGG01].

    Conforme as prioridades e os processos, os resultados apresentados por este algoritmopoderiam tanto aproxima-lo do escalonamento FIFO como apresentar resultados de qua-lidade melhores. No caso, os resultados exibidos foram um pouco melhores. Na verdadesua maior qualidade esta na execucao seletiva de jobs conforme sua prioridade calculadaou atribuda.

    Da mesma forma que no escalonamento FIFO, o escalonamento HPF nao e utilizadocomo esquema principal de escalonamento, mas como forma auxiliar de escalonamentopara processamento de filas batch.

    4.6.3 Escalonamento SJF (Shortest Job First)

    O escalonamento SJF (Shortest Job First) ou menor job primeiro, tambem e conhecidocomo SPF (Shortest Process First) ou menor processo primeiro. E um caso especial

  • CAPTULO 4. GERENCIA DO PROCESSADOR 37

    do HPF, onde o tempo de servico e tomado como prioridade, ou seja, os processos emespera pelo processador sao organizados numa fila segundo seu tempo de execucao, sendocolocados a frente os menores processos jobs, isto e, sua funcao de selecao e min(tservico),favorecendo os processos que podem ser finalizados intervalos de tempo menores.

    Apos iniciados, os processos nao sao interrompidos, ou seja, e uma forma de escalo-namento nao-preemptivo, mas mesmo assim oferece a vantagem de proporcionar temposmedios de espera menores do aqueles obtidos em um esquema FIFO.

    O grande problema deste esquema de escalonamento e que o tempo de processamentode um job nao pode ser determinado antes de seu processamento, sendo necessario o usode estimativas feitas pelo usuario ou pelo programador, as quais, na maioria das vezes, saopouco precisas. Para evitar abusos por parte dos usuarios (que podem indicar estimativasmais baixas que os tempos esperados), podem ser adotadas polticas de premiacao emfuncao do acerto das estimativas, mas isto nao resolve uma serie de problemas, entreos quais o incorreto posicionamento de um job pelo sistema devido a uma estimativaincorreta, pr