Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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
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.
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).
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.
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).
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.
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
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.
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).
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
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.
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.
AIX BSD
4.4BSD
o o o 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
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)
o o
Windows CE Windows NT
Windows NT 3.5
Apple / Macintosh
o o
o o
Amiga
o o
AmigaOS AROS
MorphOS
15
Atari ST
o o
TOS MultiTOS
MiNT
Be-like
o o o
o o
OpenBeOS Zeta
DOS
o o o o
o o o o
IBM
o o o o o o o
o o o o o o
Digital / Compaq
o o o o
o o o o
PDAs
o o o
o o
SymbianOS Windows CE
Outros
o o o o o o o
o o o o o o o
o o o o o
o o o o
17
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.
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.
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.
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.
Problemas de Sincronizao
A tentativa de implementar a excluso mtua nos programas traz alguns problemas com sincronizao. As mais freqentes so:
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.
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.
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.
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.
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.
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.
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.
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).
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.
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).
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.
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).
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.
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.
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).
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.
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.
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
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.