*Gerenciamento de memória * Um fator indispensável e que pouca

Propaganda
*Gerenciamento de memória *
Um fator indispensável e que pouca gente leva em consideração é o gerenciamento de memória
feito pelo sistema operacional (SO). Não basta ter muita RAM disponível em seu computador. O
que torna a RAM realmente útil é a capacidade de uso que o SO faz dela.
Dos primeiros computadores pessoais até as máquinas de alto desempenho dos dias atuais, tivemos
grandes avanços em relação à velocidade e qualidade dos componentes, mas a forma de
funcionamento é basicamente a mesma, conhecida como arquitetura de Von Neumann: primeiro lêse os dados do disco rígido na memória RAM e em seguida ocorre o processamento por parte da
CPU, esquema que é utilizado tanto pelos Pentium III, quanto Core i7.
A memória virtual entra nesse esquema principalmente em duas situações: quando a memória RAM
não consegue mais segurar todos os programas abertos ou quando algum programa não está sendo
utilizado há algum tempo e por isso pode ser retirado da memória. Quando dizemos “memória
virtual” estamos nos referindo a uma parte do disco rígido dedicado a essa tarefa e utilizado pelo
Windows para gerenciá-las.
Quando acontece alguma das situações acima, o sistema operacional desaloca os processos menos
utilizados da memória RAM e armazena no HD, copiando de volta para a memória RAM quando
necessário. Isso causa uma considerável perda de desempenho, já que os discos rígidos são
componentes mecânicos extremamente lentos se comparados à memória RAM.
WINDOWS
Basicamente, o Windows trabalha com dois tipos de memória. O primeiro deles é a memória
principal, também chamada de física. Ela é a quantidade de RAM instalada em sua máquina, os
pentes de memória em si.
Já a memória conhecida como virtual é uma espécie de memória auxiliar, usada pelo computador
em alguns casos especiais. Essa memória é nada mais do que um arquivo hospedado no disco rígido
da máquina, e o Windows usa esse arquivo como se ele fosse uma extensão da memória principal.
O Windows é bem esperto no que diz respeito ao gerenciamento de memória. Grosso modo,
podemos dizer que ele “sabe”, por exemplo, o que deve ser enviado para a memória física e o que
deve ser armazenado na virtual. Ao carregar na memória todos os softwares necessários para o bom
funcionamento do sistema, o Windows respeita algumas regras.
A memória física recebe aquilo que o Windows considera essencial, como o próprio sistema
operacional e as aplicações que o usuário estiver usando no momento. O restante, ou seja, aquilo
que o Windows acredita que não será usado tão urgentemente, fica na memória virtual. Em outras
palavras, a memória virtual é um recurso essencial para o armazenamento de dados que não estão
em uso, mas que devem ser recuperados com velocidade quando necessário. Essa memória também
é usada pelo sistema quando se esgota, por completo, o espaço disponível na memória física. Nesse
caso, a memória virtual acaba sendo uma extensão da memória principal.
Porém, existe uma desvantagem a ser levada em consideração. A memória virtual fica armazenada
em um arquivo no disco rígido da máquina. E, como sabemos, o processo de leitura e escrita de
dados no HD do computador é muito mais lento do que o equivalente em memória RAM.
Basicamente, isso explica por que o desempenho do computador melhora quando instalamos novos
pentes de memória no PC. Quanto mais memória física disponível, menos provável é o uso
1
extensivo da memória virtual.
LINUX
O gerenciamento de memória é o que torna o sistema operacional mais rápido e funcional. Assim
como o Windows, o Linux possui dois sistemas de gerenciamento de memória, a memória física,
que cuida da alocação e liberação de blocos de memória, e a memória virtual, que tem o papel de
“enganar” os processos, informando que há memória suficiente quando não há. Esta técnica pode
melhorar a performance do sistema operacional. O Linux é um sistema de multiprocesso e
multiusuários, então devemos ter um controle rígido sobre a memória, para que um processo não
sobreponha os recursos (memória) utilizados pelo outro.
O gerenciamento de memória no Linux é realizado com o auxílio de circuitos de hardware presentes
nos microprocessadores. Esses circuitos permitem que o gerenciamento de memória seja mais
eficiente e seguro, evitando erros causados por software no acesso à memória.
O acesso à memória física não acontece direto do software. No software especificamos o endereço
lógico, que consiste do segmento e de um offset representando a distância entre o endereço que
desejamos acessar e o início do segmento. O endereço lógico é compilado por uma unidade de
segmentação, que o transforma em um endereço virtual. Este endereço virtual é representado por
um inteiro de 32 bits, e portanto, pode endereçar até 4GB, do endereço 0x00000000 até 0xffffffff. O
endereço virtual é transmitido a uma unidade de paginação, que é responsável por associar o
endereço virtual ao físico, representado por inteiros não negativos de 32 ou 36 bits. O endereço
resultante é utilizado para acessar um dado presente na memória dos chips.
Através deste processo de acesso à memória, podemos perceber que o Linux utiliza um modelo de
segmentação com paginação. Em sistemas com multiprocessadores, a memória é compartilhada
entre todas as CPUs. Assim, para evitar que diferentes CPUs acessem a memória o mesmo tempo,
existe um circuito de hardware utilizado para a proteção da memória, conhecido como "Memory
Arbiter", que é inserido entre o barramento e todo chip de memória, e possui a finalidade de garantir
o acesso exclusivo à memória nas operações de leitura e escrita.
Além do acesso exclusivo à região de memória compartilhada, o Linux dispõe de mecanismos para
prevenir a invasão de processos no espaço do kernel.
2
*Gerenciamento de dispositivos: *
O Gerenciador de Dispositivos monitora todos os dispositivos, canais e unidades de controle.
Sua tarefa é escolher a forma mais adequada para a alocação de todos os dispositivos de um sistema
(impressoras, terminais, unidades de disco, etc.), de acordo com uma política de programação de
execução (scheduling) definida pelos projetistas do sistema. O Gerenciador de Dispositivos faz a
alocação, inicia a operação e, por fim, “desaloca” o dispositivo.
Não basta, entretanto, que cada gerenciador execute apenas suas tarefas individuais. Deve ainda ser
capaz de trabalhar harmoniosamente com todos os outros gerenciadores. A seguir, um exemplo
simplificado:
Digamos que alguém digite um comando para que se execute um programa. Os seguintes passos
principais devem acontecer sequencialmente:
1. O Gerenciador de Dispositivos recebe os impulsos elétricos emitidos através do teclado,
decodifica as teclas pressionadas para formar o comando e o envia para a Interface de Comandos do
Usuário, onde o comando é válido pelo Gerenciador da Unidade de Processamento.
2. O Gerenciador da Unidade de Processamento envia uma mensagem de reconhecimento, a qual é
exibida no monitor de vídeo para que o digitador saiba que o comando foi enviado.
3. Quando o Gerenciador da Unidade de Processamento recebe o comando, ele determina se o
programa deve ser recuperado de algum meio de armazenamento ou se já está em memória; em
seguida, notifica o gerenciador apropriado.
4. Se o programa estiver armazenado, o Gerenciador de Arquivos deve identificar sua localização
exata no disco, passar essa informação para o Gerenciador de Dispositivos, o qual recupera e envia
o programa para o Gerenciador de Memória. Este, por sua vez, deve encontrar espaço para o
programa e gravar em memória sua exata localização.
5. Assim que o programa estiver em memória, o Gerenciador de Memória deve monitorar sua
localização e seu progresso, à medida que é executado pelo Gerenciador da Unidade de
Processamento.
6. Uma vez terminada a execução, o programa deve enviar uma mensagem de término ao
Gerenciador da Unidade de Processamento.
7. Por fim, o Gerenciador da Unidade de Processamento deve repassar a mensagem de término ao
Gerenciador de Dispositivos, que deverá exibi-la no monitor de vídeo para que o usuário possa vêla.
Apesar de ser uma demonstração simplificada de uma operação muito complexa, ela serve para
ilustrar o alto grau de precisão que requer um sistema operacional. É bom lembrar que, nenhum
gerenciador poderia executar devidamente suas tarefas sem a cooperação ativa de todos os outros
componentes.
O Gerenciador de Dispositivos fornece informações gráficas sobre como o hardware de seu
computador é instalado e configurado e como o hardware interage com os programas de seu
computador.
3
Você pode usar o Gerenciador de Dispositivos para alterar a forma de configurar seu hardware e
para alterar a forma em que seu hardware interage com os programas de seu computador. Com o
Gerenciador de Dispositivos, você pode atualizar os drivers de dispositivo para o hardware
instalado no seu computador, modificar as configurações de hardware e solucionar problemas.
O Gerenciador de Dispositivos possibilita:
• Determinar se o hardware de seu computador está funcionando adequadamente.
• Alterar as definições de configuração de hardware.
• Identificar os drivers de dispositivo que estão carregados para cada dispositivo e obter
informações sobre cada driver de dispositivo.
• Alterar configurações avançadas e propriedades dos dispositivos.
• Instalar drivers de dispositivo atualizados.
• Desativar, ativar e desinstalar dispositivos.
• Reinstalar a versão anterior de um driver.
• Identificar conflitos de um dispositivo e definir manualmente as configurações de dispositivo.
• Imprimir um resumo dos dispositivos que estão instalados no seu computador.
• Normalmente, você vai utilizar o Gerenciador de Dispositivos para verificar o status de seu
hardware e atualizar os drivers de dispositivo no seu computador. Os usuários avançados, que
conhecem a fundo o hardware do computador, também podem usar os recursos de diagnóstico do
Gerenciador de Dispositivo para resolver conflitos entre dispositivos e alterar configurações de
recursos.
LINUX
Objetivo: criar uma interface única que mascare os detalhes específicos de cada dispositivo.
Cada dispositivo tem um controlador (processador p/ realizar determinada função). Exemplo:
teclado, mouse e portas seriais – controlador serial.
Discos IDE – controlador IDE: Cada controlador possui um diferente conjunto de registradores de
controle e estado (CSR) utilizados para realizar as operações em controlador/dispositivo.
CSR concentrados no núcleo: ler e escrever comum a todas aplicações. O software que implementa
essas operações no núcleo = driver de dispositivos.
Pelo Kernel (núcleo) do sistema: O Kernel pode ser compilado com suporte a vários dispositivos,
ou pode utilizar módulos para carregar este suporte. Geralmente os módulos de dispositivos estão
na pasta do kernel em /etc/.
4
Você pode ver a lista de alguns dipositivos usando o comando lspci, ou utilizando o Kinfocenter (no
caso de usar o KDE) e também usando o Hal-device-manager.
Toda vez que o Linux inicia, o sistema tenta configurar o hardware e isto acontece automaticamente
caso seja possível. Se não for possível, a sua distribuição pode não ter suporte à configuração
automática ou o dispositivo não é suportado.
Existem muitos drivers de dispositivos para Linux, mesmo equipamentos que não são mais
suportados pelo Windows (em vista da antiguidade) podem ser suportados no Linux.
WINDOWS
Como Gerenciar Dispositivos com o Gerenciador de Dispositivos no sistema operacional Windows
XP.
O Windows 2000/XP trabalha, como as gerações anteriores, com drivers de dispositivos tanto
monolíticos como universais. O sistema operacional é responsável por toda a gerência de entrada e
saída, de dados, acesso direto a dispositivos/memória.
Uma das particularidades da plataforma XP/2000 é a distinção entra os drivers de rede dos demais
drivers de dispositivos do sistema; Os drivers de rede são responsáveis por todas as funcionalidades
de rede do S.O., não sendo apenas responsável pelo envio de pacotes.
Os demais drivers de dispositivos passam pela padronização WDM (win32 driver model) que visa
uma melhor integração e clareza na especificação dos drivers.
O Windows XP/2000 utiliza o padrão IRP (I/O Request packets), que é um formato de pacotes para
todas as transferências de dados no sistema; As informações são convertidas, um gerenciador de I/O
direciona os pacotes e libera posteriormente os recursos da máquina – tanto em modo síncrono
como assíncrono.
Muitas das modificações nos padrões das plataformas windows são em decorrência de sempre
crescente utilização de redes/internet na realidade dos usuários.
5
*Sistemas de arquivo*
Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que permitem ao sistema
operacional controlar o acesso ao disco rígido. Diferentes sistemas operacionais usam diferentes
sistemas de arquivos. Conforme cresce a capacidade dos discos e aumenta o volume de arquivos e
acessos, esta tarefa torna-se mais e mais complicada, exigindo o uso de sistemas de arquivos cada
vez mais complexos e robustos. Existem diversos sistemas de arquivos diferentes, que vão desde
sistemas simples como o FAT16, que utilizamos em cartões de memória, até sistemas como o
NTFS, EXT3 e ReiserFS, que incorporam recursos muito mais avançados.
No mundo Windows, temos apenas três sistemas de arquivos: FAT16, FAT32 e NTFS. O FAT16 é o
mais antigo, usado desde os tempos do MS-DOS, enquanto o NTFS é o mais complexo e atual.
Apesar disso, temos uma variedade muito grande de sistemas de arquivos diferentes no Linux (e
outros sistemas Unix), que incluem o EXT2, EXT3, EXT4, ReiserFS, XFS, JFS e muitos outros.
Para quem usa apenas o Windows, estes sistemas podem parecer exóticos, mas eles são velhos
conhecidos de quem trabalha com servidores, já que neles o Linux é que é o sistema mais popular.
Descrição dos Sistemas de arquivo mais utilizados:
FAT: É um dos tipos de sistema de arquivos que já foi mais utilizado no mundo, e atualmente é
suportado por todos os tipos de sistemas operacionais. É um sistema de arquivos antigos (criado em
1987), então tem algumas limitações, sendo as mais visíveis ao usuário: A possibilidade de criação
de partições (unidades lógicas) com no máximo 2 GB por unidade, e o nome do arquivo limitandose a oito caracteres principais de nome e três caracteres representando a extensão. Por isso, em
sistemas de arquivos com FAT instalado, você facilmente verá os arquivos representados por
EXEMPLO.TXT ou TESTEDE~.TXT, sendo que o til ("~") representa que o nome do arquivo
estourou a quantidade de caracteres permitidos para o nome do arquivo. Os sistemas MS-DOS,
Windows 3.x e o Windows 95 usam esse sistema de arquivos por padrão.
FAT32: É um dos sistemas de arquivo mais usados no mundo. É uma evolução do FAT (também
conhecido por FAT16). As principais evoluções foram: O aumento do tamanho máximo por unidade
(no máximo 16 TB) e o aumento do tamanho do arquivo (até 4 GB por arquivo). Outra grande
evolução foi o aumento no número de caracteres suportados para o nome de arquivo (passou de 8
para 256 caracteres). No FAT32 os dados são gravados de forma mais "condensadas" do que no
FAT16, por isso essas principais mudanças. Os sistemas Windows mais recentes (Windows 95
OSR2, 98 e Me) utilizam esse sistema de arquivos por padrão, e são capazes de ler dados em
sistemas de arquivos FAT16. Windows NT, 2000, XP, Vista e 7 também conseguem ler dados
gravados em sistema de arquivos FAT32, embora esse não seja o padrão utilizado. FAT32
atualmente é o sistema de arquivos mais indicado e mais usado para unidades móveis (pendrives,
cartões de memória, flash drives, etc), devido a possibilidade da remoção rápida do dispositivo e
também da maneira como o dispositivo é usado pelo sistema operacional, deixando-o livre apenas
para a gravação básica dos dados.
NTFS: É o sistema de arquivos padrão para grandes unidades, servidores, e computadores com
Windows NT, 2000, XP, Vista e 7 instalados. O NTFS foi criado para ser um padrão de sistema de
arquivos em servidores, devido a sua confiabilidade, segurança e estabilidade. Possui muitas
ferramentas de controle (inclusive de permissões por usuário), é mais seguro a fragmentos (fato que
ocorre freqüentemente em sistemas FAT) e mais protegido contra falhas, além de possuir recursos
6
bem avançados, destinados a servidores (VSS, EFS, Quotas, etc.). Mesmo sendo um sistema de
arquivos mais avançado (e mais lento por causa das diretivas de segurança), ele é usado por padrão
nas instalações do Windows NT, 2000, XP, Vista e 7 (além do 2003 e 2008, sistemas operacionais
destinados a servidores), pelo fato de não haver limitações nos tamanhos dos arquivos e nomes.
ext: É um sistema de arquivos criado para uso com sistemas operacionais Linux, desenvolvido em
1992. Foi desenvolvido para superar as deficiências do sistema de arquivos padrão do Minix.
Permitia que os arquivos tivessem nomes de até 255 caracteres por aquivo, e até 2 GB de tamanho
por aquivo, mas esse sistema de arquivos ainda possuía algumas limitações, que foram resolvidas na
ext2, o que incluiam unidades de até 2 TB por partição. Atualmente ext2 é usado amplamente em
unidades móveis (pendrives, cartões de memória, etc) devido ao seu método de escrita.
ext3: Evolução do ext2, é o padrão atual dos sistemas Linux. Um dos seus recursos mais
interessantes é o journaling (simplificadamente falando, é como se o sistema operacional gravasse
um "diário", ou log, com as alterações que vão sendo feitas no disco. Em caso de falha no sistema, o
sistema operacional pode ler os dados desse log e realizar uma recuperação dos dados). Alguns
pontos fracos são a baixa velocidade e desempenho reduzido.
ext4: A útlima evolução dos sistemas ext. Considerado por muitos uma das melhores evoluções já
feitas, é um sistema de arquivos com um desempenho excelente. O ext4 usa algumas
funcionalidades diferentes para melhora do desempenho, incluindo a forma como os dados estão
alocados ("alocação tardia") que resulta em ganho de desempenho e fragmentação quase nula.
ReiserFS: Usa árvores balanceadas para tornar o processo de busca de arquivos, informações sobre
segurança e outros metadados mais eficiente. Para arquivos muito pequenos, seus dados podem ser
armazenados próximos aos metadados, então, ambos podem ser recuperados com um pequeno
movimento do mecanismo da "cabeça" de leitura do disco. Essa propriedade vai contribuir para um
melhor desempenho caso uma aplicação necessite abrir muitos arquivos pequenos rapidamente. No
caso de um desligamento incorreto do sistema, o ReiserFS é capaz de recuperar a consistência do
sistema de arquivos em pouco tempo e a possibilidade de perda de pastas ou partições é reduzida.
Em compensação, os arquivos que eventualmente estiverem sendo gravados no exato momento em
que acabou a energia ficarão com seus dados corrompidos, haverá acesso aos arquivos
normalmente, mas o conteúdo estará truncado ou incompleto.
Os sistemas de arquivos ext/ReiserFS não são compatíveis com sistemas operacionais da família
Windows, entretando os sistemas Linux são capazes de ler e gravar em sistemas de arquivos FAT e
NTFS.
7
Download