Você está na página 1de 64

UNIVERSIDADE FEDERAL DE SANTA CATARINA

Sistemas Operacionais
Curso Tcnico em Informtica
MDULO III SISTEMAS OPERACIONAIS E REDES DE COMPUTADORES

NDICE
1 INTRODUO A SISTEMAS OPERACIONAIS...................................................................................................1 HISTRICO DOS SISTEMAS OPERACIONAIS..................................................................................................................................1 Primeira fase (1945-1955).........................................................................................................................................1 Segunda fase (1956-1965)..........................................................................................................................................1 Terceira fase (1966-1980)..........................................................................................................................................1 Quarta fase (1981-1990)............................................................................................................................................2 Quinta fase (1991-2005).............................................................................................................................................2 Sexta Fase (2006-????)..............................................................................................................................................2 O QUE UM SISTEMA OPERACIONAL.......................................................................................................................................2 A DIVISO DO HARDWARE DE UM COMPUTADOR........................................................................................................................4 SISTEMAS OPERACIONAIS DE HOJE..........................................................................................................................................5 CTSS...........................................................................................................................................................................6 Multics........................................................................................................................................................................6 UNIX...........................................................................................................................................................................6 CLASSIFICAES DE SISTEMAS OPERACIONAIS............................................................................................................................7 ARQUITETURA DE SISTEMAS OPERACIONAIS...........................................................................................................................10 Componentes do SO..................................................................................................................................................10
Gerenciador de processos.....................................................................................................................................................10 Gerenciador de memria.......................................................................................................................................................10 Gerncia de arquivos............................................................................................................................................................11 Sistema de Entrada e Sada...................................................................................................................................................11 Gerncia de Armazenamento Secundrio.............................................................................................................................11 Redes....................................................................................................................................................................................11 Proteo................................................................................................................................................................................11 Interpretador de comandos....................................................................................................................................................11

Servios do SO..........................................................................................................................................................12
Execuo de Programas........................................................................................................................................................12 Operaes de E/S..................................................................................................................................................................12 Manipulao do Sistema de Arquivos...................................................................................................................................12 Comunicao........................................................................................................................................................................12 Deteco de Erros.................................................................................................................................................................12 Alocao de Recursos...........................................................................................................................................................12 Contabilizao......................................................................................................................................................................12 Proteo................................................................................................................................................................................12

Chamadas de Sistema...............................................................................................................................................12
Tipos de chamadas de sistema..............................................................................................................................................13

Programas de Sistema..............................................................................................................................................13 Estrutura do sistema operacional.............................................................................................................................13


Estrutura simples..................................................................................................................................................................13 Estrutura em camadas...........................................................................................................................................................14 Microkernel..........................................................................................................................................................................14

Mquina virtual........................................................................................................................................................14
Mquina virtual Java............................................................................................................................................................14

TIPOS DE SISTEMAS OPERACIONAIS.......................................................................................................................................14 POSIX / UNIX-like....................................................................................................................................................14 Microsoft Windows...................................................................................................................................................15 Apple / Macintosh.....................................................................................................................................................15 Amiga........................................................................................................................................................................15 Atari ST.....................................................................................................................................................................16 Be-like.......................................................................................................................................................................16 DOS..........................................................................................................................................................................16 IBM...........................................................................................................................................................................16 Digital / Compaq......................................................................................................................................................16 PDAs.........................................................................................................................................................................16 Outros.......................................................................................................................................................................16 2 GERNCIA DE PROCESSOS.................................................................................................................................18 DEFINIO........................................................................................................................................................................18 ESTADOS DE UM PROCESSO...................................................................................................................................................18 CONCEITOS LIGADOS A PROCESSOS.......................................................................................................................................18 System Calls..............................................................................................................................................................18

Mtodos de acesso....................................................................................................................................................19 Hierarquia entre Processos......................................................................................................................................19 Thread's....................................................................................................................................................................19 Comunicao Entre Processos.................................................................................................................................21 PROBLEMAS DE SINCRONIZAO...........................................................................................................................................22 Velocidade de execuo dos processos....................................................................................................................22 Starvation..................................................................................................................................................................23 Sincronizao condicional.......................................................................................................................................23 SOLUES DE HARDWARE...................................................................................................................................................23 Desabilitao de interrupes..................................................................................................................................23 Instruo Test-And-Set.............................................................................................................................................23 SOLUES DE SOFTWARE.....................................................................................................................................................23 Semforos.................................................................................................................................................................23 Monitores..................................................................................................................................................................24 Troca de mensagens.................................................................................................................................................24 DEADLOCK........................................................................................................................................................................25 Preveno do Deadlock............................................................................................................................................25 Deteco do Deadlock..............................................................................................................................................25 Correo do Deadlock..............................................................................................................................................26 3 GERNCIA DE MEMRIA....................................................................................................................................27 INTRODUO......................................................................................................................................................................27 Gerncia Sem Permuta.............................................................................................................................................28
Monoprogramao................................................................................................................................................................28 Multiprogramao e Uso da Memria..................................................................................................................................28 Multiprogramao com Parties Fixas................................................................................................................................29

Gerncia com Permuta.............................................................................................................................................29


Multiprogramao com Parties Variveis.........................................................................................................................30 Gerncia com Mapa de Bits..................................................................................................................................................31 Gerncia com Listas Encadeadas..........................................................................................................................................31 Alocao de Espao para Permuta........................................................................................................................................32 Troca de Processos (Swapping)............................................................................................................................................32 Paginao.............................................................................................................................................................................33 Segmentao.........................................................................................................................................................................33

MEMRIA VIRTUAL............................................................................................................................................................33 Mapeamento.............................................................................................................................................................35 Paginao.................................................................................................................................................................36 Polticas de Busca de Pginas..................................................................................................................................37 Poltica de Alocao de Pginas..............................................................................................................................37 Working Set...............................................................................................................................................................37 Polticas de Substituio de Pginas........................................................................................................................38
First-In-First-Out (FIFO)......................................................................................................................................................38 Buffer de Pginas.................................................................................................................................................................39

Swapping..................................................................................................................................................................39 Thrashing..................................................................................................................................................................39 4 GERNCIA DE ARQUIVOS.....................................................................................................................................40 SISTEMA DE ARQUIVOS ......................................................................................................................................................40 ARQUIVOS ........................................................................................................................................................................40 Tipos de arquivo ......................................................................................................................................................41 Estrutura de arquivos ..............................................................................................................................................41 Mtodos de acesso ...................................................................................................................................................41 DIRETRIOS ......................................................................................................................................................................41 Organizao de diretrios........................................................................................................................................41 PROTEO ........................................................................................................................................................................42 Tipos de acesso ........................................................................................................................................................42 Listas de acesso .......................................................................................................................................................42 ESTRUTURA DO SISTEMA DE ARQUIVOS ..................................................................................................................................43 Organizao ............................................................................................................................................................43 Mtodos de Alocao ...............................................................................................................................................43 Gerncia de espao livre .........................................................................................................................................43 RECUPERAO ..................................................................................................................................................................44 Consistncia .............................................................................................................................................................44 Backup e restaurao ..............................................................................................................................................44 SISTEMAS DE ARQUIVOS FAT E FAT32 ..............................................................................................................................44 Introduo................................................................................................................................................................44

ii

O sistema de arquivos FAT......................................................................................................................................44 Funcionamento do sistema FAT...............................................................................................................................44 Tamanho de cluster..................................................................................................................................................45 Diferenas entre FAT e FAT32................................................................................................................................45 Mais sobre FAT32....................................................................................................................................................46 O que VFAT...........................................................................................................................................................46 SISTEMAS DE ARQUIVOS NTFS............................................................................................................................................46 Introduo................................................................................................................................................................46 Como o NTFS surgiu................................................................................................................................................47 Caractersticas do NTFS..........................................................................................................................................47 Verses do NTFS......................................................................................................................................................48 Funcionamento do NTFS..........................................................................................................................................48 SISTEMAS DE ARQUIVOS NO LINUX.......................................................................................................................................48 Um pouco de histria...............................................................................................................................................49 EXT2.........................................................................................................................................................................49 Journaling.................................................................................................................................................................50 ReiserFS....................................................................................................................................................................50 EXT3 ........................................................................................................................................................................50 5 GERNCIA DE ENTRADA E SADA.....................................................................................................................52 INTRODUO......................................................................................................................................................................52 Princpios do Hardware...........................................................................................................................................52
Dispositivos de E/S...............................................................................................................................................................53 Controladores de Dispositivos..............................................................................................................................................53 Acesso Direto Memria (DMA)........................................................................................................................................54

Princpios do Software.............................................................................................................................................55
Objetivos do Software de E/S...............................................................................................................................................55 Manipuladores de Interrupes.............................................................................................................................................56 Drivers de Dispositivos........................................................................................................................................................56 Software de E/S Independente do Dispositivo......................................................................................................................57 Software em Nvel do Usurio..............................................................................................................................................58

Definies.................................................................................................................................................................59
Buffer...................................................................................................................................................................................59 Cache....................................................................................................................................................................................59 Spool....................................................................................................................................................................................59

6 REFERNCIAS BIBLIOGRFICAS......................................................................................................................60

iii

UNIVERSIDADE FEDERAL DE SANTA CATARINA

MODULO III SORC1: Sistemas Operacionais

1 Introduo a Sistemas Operacionais

Histrico dos sistemas operacionais


Faremos um breve resumo da histria dos sistemas operacionais com objetivo ilustrativo, apenas para termos uma idia da ordem cronolgica de fatos importantes. A evoluo do software dos computadores, especialmente os sistemas operacionais, est relacionada ao desenvolvimento de equipamentos cada vez mais velozes, menores no tamanho e com custo cada vez menor, e necessidade de aproveitamento e controle desses recursos.

Primeira fase (1945-1955)


Computadores baseados em vlvulas (ENIAC, criado para fins militares de clculos balsticos, com 18 mil vlvulas, 30 toneladas, consumo de cerca de 140.000 watts; EDVAC, utilizado por universidades e tambm rgos militares; UNIVAC I, criado para auxiliar no censo americano de 1950, aplicao comercial); Ausncia de sistema operacional: programao feita por painis, atravs de fios, sem uso de linguagens de programao.

Segunda fase (1956-1965)


Criao do transistor (maior velocidade e confiabilidade no processamento, menor dissipao de energia) e das memrias magnticas (acesso mais rpido aos dados, maior capacidade de armazenamento e diminuio do tamanho dos computadores); Surgimento das primeiras linguagens de programao (Assembly e Fortran) os programas deixam de ser feitos diretamente no hardware; Seqenciamento da execuo dos programas, sem interveno do operador, conhecido como processamento batch (em lote); Importantes avanos com a linha de computadores 7094 da IBM

Terceira fase (1966-1980)


Diminuio do tamanho e dos custos de aquisio do hardware com a criao dos circuitos integrados (CIs) e, posteriormente, dos microprocessadores lanamento da srie 360 de computa-dores da IBM e da linha PDP-8 da DEC; Evoluo dos processadores de E/S, possibilitando a utilizao da tcnica de compartilhamento da memria e do processador denominada multiprogramao; Substituio das fitas por discos magnticos, possibilitando a alterao na ordem de submisso dos programas em lote (spooling); Surgimento em 1969 do sistema operacional UNIX.

Quarta fase (1981-1990)


Miniaturizao e barateamento dos computadores atravs da integrao cada vez maior dos componentes; Surgimento dos microcomputadores pessoais (PCs) e do sistema operacional DOS (Disk Operating System); Sistemas multiusurio e multitarefa, permitindo a execuo de diversas tarefas de forma concorrente; Equipamentos com mltiplos processadores, processadores vetoriais e diversas tcnicas de paralelismo em diferente nveis (multiprocessamento); As redes de computadores se difundiram por todo mundo software de redes intimamente relacionados ao sistema operacional e surgimento dos sistemas operacionais de rede.

Quinta fase (1991-2005)


Grandes avanos de hardware (microeletrnica), software e telecomunicaes processadores e memrias cada vez menores e mais baratos; Processamento distribudo em sistemas operacionais; Novas interfaces homem/mquina linguagens naturais, sons e imagens; Sistemas multimdia, bancos de dados distribudos e inteligncia artificial.

Sexta Fase (2006-????)


Crescimento de novas tecnologias Novas arquiteturas paralelas Maior avano em sistemas multimdia, bancos de dados distribudos, inteligncia artificial. Processadores e sistemas operacionais voltados a sistemas embarcados

O que um Sistema Operacional


Sistema Operacional um conjunto de ferramentas necessrias para que um computador possa ser utilizado de forma adequada. Consiste na camada intermediria entre o aplicativo e o hardware da mquina. Este conjunto constitudo por um Kernel, ou ncleo, e um conjunto de Software bsicos, que executam operaes simples, mas que juntos fazem uma grande diferena. Se no existissem sistemas desse tipo, todo software desenvolvido deveria saber se comunicar com os dispositivos do computador de que precisasse. Quando temos um Sistema Operacional, ele quem precisa saber lidar com os dispositivos, sabendo falar com a placa de som, a internet, os disquetes... Assim, um software que seja feito para funcionar neste sistema no precisar de informaes especficas do equipamento. Ao invs disso, ele chamar a funo do kernel e o Sistema Operacional que far a comunicao, repassando os resultados. Cada Sistema Operacional pode ter uma linguagem de mquina prpria e distinta. Por isso comum que softwares feitos para um Sistema Operacional no funcionem em outro.
Linguagem de mquina: Todo computador possui um conjunto de instrues que seu processador capaz de executar. Essas instrues so representadas por seqncias de bits, normalmente limitadas pelo nmero de bits do registrador principal da CPU.

Outras definies e funes para sistema operacional: Um programa que atua como um intermedirio entre um usurio de um computador e o hardware do computador. 2

Um conjunto de programas indispensveis ao funcionamento do computador e cuja funo servir de interface (ligao, elo) entre o homem e a mquina; fazer a comunicao entre o usurio, o computador e seus perifricos; Um conjunto de rotinas executadas pelo processador, da mesma forma que os nossos programas. Controla o funcionamento do computador, como um gerente dos vrios recursos disponveis no sistema;

Metas de um SO: Executar os programas dos usurios e fazer a soluo de problemas mais fcil. Tornar o sistema de computao mais conveniente ao uso. Utilizar o hardware do computador de um modo eficiente.

FIGURA 1 O que um Sistema Operacional

Desta forma o sistema operacional facilita do acesso aos recursos do sistema, transparente para o usurio, e no caso de muitos usurios, proporciona compartilhamento de recursos de forma organizada e protegida. Algumas atividades que envolvem o sistema operacional: leitura de um disquete (acionar a cabea de leitura e gravao, posicionar trilha e setor, dados do disco para a memria); quando um usurio solicita a execuo de um programa, o sistema operacional deve alocar espao na memria para carregar e acessar o programa.

Quais so as etapas anteriores carga do sistema operacional em um microcomputador? Quando o microcomputador ligado, realiza o POST (Power On Self Test) que consiste em um conjunto de testes para determinar se o hardware est funcionando corretamente (verificao da RAM, vdeo e outros dispositivos; localizao da unidade de disco de inicializao; etc.). Estes testes so realizados a partir do BIOS (Basic Input Output System, podendo variar conforme cada fabricante). Se o BIOS for compatvel com a tecnologia Plug and Play, algumas rotinas adicionais sero realizadas para reconhecimento dos dispositivos. Aps a inicializao dos dispositivos, o computador localiza e l o setor de inicializao, contendo o arquivo carregador, que ser carregado para a memria principal e passar a controlar a carga do sistema operacional (boot).

A diviso do hardware de um computador


Para entendermos o funcionamento de um Sistema Operacional, devemos conhecer a diviso bsica de um hardware. Os componentes do hardware de um computador so divididos em trs grupos/subsistemas bsicos: 1. Unidade Central de Processamento (UCP ou processador) o crebro do computador, responsvel pela execuo de todos os programas armazenados na memria principal. A UCP composta de vrias partes: ULA (Unidade Lgica e Aritmtica) que realiza operaes tais como adies e deslocamento, necessrias execuo das instrues; UC (Unidade de Controle) que responsvel pela busca das instrues e determinao de seus tipos; Registradores (PC, IR, MAR, MBR, SP e outros) que consistem em reas de memria para armazenamento de resultados temporrios e informaes de controle. Dois registradores importantes so o Program Counter (PC), que guarda o endereo da prxima instruo a ser executada, e o Instruction Register (IR) que armazena a instruo que est sendo executada; Clock um dispositivo interno ao processador que gera pulsos eltricos sncronos em um determinado intervalo de tempo (sinal de clock). A quantidade de vezes que este pulso se repete em um segundo define a freqncia do clock, medida em Hertz. O sinal de clock utilizado pela unidade de controle para a execuo das instrues. Cada programa formado por uma seqncia de instrues que ser executada pelo processador do computador. O prprio sistema operacional conjunto de programas que devem ser executados pelo processador para controlar o funcionamento do prprio computador. A importncia da execuo desse conjunto de programas, porm, evidente, pois sem isto os outros programas de usurio do computador no seriam executados. 2. Memria Principal (RAM) a parte do computador onde programas (instrues) e dados so armazenados, sendo composta por unidades de acesso chamadas clulas, sendo que: - A clula a menor unidade enderevel. A maioria dos fabricantes de computador padronizam a clula em 8bits de tamanho (byte). Bytes so agrupados em palavras; um computador com palavra de 16bitas tem 2bytes/palavra, enquanto que um computador com palavra de 32bits tem 4bytes/palavra. O significado de uma palavra que a maioria das instrues operam em palavras inteiras, por exemplo, somando duas palavras. Ento uma mquina de 16bits ter registradores de 16bits e instrues que manipulam palavras de 16bits; - Todas as clulas em uma memria possuem o mesmo nmero de bits; - Cada clula da memria possui um endereo nico; a quantidade de bits do endereo, que nada tem haver com a quantidade de bits da clula, est relacionado ao nmero mximo de clulas endereveis. Por exemplo, com 16bits podemos enderear 65536 combinaes diferentes, ou seja, uma memria de 64K de capacidade de armazenamento. Depois do processador, que o componente que executa as instrues dos programas, a memria o componente mais disputado pelos programas, uma vez que os programas devem estar carregados na memria principal para ser enxergado e executado pelo processador. Esta memria classificada como voltil, ou seja, no tem capacidade de preservar o seu contedo sem uma fonte de alimentao. Por esse motivo devemos sempre gravar nossos programas/arquivos quando estes forma alterados e permanecem na memria principal. O tempo de acesso aos dados contidos na memria principal pode ser agilizado quando se coloca no computador uma memria auxiliar, chamada memria cache. A memria cache uma memria voltil de alta velocidade, localizada na placa-me do computador. O tempo de acesso a um dado nela contido muito menor que se estivesse na memria principal. Toda vez que o processador faz 4

referncia a um dado armazenado na memria principal, ele olha antes na memria cache. Se o processador encontrar o dado na cache, no h necessidade do acesso memria principal; do contrrio, o acesso obrigatrio. Neste ltimo caso, o processador, a partir do dado referenciado, transfere um bloco de dados para o cache. O tempo de transferncia entre as memrias pequeno, se comparado com o aumento do desempenho obtido com a utilizao desse tipo de memria. Existe tambm um outro nvel de memria cache que encontrado em alguns processadores da linha PC existentes no mercado, cujo funcionamento semelhante, tendo velo-cidade de acesso ainda superior ao da memria cache da placa-me. 3. Dispositivos de Entrada/Sada So os componentes que permitem a comunicao entre o computador e o mundo externo. Podem ser divididos em duas categorias: - os que servem apenas de interface homem/mquina - atravs deles, o processador e a memria principal podem comunicar-se com os usurios (teclado, monitor, impressoras, scanner, caneta tica, mouse). O desenvolvimento de interfaces cada vez mais amigveis permite que as pessoas sem conhecimento especfico sobre informtica possam fazer uso de computadores; - aqueles destinados ao armazenamento de programas e dados (discos e fitas magnticas), chamados de memrias secundrias. Seu custo relativamente baixo, porm o tempo de acesso maior quanto comparado ao tempo de acesso memria principal ou mesmo memria cache. No podemos esquecer que a UCP, a memria principal e os dispositivos de E/S encontra-se interligados fisicamente atravs de linhas de comunicao denominadas barramento. Um barramento (bus) pode ser visto como um conjunto de fios paralelos, onde trafegam informaes.

Sistemas Operacionais de Hoje


No incio da computao os primeiros "sistemas operacionais" eram nicos, pois cada mainframe vendido necessitava de um sistema operacional especfico. Este problema era resultado de arquiteturas diferentes e da linguagem utilizada, no caso assembly (linguagem de baixo nvel). Aps essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de jobs (tarefas), pois os sistemas eram mono-usurio e tinham cartes perfurados como entradas (eliminando, assim, o trabalho de pessoas que eram contratadas apenas para trocar os cartes perfurados). Um dos primeiros sistemas operacionais foi o CTSS, desenvolvido no MIT. Outro que na poca revolucionou o conceito de sistema operacional foi o Multics, desenvolvido nos laboratrios da AT&T. Os sistemas operacionais eram geralmente programados em assembly, at mesmo o UNIX em seu incio. Aps poucas verses, o UNIX comeou a ser desenvolvido atravs de uma nova linguagem (a Linguagem C) e teve em seus princpios muitas inovaes do Multics. O UNIX criou um ecossistema de verses e inovaes, entre estes, destacam-se: System V e derivados - famlia BSD (FreeBSD, NetBSD, OpenBSD, etc..), Linux (e derivados), HP-UX, AIX, e at o Mac OS X (que uma variante dos BSDs). Na dcada de 70, quando comearam a aparecer os computadores pessoais, houve a necessidade de um sistema operacional de utilizao mais fcil. Em 1980, William (Bill) Gates e seu colega de faculdade, Paul Allen, fundadores da Microsoft, compram o sistema QDOS ("Quick and Dirty Operating System") de Tim Paterson por $50.000, batizam-no de DOS (Disk Operating System) e venderam licenas IBM. O DOS vendeu muitas cpias, como o sistema operacional padro para os computadores pessoais desenvolvidos pela IBM. No comeo da dcada de 1990, um estudante de computao finlands postou um comentrio numa lista de discusso dizendo que estava desenvolvendo um kernel de sistema operacional e perguntou se algum gostaria de auxili-lo na tarefa. Este estudante chamava-se Linus Torvalds e o primeiro passo em direo ao to conhecido Linux foi dado naquele momento. 5

Um mainframe um computador de grande porte, dedicado normalmente ao processamento de um volume grande de informaes. Os mainframes so capazes de oferecer servios de processamento a milhares de usurios atravs de milhares de terminais conectados diretamente ou atravs de uma rede. (O termo mainframe se refere ao gabinete principal que alojava a unidade central de processamento nos primeiros computadores.). O Massachusetts Institute of Technology, mais conhecido pela sua sigla MIT, um centro universitrio de educao e pesquisa localizado em Cambridge, nos EUA. O MIT um dos lderes mundiais em cincia e tecnologia, bem como outros campos, como administrao, economia, lingstica, cincia poltica e filosofia. AT&T (Abreviao em ingls para American Telephone and Telegraph) Corporation uma companhia estadounidense de telecomunicaes. AT&T prov servios de telecomunicao de voz, vdeo, dados e Internet para empresas, particulares e agncia governamentais. Durante sua longa histria, AT&T foi a maior companhia telefnica e o maior operador de televiso por cabo do mundo, constituindo por vezes um monoplio.

CTSS
CTSS a sigla para Compatible Time-Sharing System (Sistema compatvel de diviso por tempo) CTSS foi escrito por um time do Centro Computacional do MIT, liderado pelo Prof. Fernando J. Corbat, conhecido por todos como Corby. Muito da pesquisa do CTSS foi patrocinada pela Fundao Nacional de Cincia dos Estados Unidos (US National Science Foundation) A verso do CTSS que foi disponibilizada para usurios foi demonstrada no IBM 7090 no MIT em novembro de 1961. O CTSS foi descrito como um Sistema de compatilhamento no tempo experimental, por Fernando J. Corbat, Marjorie Merwin Daggett e Robert C. Daley na primavera de 1962 durante uma conferncia intitulada Spring Joint Computer Conference. Na poca, o software ainda no estava funcionando bem no IBM 7090. Em 1963, O CTSS j funcionava bem e era suportado pelo hardware RPQs no IBM 7090, e pesquisadores de computadores por todo os Estados Unidos usavam o CTSS para computao interativa.

Multics
O Multics (Multiplexed Information and Computing Service) era um sistema modular montado em uma bancada de processadores, memrias e equipamentos de comunicao de alta velocidade. Pelo desenho, partes do computador poderiam ser desligadas para manuteno sem que outras partes ou usurios fossem afetados. O objetivo era prover servio 24 horas por dia 365 dias por ano - um computador que poderia ser tornado mais rpido adicionando mais partes.

UNIX
UNIX um sistema operacional multitarefa e multiusurio originalmente criado por um grupo de programadores da AT&T e dos Bell Labs, que incluem Ken Thompson, Dennis Ritchie e Douglas McIlroy. Em 1969 Thomson escreveu o primeiro sistema UNIX totalmente em assembly e destinado a funcionar em mquinas PDP-7, com objetivo de criar um sistema operacional, de respostas rpidas, com os mesmos conceitos do OS Multics (que ele ajudou a desenvolver), mas que pudesse ser rodado em computadores de pequeno porte como o PDP-7. Mais tarde Ken Thompson e Dennis Ritchie reescreveram ainda em assembly o UNIX para as plataformas PDP-11 e PDP-20. Apenas no incio da dcada de 1970 o UNIX passou a ser desenvolvido usando exclusivamente a nova linguagem C (criada tambm por Ritchie nessa poca) e comeou a tornar forma semelhante que possui atualmente e a tornar-se porttil atravs de vrias plataformas. Finalmente, ao longo dos anos 70 e 80 foram sendo desenvolvidas as primeiras distribuies de grande dimenso como os sistemas BSD (na Universidade de Berkeley na Califrnia) e os System III e System V (nos Bell Labs). 6

Atualmente, UNIX (ou *NIX) o nome dado a uma grande famlia de Sistemas Operacionais que partilham muitos dos conceitos dos Sistemas UNIX originais, sendo todos eles desenvolvidos em torno de standards como o POSIX (Portable Operating System Interface) e outros. Alguns dos Sistemas Operacionais UNIX atuais so: BSD (FreeBSD, OpenBSD e NetBSD), Solaris (anteriormente conhecido por SunOS), IRIX, AIX, HP-UX, Tru64, Linux (nas suas milhares de distribuies), e at o Mac OS X (baseado num kernel Mach BSD chamado Darwin).

Classificaes de sistemas operacionais


Os sistemas operacionais podem ser classificados sob trs pontos de vista diferentes: 1) Do ponto de vista do nmero de usurios que utilizam o sistema, podemos ter um sistema operacional: monousurio apenas um e s um usurio trabalha de cada vez. Ex.: DOS, Windows 95/98. multiusurio permite o uso da mquina por vrios usurios ao mesmo tempo, ou seja, cada usurio pode executar um ou mais programas simultaneamente. Ex.: Unix, Linux, Windows XP. 2) Dependendo da forma como os programas so executados, de forma seqencial ou concorrente, os sistemas operacionais podem ser classificados como: monoprogramado ou monotarefa - o sistema operacional s tem capacidade de controlar e gerenciar um programa de cada vez. So de simples implementao, se comparados a outros sistemas, no havendo muita preocupao com problemas de proteo, pois s existe um usurio/programa utilizando-o. Exemplos: o Esto tipicamente relacionados ao surgimento dos mainframes e a introduo dos computadores pessoais e estaes de trabalho o O sistema DOS pode ser considerado um sistema monoprogramado com algumas caractersticas especiais; os programas TSR (Terminate and Stay Resident) tm a capacidade guardar o contexto do que estava sendo executado, desviando o fluxo original de execuo, ou seja, pode haver um nmero arbitrrio de processos na memria, mas somente um deles pode estar ativo; apesar de suportar a existncia simultnea de vrios processos, ele no um sistema multiprogramando. Sistema multiprogramado ou multitarefa - Os recursos da mquina so alocados de modo dinmico entre o nmero de programas ativos de acordo com o nvel de prioridade ou o estgio de execuo de cada um dos programas. O sistema operacional gerencia o acesso concorrente aos seus diversos recursos, de forma ordenada e protegida, pelos diversos programas. Dessa forma possvel aumentar a produtividade e reduzir os custos de utilizao do sistema, aproveitando melhor o hardware. Por exemplo, enquanto um programa espera por uma operao de leitura ou gravao em disco, outros programas podem estar sendo processados no mesmo intervalo de tempo. So mais complexos e eficientes do que os sistemas monoprogramados, j que vrios programas utilizam os mesmos recursos. Resumindo, o Sistema Operacional pode controlar e gerenciar mais de um programa em execuo ao mesmo tempo. Podem ser classificados pela forma com que suas aplicaes so gerenciadas/interao com os usurios, sendo que um sistema operacional pode suportar um ou mais desses tipos de processamento: o BATCH (LOTE) - Os programas quando executados so armazenados em disco ou fita, onde esperam para serem atendidos. Normalmente, os programas (jobs ou tarefas) que so executados nesses sistemas no exigem interao com os usurios (por exemplo, compilaes e linkedies); o TIME-SHARING (TEMPO-COMPARTILHADO) - O sistema operacional aloca uma fatia de tempo (time-slice) do processador para cada usurio. Caso o programa do usurio no esteja concludo nesse intervalo de tempo, ele substitudo por um de 7

outro usurio, e fica esperando por uma nova fatia de tempo. Permitem a interao dos usurios com o sistema; o REAL-TIME (TEMPO-REAL) - Semelhante ao time-sharing, sendo a maior diferena o tempo de resposta exigido na execuo. Enquanto em sistemas de tempo compartilhado o tempo de resposta pode variar sem comprometer as aplicaes em execuo, nos sistemas de tempo real os tempos de resposta devem estar dentro de limites rgidos. No existe a i-dia de fatia de tempo, um programa executa o tempo que for necessrio, ou at que aparea outro prioritrio em funo de sua importncia. Essa importncia ou prioridade de execuo controlada pela prpria aplicao e no pelo sistema operacional, como acontece no sistema de tempocompartilhado. Esse tipo de sistema est normalmente presente em controle de processos, como no monitoramento de refinarias de petrleo, controle de trfego areo, usinas termoeltricas e nucleares, ou em qualquer aplicao onde a segurana fator fundamental. Ex.: Windows 95/98/XP/NT/2003, OS/2, UNIX e LINUX, entre outros. 3) Do ponto de vista do nmero de processadores, podemos ter: Sistema Operacional Monoprocessado O SO controla e gerencia apenas um processador. Ex.: Windows 95/98, DOS, Windows XP Home Edition. Um sistema monoprocessado (diferente de Sistema Operacional Monoprocessado) caracteriza-se por possuir um nico processador, sendo este controlado pelo sistema operacional instalado. Ex.: Microcomputador PC com Windows 98. Sistema Operacional Multiprocessado O SO pode controlar e gerenciar dois ou mais processadores ao mesmo tempo. Ex.: Windows XP Professional, Linux... Um sistema multiprocessado (diferente de Sistema Operacional Multiprocessado) caracteriza-se por possuir mais de um processador, sendo que estes podem compartilhar o mesmo sistema operacional, ou cada um pode possuir o seu prprio sistema. Mltiplos processadores permitem que vrios programas sejam executados ao mesmo tempo, ou que um programa seja dividido em subprogramas, para execuo simultnea por mais de um processador. Sistemas com mltiplos processadores possibilitam aumentar a capacidade computacional com menor custo (escalabilidade), alm de permitirem a reconfigurao e o balanceamento do sistema. A reconfigurao a capacidade de um sistema poder continuar o processamento, mesmo se um dos processadores falhar ou parar de funcionar, embora com menor capacidade de computao. O balanceamento possibilita distribuir a carga de processamento entre os diversos sistemas da configurao, melhorando o desempenho como um todo. O multiprocessamento mantm todos os conceitos de multiprogramao, s que aplicados a vrios processadores. Com o multiprocessamento, novos problemas de concorrncia foram surgindo, pois vrios processadores podem estar acessando as mesmas reas de memria, alm da dificuldade de interligao eficiente dos processadores, memria e perifricos. Para o desenvolvimento de sistemas operacionais com mltiplos processadores importante que se conhea a forma de comunicao entre esses processadores e o grau de compartilhamento da memria principal e dos dispositivos de E/S. Em funo desses fatores, podemos classificar os sistemas em: o fortemente acoplados dois ou mais processadores (multiprocessadores) compartilhando uma nica memria e controlados por apenas um nico sistema operacional. Podem ser divididos conforme a simetria existente entre os processadores, ou seja, se todos os processadores podem executar ou no as mesmas funes: nos sistemas assimtricos ou mestre/escravo somente um processador (mestre) pode executar servios do sistema operacional, como realizar operaes de E/S. Sempre que um processador do tipo escravo precisar 8

realizar uma operao de E/S, ter que requisitar o servio ao processador mestre; nos sistemas simtricos (SMP Simmetric MultiProcessing) todos os processadores realizam as mesmas funes, ficando a cargo de um nico processador algumas poucas funes, como, por exemplo, a inicializao (boot). Ex.: microcomputadores PC com vrios processadores que servem de servidores de redes departamentais com sistema operacional Windows NT, que implementa SMP; o fracamente acoplados caracterizam-se por possuir dois ou mais processadores (multicomputadores), conectados atravs de linhas de comunicao, onde cada um desses sistemas funciona de forma independente, possuindo seu(s) prprio(s) processador(es), memria principal e dispositivos de E/S. Em uma rede multicomputadores, onde existem dois um mais sistemas independentes, tambm chamados de ns, hosts ou estaes, podemos classificar os sistemas como sendo: Sistemas operacionais de redes cada n possui seu prprio SO, alm de hardware e software que possibilitam ao sistema ter acesso o outros ns da rede. Cada n totalmente in-dependente um do outro, podendo inclusive possuir sistemas operacionais diferentes. Os sistemas operacionais de redes permitem copia de arquivos, impresso e at gerncia re-motas, alm de servios de correio eletrnico, emulao de terminais. A idia prover o compartilhamento de recursos e troca de informaes. Ex.: Redes locais Sistemas operacionais distribudos cada n tambm possui seu prprio sistema operacional, memria principal, processador e dispositivos de E/S. Porm, existe um relacionamento mais forte entre esses ns, que, geralmente, possuem o mesmo SO. Para o usurio e suas aplicaes, o conjunto de computadores visto como um nico sistema, como se no existisse uma rede de computadores. A grande vantagem a possibilidade do balance-amento de carga, ou seja, quando um programa admitido para execuo, o sistema escolha o n que est com menor carga de processamento e este vai execut-lo. Tambm permitido o compartilhamento de recursos independentemente do computador em que a aplicao estiver sendo executado. Esse tipo de sistema distribudo muitas vezes chamado de cluster. Ex.: Rede de computadores com sistema operacional UNIX SOLARIS da SUN.

SISTEMAS OPERACIONAIS MONOPROGRAMADOS / MONOTAREFA MULTIPROGRAMADOS / MULTITAREFA


Tipos de processamento: BATCH

MONOPROCESSADOS

TIMESHARING

REAL-TIME

MULTIPROCESSADOS
Comunicao entre UCPs e compartilhamento de memria principal e dispositivos de E/S:

FORTEMENTE ACOPLADOS
SIMTRICOS

FRACAMENTE ACOPLADOS
S.O. DE REDES

ASSIMTRICOS

MONOUSURIOS

SISTEMAS DISTRIBUDOS

MULTIUSURIOS FIGURA 2 Classificao dos Sistemas Operacionais

Arquitetura de Sistemas Operacionais


Componentes do SO
Gerenciador de processos
Em uma definio geral, um processo um programa em execuo (um compilador, um processador de textos, etc). Cada processo precisa de certos recursos para ser executado (CPU, Memria, Arquivos e Dispositivos de E/S). O processo a unidade de trabalho de um sistema de computao e tais sistemas possuem processos do SO e do usurio sendo executados. As funes do SO com relao aos processos so: criar, excluir, suspender e retomar processos; fornecer mecanismos para sincronizao e comunicao entre os processos; tratar deadlocks.

Gerenciador de memria
Para que um programa seja executado, ele precisa ser carregado na memria e ser mapeado com endereos de memria absolutos. Conforme ele executado, far referncia a estes endereos e por fim, quando termina, a memria alocada para ele deve ser liberada. Para fazer uso eficiente do 10

sistema, diversos processos devem ser carregados na memria para execuo. H vrias formas de fazer isso dependendo de diversos fatores (inclusive suporte do hardware). Funes do SO com relao memria: manter uma relao de quais partes da memria esto sendo usadas e por quais processos, decidir quais processos devem ser carregados na memria se houver espao, alocar e desalocar espao, conforme necessrio.

Gerncia de arquivos
Os dispositivos de armazenamento possuem uma srie de propriedades particulares (velocidade e mtodo de acesso, taxa de transferncia, etc). A funo da gerncia de arquivos do SO prover um meio lgico e uniforme, para que os processos e usurios possam lidar mais facilmente com tais particularidades. O conceito de arquivo (e o sistema de diretrios) uma forma de mapear as unidades fsicas para conceitos lgicos que tornam seu uso mais fcil. Ainda funo do SO controlar os direitos de acesso a tais arquivos. Funes do sistema de arquivos: criar, excluir e fornecer outros meios de manipular arquivos e diretrios; mapear arquivos nos meios de armazenamento secundrios; permitir um meio de se fazer backup dos arquivos e meios no-volteis.

Sistema de Entrada e Sada


funo do SO esconder as peculiaridades dos dispositivos de E/S. O subsistema de E/S consiste em: um componente da gerncia de memria responsvel por buffering, cache e spooling; uma interface geral de drivers; os drivers especficos para cada dispositivo.

Gerncia de Armazenamento Secundrio


Como a memria principal voltil (e limitada) preciso uma forma de armazenar permanentemente arquivos de dados e de programas. A gerncia de armazenamento secundrio responsvel por: gerenciar espao livre, alocar espao, escalonar o acesso ao disco.

Redes
Os computadores podem ser ligados em redes de diversos nveis de complexidade e funo do mdulo de redes de um SO, permitir que os sistemas se comuniquem e que o processamento seja distribudo adequadamente.

Proteo
Em um sistema onde vrios usurios e processos podem trabalhar simultaneamente, deve-se garantir que um no interfira na operao do outro, protegendo-se o espao de memria, evitando que um processo controle a CPU indefinidamente e controlando o acesso aos diversos recursos, permitindo-se que somente os usurios autorizados faam uso dos mesmos.

Interpretador de comandos
um dos mdulos mais importantes, chegando a definir a "aparncia" do sistema para o usurio final. O interpretador de comandos (ou shell) pode ser uma parte do prprio ncleo do sistema operacional, ou um processo separado. Sua funo receber comandos do usurio, que definem o que deve ser feito pelo SO para cumprir uma determinada tarefa. A forma como ele funciona, pode variar desde um programa que l uma srie de informaes de controle de jobs a partir da entrada; passando por um complexo sistema onde se digita comandos com parmetros em um prompt; at um sistema completamente grfico, onde se utiliza um dispositivo apontador para tratar dos 11

processos, arquivos e demais recursos, que so todos representados graficamente como "cones" e "janelas".

Servios do SO
Execuo de Programas
Carregar o programa na memria, executar e encerrar sua execuo (possivelmente, podendo indicar algum erro).

Operaes de E/S
Acesso a arquivos ou dispositivos de E/S que no podem ser acessados diretamente pelos usurios e processos (por questes de segurana e eficincia).

Manipulao do Sistema de Arquivos


Criar, excluir, ler e gravar arquivos.

Comunicao
Troca de mensagem entre processos ou memria compartilhada.

Deteco de Erros
O SO deve detectar e tratar adequadamente os erros de hardware, memria, nos dispositivos, nos programas de usurio, etc.

Alocao de Recursos
Em sistemas com mltiplos usurios e processos, preciso controlar quem vai acessar cada recurso e reserv-lo, para que outros processos e usurios no interfiram na sua execuo.

Contabilizao
Registrar os recursos que so utilizados por usurio importante para contabilizao ou mesmo para fornecer estatsticas a serem usadas para otimizar o sistema.

Proteo
Evitar que processos interfiram na execuo um do outro, assim como o acesso no autorizado ao sistema ou recursos do mesmo.

Chamadas de Sistema
Chamada de Sistema o mecanismo pelo qual os processos de usurio tem acesso aos servios do SO. Em geral so implementadas na forma de instrues em linguagem assembly, mas comumente podem ser acessadas atravs de linguagens de alto nvel (C, C++, Perl, Delphi, etc). A maior parte da complexidade do uso das chamadas de sistema est "escondida" nas rotinas das bibliotecas de sistema, sendo que a maior parte dos usurios e programadores jamais far uso direto delas. 12

Tipos de chamadas de sistema


Controle de processos: criar, carregar, executar e terminar; pegar e alterar atributos; sinalizar ou esperar um evento; alocar e liberar memria. Manipulao de arquivos: criar, apagar, abrir, fechar, ler e gravar; pegar e alterar atributos do arquivo. Manipulao de dispositivos: reservar e liberar dispositivos; ler, gravar e reposicionar; conectar ou desconectar logicamente. Manuteno de informaes: ler e alterar informaes como data e hora, dados do sistema, atributos de processos, arquivos e dispositivos. Comunicao: criar e apagar conexes de comunicao; enviar e receber mensagens e informaes de status; conectar ou desconectar dispositivos remotos.

Programas de Sistema
Um sistema de computao formado por hardware, sistema operacional, programas de sistema, e aplicativos do usurio. Os programas de sistema fornecem um ambiente conveniente para o desenvolvimento e execuo de programas. Categorias Gerncia de arquivos: criar, excluir, copiar, renomear, imprimir, listar e manipular arquivos e diretrios. Informaes de status: programas que pedem ao sistema informaes gerais e as exibem, tais como: data, hora, quantidade de memria e espao em disco, usurios, etc. Modificao de arquivo: diversos tipos de editores de texto. Suporte linguagem de programao: compiladores, montadores e interpretadores para linguagens de programao. A maior parte destes programas agora so distribudos separadamente, geralmente de forma paga. Carregamento e execuo de programas: utilitrios de carga, linkeditores, sistemas de depurao (alto nvel e linguagem de mquina). Comunicao: programas para criar conexes remotas com processos em outros computadores. Exemplos: FTP, navegadores Web, correio eletrnico, etc.

Estrutura do sistema operacional


Estrutura simples
Sistemas que no possuem uma estrutura bem definida, sendo que os diversos mdulos do kernel esto "misturados" num nico programa. Em sistemas com o MS-DOS, nem mesmo o hardware era separado dos programas de usurio, sendo que os programas poderiam ter acesso direto aos 13

dispositivos do sistema. O Unix original sofria de problemas semelhantes devido falta de suporte de hardware, que foi implementado depois, permitindo um melhor controle do SO sobre a mquina.

Estrutura em camadas
Uma das formas de modularizar um sistema atravs de camadas, sendo que cada uma construda sobre as outras e possui nveis de acesso diferentes. As camadas inferiores so construdas de forma a prover servios convenientes s camadas acima. As camadas superiores fazem uso das camadas mais baixas, sem nem precisar "saber" como os servios so implementados. Neste tipo de projeto a implementao e depurao do sistema mais simples. No entanto, alguns problemas surgem como performance reduzida e dificuldade ao definir as funes das camadas.

Microkernel
No modelo de microkernel, todos os servios no-essenciais do sistema operacional so removidos do kernel e passam a ser executados no modo usurio. O microkernel faz ento apenas o controle de processos e memria, sendo que outros servios como sistema de arquivo, entrada e sada, etc, so executados por processos do SO que executam com privilgio de usurio. As vantagens so que o sistema mais fcil de expandir (um novo mdulo pode ser acrescentado sem alterar o kernel), mais robusto (uma falha em algum mdulo no resultar numa pane geral, j que apenas o microkernel roda em modo protegido) e facilidade ao portar para outros sistemas (j que apenas o kernel precisa ser adaptado na maioria dos casos).

Mquina virtual
Num modelo de mquina virtual, a abordagem em camadas levada ao extremo. O SO de mquina virtual usa tcnicas de escalonamento de CPU e memria virtual para simular diversas "instncias" de mquinas virtuais. Cada uma delas uma cpia exata do Hardware original, sendo que os programas podem ser executados como se estivessem rodando no prprio hardware. possvel inclusive executar Sistemas Operacionais diferentes e cada uma das mquinas virtuais, sendo que cada uma est totalmente isolada das outras.

Mquina virtual Java


Java uma tecnologia e no apenas uma linguagem de programao. Ela fornece trs itens: a linguagem de programao, a interface de programao de aplicaes (API), a mquina virtual Java. A mquina virtual Java consiste num computador abstrato sobre os quais so executados os programas criados na linguagem Java e compilados em "bytecode" que so os cdigos (instrues) para essa mquina virtual. A mquina virtual ento "interpreta" este cdigo, executando o programa. A vantagem deste modelo que a mquina virtual torna os programas totalmente independentes de hardware, pois uma determinada aplicao, uma vez compilada, pode rodar em qualquer mquina virtual Java, no importa em que arquitetura. Os detalhes dependentes da mquina e do sistema operacional so tratados por cada implementao da mquina virtual Java.

Tipos de Sistemas Operacionais


POSIX / UNIX-like
o o

AIX BSD

386BSD FreeBSD OpenBSD 14

4.4BSD

o o o o

NetBSD NeXTSTEP BSDI (BSD/OS) Darwin


o

Caixa Mgica Outras Distribuies HP-UX IRIX OSF/1 OS-9 POSYS QNX Solaris SunOS SCO-UNIX Tropix Tru64 Digital UNIX] Ultrix UniCOS UNIflex Xenix z/OS

System V

Cromix GNU/Hurd Minix GNU/Linux (Linux)


Conectiva (Mandriva) Debian Knoppix Kurumin Kalango Famelix Mandrake (Mandriva) RedHat Fedora Core Slackware SuSE Ubuntu Linux

Microsoft Windows
o o

MS-DOS Windows

Windows NT 4 Windows 2000 Windows XP Windows Starter Edition Windows Media Center Windows Pc Table Windows for PDA Windows Server 2003 Windows Vista (Codename Longhorn)

Windows 386 Windows 2.x Windows 3.x Windows 95 Windows 98 Windows ME

o o

Windows CE Windows NT

Windows NT 3.5

Apple / Macintosh
o o

Apple DOS Mac OS

o o

Mac OS X (Darwin) ProDOS

Amiga
o o

AmigaOS AROS

MorphOS

15

Atari ST
o o

TOS MultiTOS

MiNT

Be-like
o o o

BeOS BeIA BlueEyedOS

o o

OpenBeOS Zeta

DOS
o o o o

DR-DOS FreeDOS MS-DOS PC-DOS

o o o o

VirtuOS Sisne SO16 QDOS

IBM
o o o o o o o

AIX OS/2 OS/360 OS/390 OS/400 VM/CMS DOS/VSE

o o o o o o

MFT MVT SVS MVS TPF ALCS

Digital / Compaq
o o o o

AIS OS-8 RSTS/E RSX

o o o o

RT-11 TOPS-10 TOPS-20 VMS (OpenVMS)

PDAs
o o o

EPOC Palm OS Pocket PC

o o

SymbianOS Windows CE

Outros
o o o o o o o

AtheOS BS2000 CP/M FLEX9 FLEX MP/M-80 Mach

o o o o o o o

MenuetOS Mini-FLEX Multics Native Oberon NetWare Plan 9 PrimOS 16

o o o o o

ReactOS RiscOS SkyOS Syllable QNX

o o o o

SSB-DOS TUNES TripOS UCSD P-system

17

UNIVERSIDADE FEDERAL DE SANTA CATARINA

MODULO III SORC1: Sistemas Operacionais

2 GERNCIA DE PROCESSOS

Definio
o ambiente onde se executa um programa. O processo quem define o ambiente, os recursos, e os Buffers disponveis a este. Nenhum programa executado diretamente na memria e sim dentro de um processo. Se no fosse isto, o programa poderia fazer uso indiscriminado de qualquer rea de memria inclusive reas protegidas ou ento efetuando operaes de I/O indiscriminadamente em qualquer rea aleatria do disco, provocando o maior balaio de gato no computador e comprometendo a integridade e a consistncia dos dados. Da conclui-se que atravs do processo que o sistema operacional controla a execuo, as permisses e as restries que o programa ter quando estiver sendo executado, bem como os recursos que estaro e quando estaro disponveis a ele.

Estados de um processo
Execuo (Running): Quando um processo est sendo processado pela CPU. Tais processos se revezam na execuo. Pronto (Ready): Quando um processo aguarda que o sistema operacional aloque a CPU para sua execuo. Espera (Wait): Quando um processo est aguardando algum evento externo para prosseguir com o processamento. Quando um processo passa a maior parte do tempo no estado de execuo, a este chamamos de CPU BOUND. Este tipo de processo muito comum em aplicaes matemticas, cientficas e grficas por efetuarem muitos clculos. Quando o processo passa a maior parte do tempo em estado de espera e realizando muitas operaes de I/O, a este chamamos de I/O BOUND. o processo mais comum em aplicaes comerciais.

Conceitos Ligados a Processos


System Calls
um mecanismo que protege o ncleo do sistema operacional intermediando as chamadas dos aplicativos ao ncleo processando as solicitaes e as respostas a estas solicitaes. Suas funes bsicas so: - Gerencia de processos. - Gerncia de memria. - Gerncia de Entrada e Sada.

Mtodos de acesso
um mecanismo que monitora as instrues executadas pelos programas de forma que estes no executem instrues que possam comprometer a integridade tanto do sistema como dos dados. As instrues que podem comprometer o sistema so autorizadas apenas ao Sistema operacional e este ir intermediar as chamadas a estas instrues pelos aplicativos.

Hierarquia entre Processos


Um processo pode criar outros processos e que podem, por sua vez, criarem tambm outros processos de maneira hierrquica. Quando um processo (Processo pai) cria um outro processo, a este chamamos de subprocesso ou processo filho, e este subprocesso poder criar subprocessos que podem criar outros subprocessos etc. gerando uma arvore hierrquica de processos. Este tipo de recurso evita que o usurio tenha que esperar que um processo termine para que sua requisio seja processada melhorando o desempenho do sistema. Se a hierarquia de processos possui este benefcio, ela consome recursos dele, pois para cada processo ser necessria alocao dos referidos recursos de memria, buffers, etc., principalmente nos SO's atuais que so multitarefa e muitas vezes so obrigados a rodarem em mquinas domsticas e de recursos de hardware limitados, de forma que depois de certo numero de subprocessos a situao se torna crtica gerando erros no sistema como podemos ver abaixo:

Quando voc manda executar um programa dentro de outro, na verdade voc est criando um subprocesso que subordinado ao processo principal e assim por diante. Imagine a situao em que o Command.com executado dentro do processo principal e os programas, que sero executados no prompt do DOS, em subprocessos. Neste caso imagine um programa que carregado e neste programa tem uma opo "Ir para o DOS". Quando voc executar esta opo, ser criado mais um subprocesso dentro deste subprocesso que est sendo executado o referido programa. Se, dentro deste ambiente do DOS, voc executar algum outro programa voc nada mais estar fazendo do que criando mais um subprocesso. No confunda hierarquia de processos com multiprocessamento. O ambiente de multiprocessamento aquele ambiente onde vrios processos podem ser executados ao mesmo tempo, o chamado "Multitarefa".

Thread's
Para resolver o problema da hierarquia de processos, foi criado o conceito de "Thread" onde um processo pode efetuar varias operaes concorrentemente ou simultaneamente atravs das chamadas "Linhas de execuo". Neste caso, o processo dividido no numero de Threads sem que haja necessidade de ser criado um outro. Desde que a IBM comeou a promover o seu sistema operacional OS2 2.0 em 1991, ouvimos falar de "threads" e software "Multi-thread". Mas o que este recurso? Threads compartilham o processador da mesma maneira que um processo. Por exemplo, enquanto uma Thread espera por uma operao de I/O, outra Thread pode ser executada. Cada Thread tem

seu prprio conjunto de registradores, mas todas elas compartilham o mesmo espao de endereamento, pois se lembre que o processo um s. As Threads passam pelos mesmos estados de espera que o processo, ou seja, Running, ready, wait. Um programa "Multi-thread" pode estar sendo executado em vrios locais ao mesmo tempo. E qual a vantagem disso? Vamos supor que um programa deseje imprimir um relatrio. Enquanto o programa estiver enviando os dados para a impressora, a execuo dele estar bloqueada. O usurio no poder emitir novos comandos, inserir um novo registro, por exemplo, enquanto a impresso no terminar. Um programa "Multi-thread" pode iniciar uma "Thread" para imprimir enquanto os resto do programa continua funcionando. Mas qual a diferena de "Multi-thread" para Multi Tarefa? A diferena que o Multi Tarefa requer que seja iniciado um outro processo caso se deseje a execuo simultnea. Isto aumenta bastante a complexidade dos aplicativos e traz uma grande perda de performance. Para efetuar troca de informaes entre duas Threads de um mesmo programa, basta utilizar uma varivel comum. Entre programas devem ser utilizados recursos mais sofisticados como arquivos comuns, filas, etc. As vrias threads podem ser codificadas em um mesmo fonte. Mltiplos processos exigem a quebra do projeto em vrios executveis. Iniciar uma Thread uma tarefa barata para o sistema operacional, bem mais simples do que carregar um outro processo. Alm disto, a troca de execuo entre threads de um mesmo programa feita com um mnimo de desperdcio.

Exemplo de uma thread, duas sees de copia de arquivos no Explorer so iniciadas simultaneamente. Isto somente possvel porque cada seo corresponde a uma thread.

Um interessante exemplo de como usar threads so as DLL's, procedimento este conhecido como API. Diversos fornecedores oferecem API's proprietrias que permitem que outros aplicativos sejam ampliados de uma maneira mais eficiente. Utilizando este mtodo, a lgica implementada por meio de um conjunto de funes de aplicativos que so empacotadas como bibliotecas compartilhadas na forma de DLL (Dynamic Linked Library) no ambiente Windows ou um SO (Shared Object) no ambiente UNIX/LINUX e que permitem, s funes do aplicativo, o acesso direto s estruturas de dados do sistema Operacional. Por exemplo, no ambiente Windows, um aplicativo qualquer chama uma DLL atravs de um pedido de um recurso para o qual foi definida uma associao DLL/funo. O sistema operacional aloca este pedido recebido em uma thread, que ficar em uma fila de espera. Quando chegar sua vez, ser criada para ela, uma estrutura de dados sobre o pedido e este ento comear a ser executado. Quando estiver completo, a thread ser retornada ao pool de threads gerenciadas, at que sejam necessrias novamente. Normalmente esta tcnica tem um desempenho de at 5 vezes superior ao de um processo comum. A razo disto muito simples. A chamada a um programa substituda pelo carregamento de um objeto compartilhado (DLL) que normalmente feito somente uma vez. Depois disto, este objeto

permanece dentro do espao de endereo do sistema operacional, e as sobrecargas se restringem s chamadas de funo. estrutura de dados sobre o pedido, fornecida pelo sistema operacional para se comunicar com o objeto compartilhado, recebe o nome de ECB (EXTENSION CONTROL BLOCK) e consiste em um conjunto de variveis, tanto de ambiente como oriundas do pedido e funes de chamada para suporte gerao da resposta. Cada pedido tem seu prprio ECB alocado e estes no se comunicam entre si em hiptese alguma. Em outras palavras, um ECB a forma que o sistema operacional tem de compartilhar entre as threads, o conjunto de variveis ambientes e tambm de disponibilizar dados que somente interessaro ao pedido sem que outro pedido tenha acesso a estes. Outra grande diferena entre as threads e os processos que cada processo tem seu prprio espao de endereamento, enquanto N threads compartilham um espao de endereamento de um nico processo, otimizando o sistema e consumindo menos recursos dele. Mas assim aparece tambm a grande desvantagem deste recurso: por causa desta caracterstica (serem executadas no mesmo espao de endereamento), elas compartilham este espao sem nenhuma proteo ou restrio o que permite que uma Thread possa alterar dados de uma outra ou vice versa. Assim, para que uma aplicao possa funcionar eficientemente com threads, deve existir mecanismos de sincronizao robustos e consistentes que possam ter controle total sobre a fila de threads que acessaro as funes e os recursos globais. Um bug ou um erro lgico de programao pode criar um conflito entre duas ou mais Threads que acabaria destruindo todas as outras e consequentemente derrubar o processo.

Comunicao Entre Processos


comum processos trabalharem concorrendo e compartilhando recursos do sistema, como arquivos, registros, dispositivos e reas de memria. Na verdade o importante como estes processos iro usar e o que iro fazer com estes recursos. Um recurso mal usado ou usado indevidamente pode comprometer o sistema ou o prprio processo gerando falhas como podemos ver abaixo:

Um dos exemplos de dois processos concorrentes que trocam informaes atravs de operao de gravao e leitura em um Buffer. Um processo s poder gravar dados no Buffer caso ele no esteja cheio, da mesma forma, um processo s poder ler dados armazenados no Buffer se existir algum dado a ser lido. Para gerenciar este compartilhamento de forma que dois ou mais processos tenham acesso a um mesmo recurso compartilhado, existe um mecanismo que controla este acesso, chamado de MECANISMO DE SINCRONIZAO. Este mecanismo tem o propsito de garantir a confiabilidade e a integridade da gravao dos dados, evitando que os dados armazenados fiquem sem consistncia. Como exemplo dois processos efetuando operaes de gravao, de dados

diferentes, em disco exatamente no mesmo setor ou no mesmo arquivo. Esta situao se torna mais crtica ainda em sistemas operacionais MULTIPROGRAMVEIS.

Excluso Mtua - este conceito se aplica tambm aos subprocessos e as threads.


Na abordagem dos problemas de comunicao entre processos, so usados algoritmos nos programas que incorporam o mecanismo de sincronizao e gerenciam este acesso. Um bom exemplo disto quando desenvolvemos programas para trabalharem em rede onde voc precisar fazer o bloqueio de um arquivo para us-lo impedindo assim que outra estao de trabalho manipule aquele mesmo arquivo no momento em que voc estiver usando-o. Para que sejam evitados problemas desta natureza, onde dois processos manipulem o mesmo arquivo ou a mesma varivel de memria simultaneamente, enquanto um processo estiver acessando determinado recurso, todos os outros que queiram acessar esse mesmo recurso devero esperar. Isso se chama EXCLUSO MUTUA. A excluso mtua dever agir apenas sobre os processos que esto concorrendo em um determinado recurso. Quando desenvolvemos um programa, que faa tratamento de excluso mutua, este dever ter uma seo chamada REGIO CRTICA. Nesta regio existe uma serie de procedimentos e protocolos que o programa dever fazer para que o sistema operacional libere o recurso para o mesmo. A regio critica deve ser sempre usada quando seu programa for fazer uso de recursos que so passiveis de compartilhamento com algum outro suposto programa na memria. nela tambm que os processos encontram-se em um momento mais critico, pois qualquer erro ocorrido ali dentro pode fazer com que dois ou mais processos colidam gerando falhas e derrubando o sistema. A figura abaixo mostra uma falha ocasionada quando um processo apresentou problemas e acabou interferindo no funcionamento de outro:

Problemas de Sincronizao
A tentativa de implementar a excluso mtua nos programas traz alguns problemas com sincronizao. As mais freqentes so:

Velocidade de execuo dos processos


Um dos problemas causados pela excluso mutua quando um processo mais rpido obrigado a esperar que um lento use o recurso e o libere. Um gargalo gerado pela consistncia dos processos onde o mais rpido ficar limitado velocidade do mais lento. Conseqncia disto, o sistema todo fica lento comprometendo o seu desempenho.

Starvation
Quem determina as prioridades dos processos o sistema operacional. Neste caso existem duas formas do sistema operacional determinar qual ser a vez de quem. Ou por escolha aleatria ou por prioridades. Quando a escolha aleatria, existir a probabilidade de um processo nunca ser escolhido, quando for uma escolha por prioridades, um processo de menor prioridade nunca receber o acesso ao recurso, e ento este processo nunca executar sua rotina.

Sincronizao condicional
Quando um recurso no est pronto para ser utilizado, o processo que vai acessar o recurso ficar em estado de espera at que o mesmo esteja pronto. Existe o risco deste recurso nunca ficar pronto por j estar com problemas. Ento todo o sistema fica esperando o Recurso resolver sua vida. Um exemplo disto o caso do uso de Buffers para leitura e gravao de dados feita pelos processos. Uma possvel falha na memria que impea o acesso aos buffers e todo o sistema est parado...

Solues de Hardware
Tambm o hardware traz algumas solues que ajudam a diminuir o problema da excluso mtua dos processos:

Desabilitao de interrupes
Faz com que o processo, antes de entrar em sua regio crtica desabilite todas as interrupes externas e a reabilite aps deixar a regio critica. Este mecanismo tambm traz seus inconvenientes. Se um processo entrou na regio crtica e desabilitou todas as interrupes ao sair dela ele dever HABILIT-LAS novamente sob risco de todo o sistema estar comprometido.

Instruo Test-And-Set
Instruo especial onde um processo apenas l o contedo de uma varivel, e armazena seu valor em outra rea podendo neste caso fazer todas as manipulaes necessrias e devidas sem precisar de prioridades ou esperar que a varivel original seja liberada.

Solues de Software
Alm da excluso mtua, que soluciona os problemas de compartilhamento de recursos, existem outros fatores fundamentais para a soluo de problemas de sincronizao: - O nmero de processadores e o tempo de execuo dos processos. - Um processo fora de sua regio crtica no pode impedir que outros processos entrem em suas prprias regies crticas. - Um processo no pode permanecer indefinidamente esperando para entrar em sua regio crtica. Todas as solues que foram apresentadas para contornar estes inconvenientes apresentavam problemas da ESPERA OCUPADA. Na espera ocupada, todas as vezes que um processo tenta entrar em sua regio crtica ele impedido por j existir um outro processo usando o recurso, fazendo o sistema ficar parado esperando que o mesmo tenha acesso a este respectivo recurso.

Semforos
O semforo uma varivel que fica associada a um recurso compartilhado, indicando quando este est sendo acessado por um outro processo. Ela ter seu valor alterado quando o processo entra e quando sai da regio crtica de forma que se um outro processo entrar em sua regio critica ele

possa checar antes este valor para saber se o recurso esta ou no disponvel. Quando o processo tiver seu acesso impedido, ele ser colocado em uma fila de espera associada ao semforo aguardando sua vez de utilizar o recurso. Todos os processos da fila tero acesso ao recurso na ordem de chegada. O semforo pode ser usado tambm para implementar sincronizaes condicionais. Isto consiste em um processo que necessita ser notificado sobre a ocorrncia de um evento. Pode-se usar o semforo para notificar este processo sobre a ocorrncia deste evento. Outro tipo de semforo usado SEMFORO CONSUMIDOR onde ele pode informar ao processo se o buffer est cheio ou est vazio. SEMFORO CONTADOR aquele que notifica os processos sobre o uso dos recursos. Sempre que um processo usa um recurso qualquer, este semforo incrementado sempre que um processo liberar um recurso ele ser decrementado. Este semforo til para evitar que um processo na regio crtica sem que hajam recursos disponveis no sistema. O uso de semforos exige do programador muito cuidado, pois qualquer engano pode gerar bugs em seu programa que o levem a falhas de sincronizao ocasionando quedas e travamento geral do sistema.

Monitores
So mecanismos de sincronizao compostos de um conjunto de procedimentos, variveis e estrutura de dados definidos dentro de um mdulo cuja finalidade a implementao automtica da excluso mtua entre seus procedimentos. Somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante. Toda vez que um processo chamar um destes procedimentos, o monitor verifica se j existe outro processo executando algum procedimento do monitor. Caso exista, o processo fica aguardando a sua vez ate que tenha permisso para execut-lo. A implementao da excluso mtua nos monitores realizada pelo compilador do programa e no mais pelo programador. Para isto ele ir colocar todas as regies crticas do programa em forma de procedimentos no monitor e o compilador se encarregar de garantir a excluso mtua destes procedimentos. A comunicao do processo com o monitor passa a ser feita atravs de chamadas a seus procedimentos e dos parmetros passados para eles. Outra caracterstica do monitor que os processos, quando no puderem acessar estes procedimentos, ficaro aguardando em uma fila de espera e enquanto isto, eles podero executar outros procedimentos. Como ele escrito em uma linguagem de programao, o compilador das outras demais linguagens devero ser capazes de reconhec-la e implementa-la. So raras as linguagens que permitem tal implementao criando uma limitao para o uso deste recurso.

Troca de mensagens
A troca de mensagens um mecanismo de comunicao e sincronizao entre os processos, implementado pelo sistema operacional atravs de duas rotinas do sistema SEND e RECEIVE. A rotina SEND a responsvel pelo envio de uma mensagem para o processo receptor enquanto a rotina RECEIVE por receber a mensagem do processo transmissor. Tais procedimentos mesmo no sendo mutuamente exclusivos permitem a comunicao entre os processos e a sincronizao entre eles, pois uma mensagem somente poder ser lida depois de ter sido enviada e ela somente ser envidada aps a ocorrncia de um evento. No sistema de troca de mensagens, existe a possibilidade da mensagem se perder. Para isto foi implementado o recurso de que o processo receptor ao receb-la dever enviar ao processo transmissor uma mensagem de recebimento. Caso o transmissor no receber esta mensagem em certo espao de tempo ele ir retransmitir esta mensagem. A comunicao entre processos pode ser feita diretamente. Bastando que o processo que deseja enviar uma mensagem enderece explicitamente o nome do receptor. Esta caracterstica chama-se ENDEREAMENTO DIRETO e s permitida comunicao entre dois processos.

Existe tambm o ENDEREAMENTO INDIRETO que um mecanismo que consiste no uso de uma rea compartilhada, onde as mensagens podem ser colocadas pelo processo transmissor e retiradas por qualquer processo. Existem duas formas de comunicao entre os processos: COMUNICAO SINCRONA e COMUNICAO ASSINCRONA. Uma comunicao dita Sncrona, quando um processo envia uma mensagem e fica esperando at que o processo receptor leia a mensagem e mande a notificao de recebimento. Uma comunicao assncrona aquela em que o processo que envia a mensagem no espera notificao de recebimento.

Deadlock
O Deadlock existe em qualquer sistema multiprogramvel. Um processo est em Deadlock quando este pra de responder por estar esperando um evento que nunca ocorrer. Esta situao conseqncia do problema da excluso mtua. Existem as condies onde o Deadlock ir ocorrer: - Cada recurso s pode estar alocado a um nico processo em um determinado instante. (Excluso mtua) - Um processo alm dos recursos j alocados, pode estar esperando por outros recursos. - Um recurso no pode ser liberado de um processo porque outros processos desejam o mesmo recurso (No-preempo) - Um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa (Espera circular).

Preveno do Deadlock
Para prevenir o Deadlock preciso garantir que uma das quatro condies acima citada nunca ocorra, dentre as diversas situaes j citadas pode ser feito um minucioso trabalho de determinar muito bem que recursos, quais recursos e quando estes recursos devero ser disponibilizados aos processos.

Deteco do Deadlock
Em sistemas que no possuam mecanismos que previnam a ocorrncia de deadlocks, necessrio um esquema de deteco e correo do problema. A Deteco do Deadlock um mecanismo que determina a existncia deste e identifica os recursos envolvidos no problema. Um Exemplo deste tipo de detector o prprio Gerenciador de tarefas do Windows que detecta o aplicativo que parou de responder ao sistema causado, possivelmente, por um deadlock, como podemos ver logo abaixo:

Correo do Deadlock
Geralmente o problema resolvido eliminando os processos envolvidos e desalojando os recursos para ele j garantidos. aquele processo em que voc d um Alt+Crtl+Del no Windows e aparece uma janela informando o aplicativo que no responde. Este aplicativo pode estar em um processo de Deadlock, neste caso voc manda finalizar o aplicativo e tudo voltar ao normal. Muitas vezes este mecanismo no resolve e pelo contrrio gera novos problemas. Se voc finalizar um processo que esteja intimamente envolvido com o sistema operacional ou que esteja usando recursos de baixo nvel do mesmo, voc poder vir a deix-lo instvel ou travado. Abaixo vemos a caixa de dialogo do Windows que tentar fechar o processo que pode estar parado por falta de comunicao com o sistema.

O problema do Deadlock tende a tornar-se mais crtico medida que os sistemas operacionais evoluem no sentido de implementar o paralelismo e permitir a alocao dinmica de um numero maior de recursos e a execuo de um numero maior de processos simultaneamente. Os usurios sentem muita saudade dos computadores que rodavam o DOS nos bons tempos quando quase no davam problemas. Mas bom lembrar que o DOS era um sistema operacional monotarefa e monousurio onde praticamente tnhamos apenas um nico processo rodando de cada vez. Neste caso no existiam os problemas que um ambiente multitarefa e multiusurio tem hoje. Todos os recursos do sistema estavam exclusivamente disponveis para aquele processo e, portanto ele tinha total e plena liberdade de fazer com estes o que bem entendia. Hoje os sistemas operacionais so mais complexos rodando em maquinas mais crticas devido velocidade de processamento tendo um maior numero de aplicaes que rodam simultaneamente e demandando praticamente todos os recursos do sistema ao mesmo tempo. Muitos destes programas trabalham no s com um, mas com vrios processos simultaneamente o que aumentam as chances de colises entre eles ou com os recursos do sistema.

UNIVERSIDADE FEDERAL DE SANTA CATARINA

MODULO III SORC1: Sistemas Operacionais

3 GERNCIA DE MEMRIA

Introduo
Os algoritmos de gerncia de memria variam de uma abordagem primitiva prxima mquina a estratgias de paginao e segmentao. Cada abordagem tem suas prprias vantagens e desvantagens. A seleo de um mtodo de gerncia de memria para um sistema especfico depende de muitos fatores, especialmente do projeto de hardware do sistema. Muitos algoritmos requerem suporte de hardware. A memria fundamental para a operao de um sistema de computao moderno. A memria consiste em um grande vetor de palavras ou bytes, cada qual com seu prprio endereo. A CPU busca instrues da memria de acordo com o valor do contador de programa. Essas instrues tambm podero causar carga e armazenamento em endereos de memria especficos. Um ciclo tpico de execuo de instruo, por exemplo, primeiro busca uma instruo da memria. Depois que a instruo tiver sido executada sobre os operandos, os resultados podero ser armazenados de volta na memria. Observe que a unidade de memria v apenas um fluxo de endereos de memria; no sabe como eles so gerados (o contador de instruo, indexao, indireo, endereos literais e assim por diante) ou para que servem (instrues ou dados). Da mesma forma, podemos ignorar como um endereo de memria gerado por um programa. Estamos interessados apenas na seqncia de endereos de memria gerados pelo programa em execuo. A memria lgica de um processo aquela que o processo enxerga, ou seja, aquela que o processo capaz de enderear e acessar usando as suas instrues. Os endereos manipulados pelo processo so endereos lgicos. Em outras palavras, as instrues de mquina de um processo especificam endereos lgicos. Por exemplo, um processo executando um programa escrito em linguagem C manipula variveis do tipo pointer. Essas variveis contm endereos lgicos. Em geral, cada processo possui sua prpria memria lgica, que independente da memria lgica dos outros processos. A memria fsica aquela implementada pelos circuitos integrados da memria, pela eletrnica do computador. O endereo fsico aquele que vai para a memria fsica, ou seja, usado para enderear os circuitos integrados da memria. O espao de endereamento lgico de um processo formado por todos os endereos lgicos que esse processo pode gerar. Existe um espao de endereamento lgico por processo. J o espao de endereamento fsico formado por todos os endereos aceitos pelos circuitos integrados de memria. A unidade de gerncia de memria (Memory Managament Unit, MMU) o componente do hardware responsvel por prover os mecanismos bsicos que sero usados pelo sistema operacional para gerenciar a memria. Entre outras coisas, a MMU que vai mapear os endereos lgicos gerados pelos processos nos correspondentes endereos fsicos que sero enviados para a memria.

A parte do sistema operacional que gerencia a memria chamada de gerenciador de memria, Dentre outras tarefas, o gerenciador de memria monitora quais partes da memria esto em uso e quais esto disponveis, aloca e libera memria para os processos, gerencia a permuta de processos entre memria principal e secundria ,quando a memria principal no capaz de abrigar todos os processos Sistemas de gerncia de memria podem ser divididos em duas classes, aqueles que mantm os processos fixos em memria primria e aqueles que movem processos entre a memria principal e secundria, tipicamente disco, durante a execuo, neste caso baseando,se em tcnicas de swapping ,permuta, ou paginao.

Gerncia Sem Permuta


Monoprogramao
O esquema mais simples possvel de gerncia de memria consiste em ter-se somente um processo na memria durante toda a sua execuo, O usurio carrega um programa do disco para a memria, podendo este fazer uso de toda a mquina. Se a memria for insuficiente, o programa simplesmente tem sua execuo rejeitada, Quando o sistema organizado dessa maneira, somente um processo pode estar em execuo por vez. O usurio entra com um comando no terminal, e o sistema operacional carrega o programa requerido do disco para a memria e o executa, Quando o processo termina, o sistema operacional reassume a CPU e espera por um novo comando para carregar um outro processo na memria j liberada pelo primeiro,

Multiprogramao e Uso da Memria


Embora a monoprogramao seja usada em pequenos computadores, em grandes computadores com mltiplos usurios ela proibitiva, Multiprogramao, alm de suportar processos simultneos de diversos usurios, tambm permite utilizar melhor a CPU durante acessos de um processo a dispositivos de entrada e sada, comum para um processo permanecer em um loop lendo um bloco de dados de um arquivo em disco e ento realizando alguma computao sobre o contedo dos blocos lidos, Se for gasto 40 ms para ler um bloco e a computao demanda apenas 10 ms, sem a multiprogramao a CPU estar desocupada esperando pelo acesso ao disco durante 80% do tempo, Quando a multiprogramao usada, o percentual de utilizao da CPU aumenta. Grosso modo, se a mdia dos processos utilizam CPU somente 20% do tempo que permanecem na memria, com 5 processos em memria, a CPU dever estar ocupada o tempo todo, Este modelo otimista, entretanto, pois assume que os 5 processos nunca estejam esperando por E/S ao mesmo tempo.

Multiprogramao com Parties Fixas


Se adotarmos a estratgia de admitir mais de um processo na memria por vez, devemos estabelecer uma estratgia de organizao da memria, A estratgia mais simples consiste em dividir a memria em n (possivelmente diferentes) parties. Quando um processo inicia, este pode ser colocado em uma fila de entrada para ocupar a menor partio de tamanho suficiente para acomod-lo. Desde que as parties so fixas, qualquer espao em uma partio no usado pelo processo perdido, A Figura abaixo apresenta este esquema de partio,

Figura 01 - Organizaes com parties fixas: (a) Parties de memria fixa com filas de entrada separadas para cada partio; (b) partio de memria fixa com uma fila simples de entrada

A desvantagem de se ordenar os processos que chegam em filas separadas torna-se aparente quando a fila para a maior partio est vazia, mas a fila para a menor partio est cheia, como no caso das parties 1 e 2 na Figura 01(a). Uma organizao alternativa manter uma fila nica como na Figura 01(b). Toda vez que uma partio liberada, a mesma alocada ao primeiro processo da fila. Uma vez que indesejvel gastar uma partio grande com um processo pequeno, uma estratgia mais eficaz procurar em toda fila de entrada a maior tarefa para a partio liberada. Note que o ltimo algoritmo discrimina os processos pequenos, quando usualmente desejvel dar a eles o melhor tratamento, no o pior.

Gerncia com Permuta


Num sistema operando em batch, a organizao da memria em parties fixas simples e efetiva. Quanto mais jobs estiverem na memria, mais a CPU estar ocupada e no h razo para usar algo mais complicado, Com time-sharing, a situao diferente, h normalmente mais usurios que memria para armazenar os seus processos, sendo ento necessrio mover temporariamente processos para disco, Obviamente, para continuar sua execuo, um processo movido para disco deve ser trazido novamente para a memria.

Outro aspecto fundamental nesta abordagem de gerncia como controlar onde h espao disponvel na memria, As duas estratgias mais utilizadas so gerncia de espao livre por mapa de bits ou por listas encadeadas, que sero descritas na seqncia.

Multiprogramao com Parties Variveis


Em princpio, um sistema que utiliza swapping pode ser baseado em parties fixas. Sempre que um processo bloqueado, ele pode ser movido para o disco e um outro processo trazido do disco para a sua partio em memria. Na prtica, parties fixas so pouco atrativas quando a rea de memria escassa pois muita memria perdida por programas muito menores que o tamanho da partio, Assim sendo, um novo sistema de gerncia de memria foi desenvolvido, chamado gerncia com parties variveis. Quando parties variveis so usadas, o nmero e tamanho de processos na memria varia dinamicamente, A Figura 02 mostra como parties variveis trabalham. Inicialmente, somente o processo A est na memria. Ento o processo B e C so criados ou trazidos do disco. Na Figura 02(d), o processo A termina ou movido para o disco. Ento o processo D inicia e B termina. Finalmente, processo E inicia.

Figura 02 Organizao com swapping: mudanas na alocao de memria com processos chegando e deixando a memria (regies escuras representam espao no usado)

A principal diferena entre parties fixas da Figura 01 e parties variveis da Figura 02, que o nmero, a localizao e o tamanho das parties variam dinamicamente ao longo do tempo. A flexibilidade de no se ter um nmero fixo de parties aumenta a utilizao da memria, mas tambm complica a tarefa de alocar e liberar a memria, bem como gerenci-la. possvel combinar todos as lacunas disjuntas num nico espao disponvel agrupando,se todos processos para um lado da memria. Esta tcnica conhecida como compactao da memria. Ela no empregada com freqncia pelo fato de requerer muito tempo de CPU. Um ponto negativo neste mtodo de gerncia saber o quanto de memria alocar para um processo. Se os processos so criados com um tamanho fixo que permanece constante ao longo de sua execuo, ento a alocao simples, aloca-se exatamente o necessrio ao tamanho do processo, nem mais nem menos, Na prtica, os segmentos de dados e pilha de um processo tendem a crescer durante a sua execuo. Alocao dinmica de memria e recurso (presentes em praticamente em todas as linguagens modernas) de programao, so exemplos tpicos de crescimento destes segmentos. Se o processo necessitar expandir sua memria e existir uma lacuna adjacente, simplesmente a lacuna pode vir a ser incorporada ao espao de endereamento do processo. De outra forma, se o processo est

adjacente a outro processo, o primeiro dever ser movido para uma lacuna grande o suficiente para armazen-lo, ou um ou mais processos tero que ser movidos para disco com o intuito de criar espao na memria. Se o processo no puder crescer na memria e a rea do disco reservada para abrigar processos permutados estiver cheia, o processo deve ser terminado.

Gerncia com Mapa de Bits


Com um mapa de bits, a memria dividida em unidades de alocao, desde um pequeno nmero de palavras at muitos quilobytes. Para cada unidade de alocao existe um bit no mapa de bits, que 0 se a unidade estiver livre e 1 caso esteja ocupada ou vice-versa. A Figura 03, mostra parte da memria e o correspondente mapa de bits.

Figura 03 Organizao com mapa de bits: (a) parte da memria com 5 processos e 3 buracos (ou lacunas) (as marcas mostram as unidades de alocao da memria e as regies escuras esto livres); (b) mapa de bits correspondente; (c) a mesma informao como uma lista ligada

O tamanho de cada unidade de alocao uma importante caracterstica de projeto. Para pequenas unidades de alocao tem,se um mapa de bits maior. Entretanto, mesmo com uma unidade de alocao to pequena como 4 bytes, cada 32 bits de memria requer somente 1 bit no mapa (3% da memria). Se a unidade de alocao for escolhida grande, o mapa de bits ser pequeno, mas memria considervel pode ser desperdiada se o tamanho do processo no for um mltiplo exato da unidade de alocao. Um mapa de bits ocupando uma poro fixa da memria, prov uma maneira simples de gerenciar memria, uma vez que o tamanho do mapa de bits depende somente do tamanho da memria e do tamanho da unidade de alocao. O problema principal com isto que quando se decide trazer um processo de k unidades de alocao para a memria, o gerenciador de memria deve pesquisar no mapa de bits uma seqncia de k consecutivos bits 0 no mapa. Esta operao lenta, razo pela qual os mapas de bits so evitados na prtica.

Gerncia com Listas Encadeadas


Outra maneira de gerenciar a memria manter uma lista de alocaes e segmentos de memria livre, onde um segmento um processo ou um buraco (ou lacuna) entre dois processos. A memria da Figura 04 representada na mesma figura (c) como uma lista encadeada de segmentos. Cada entrada da lista especifica um buraco ou lacuna (B) ou um processo (P) contendo o endereo onde comea, onde termina (ou tamanho do bloco) e um ponteiro para a prxima entrada da lista.

Neste exemplo, a lista de segmentos mantida ordenada por endereos. A vantagem desse mtodo que quando o processo termina ou movido para o disco, torna-se simples combinar a lacuna criada com lacunas adjacentes. Quando processos e lacunas so mantidos na lista ordenada por endereos, vrios algoritmos podem ser usados para alocar memria, alm de criar ou permutar processos. Tais algoritmos so evocados quando o gerenciador de memria necessita um segmento de memria de M bytes. Os algoritmos mais utilizados so o first-fit e o circular-fit.

First-fit: utiliza a primeira lacuna que encontrar com tamanho suficiente. Best-fit: utiliza a lacuna que resultar na menor sobra. Worst-fit: utiliza a lacuna que resultar na maior sobra. Circular-fit: como o first-fit, mas inicia a procura na lacuna seguinte ltima sobra.

Todos os quatro algoritmos podem melhorar seus desempenhos mantendo-se em separado listas para processos e lacunas. Neste caso, todos devotam suas energias para inspeo de lacunas, no de processos. O preo pago por esse aumento de velocidade na alocao uma complexidade adicional e diminuio de velocidade quando se trata de liberar memria, uma vez que um segmento livre tem de ser removido da lista de processos e inserido na lista de lacunas. Novamente, a ineficincia est em se determinar possveis fuses.

Alocao de Espao para Permuta


Os algoritmos apresentados acima mantm o rastreamento da memria principal, Assim, quando processos so permutados do disco para a memria, o sistema pode alocar espao em memria para eles. Em alguns sistemas, quando um processo est na memria, nenhum espao em disco a ele reservado. Quando for movido da memria, espao deve ser alocado na rea de disco para abrig-lo (portanto, em cada troca o processo pode residir em lugares diferentes no disco). Neste caso, os algoritmos para gerncia de espao para permuta so os mesmos usados para gerncia da memria principal. Em outros sistemas, quando um processo criado, um espao para permuta alocado em disco (usando um dos algoritmos descritos acima). Sempre que um processo em memria d lugar a outro processo, ele colocado no espao em disco a ele previamente alocado, Quando um processo termina, o seu espao para permuta em disco desalocado. Esta tcnica mais eficiente que a anterior pois uma nica alocao de espao em disco por processo necessria (lembre-se que um processo pode ser permutado vrias vezes durante a sua execuo). Entretanto, uma rea maior de disco deve ser reservada para swapping.

Troca de Processos (Swapping)


A tcnica de swapping requer que o sistema possua um backing store. O backing store uma memria secundria, geralmente um disco rpido. Ele deve ser grande o suficiente para armazenar cpias dos programas de usurios e fornecer acesso direto a esses programas. O swapping uma tcnica aplicada gerncia de memria, para programas que esperam por memria livre para serem processados. Nesta situao, o sistema escolhe um programa residente que levado da memria para o disco (swapped out), retornando posteriormente para a memria principal (swapped in), como se nada tivesse ocorrido.

Figura 04 Viso Esquemtica do Swapping

Paginao
A paginao uma organizao de memria que permite que a memria fsica seja vista como se estivesse dividida em blocos de tamanho fixo, chamados frames. A memria lgica tambm dividida em blocos do mesmo tamanho, denominados pginas (pages). Quando um programa vai ser executado, suas pginas so trazidas do backing store e carregadas nos frames disponveis. O disco dividido em blocos de tamanho fixo, cujo tamanho o mesmo dos frames da memria.

Segmentao
A segmentao um esquema de gerenciamento de memria que pode dar suporte viso que o usurio possui sobre a memria. O usurio pensa na memria como um conjunto de subrotinas, procedimentos, tabelas, variveis e assim por diante. Cada um destes segmentos possui um nome, de tamanho varivel e no possui uma ordenao especfica. Os elementos dentro de cada segmento so identificados por sua posio dentro do segmento, como por exemplo, a primeira entrada numa tabela de smbolos. Dessa forma, um espao de endereo lgico uma coleo de segmentos. Os endereos especificam tanto o nome do segmento quanto a posio dentro do segmento. O usurio especifica ento cada endereo por estas duas quantidades: um nome de segmento e uma posio.

Memria Virtual
Na memria principal residem todos os programas e dados que sero executados ou referenciados pelo processador. Um programa residente na memria secundria para ser executado deve ser, de alguma forma, carregado para a memria principal. A organizao e gerncia da memria principal tm sido fatores importantes no projeto de sistemas operacionais. Enquanto nos sistemas monoprogramveis a gerncia da memria no muito complexa, nos sistemas multiprogramveis ela torna-se crtica. Isso ocorre devido necessidade de se manter o maior nmero de processos possvel utilizando a memria eficientemente, tornando sua gerncia muito mais difcil [MACHADO, 1997]. Existem inmeros mecanismos de gerncia de memria, como alocao contgua, esquemas de overlay, alocao particionada esttica e dinmica, e memria virtual. Mesmo a gerncia de memria virtual pode ser implementada utilizando-se paginao, segmentao ou uma mistura de

ambos. Os mecanismos anteriores memria virtual servem apenas para apresentar a evoluo histrica da gerncia de memria, pois, na prtica, no so mais implementados na maioria dos sistemas operacionais comerciais, com exceo de alguns supercomputadores, por questes de desempenho. A gerncia de memria virtual com segmentao pura muito pouco utilizada. Geralmente, os sistemas que utilizam segmentao tambm implementam paginao, em um modelo hbrido. Memria virtual (virtual memory) uma tcnica sofisticada e poderosa de gerncia de memria, onde as memrias principal e secundria so combinadas, dando ao usurio a iluso de existir uma memria muito maior que a memria principal [DENNING, 1970]. O conceito de memria virtual est baseado em desvincular o endereamento feito pelo programa dos endereos fsicos da memria principal. Assim, os programas e suas estruturas de dados deixam de estar limitados ao tamanho da memria primria disponvel. Para permitir que apenas partes realmente necessrias execuo do processo estejam na memria, o cdigo deve ser dividido em blocos e mapeados na memria principal, a partir do espao de endereamento virtual. O espao de endereamento virtual representa o conjunto de endereos virtuais que os processos podem enderear. Analogamente, o conjunto de endereos reais chamado espao de endereamento real. O espao de endereamento virtual no tem nenhuma relao direta com os endereos no espao real. Um programa pode fazer referncia a endereos virtuais que estejam fora dos limites do espao real, ou seja, os programas e suas estruturas de dados no esto mais limitados ao tamanho da memria fsica disponvel. Como os programas podem ser muito maiores que a memria fsica, apenas parte deles pode estar residente na memria em um determinado instante. O sistema operacional utiliza a memria secundria como extenso da memria principal e o transporte de programas entre uma e outra d-se de maneira dinmica e transparente ao usurio. Quando um programa executado, s uma parte do cdigo fica residente na memria principal, permanecendo o restante na memria secundria at o momento de ser referenciado (Fig. 05).

Figura 05 Espao de endereamento virtual

Outra vantagem da memria virtual permitir um nmero maior de processos compartilhando a memria, j que apenas algumas partes de cada processo estaro residentes. Isto leva a uma utilizao mais eficiente tambm do processador, permitindo um maior nmero de processos no estado de pronto.

Mapeamento
O mapeamento permite ao sistema operacional traduzir um endereo localizado no espao de endereamento virtual do processo para um endereo no espao real. Como conseqncia do mapeamento, um programa no precisa estar necessariamente contguo na memria principal para ser executado. Cada processo tem o mesmo espao de endereamento virtual, como se possusse sua prpria memria virtual. O mecanismo de traduo se encarrega de manter tabelas de mapeamento exclusivas para cada processo, relacionando os endereos virtuais do processo s suas posies na memria fsica (Fig. 06). Quando um programa est sendo executado, o sistema, para realizar a traduo, utiliza a tabela de mapeamento do processo no qual o programa executa. Se um outro programa vai ser executado no contexto de outro processo, o sistema deve passar a referenciar a tabela do novo processo.

Figura 06 Tabela de mapeamento

Neste esquema, como cada processo tem a sua prpria tabela de mapeamento e a traduo dos endereos realizada pelo sistema, garantida a proteo dos espaos de endereamento dos processos, a menos que haja compartilhamento explcito de memria (shared memory). Caso o mapeamento fosse realizado para cada clula na memria principal, o espao ocupado pelas tabelas na memria real seria to grande quanto o espao de endereamento virtual de cada processo, o que inviabilizaria a implementao do mecanismo de memria virtual. Em funo disso, as tabelas mapeiam blocos de informaes, cujo tamanho determina o nmero de entradas existentes nas tabelas de mapeamento. Quanto maior o bloco, menos entradas nas tabelas de mapeamento e, conseqentemente, tabelas de mapeamento que ocupam um espao de memria menor. Existem sistemas que trabalham apenas com blocos do mesmo tamanho (paginao), outros que utilizam blocos de tamanhos diferentes (segmentao) e, ainda, h sistemas que trabalham com os dois tipos de blocos (segmentao com paginao).

Paginao
Paginao (paging) a tcnica de gerncia de memria onde o espao de endereamento virtual e o espao de endereamento real so divididos em blocos do mesmo tamanho, chamados pginas. As pginas no espao virtual so denominadas pginas virtuais (virtual pages), enquanto as pginas no espao real so chamadas de pginas reais (frames). Todo o mapeamento realizado em nvel de pgina, atravs de tabelas de pginas. Cada pgina virtual do processo possui uma entrada na tabela de pginas (Page Table Entry - PTE), com informaes de mapeamento que permitem ao sistema localizar a pgina real correspondente na memria principal (Fig. 07).

Figura 07 Tabela de pginas

Quando um programa executado, as pginas virtuais so transferidas da memria secundria para a memria principal e colocadas em frames. Sempre que o programa fizer referncia a um endereo virtual, o mecanismo de mapeamento localizar, no PTE da tabela do processo, o endereo fsico do frame. Alm da informao sobre a localizao da pgina virtual, o PTE possui outras informaes, entre elas o bit de validade (valid bit), que indica se uma pgina est ou no na memria fsica. Se o bit tem o valor 0, indica que a pgina virtual no est na memria principal, enquanto, se for igual a 1, a pgina est localizada na memria. Sempre que o processo faz referncia a um endereo virtual, se verifica, atravs do bit de validade, se a pgina que contm o endereo referenciado est ou no na memria principal. Caso no esteja, dizemos que ocorreu um page fault e, neste caso, o sistema deve transferir a pgina da memria secundria para a memria fsica. Quando um processo faz referncia a um endereo e ocorre um page fault, o processo retirado do processador e colocado em estado de espera, at que a pgina seja lida do disco. Depois da leitura da pgina em disco, o processo recolocado na fila de processos pronto e quando for reescalonado poder continuar seu processamento.

Polticas de Busca de Pginas


O mecanismo de memria virtual permite a execuo de um programa sem que esteja completamente residente na memria. A poltica de busca de pginas (fetch policy) determina quando uma pgina deve ser trazida para a memria principal. Existem, basicamente, duas alternativas: paginao por demanda e paginao antecipada. Na paginao por demanda (demand paging), as pginas dos processos so transferidas da memria secundria para a principal apenas quando so referenciadas. Este mecanismo conveniente, na medida em que leva para a memria principal apenas as pginas realmente necessrias execuo do programa. Desse modo, possvel que partes do programa, como rotinas de tratamento de erros, nunca sejam carregadas para a memria. Na paginao antecipada (antecipatory paging ou prepaging), o sistema traz para a memria, alm das pginas referenciadas, outras pginas que podem ou no ser necessria ao processo no futuro. No caso do processo no precisar das pginas trazidas antecipadamente, o sistema ter perdido tempo de processador e ocupado memria principal desnecessariamente.

Poltica de Alocao de Pginas


A poltica de alocao de pginas determina quantos frames cada processo pode alocar na memria principal. Existem, basicamente, duas alternativas: a alocao fixa e alocao varivel. Na poltica de alocao fixa, cada processo recebe um nmero mximo de pginas que pode ser utilizado. Se o nmero de pginas for insuficiente, o processo gera um page fault e cede uma pgina para obter uma nova. O nmero mximo de pginas pode ser igual para todos os processos ou ser definido individualmente. Alocar o mesmo nmero de pginas para todos os processos, apesar de justo, em princpio no funciona, caso os processos tenham necessidades diferentes de memria, como geralmente acontece. Se cada processo pode ter um nmero mximo de pginas, o limite pode ser definido com base no tipo da aplicao (interativa ou batch), no incio da sua execuo. Na poltica de alocao varivel, o nmero mximo de pginas alocadas ao processo pode variar durante sua execuo, em funo de sua taxa de paginao, por exemplo. A taxa de paginao o nmero de page faults por unidade de tempo de um processo. Processos com elevadas taxas de paginao podem receber frames adicionais a fim de reduzi-las, ao mesmo tempo em que processos com taxas baixas de paginao podem ced-las. Este mecanismo, apesar de mais flexvel, exige que o sistema operacional monitore o comportamento dos processos, provocando maior overhead.

Working Set
O mecanismo de memria virtual apesar de suas vantagens, introduz um grande problema. Sempre que um processo faz referncia a uma de suas pginas e esta no se encontra na memria (page fault), exige do sistema operacional pelo menos uma operao de E/S, que, quando possvel, deve ser evitada. Qualquer sistema que implementa paginao deve se preocupar em manter na memria principal um certo nmero de pginas que reduza ao mximo a taxa de paginao dos processos, ao mesmo tempo em que no prejudique os demais processos que desejam ter acesso memria. O conceito de working set surgiu a partir da anlise da taxa de paginao dos processos. Quando um programa comea a ser executado, percebe-se uma elevada taxa de page faults, que se estabiliza com o decorrer da execuo. Esse fato est ligado ao princpio da localidade. Localidade pode ser definida como a tendncia que existe em um programa de fazer referncias a posies de memria de forma quase uniforme, ou seja, a instrues e dados prximos. Isso significa que um processo tender a concentrar suas referncias em um mesmo conjunto de instrues e dados na memria principal, durante um determinado perodo de tempo.

O working set de um processo o conjunto de pginas referenciadas por ele durante determinado intervalo de tempo. Uma outra definio seria que o working set o conjunto de pginas constantemente referenciadas pelo processo, devendo permanecer na memria principal para que ele execute de forma eficiente. Caso contrrio, o processo poder sofrer com a elevada taxa de paginao (thrashing), comprometendo seu desempenho [DENNING, 1968] [DENNING, 1970] [DENNING, 1980]. Quando um processo criado, todas as suas pginas esto na memria secundria. medida que acontecem referncias s pginas virtuais, elas so transferidas para o working set do processo na memria principal (page in). Sempre que um processo faz referncia a uma pgina, o sistema verifica se a pgina j se encontra no working set do processo. Caso a pgina no se encontre no working set, ocorrer o page fault. O working set do processo deve ter um limite mximo de pginas permitidas. Quanto maior o working set, menor a chance de ocorrer uma referncia a uma pgina que no esteja na memria principal (page fault).

Polticas de Substituio de Pginas


O maior problema na gerncia de memria virtual por paginao no decidir que pgina carregar para a memria, mas quais pginas remover. Quando no existem pginas livres disponveis na memria e novos frames devem ser alocados, a poltica de substituio (replacement policy) de pginas determina, dentre as diversas pginas residentes, quais devem ser realocadas. Qualquer estratgia de substituio de pginas deve considerar se uma pgina foi ou no modificada, antes de liber-la, caso contrrio, possveis dados armazenados na pgina sero perdidos. Sempre que o sistema liberar uma pgina desse tipo, ele antes dever grav-la na memria secundria (page out), preservando seu contedo. O sistema mantm um arquivo de paginao (page file) onde as pginas modificadas so armazenadas. Sempre que uma destas pginas for novamente referenciada, ela ser trazida novamente para a memria principal. O sistema consegue implementar esse mecanismo atravs do bit de modificao (dirty ou modify bit), que existe na entrada de cada tabela de pginas. Sempre que uma pgina alterada, o valor do bit de modificao alterado de 0 para 1, indicando que a pgina foi modificada. No caso de pginas que no so modificadas, como pginas de cdigo, existem as pginas originais no arquivo executvel armazenado na memria secundria, que podem ser utilizadas sempre que necessrias. Tais pginas, quando liberadas, no causam o overhead de gravao em disco. A poltica de substituio pode ser classificada conforme seu escopo, ou seja, local ou global. Na poltica local, apenas as pginas do processo que gerou o page fault so candidatas a realocao. J na poltica global, todas as pginas residentes so avaliadas, independente do processo que gerou o page fault. Independente se a poltica seja local ou global, os algoritmos de substituio de pginas devem ter o objetivo de selecionar aquelas que tenham poucas chances de serem utilizadas novamente num futuro prximo. Quanto mais elaborado e sofisticado o algoritmo, maior tambm o overhead para o sistema. Existem diversos algoritmos na literatura voltados para a implementao da poltica de substituio de pginas, como FIFO (First-In-First-Out), buffer de pginas, LRU (Least- Recently-Used), LFU (Least-Frequently-Used) e NRU (Not-Recently-Used) [TANENBAUM, 1992]. Os algoritmos LRU, LFU, dentre outros, no so implementados na prtica em sistemas operacionais modernos.

First-In-First-Out (FIFO)
Nesse esquema, a pgina que primeiro foi utilizada (first-in) ser a primeira a ser escolhida (firstout), ou seja, o algoritmo seleciona a pgina mais antiga na memria. Sua implementao pode ser feita associando a cada pgina o momento que foi trazida para a memria ou utilizando uma fila, onde as pginas mais antigas esto no incio e as mais recentes no final da fila. Parece razovel

pensar que uma pgina que esteja mais tempo na memria seja justamente aquela que deva ser selecionada. Caso uma pgina seja constantemente referenciada, o fator tempo torna-se irrelevante, e o sistema tem que retornar a mesma pgina vrias vezes. O algoritmo FIFO raramente utilizado sem algum outro mecanismo que minimize este problema, como o algoritmo de Buffer de Pginas.

Buffer de Pginas
O buffer de pginas utiliza como base o algoritmo FIFO, combinado com uma lista de pginas livres (Free Page List FPL), que funciona em um esquema de fila. Sempre que um processo solicita uma nova pgina, a pgina que est a mais tempo no seu working set colocada no final da FPL. Para atender a solicitao do processo, a primeira pgina da FPL selecionada. Uma segunda lista, conhecida como lista de pginas modificadas (Modified Page List MPL) armazena as pginas modificadas que so retiradas do working set do processo. importante notar que a pgina substituda continua fisicamente na memria, logo, se a pgina for novamente referenciada, basta traz-la da FPL ou MPL, que funciona como um buffer de pginas. O buffer de pginas permite criar um algoritmo de substituio de pginas eficiente, sem o overhead de outras implementaes.

Swapping
A tcnica de swapping permite aumentar o nmero de processos compartilhando a memria principal e, conseqentemente, o sistema. Em sistemas que implementam essa tcnica, quando existem novos processos que desejam ser processados e no existe memria real suficiente, o sistema seleciona um ou mais processos que devero sair da memria para ceder espao aos novos processos. H vrios critrios que podem ser aplicados na escolha do(s) processo(s) que deve(m) sair da memria. Os mais utilizados so a prioridade e o estado do processo. O critrio de estado seleciona os processos que esto no estado de espera, ou seja, aguardando por algum evento. O critrio de prioridade escolhe, entre os processos, os de menor prioridade de execuo. Depois de escolhido o(s) processo(s), o sistema intervm e ativa uma rotina do sistema responsvel por retirar (swap out) e trazer (swap in) os processos da memria principal para a memria secundria, onde so gravados em um arquivo de swapping (swap file).

Thrashing
Thrashing pode ser definido como sendo a excessiva transferncia de pginas entre a memria principal e a memria secundria. Thrashing pode ocorrer em dois nveis: em nvel do prprio processo e em nvel do sistema. Em nvel do processo, a excessiva paginao ocorre devido ao elevado nmero de page faults, gerado pelo programa em execuo. Esse problema faz com que o processo passe mais tempo esperando por pginas do que realmente sendo executado e ocorre devido ao mau dimensionamento no tamanho do working set do processo, pequeno demais para acomodar as pginas constantemente referenciadas por ele. Em nvel do sistema, o thrashing ocorre quando existem mais processos competindo por memria real que espao disponvel. Neste caso, o sistema tenta administrar a memria de forma que todos os processos sejam atendidos, descarregando processos para a memria secundria e carregando processos para a memria principal. Se esse mecanismo for levado ao extremo, o sistema passar mais tempo fazendo swapping do que executando processos. De qualquer forma, se persistem mais processos para serem executados que memria real disponvel, a soluo que realmente restaura os nveis de desempenho adequados a expanso da memria principal. importante ressaltar que este problema no ocorre apenas em sistemas que implementam memria virtual, mas tambm em sistemas com outros mecanismos de gerncia de memria.

UNIVERSIDADE FEDERAL DE SANTA CATARINA

MODULO III SORC1: Sistemas Operacionais

4 GERNCIA DE ARQUIVOS

Sistema de Arquivos
a parte mais visvel do Sistema Operacional do ponto de vista dos usurios. funo do Sistema de Arquivos prover uma abstrao dos meios de armazenamento, numa estrutura lgica de organizao dos dados. No possvel gravar dados num HD ou num disquete sem um sistema de arquivos, que , basicamente, uma estrutura que indica como os arquivos devem ser gravados e guardados em mdias. Atravs do sistema de arquivos, que se determina o espao utilizado no disco, alm de ser o mtodo que permite gerenciar como partes de um arquivo podem ficar "espalhadas" no dispositivo de armazenamento. Um outro detalhe importante: o sistema de arquivos que determina como arquivos podem ser gravados, copiados, alterados, nomeados e at apagados. Ou seja, resumindo, toda e qualquer manipulao de dados numa mdia necessita de um sistema de arquivos para que essas aes sejam possveis. Se no houver estrutura de armazenamento e manipulao impossvel gravar dados.

Arquivos
Um arquivo uma coleo de informaes correlacionadas, identificado por um nome. a menor unidade de armazenamento secundrio do ponto de vista do usurio. Atributos de um arquivo: Nome, tipo, posio no dispositivo de armazenamento, tamanho, informaes de proteo, data e hora de criao/modificao e identificao do usurio dono do arquivo. Tais atributos so mantidos na estrutura de diretrio. As operaes que o SO disponibiliza para tratar dos arquivos so: - Criao: O SO verifica se h espao disponvel no dispositivo de armazenamento e aloca para o novo arquivo. Depois cria uma entrada no diretrio com o nome e demais informaes sobre o arquivo. - Escrita/Leitura: Para escrever em, ou ler de um arquivo, o SO precisa receber atravs de uma chamada de sistemas o nome do arquivo e as informaes a serem escritas ou a posio da memria onde as informaes lidas devem ser colocadas. Em ambos os casos o SO deve acompanhar atravs de um ponteiro a posio do arquivo onde esto sendo realizadas as operaes e atualizar este ponteiro a cada operao. - Reposicionamento: Posiciona o ponteiro de escrita/leitura para a prxima operao. Excluso: Pesquisa-se a entrada do arquivo no diretrio e todo espao alocado quele arquivo so liberados. Em seguida a prpria entrada no diretrio excluda. - Truncar um arquivo: Reajusta o tamanho do arquivo para zero, mantendo todos os outros atributos. Operaes adicionais como renomear, copiar, mover e obter informaes sobre os arquivos so baseadas nestas outras operaes primitivas. A maioria destas operaes requer uma busca no diretrio pelas informaes do arquivo. Para evitar esta busca constante, o SO mantm uma tabela do arquivos abertos em memria. Duas operaes adicionais so necessrias: Abrir e Fechar (Open e Close). A chamada de sistema "open" retorna um ndice com a entrada na tabela dos arquivos abertos. Todas as demais operaes so feitas com base neste ndice, inclusive para fechar o arquivo.

Algumas operaes adicionais so disponibilizadas em ambientes multiusurio, como bloqueio de partes de um arquivo usado por mais de um processo, mapeamento em memria (para acesso mais rpido ao arquivo), etc.

Tipos de arquivo
Alguns sistemas operacionais oferecem suporte a identificao de tipos de arquivo. Por exemplo, no MS-DOS, os arquivos so identificados por 8 caracteres que representam o nome, mais 3 representando uma extenso. Quando uma extenso EXE, COM ou BAT, o SO trata o arquivo como sendo um programa executvel. As demais extenses so tratadas pelos aplicativos, sendo que o SO no oferece nenhum outro suporte adicional. O Unix no fornece um mecanismo "forte" de identificao para os tipos de arquivo. possvel usar extenses, mas estas no so obrigatrias e geralmente ficam a cargo do usurio. Alguns tipos de arquivo no Unix so identificados atravs de um "nmero mgico" que um valor gravado no comeo do arquivo. Dependendo do nmero pode ser um arquivo executvel, um script do usurio ou uma biblioteca por exemplo.

Estrutura de arquivos
Os tipos de arquivo tambm podem indicar a estrutura interna de um arquivo. No MS-DOS, arquivos COM e EXE so executveis, mas possuem uma organizao interna diferente. No Linux (e outros Unix modernos), h dois tipos de executveis: "a.out" e "ELF", sendo que ambos tambm so organizados de forma diferente, porm o tipo identificado pelos "nmeros mgicos" citados anteriormente. No entanto, em ambos os casos a estrutura no foi "imposta" pelo sistema operacional. Alguns SOs permitem apenas alguns tipos de estrutura para os arquivos. Embora facilitem para o programador/usurio o acesso ao arquivo, o tratamento destas estruturas torna o SO mais complexo e limita o programador a usar apenas as estruturas providas pelo SO. Os SOs mais comuns fornecem uma estrutura mnima de organizao dos arquivos. Isto permite flexibilidade mxima, mas pouco suporte. O tratamento dos dados nos arquivos fica a cargo dos programas.

Mtodos de acesso
Seqencial: As informaes so processadas em ordem, um registro aps o outro. o mtodo mais comum. Direto: Os registros podem ser escritos/lidos, em qualquer ordem. Outros: Outros mtodos de acesso podem ser desenvolvidos com base no acesso direto (usando ndices por exemplo).

Diretrios
O diretrio um registro das informaes dos arquivos armazenados em um dispositivo (ou partio). Operaes em diretrios: - Pesquisar arquivos - Criar um arquivo (criar a entrada do arrquivo no diretrio) - Excluir um arquivo (remover a entrada) - Listar um diretrio - Renomear arquivo Percorrer o sistema de arquivos

Organizao de diretrios

Nvel nico: Todas as entradas de arquivos esto num nico diretrio. Cada arquivo deve ter um nome diferente do outro. Dois nveis: Cada usurio possui seu prprio diretrio. Um mesmo nome de arquivo pode ser usado por mais de um usurio. Melhor organizao do sistema de arquivos. Todas as operaes com arquivos so restritas aos arquivos do usurio atual. Em alguns sistemas o usurio proibido de acessar arquivos de outros diretrios, enquanto em outros pode haver compartilhamento. rvore: Em sistemas de arquivo estruturados em rvore, como o do prprio MS- DOS ou Windows, possvel um nmero arbitrrio de nveis de diretrio. O diretrio em si no passa de um tipo especial de arquivo que "aponta" para os demais arquivos. Cada usurio possui um diretrio corrente e as operaes com arquivos so feitas com os arquivos deste diretrio. Para mudar de diretrio usa-se uma chamada de sistema apropriada. Os arquivos podem ser acessados ainda atravs de caminhos. No MS-DOS ou Windows, um caminho absoluto comea com a partio (ou unidade) em que est o arquivo. Exemplo: C:\TEMP\TESTE.TXT. No Unix ficaria /tmp/teste.txt. Um caminho relativo comea sempre com base no diretrio atual. Supondo que estamos num diretrio "downloads" e queremos acessar um arquivo em "/tmp/downloads/imagens/desenho.bmp". Pode-se usar um caminho relativo "imagens/desenho.bmp". Em grafos: Um sistema em rvores pode ainda ser incrementado com a possibilidade de se incluir "links" para arquivos ou diretrios que no esto imediatamente "abaixo" dos diretrios atuais, resultando numa estrutura que mais se assemelha a um grafo. Nos sistemas Unix existem os links simblicos ou "soft links", que so referncias relativas a arquivos ou diretrios, e os "hard links" que so uma "cpia" de determinada entrada de diretrio. O SO precisa ento manter uma contagem de links, pois quando um arquivo for excludo e houver mais de um link para ele, apenas o link deve ser apagado e no o arquivo em si. Quando a contagem de links chegar a 0, a sim o arquivo pode ser eliminado.

Proteo
Tipos de acesso
Alguns tipos de acesso que podem ser controlados pelo SO: Ler, Escrever, Executar, Anexar, Excluir, Listar. No MS-DOS os controles de tipo de acesso so baseados em atributos do arquivo. Um arquivo tem 3 atributos que controlam acesso: R - Read Only, H - Hidden, S - System. Arquivos somente para leitura no podem ser gravados. Arquivos escondidos no podem ser vistos pelo usurio a menos que ele saiba seu nome. Arquivos de sistema no podem ser excludos ou movidos. No Unix h trs controles: r - read, w - write, x - execute, que controlam respectivamente se o arquivo pode ser lido, gravado ou executado. Para diretrios, significa se possvel list-los (ls), criar arquivos dentro deles ou acess-los (cd).

Listas de acesso
Em sistemas multi-usurio cada usurio precisa de uma identificao para se determinar se um arquivo pode ou no ser acessado (e de que forma). As listas de acesso contm informaes para cada arquivo e diretrio de quais tipos de acesso so permitidos a quais usurios ou grupos. Pode no ser prtico manter uma lista de cada usurio que pode acessar um arquivo e seu tipo de acesso para cada arquivo de sistema, algumas classificaes podem ser usadas. Por exemplo, no Unix, h trs classes de acesso:

- Proprietrio: O usurio que criou o arquivo: - Grupo: O conjunto de usurios que compartilha aquele arquivo. - Outros: Todos os outros usurios que tm acesso ao sistema. Este esquema mais simples e fcil de implementar, mas no to flexvel quanto o de lista de acessos.

Estrutura do sistema de arquivos


Organizao
- Dispositivo e controle de E/S: o mdulo que controla ao dispositivo fsico de armazenamento. Sistema de arquivos bsico: S precisa emitir comandos genricos aos dispositivos. - Mdulo de organizao de arquivos: Conhece os blocos lgicos e fsicos usados por cada arquivo e faz a traduo entre eles, alm de prover informaes sobre a alocao do espao em disco. - Sistema de arquivos lgico: Prov as funes de controle de arquivo, diretrio e proteo visveis ao usurio e s aplicaes. Mantm informaes dos arquivos abertos por quais processos, etc.

Mtodos de Alocao
Alocao contgua: preciso saber previamente o tamanho do arquivo a ser criado e o espao alocado deve ser contguo (um bloco aps o outro). Tem problemas com fragmentao. O SO mantm apenas o nome do arquivo, o bloco de incio e o nmero de blocos usados pelo arquivo. Ideal para o mtodo de acesso direto. Alocao encadeada: O arquivo armazenado em blocos (que podem ser dispersos), sendo que cada bloco possui um "ponteiro" que indica o prximo bloco do arquivo. O ltimo bloco contm um valor nulo, indicando que chegou ao fim. O SO deve manter o nome e o bloco de incio e o final. No existe o problema de fragmentao anterior, mas s pode ser usada efetivamente para acesso seqencial. No caso de acesso direto, os blocos devem ser lidos em seqncia para chegar ao bloco desejado. Este problema pode ser reduzido com o uso de uma tabela de alocao de arquivos (FAT). Este mtodo usado no DOS / Windows 9X e OS/2 por exemplo. Ao invs de colocar as informaes de encadeamento em cada bloco, uma tabela criada no incio do disco em que cada entrada de bloco aponta para a prxima. O problema que a cabea do disco deve constantemente se deslocar para o incio do disco para acessar a FAT. Alocao indexada: Neste mtodo, cada arquivo passa a ter um bloco de ndice (tambm chamado de i-node) que aponta para cada bloco alocado pelo arquivo. O diretrio tem o endereo do bloco de ndice. Uma forma comum de se usar os blocos de ndices que eles sejam multinveis. No Unix, um bloco possui 15 entradas. As 12 primeiras endeream diretamente os blocos do arquivo. A entrada seguinte um bloco indireto simples, que aponta para um segundo bloco que por sua vez aponta para os blocos do arquivo. A 14a. e a 15a. so respectivamente blocos indiretos duplos e triplos, o que permite arquivos arbitrariamente grandes (teoricamente maiores do que o sistema de arquivos em si capaz de suportar).

Gerncia de espao livre


Vetor de bits: O espao livre pode ser controlado atravs de um vetor de bits em que cada bit representa um bloco. um mtodo bastante eficiente em termos de desempenho, pois simples encontrar um bloco livre. Porm, o vetor de bits pode ficar grande demais para ser contido na memria. Lista encadeada: Neste mtodo os blocos livres so armazenados em listas encadeadas. Cada entrada na lista aponta para o incio de um espao vazio e seu tamanho.

Recuperao
Consistncia
Por questes de eficincia, informaes de diretrio ou de arquivos podem ser mantidas na memria principal por um tempo antes de serem gravadas em disco. Atualizaes nos arquivos ou diretrios podem no ser gravadas imediatamente no sistema de arquivos. No caso de uma falha de hardware (ou mesmo queda de energia, por exemplo) estas informaes podem ser perdidas total ou parcialmente e portanto o sistema de arquivos pode ficar num estado inconsistente. Quando o sistema iniciado um programa especial compara as entradas de diretrios com os blocos de dados procurando eventuais inconsistncias e tentando corrigi-las.

Backup e restaurao
Como os discos magnticos podem eventualmente falhar ou mesmo dados podem ser perdidos devido a erros em programas ou alteraes mal-intencionadas preciso manter uma cpia de segurana atualizada dos dados. O backup feito rotineiramente atravs de programas de sistema. Em caso da perda de algum arquivo, diretrio ou mesmo unidade inteira, seus dados podem ser restaurados da cpia de segurana.

Sistemas de arquivos FAT e FAT32


Introduo
Muitos usurios de Windows j ouviram falar em parties FAT ou FAT32 sem saber ao certo o que isso significa. Essas so siglas de sistemas de arquivos para o Windows. Para este mesmo sistema operacional, h tambm o sistema de arquivos NTFS, a ser visto em outro artigo. Veja neste artigo o que um sistema de arquivos e conhea os tipos FAT e FAT 32.

O sistema de arquivos FAT


FAT a sigla para File Allocation Table (ou tabela de alocao de arquivos). O primeiro FAT surgiu em 1977, para funcionar com a primeira verso do DOS. Trata-se de um sistema que funciona atravs de uma espcie de tabela que contm indicaes para onde esto as informaes de cada arquivo. Quando um arquivo salvo num disquete por exemplo, o FAT divide a rea do disco em pequenos blocos. Assim, um arquivo pode (e ocupa) vrios blocos, mas eles no precisam estar numa seqncia. Os blocos de determinados arquivos podem estar em vrias posies diferentes. Da a necessidade de uma tabela para indicar cada bloco. Com o surgimento de dispositivos de armazenamento com mais capacidade e mais sofisticados, o sistema FAT foi ganhando alteraes (identificadas pelos nomes FAT12 e FAT16). Isso foi necessrio porque o FAT era limitado determinada capacidade de armazenamento. Por exemplo, ele s operava com tamanho mximo de 2 GB. Assim, num disco de 5 GB, seria necessrio dividilo em 3 parties. Fora o fato de que o FAT apresentava problemas com informaes acima de 512 MB. Diante de tantos problemas, em 1996, a Microsoft lanou um novo FAT: o FAT32, que compatvel com os Windows 9x/Me/2000 e XP (apesar destes dois ltimos terem um sistema de arquivos mais avanado, o NTFS).

Funcionamento do sistema FAT

Ao trabalharmos com HDs (e disquetes) necessrio prepar-los, fazendo uma formatao fsica. Este processo, divide os discos em trilhas (uma espcie de caminho circular) e setores (subdivises de cada trilha, com geralmente 512 bytes). Um conjunto de trilhas recebe o nome de cilindro. A formatao fsica j vem de fbrica e pode ser alterada se o usurio quiser dividir o disco em parties. Depois se deve fazer uma formatao lgica, que nada mais do que "instalar" o sistema de arquivos no dispositivo de armazenamento. O sistema de arquivos FAT no trabalha diretamente com cada setor, mas sim com um grupo de setores. Esse grupo chamado de cluster (ou unidade de alocao). Se por exemplo, um disco com setor de 512 bytes, tiver 5 KB de tamanho, ele ter 10 setores e 5 clusters, se cada cluster ocupar dois setores. Sendo assim, quando o FAT precisar acessar um determinado setor, primeiro ele descobre em qual cluster ele se encontra. vlido citar que tanto o FAT quanto o FAT32 trabalham de acordo com este princpio.

Tamanho de cluster
O sistema FAT exige que cada cluster do disco seja usado somente para um nico arquivo, ou seja, num mesmo cluster, no pode haver informaes sobre mais de um arquivo. Isso pode at parecer bvio, mas gera um problema: desperdcio. Para mostrar isso, vamos supor que desejamos guardar num disquete um arquivo de 5 KB. Imaginemos que este disquete tenha 8 KB de espao e dois clusters de 4 KB. Um cluster ocuparia 4 KB do arquivo, enquanto o outro cluster ocuparia apenas 1 KB. Como o cluster s pode trabalhar com um arquivo, haveria desperdcio de 3 KB. Vamos imaginar agora que em vez de termos clusters com 4 KB, teremos clusters com 2 KB. Assim, 3 cluster seriam usados, sendo que um ainda apresentaria desperdcio de 1 KB. No entanto, sobrou um cluster com 2 KB, que pode ser usado por outro arquivo. Percebe-se com isso que o tamanho do cluster deve ser o mximo que o FAT consegue manipular. Alis, a principal diferena entre FAT e FAT 32, que este ltimo consegue trabalhar com um nmero maior de clusters.

Diferenas entre FAT e FAT32


O sistema FAT (ou FAT16) consegue trabalhar com 65536 clusters. Esse nmero obtido elevando o nmero 2 a 16 (da a terminologia FAT16). Mas, na verdade, o sistema FAT16 usa apenas 65525 clusters por disco (ou partio). importante frisar que o tamanho do cluster deve obedecer tambm uma potncia de 2: 2 KB, 4 KB, 8 KB, 16 KB e 32 KB, ou seja, no possvel ter cluster de 5 KB, 7 KB, etc. O tamanho dos clusters no sistema FAT tambm uma potncia de 2. O limite mximo de tamanho para uma partio em FAT16 de 2 GB (correspondente a 2 elevado a 16). J no caso do sistema de arquivos FAT32 (seu nome se deve ao mesmo motivo que no FAT32), o tamanho dos clusters determinado atravs da relao entre os comandos FDISK e FORMAT, apesar de que possvel determinar o tamanho do cluster do FAT32 tambm por programas de terceiros, com o Partition Magic (no possvel ter clusters de diferentes tamanhos). O tamanho mximo da partio em FAT32 de 2 TB. Mas se voc fizer a contas notar que 2 elevado a 32 equivalente a 128 TB. Ento porque o FAT32 usa somente 2 TB? Pode parecer confuso, mas o nmero mximo de clusters no caso do FAT32 no de 2 elevado a 32. Apesar de seu endereamento ser de 32 bits, na verdade so usados apenas 28 bits. Com isso, a quantidade mxima de clusters seria 2 elevado a 28, que corresponde a 8 TB. No est errado, 8 TB mesmo! Ento, qual a razo do FAT32 ter tamanho mximo de espao de 2 TB? Segundo a Microsoft, o nmero mximo de setores (setores, no clusters!) que um disco pode ter de 2 elevado a 32. Como cada setor tem 512 bytes, o tamanho mximo de um disco no FAT32 acaba sendo de 2 TB. As diferenas entre FAT (ou FAT16) e FAT32 no param por a. O FAT32 tambm mais confivel, alm disso este sistema tambm consegue posicionar o diretrio principal em qualquer lugar do disco. Fora o fato de que no sistema FAT, havia uma limitao no nmero de entradas que podiam ser alocadas no diretrio principal (512 arquivos e/ou pastas). No h essa limitao no FAT32.

Algo curioso de ser citado, que o FAT32 pode mudar o tamanho da partio sem perder dados. Apesar desta capacidade, a Microsoft, por alguma razo misteriosa, no implementou esta caracterstica no FAT 32. Hoje em dia, programas particionadores, como o Partition Magic ou ento particionadores de disco de distribuies Linux, conseguem redimensionar uma partio FAT32 "inserido" este poder ao sistema de arquivos.

FAT-16
Tamanho do Cluster 2 KB 4 KB 8 KB 16 KB 32 KB Capacidade Mxima de Armazenamento 128 MB 256 MB 512 MB 1 GB 2 GB

FAT-32
Tamanho do Cluster 512 bytes 4 KB 8 KB 16 KB 32 KB Capacidade Mxima de Armazenamento 512 bytes 8 GB 16 GB 32 GB 2 TB

Mais sobre FAT32


O sistema FAT32 precisa de alteraes para trabalhar perfeitamente com discos (ou parties) maiores que 8,4 GB de tamanho. Discos que possuam esse limite de tamanho usam a forma de endereamento CHS (Cylinder-Head-Sector), onde cada setor do disco unicamente endereado usando-se o Cilindro (Cylinder), a cabea de leitura (Head) e o setor (Sector) da trilha definida pelo cilindro e cabea anteriores. Para contornar isso, foi criado o mtodo LBA (Logical Block Addressing) onde cada setor do disco endereado atravs de um nmero nico fornecido pelo BIOS. Com o LBA possvel trabalhar com discos de dezenas de GB. O Windows consegue trabalhar com discos reconhecidos por LBA. No entanto, pode haver problemas quando o HD (ou a partio) possui mais de 1024 cilindros. Para contornar isso, foi criado o sistema FAT32X, onde a tabela de alocao de arquivos deslocada para o fim do disco. Essa tcnica evita o problema porque com mais de 1024 cilindros, a FAT no consegue armazenar todas as informaes sobre o disco. Jogando-a para o final do disco, a limitao burlada, j que a mantendo no incio do disco, por uma srie de razes, no possvel aumentar o tamanho da tabela.

O que VFAT
VFAT a sigla para Virtual File Allocation Table. Trata-se de um sistema introduzido no Windows 95. Ele possui as mesmas caractersticas do sistema FAT, mas pode suportar nome de arquivos longos. O sistema de arquivos FAT s trabalha com nomes no estilo 8.3 (8 caracteres para o nome e 3 para a extenso, como "palavras.txt").Com o VFAT, possvel ter nomes de arquivos com at 256 caracteres mais 3 para a extenso. O sistema FAT32 herdou todas as caractersticas do VFAT.

Sistemas de arquivos NTFS


Introduo
NTFS a sigla para New Technology File System. Desde a poca do DOS, a Microsoft vinha utilizando o sistema de arquivos FAT, que foi sofrendo variaes ao longo do tempo, de acordo

com o lanamento de seus sistemas operacionais. No entanto, o FAT apresenta algumas limitaes, principalmente no quesito segurana. Por causa disso, a Microsoft lanou o sistema de arquivos NTFS, usado inicialmente em verses do Windows para servidores. Nas prximas linhas, voc saber a respeito do funcionamento do NTFS e conhecer sua histria.

Como o NTFS surgiu


O sistema de arquivos FAT aceitvel e perfeitamente funcional para a maioria dos usurios domsticos. Trata-se um sistema antigo, que mesmo com novas verses, herdou a simplicidade da primeira verso. As limitaes do FAT, principalmente quanto segurana, capacidade e confiana, fizeram do FAT um sistema de arquivos inadequado para uso em servidores e aplicaes crticas. A Microsoft, estando ciente disso, decidiu desenvolver um sistema de arquivos que se adequasse aos princpios de funcionamento do Windows NT e lanou o New Technology File System, conhecido pela sigla NTFS. Entre os objetivos da idealizao do NTFS estavam o fornecimento de um sistema de arquivos flexvel, adaptvel, altamente seguro e confivel. Sem dvida, tais caractersticas fizeram do Windows NT um sistema operacional aceitvel para as aplicaes cujo seu desenvolvimento foi planejado. A idia de lanar o Windows NT surgiu em 1990, quando a Microsoft sentiu a necessidade de ter um sistema operacional com as qualidades citadas acima e com funcionalidades tpicas de servidor. Nesta poca, a Microsoft no tinha nenhum sistema que pudesse se equiparar ao poderoso Unix (tinha somente o MS-DOS e o Windows 3.x). Decidida a ter uma fatia do mercado que pertencia ao Unix, a Microsoft deu incio ao desenvolvimento do Windows NT. Esta sigla - NT - significa New Technology. A Microsoft logo percebeu que este novo Windows no teria sucesso se utilizasse o FAT, pelas razes j citadas. Era preciso criar um sistema de arquivos novo. O NTFS foi desenvolvido e muitos at hoje pensam que ele um sistema de arquivos inteiramente desenvolvido pela Microsoft, o que no verdade. Seu projeto foi baseado nas anlises das necessidades do novo sistema operacional, mas seus conceitos funcionais foram "herdados" do sistema de arquivos HPFS (High Performance File System). Um sistema operacional muito conhecido nesta poca era o OS/2, um projeto realizado em conjunto entre a Microsoft e a IBM. Ambas as empresas estavam tentando criar um sistema operacional de grande sucesso, cujo apelo principal seria a capacidade grfica (lembre-se que naquela poca, era muito maior o uso de sistemas operacionais baseados em linha de comando, como o DOS). O OS/2 de fato continha inovaes tecnolgicas, mas esbarrava nos quesitos suporte e marketing. Fora isso, a IBM e a Microsoft comearam a se desentender e a empresa de Bill Gates decidiu abandonar o projeto e se dedicar ao desenvolvimento do Windows NT. No entanto, a Microsoft acabou levando consigo muitos conceitos funcionais do sistema de arquivos do OS/2, o HPFS. claro que tais conceitos foram essenciais para a criao do NTFS, o que fez com muitos pensassem que a Microsoft passou um golpe na IBM. No entanto, este artigo no visa discutir isso.

Caractersticas do NTFS
O NTFS possui caractersticas importantes, que o fez ser considerado um bom sistema de arquivos. Entre essas qualidades esto: confiana, pois permite que o sistema operacional se recupere de problemas sem perder informaes, fazendo-o ser tolerante a falhas; segurana, onde possvel ter um controle de acesso preciso e ter aplicaes que rodem em rede, fazendo com que seja possvel o gerenciamento de usurios, incluindo suas permisses de acesso e escrita de dados; armazenamento, onde possvel trabalhar com uma grande quantidade de dados, permitindo inclusive o uso de arrays RAID; rede, fazendo do sistema plenamente funcional para o trabalho e o fluxo de dados em rede. H muitas outras caractersticas, que ficam mais ainda visveis se comparadas ao FAT. A Microsoft vem trabalhando bastante para aperfeioar o NTFS, por isso, de se esperar que novas caractersticas sejam implementadas no sistema de arquivos, de acordo com o lanamento de novas verses do Windows.

Verses do NTFS
Assim como aconteceu com o FAT, o NTFS tambm tem verses, que foram lanadas principalmente no surgimento de novos Windows. A cada verso, correes de falhas so feitas, suportes a hardware so implementados e novas caractersticas so dadas ao NTFS. A princpio houve o NTFS 1.0 usado no Windows NT 3.1 (por isso, esta verso do NTFS tambm ficou conhecida por NTFS 3.1). Com o lanamento do Windows NT 4, o NTFS ganhou a verso 1.1 (ou verso 4). Esta verso tambm foi usada no Windows NT 3.51. O sucesso do Windows NT foi to grande que sua verso do NTFS virou referncia em sistemas de arquivos. A Microsoft no ficou parada e lanou a verso conhecida como NTFS 5.0 com o lanamento do Windows 2000, substituto do Windows NT. Apesar da nova verso, o NTFS 4 foi to difundido que seu suporte a outro sistemas operacionais no acabar to cedo. Esta nova verso do NTFS possui novas caractersticas importantes, alm daquelas herdadas da verso anterior. Essas mudanas foram essenciais para fazer do Windows 2000 um sistema que fosse realmente adequado para substituir o Windows NT. S para servir de exemplo, o servio Active Directory um dos chamativos do Windows 2000 e foi implementado graas a alteraes no FTFS. Entre os novos recursos do NTFS 5 esto: Reparse Points, onde arquivos e pastas dentro do sistema de arquivos podem ter aes associadas a eles, de forma que operaes particulares a estes arquivos possam ser executadas; novas caractersticas de segurana, onde o mecanismo para gerenciamento da segurana e de usurios, principalmente em relao a acesso e arquivos foram melhorados; quotas de discos, onde o administrador do sistema pode determinar o espao em disco disponvel a um usurio ou a um grupo de usurios; dirios de alteraes, onde volumes podem ser ajustados para rastrear as operaes efetuadas nos arquivos e pastas; codificao, onde o sistema permite que arquivos sejam codificados/decodificados automaticamente; suporte a arquivos esparsos, onde possvel armazenar de forma eficiente arquivos esparsos (que so arquivos grandes mas que possuem algumas estruturas vazias, desperdiando espao em disco). Com o lanamento do Windows XP, Windows 2003 Server e futuras verses, o NFTS vai ganhando melhoramentos e novas caractersticas, mas certamente a verso 4 ainda ser uma referncia. Isso deixa claro que o NFTS no deixar de ser usado to cedo pela Microsoft.

Funcionamento do NTFS
Conforme as caractersticas herdadas do HPFS, o NTFS trabalha de uma forma mais eficiente no gerenciamento do espao de disco. Isso porque as informaes so armazenadas em uma base por setor do disco, em vez de utilizar clusters de mltiplos setores. Essa forma de trabalho, traz vrias vantagens, como menor necessidade de desfragmentao de disco e maior consistncia de dados. Isso porque essa arquitetura de dados por base em setor permite manter os dados prximos, ou seja, no espalhados pelo disco. At o gerenciamento de grandes quantidades de dados beneficiado por esta caracterstica, j que como acontecia com o FAT, trabalhar com clusters por setor, fazia do sistema de arquivos dependente de um nmero pr-determinado de setores.

Sistemas de Arquivos no Linux


Todo sistema operacional precisa de um sistema de arquivos e o Linux no exceo regra, pois afinal de contas um sistema de arquivos serve para fornecer ao sistema operacional toda a uma estrutura para ler, gravar e executar arquivos. Dependendo do tipo de sistema de arquivos pode se ter determinados recursos. Um bom exemplo a diferena entre um sistema operacional Windows 2000 formatado em FAT32 e outro em NTFS. Veremos que o sistema formatado em NTFS ter muito mais recursos de segurana, assim como regras de permisses mais definidas em relao ao FAT32. Hoje em dia, o Linux tem uma gama muito grande de opes de sistema de arquivos: Desde o velho EXT2 at os atuais com suporte a Journaling, como o EXT3, ReiserFS e XFS.

Um pouco de histria
Os sistemas de arquivos utilizados atualmente no Linux so avanados e tem vrios recursos, mas no foi sempre assim. Nas primeiras verses do kernel, o sistema de arquivos utilizado era o EXT. Extremamente frgil e com muitas limitaes, como por exemplo, permisso para criao de parties de somente at 2GB e fcil desfragmentao. A partir do EXT2 a limitao de 2GB para parties caiu por terra, j que ele permite criao de parties de at 4Terabytes!

EXT2
Sem dvida alguma o EXT2 foi uma evoluo e tanto em relao ao EXT, pois neste sistema de arquivos muitas melhorias foram implantadas, fazendo deste modo com que o Linux tivesse um sistema de arquivos com recursos importantssimos para uma boa administrao de sistemas, tais como o suporte a regras de permisses bem definidas. A estrutura do EXT2 pode ser definida assim: Boot Block Onde so gravadas as informaes necessrias para a inicializao do sistema. Inodes Ficam armazenadas todas as informaes sobre cada arquivo: Permisso de acesso, tipo de arquivo, identificao, dono do arquivo, data que foi criado e modificado, tamanho e a localizao para o bloco de dados onde o arquivo est guardado. Diretrios So tipos de arquivos especiais que armazenam uma lista de todos os arquivos e subdiretrios subordinados a ele. Links - Um recurso muito interessante no qual pode se apontar para um outro arquivo ou diretrio qualquer. Quando se fala em arquivos e diretrios no Linux, falamos em tudo, literalmente. Ao contrrio do Windows, que trata dispositivos de hardware como tal, o Linux trata tudo como arquivo, ou seja, um disco rgido um arquivo, um modem tambm, assim como um CD-ROM, impressora, placa de som, etc... Os dispositivos de hardware ficam todos no diretrio /dev. Outra caracterstica o recurso de montagem. O sistema de arquivos do Linux obedece a uma hierarquia de arquivos e diretrios, onde pode haver subdiretrios relacionados. E todos devem estar organizados numa partio, que onde o sistema de arquivos criado. Estas parties podem ser montadas ou desmontadas. Quando o sistema iniciado, verifica-se no arquivo /etc/fstab as parties e dispositivos a serem montados. Ao desligar o sistema, as mesmas so desmontadas. Mesmo com o sistema ativo, as parties ou dispositivos podem ser montados ou desmontados a qualquer hora, inclusive em diretrios diferentes, o que d uma versatilidade muito grande. No Linux pode se acessar parties de diversos tipos, como FAT, FAT32, iso9660 e outras, inclusive pode se instalar um sistema nestas parties, assim como rod-lo atravs de um CD-ROM. Isso se deve graas ao VFS (Virtual File System), que faz todo um trabalho de gerenciamento do sistema de arquivos desconhecido, decifrando sua estrutura e repassando as para o kernel e programas, para que estes possam trabalhar sob o FS. evidente que isso tem um preo, que se traduz em perda de rendimento, devido a emulao de estruturas. Para quem tem dual boot a versatilidade do Linux um bom recurso, mas at pouco tempo atrs ainda existia uma pequena barreira: NTFS. Tantos recursos assim fazem com que o EXT2 seja poderoso, mas evidente que ele tem as suas fragilidades. Algumas delas podem at comprometer o bom andamento do trabalho. Um grande problema do EXT2 a sua baixa tolerncia a falhas em caso de quedas de energia ou desligamento inadequado, sendo talvez at mais frgil do que a FAT32 do Windows. Um desligamento inadequado num sistema EXT2 fora o uso do fsck para verificar a integridade do sistema. Algo mais ou menos semelhante ao que acontece com o Scandisk do Windows. Esta checagem pode demorar vrios minutos, dependendo do tamanho do disco rgido, e conforme for o caso, pode haver at perda de dados, se o arquivo estiver sendo gravado na hora do desligamento pode haver perda de um diretrio inteiro. Estes problemas foram contornados com a criao dos sistemas de arquivos com Journaling

Journaling
As limitaes do EXT2 comprometiam sistemas de misso crtica, onde uma parada de alguns minutos ou a perda de dados poderiam causar prejuzos considerveis. Os sistemas de arquivos com tecnologia Journaling tm a capacidade de acompanhar as mudanas que sero feitas nos arquivos antes de serem efetivadas. Estes registros so gravados numa rea separada do sistema de arquivos, chamada Journal ou registros de LOG. Depois que as mudanas so efetivadas, estes registros anteriores so eliminados. Na prtica como se fosse um log constante, em full time, constantemente atualizado. Isso faz com que os FS com esta tecnologia tenham uma alta tolerncia a falhas e a perda de dados diminua consideravelmente. Com estes FS no mais necessria a atuao do FSCK a cada desligamento inadequado do sistema, visto que ao reiniciar a mquina o sistema verificar no registro de LOG se h mudanas marcadas como no feitas. Caso positivo, estas sero efetivadas e o sistema inicializar rapidamente e sem maiores problemas, poupando tempo e dores de cabea. Nesta categoria de sistemas de arquivos existem algumas opes como EXT3, ReiserFS e JFS, sendo que os mais utilizados so o EXT3 e o ReiserFS

ReiserFS
Uma das grandes vantagens do ReiserFS alm do recurso de Journaling, seu desempenho, principalmente se forem manipulados arquivos pequenos. Isto se deve graas a seu recurso de blocos dinmicos, ou seja, o ReiserFS no se prende a blocos de tamanho fixo. Ele ajusta o tamanho do bloco conforme o tipo de arquivo. Isso resulta num ganho de desempenho e espao em disco considervel. Alm destes fatores, o ReiserFS tem uma vantagem de desempenho em relao ao EXT3 devido ao modo como ele armazena os registros no Journal. Ele armazena somente as informaes sobre a rea de metadata (estrutura de controle de um arquivo, ou seja, onde especificado seu tamanho, permisses, data de criao, modificao, etc..) fazendo com que o disco rode mais rpido pois menos dados so verificados para armazenar em LOG. Os dados do arquivo em si, ou seja, as informaes realmente armazenadas nos arquivos no so registradas no Journal. Isto pode fazer com que num desligamento inadequado, possa se recuperar o arquivo, mas os dados contidos nele podem ficar truncados ou mesmo perdidos. Pode se considerar isto como uma desvantagem do ReiserFS, pois existe um risco de perda parcial de dados. Este FS tem um progresso considervel a cada verso, fazendo com que ele seja uma opo cada vez mais vivel junto com o EXT3.

EXT3
Se o ReiserFS um sistema de arquivos com recursos novos, o EXT3 o sucessor natural do EXT2, fazendo com que este seja o sistema de arquivos para Linux mais utilizado atualmente. Ele tem as caractersticas do EXT2 com a grande vantagem de ainda ter o suporte para tecnologia Journaling e ainda por cima ser mais rpido que o seu antecessor. Este FS diferencia-se do modo de trabalho em Journaling do ReiserFS na maneira como guarda os registros no LOG. Ao passo que o ReiserFS guarda apenas informaes da Metadata como dissemos antes, o EXT3 guarda no s as informaes da Metadata como tambm os dados em si do arquivo. Para isso ele deve trabalhar no modo ordered, que o padro no EXT3. Graas a este modo de trabalho, uma perda de dados do arquivo reduzida, mas existe um fator preocupante: Devido ao fato do registro de LOG ser completo, o Journal acessado com muito mais frequncia do que no ReiserFS, causando uma perda de desempenho em relao a este FS, alm disso, existe a possibilidade do prprio Journal se corromper num desligamento incorreto. Caso isto ocorra, ao reiniciar o sistema, o FSCK rodar, assim como no EXT2 e perda de dados do arquivo que estava sendo acessado na hora do desligamento podem ocorrer. Se tiver muito azar pode-se perder at pastas inteiras.

Todos os sistemas operacionais tm sistemas de arquivos. Usando o Windows como exemplo, existe o drive "C:\", e nele temos o (sub)diretrio Windows, que contm o sistema operacional; o (sub)diretrio Arquivos de Programas, que contm a maioria dos produtos instalados, e assim por diante. Os arquivos ficam divididos em (sub)diretrios diferentes por uma questo de afinidade e organizao. Da mesma maneira temos essa organizao no Linux. O sistema de arquivos no Linux semelhante a uma rvore de cabea para baixo. Temos inicialmente o diretrio raiz (equivalente ao C: do Windows), e a partir dele as ramificaes. / Diretrio raiz do sistema de arquivos. abaixo dele que se situam todos os outros. /bin Arquivos executveis de comandos essenciais. /boot Arquivos estticos necessrios a inicializao do sistema. /etc Arquivos de configurao do sistema. /home Lugar onde ficam os diretrios locais dos usurios. /lib Arquivos de bibliotecas essenciais ao sistema, utilizadas pelos programas em /bin. /mnt Usualmente o ponto de montagem de dispositivos na mquina. /proc Informaes do kernel e dos processos. /root Diretrio local do superusurio. /sbin Arquivos essenciais ao sistema. Normalmente s o superusurio tem acesso a estes arquivos. /tmp Diretrio de arquivos temporrios. /usr Arquivos pertencentes aos usurios. ( a segunda maior hierarquia de diretrios presente no Linux, s perdendo para o diretrio raiz). /var Diretrio onde so guardadas informaes variveis sobre o sistema.

UNIVERSIDADE FEDERAL DE SANTA CATARINA

MODULO III SORC1: Sistemas Operacionais

5 GERNCIA DE ENTRADA E SADA

Introduo
Uma das principais funes do sistema operacional controlar todos os dispositivos de entrada/sada (E/S) do computador, emitindo comandos para os dispositivos, atendendo interrupes e manipulando erros. Deve tambm prover uma interface entre os dispositivos e o resto do sistema, que seja simples e fcil de usar (se possvel, a interface deve ser a mesma para todos os dispositivos). O cdigo de entrada/sada representa uma frao significativa do total do sistema operacional. A forma como o sistema operacional gerencia E/S o objeto desta apostila. O sistema operacional no se preocupa com o funcionamento interno e com a forma que construdo o hardware de entrada/sada, mas com a programao e utilizao deste hardware

Princpios do Hardware
O objetivo primeiro de um computador solucionar problemas. Para tanto, necessrio que algum tipo de mecanismo exista para que possamos informar esse problema ao computador e recuperar sua soluo. Esse mecanismo constitui o que denominamos genericamente de dispositivos de entrada e sada. Atualmente, possvel encontrar uma grande variedade de dispositivos, desde dispositivos desenvolvidos para permitir a comunicao do homem com o computador (teclado, mouse, monitor de vdeo, etc) at dispositivos que possibilitam a comunicao entre computadores (modems, placas de redes, etc), ou ainda aqueles destinados ao armazenamento de informaes (unidades de fita, disquetes, disco rgido, CD-ROM, etc). Apesar dessa diversidade, esses dispositivos de entrada e sada possuem alguns aspectos de hardware em comun. De acordo com o sentido do fluxo de dados entre o computador e o dispositivo, esses podem ser divididos em perifricos de entrada, perifricos de sada, ou ainda perifricos de entrada e sada. Um perifrico pode ser visto como qualquer dispositivo conectado a um computador de forma a possibilitar sua interao com o mundo externo. Os perifricos so conectados ao computador atravs de um componente de hardware denominado interface. Isso significa que os perifricos no esto conectados diretamente aos barramentos do computador como poderamos imaginar, mas sim s interfaces. Essas, por sua vez, so interconectadas aos barramentos internos do computador. Dessa forma, as interfaces constituem um elemento chave da coordenao da transferncia de dados entre perifrico e o processador, ou entre perifrico e memria. Considerando a diversidade, a complexidade, e as diferentes formas de operaes em funo do tipo de perifrico, as interfaces empregam no seu projeto um outro componente de hardware: o controlador. A funo bsica de um controlador implementar um conjunto de operaes genricas do tipo "ler dados", "escrever dados", "reinicializar", "ler status" ou "escrever comando" traduzindo-as para uma seqncia de acionamentos eletrnicos, eltricos e mecnicos capazes de realizar a operao solicitada. Para isso, o controlador deve saber como o perifrico funciona, resultando que cada tipo de perifrico necessita de um controlador diferente. Um controlador nada mais que um processador projetado especificamente para realizar uma funo, como por exemplo, controlar um disco rgido.

Dispositivos de E/S
Dispositivos de E/S podem ser grosseiramente divididos em duas categorias: dispositivos de bloco e dispositivos de caracter. Um dispositivo de bloco armazena informaes em blocos de tamanho fixo, cada um com seu prprio endereo. Tamanhos comuns de blocos esto na faixa de 128 bytes a 1024 bytes. A propriedade essencial dos dispositivos de bloco a possibilidade de ler ou escrever cada bloco independentemente de todos os outros. Em outras palavras, em qualquer instante, o programa pode ler ou escrever qualquer um dos blocos. Discos so dispositivos de bloco. O outro tipo de dispositivo de E/S, o de caracter, libera ou aceita uma fila de caracteres sem definir nenhuma estrutura de bloco. Ele no enderevel e no aceita operaes de busca. Terminais, impressoras, leitoras ticas e outros dispositivos que no trabalham como os discos so exemplos de dispositivos de caracter. Este esquema de classificao no perfeito. Alguns dispositivos no so enquadrados nele. Clocks, por exemplo, no so endereveis por bloco. Nem geram ou aceitam filas de caracteres. Tudo o que fazem gerar interrupes em intervalos regulares. Contudo, este modelo geral o suficiente para ser usado como base na construo de um sistema operacional com bom nvel de independncia dos dispositivos de E/S. O sistema de arquivo, por exemplo, negocia apenas com dispositivos de blocos abstratos, e deixa a parte dependente do dispositivo para o software de mais baixo nvel, chamado acionadores de dispositivos (device drivers).

Controladores de Dispositivos
Unidades de E/S consistem tipicamente de componentes mecnicos e eletrnicos. freqente a separao das duas pores para se obter um projeto mais geral e modular. O componente eletrnico chamado de controlador do dispositivo (device controller ou adapter). Em mini e microcomputadores, ele normalmente toma forma de um circuito impresso que pode ser inserido no computador. O componente mecnico o dispositivo propriamente dito. O carto do controlador normalmente tem um conector, no qual um cabo condutor do prprio dispositivo pode ser conectado. Muitos controladores podem manusear dois ou mais dispositivos do mesmo tipo. A distino entre dispositivo e controlador deve ser ressaltada, j que o sistema operacional v o controlador, no com o dispositivo. Normalmente, minicomputadores e microcomputadores usam um barramento nico (figura 5.1) para comunicao entre CPU e os controladores. Mainframes freqentemente usam um modelo diferente, no qual mltiplos barramentos e computadores especializados de E/S, chamados canais de E/S, aliviam parte da carga da CPU.

Figura 1.1: Um modelo para conexo da CPU, memria, controladores e dispositivos de E/S A interface entre o controlador e o dispositivo , via de regra, uma interface de baixo nvel. O disco, por exemplo, pode ser formatado com 8 setores de 512 bytes por trilha. O que realmente sai do driver, entretanto, uma lista serial de bits, partindo com um prembulo, depois os 4096 bits no

setor, e finalmente o checksum ou o cdigo de correo de erro. O prembulo escrito quando o disco formatado, e contm o nmero de cilindros e de setores, o tamanho do setor, e outros dados. A tarefa do controlador converter a lista serial de bits em um bloco de bytes e realizar alguma correo de erro necessria. O bloco de bytes tipicamente primeiro montado, bit por bit, em um buffer mantido no controlador. Aps o checksum ter sido verificado e o bloco declarado livre de erro, ele pode ento ser copiado para a memria principal. O controlador para o terminal CRT (catode ray tube) tambm trabalha como um dispositivo serial de bits e em baixo nvel. Ele l da memria o byte contendo o caracter a ser exibido, e gera os sinais usados na modulao do feixe do CRT para causar a escrita na tela. O controlador tambm gera os sinais para o feixe CRT fazer o retrace horizontal aps ele ter terminado de esquadrinhar a linha, como tambm, sinais para fazer o retrace vertical aps a tela toda ter sido esquadrinhada. Se no tivssemos um controlador CRT, o sistema operacional teria que gerar estes sinais no tubo. Com o controlador, o sistema operacional inicia-o com poucos parmetros, tais como o nmero de caracteres por linha e o nmero de linhas por tela, deixando o controlador tomar conta do direcionador do feixe de raios catdicos. Cada controlador tem alguns poucos registradores que so usados para comunicao com a CPU. Em alguns computadores estes registradores so parte do espao de endereamento regular. A tabela 1.1 mostra os endereos de E/S e os vetores de interrupo alocados para alguns dos controladores do IBM PC. A atribuio de endereos de E/S para dispositivos feita por um decodificador lgico associado ao controlador. Alguns IBM PC-compatveis usam diferentes endereos de E/S.

Tabela 1.1: Alguns exemplos de controladores, os seus endereos de E/S e seus vetores de interrupo no IBM PC O sistema operacional realiza E/S escrevendo comandos nos registradores dos controladores. O controlador de disquete do IBM PC, por exemplo, aceita 15 diferentes comandos, tais como read, write, seek, format, e recalibrate. Muitos dos comandos tm parmetros, os quais so tambm carregados nos registradores do controlador. Quando um comando aceito, a CPU pode abandonar o controlador atender a outra tarefa. Quando completado, o controlador causa uma interrupo com o objetivo de permitir que o sistema operacional tome o controle da CPU e teste o resultado da operao. A CPU obtm o resultado e o status do dispositivo pela leitura de um ou mais bytes de informao nos registradores do controlador.

Acesso Direto Memria (DMA)


Muitos controladores, especialmente os que operam em blocos, suportam DMA. Vejamos primeiro como discos operam sem DMA. Primeiro, o controlador l serialmente o bloco (um ou mais setores) do dispositivo, bit a bit, at que este seja transferido para o buffer interno do controlador. Depois, o controlador executa a operao de checksum para atestar que o bloco est livre de erros. Esta operao executada somente aps o bloco todo ter sido transferido. Ento, o controlador causa uma interrupo.

Quando o sistema operacional reassume a CPU, ele pode ler o bloco do buffer do controlador (byte a byte ou palavra a palavra) numa operao cclica, onde em cada ciclo um byte ou palavra transferido do controlador para a memria. Obviamente, o ciclo de transferncia de bytes dos controladores para a memria consome um tempo aprecivel da CPU. DMA foi criado para livrar a CPU desta tarefa. Quando utilizado, a CPU fornece duas informaes ao controlador (alm do endereo do bloco a ser lido): o endereo de memria para onde o bloco deve ser copiado e o nmero de bytes a serem transferidos (ver figura 1.2).

Figura 1.2: A transferncia via DMA processada sem interveno da CPU Aps o controlador ter lido o bloco, efetuado o checksum e no ter constatado erros de leitura, o prprio controlador copia (via barramento) o primeiro byte (ou palavra) para o endereo de memria suprido pela CPU quando da requisio da operao. A partir da, a cpia prossegue se incrementado o endereo da memria e decrementado-se o contador do DMA (bytes transferidos), at que este se torne zero. Neste instante, o controlador causa uma interrupo. Quando o sistema operacional reassume a CPU, nenhuma transferncia necessita ser efetuada pois o buffer requisitado j se encontra na memria.

Princpios do Software
Os objetivos gerais do software de E/S so fceis de serem estabelecidos. A idia bsica organizar o software como uma srie de camadas, com as mais baixas escondendo peculiaridades do hardware e as mais altas mostrando-se simples para o usurio.

Objetivos do Software de E/S


O conceito chave no projeto do software de E/S a independncia do dispositivo (device independence). Deve ser possvel escrever programas que usem arquivos gravados em disquete ou em disco rgido, sem a necessidade de modificar o programa para cada tipo de dispositivo. De preferncia, deve ser possvel utilizar o programa sem recompil-lo. Relacionado com a independncia do dispositivo est a uniformidade de nome. O nome de um dispositivo ou arquivo deve ser simplesmente uma cadeia de caracteres (string) ou um inteiro no dependente do dispositivo em nenhum caso. Outra caracterstica importante a manipulao de erros. Em geral os erros devem ser manipulado o mais prximo possvel do hardware. Se o controlador encontra um erro, ele deve tentar corrigi-lo, se possvel. Se no, o driver do dispositivo deve faz-lo, talvez apenas tentando ler novamente.

Muitos erros so transientes e desaparecem se a operao for repetida. Somente se as camadas mais baixas no conseguirem resolver o problema que este deve ser apresentado s camadas superiores. Outra caracterstica chave so as transferncias sncronas (blocos) e assncronas (manipuladas por interrupo). Muitos dispositivos de E/S so assncronos: a CPU inicia a transferncia e se ocupa de outras atividades at que chegue uma interrupo. O sistema operacional realiza as operaes de forma assncrona, mas para o usurio ela se apresenta como transferncia de blocos (o que torna muito mais simples a programao). O conceito final que deve ser observado dispositivos compartilhados e dedicados. Alguns dispositivos de E/S, como discos, podem ser utilizados por muitos usurios ao mesmo tempo. Outros dispositivos, como impressoras, devem ser dedicados a um nico usurio at que este finalize a operao. A incluso de dispositivos dedicados introduz uma variedade de problemas, como o deadlock. Sistemas operacionais devem manipular ambos os dispositivos de maneira a evitar estes problemas. Estes objetivos podem ser organizados de maneira clara e eficiente pela estruturao do software em quatro camadas: 1. Manipulao de interrupes (mais baixo nvel). 2. Drivers de dispositivos. 3. Software de E/S independente do dispositivo. 4. Software do nvel do usurio (mais alto nvel topo).

Figura 1.3: Camadas do Software de E/S

Manipuladores de Interrupes
Interrupes so eventos complicados de se tratar. Elas devem ser isoladas de modo que apenas uma pequena parte do sistema operacional as manipule. Um meio para isol-las bloquear os processos aguardando operaes de E/S at que uma interrupo anuncie que a operao se completou. Quando a interrupo acontece, a rotina de tratamento daquela interrupo libera o processo bloqueado. Em alguns sistemas isto conseguido fazendo-se um UP sobre um semforo. Em outros, ele far um SIGNAL sobre a varivel de condio no monitor. E ainda em outros, uma mensagem enviada ao processo bloqueado. Em todos os casos o efeito da interrupo que o processo que estava previamente bloqueado dever agora estar habilitado para execuo.

Drivers de Dispositivos
Todo o cdigo dependente do dispositivo aparece no driver do dispositivo. Driver a parte do SO que trabalha mais prxima do dispositivo e sua controladora. Apenas o driver precisa saber os detalhes da operao do dispositivo. Um driver em geral trata de um nico tipo de dispositivo ou no mximo de uma classe de dispositivos semelhantes.

Foi visto que cada controlador de dispositivos tem registradores para receber comandos. O driver do dispositivo envia estes comandos e testa se foram carregados propriamente. Desta maneira, o driver a parte do sistema operacional que conhece quantos registradores tem, por exemplo, o controlador de disco e para que estes so utilizados. Ele reconhece setores, trilhas, cilindros, cabeas de leitura/escrita, motor, fator de entrelaamento e todos os mecanismos que fazem um disco trabalhar propriamente. Em termos gerais, o trabalho de um driver aceitar requisies abstratas de um software de mais alto nvel, e providenciar para que o pedido seja atendido. Uma tpica requisio ler um bloco. Se o driver est desocupado no momento, a requisio aceita, sendo processada imediatamente. Caso o driver esteja processando uma requisio, esta normalmente entra numa fila de requisies pendentes. O primeiro passo transcrever os termos abstratos da requisio para aes concretas. Para um disk driver, por exemplo, isto significa informar onde o bloco se encontra no disco, verificar se o motor do drive est girando, determinar se o brao est posicionado no cilindro apropriado, e assim por diante. Em poucas palavras, o driver deve decidir quais operaes do controlador so requeridas e em que seqncia. Uma vez determinados quais comandos emitir ao controlador, este inicia a emisso escrevendo nos registradores do controlador do dispositivo. Alguns controladores podem manusear somente um comando por vez. Outros controladores aceitam uma lista de comandos, os quais so carregadas sem a ajuda do sistema operacional. Aps o comando ou comandos terem sido emitidos, podem ocorrer duas situaes. Em muitos casos o device driver deve esperar at que o controlador execute as operaes requisitadas. Se estas operaes forem lentas (envolvendo movimentos mecnicos, por exemplo), o driver bloqueia at que as operaes se completem. Em outros casos, entretanto, as operaes so rpidas, situao esta em que o driver no precisa ser bloqueado. Como um exemplo dessa situao, o deslocamento da tela em terminais (incluindo o IBM PC) requer apenas escrita de uns poucos bytes nos registradores do controlador. Nenhum movimento mecnico necessrio e a operao toda pode se completar em alguns poucos microssegundos. Neste ponto, aps a operao ter sido completada, o driver deve verificar a ocorrncia de erros. Se tudo estiver correto, ele passa os dados (o bloco lido, por exemplo) para a prxima camada do software de E/S. Finalmente, ele retorna alguma informao de status de erros. Se alguma requisio est na fila, uma delas pode agora ser selecionada e iniciada. Se nenhuma est na fila, o driver fica aguardando a prxima requisio.

Software de E/S Independente do Dispositivo


Embora alguns dos softwares de E/S sejam especficos do dispositivo, uma grande frao deles independente do dispositivo. O limite exato entre os drivers e o software independente dos dispositivos funo do sistema, uma vez que algumas funes que so independentes do dispositivo, podem atualmente estarem nos drivers, por eficincia e por outras razes. As funes listadas abaixo so tipicamente implementadas no software independente do dispositivo: interface uniforme para com os drivers de dispositivos; identificao simblica dos dispositivos; proteo dos dispositivos; manipulao de blocos independente dos dispositivos; bufferizao; alocao de espao nos dispositivos do tipo bloco; alocao e liberao de dispositivos dedicados; gerenciamento de erros. A funo bsica do software independente do dispositivo realizar as funes de E/S que so comuns a todos os dispositivos, e prover uma interface uniforme para o software do usurio. A questo principal em um sistema operacional como objetos tais como os arquivos e dispositivos de E/S so identificados. O software independente do dispositivo se encarrega do mapeamento

simblico dos nomes dos dispositivos para os seus drivers apropriados. No UNIX, por exemplo, cada device driver tem a ele associado um inode, o qual armazena informaes necessrias localizao do driver e do dispositivo associados ao inode. Estes dispositivos se localizam no diretrio /dev e o usurio tem permisso limitada para oper-los. Relacionado ao nome est a proteo. Como o sistema previne usurios de acessar dispositivos que no esto autorizados a acessar? Em muitos microcomputadores, no h nenhuma proteo. Em muitos mainframes e superminis, acessos a dispositivos de E/S pelos usurios completamente proibido. Diferentes discos podem ter diferentes tamanhos de setor. O software independente do dispositivo deve encobrir este fato e prover um tamanho de bloco uniforme para camadas superiores, por exemplo, pelo tratamento de vrios setores como um simples bloco lgico. Deste modo, os nveis superiores somente negociam com dispositivos abstratos que usam o mesmo tamanho de bloco lgico, independente do tamanho fsico do setor. Buferizao uma outra questo, tanto para dispositivos de blocos como para de caracter. Para dispositivos de bloco, o hardware executa escrita e leitura de blocos inteiros, mas o processo do usurio est livre para ler ou escrever unidades arbitrrias. Para dispositivos de caracter, usurios podem escrever dados no sistema mais rpido do que a taxa com que eles so transferidos para o dispositivo fsico, necessitando assim de buferizao. Entrada de teclado outro exemplo de atividade que requer buferizao. Quando um arquivo criado e preenchido com dados, novos blocos de disco tm que ser alocados para o arquivo. Para realizar esta alocao, o sistema operacional precisa de uma lista ou mapa de bits dos blocos livres no disco, mas o algoritmo para localizar um bloco livre independente do dispositivo e pode ser implementado acima do nvel do driver. Alguns dispositivos, tais como as fitas magnticas, podem ser usadas somente por um simples processo em um dado momento. o sistema operacional que examina a requisio para usar o dispositivo e aceita ou no, dependendo da disponibilidade do dispositivo requisitado. A manipulao de erros tambm feita nesta camada. Um erro tpico causado por um bloco do disco ruim e que no pode mais ser lido. Aps o driver tentar ler o bloco vrias vezes, ele informa ao software independente do dispositivo a razo. O erro ento tratado. Se ocorreu num arquivo do usurio, suficiente informar o erro para o mesmo. Entretanto, se o erro ocorreu numa rea crtica, o sistema operacional deve apresentar uma mensagem e, eventualmente, terminar sua execuo.

Software em Nvel do Usurio


Embora muito do software de E/S esteja embutido no sistema operacional, uma pequena poro dele consiste de bibliotecas ligadas juntamente com programas do usurio, e at mesmo com programas inteiros executando fora do ncleo. Chamadas de sistema, incluindo chamadas do subsistema de E/S, so normalmente feitas por procedimentos da biblioteca. A coleo de todos estes procedimentos da biblioteca parte do sistema de E/S. Enquanto estes procedimentos fazem pouco mais que colocar seus parmetros em lugares apropriados para a chamada do sistema, h outros procedimentos de E/S que fazem o trabalho real. Em particular, a formatao de uma entrada e sada feita por um procedimento da biblioteca. Nem todo o software de E/S utilizado pelo usurio consiste de procedimentos da biblioteca. Outra importante categoria o sistema spooling. Spooling o modo de negociao com os dispositivos dedicados de E/S em um sistema com multiprogramao. Considere um dispositivo tpico: impressora. Embora seja fcil permitir que algum processo do usurio abra o arquivo especial associado impressora, suponha que o processo permanea com o processo aberto por vrias horas. Nenhum outro processo poder imprimir. Ao invs disso, o que feito criar um processo especial, chamado daemon, e um diretrio especial, chamado spooling directory. Para imprimir um arquivo, o aplicativo recebe o arquivo inteiro para ser impresso e o coloca no spooling directory. Ento o daemon, o nico processo que tem permisso de usar o arquivo especial associado impressora, transfere um arquivo do spooling

directory para a impressora por vez. Protegendo-se os arquivos especiais contra o uso direto por usurios, o problema de se ter algum os monopolizando eliminado. Spooling no somente usado para impressoras. Ele tambm usado em outras situaes. Por exemplo, transferncia de arquivo na rede freqentemente usa um network daemon. Para enviar um arquivo a algum lugar, o aplicativo coloca o arquivo dentro do diretrio de spooling da rede. Mais tarde, o network daemon acessa o arquivo e o transmite. A figura 1.4 resume o sistema de E/S, mostrando todas os nveis e funes principais de cada nvel.

Figura 1.4: Nveis do sistema de E/S e funes principais de cada nvel

Definies
Buffer
Como a velocidade de transferncia entre a CPU e o dispositivo, ou entre dispositivos pode ser muito diferente, convm armazenar temporariamente os dados transferidos na memria. Esta tcnica chama-se buffering. Os dados so lidos de um dispositivo e colocados no buffer at que ele fique cheio. Ento o outro dispositivo pode ler um "buffer" inteiro de uma vez, o que mais eficiente do que aguardar o dispositivo original receber ou enviar os dados diretamente.

Cache
O cache uma regio de memria rpida que armazena cpias de dados. Por exemplo: se um determinado arquivo em disco acessado com muita frequncia mais eficiente manter uma cpia dele na memria e acess-la sempre que for necessrio carregar aquele arquivo.

Spool
Um spool um tipo de buffer que armazena sada para um dispositivo, como uma impressora ou uma unidade de fita, que no podem acessar fluxos de dados intercalados.

UNIVERSIDADE FEDERAL DE SANTA CATARINA

MODULO III SORC1: Sistemas Operacionais

6 REFERNCIAS BIBLIOGRFICAS
DENNING, P. The Working Set Model for Program Behavior. Communications of the ACM, vol. 11, n5, Mai 1968. DENNING, P. Virtual Memory. Computer Surveys, vol. 2, n3, Dec. 1970. DENNING, P. Third Generation Computer Systems. Computer Surveys, vol. 3, n4, Dec. 1971. DENNING, P. Working Sets Past and Present. IEEE Transactions on Software Engineering, vol. SE-6, n1, Jan. 1980. MACHADO, F.M., MAIA, L.P. Introduo Arquitetura de Sistemas Operacionais. LTC, 1992. MACHADO, F.M., MAIA, L.P. Arquitetura de Sistemas Operacionais. 2 ed., LTC, 1997. MAIA, L.P. Pgina do Livro Arquitetura de Sistemas Operacionais. Disponvel na Internet em http://home.ismnet.com.br/~lpmaia/aso.htm, 1998. 84 MAIA, L.P. Multithread. Monografia da disciplina Laboratrio de Sistemas Operacionais II, NCE/UFRJ, 1999. OLIVEIRA, Rmulo Silva de, et al. Sistemas Operacionais. 2 Edio. Porto Alegre: Editora Sagra Luzzato, 2001. SILBERSCHATZ, Abraham, et al. Sistemas Operacionais - Conceitos e Aplicaes. 3 Tiragem. Rio de Janeiro: Editora Campus, 2001. TANENBAUM, A.S. Modern Operating Systems. Prentice-Hall, 1992. 85 TANENBAUM, A.S. MINIX Information Sheet. Disponvel na Internet em http://www.cs.vu.nl/~ast/minix.html, 1996. TANENBAUM, A.S., WOODHULL, A.S. Operating Systems: Design and Implementation. Prentice-Hall, 1997. Felipo Soranz. Sistema de Arquivos. Disponvel em: <http://geocities.yahoo.com.br/feliposz/imapes/so/aula07.txt>. Acessado em 12 abr 2005. InfoWester. Sistemas de arquivos FAT e FAT32. Disponvel em: <http://www.infowester.com/fat.php>. Acessado em 12 abr 2005. InfoWester. Sistemas de arquivos NTFS. Disponvel em: <http://www.infowester.com/ntfs.php>. Acessado em 12 abr 2005.

Você também pode gostar