Gerenciamento de Memória e Sistemas de Arquivos
Classificado em Computação
Escrito em em português com um tamanho de 6,59 KB.
Gerenciamento de Memória
Dentre outras tarefas, o gerenciador de memória monitora quais partes da memória estão em uso e quais estão disponíveis; aloca e libera memória para os processos; e gerencia a permuta de processos entre memória principal e secundária (quando a memória principal não é capaz de abrigar todos os processos).
Espaço de Endereçamento
Um espaço de endereçamento é uma faixa de endereços discretos, cada um dos quais pode corresponder a um registrador físico ou virtual, um nodo de rede, dispositivo periférico, setor de disco ou outra entidade lógica ou física.
Memória Virtual
É uma técnica que usa a memória secundária como uma cache para armazenamento secundário. Houve duas motivações principais: permitir o compartilhamento seguro e eficiente da memória entre vários programas e remover os transtornos de programação de uma quantidade pequena e limitada na memória principal. Três funções básicas: realocação, proteção, paginação ou troca.
Paginação
É muito útil, pois possibilita que os seus programas utilizem um tamanho à sua escolha para usar como uma memória "RAM" virtual. Mas, caso a memória do programa exceda a memória real do seu sistema, apenas as partes mais utilizadas pelo processo atual estarão na memória, enquanto o resto ficará armazenado no disco rígido.
Algoritmos de Substituição de Páginas
Os algoritmos de substituição de páginas são políticas definidas para escolher qual(is) página(s) da memória dará lugar à página que foi solicitada e que precisa ser carregada. Isso é necessário quando não há espaço disponível para armazenar a nova página. Devemos ressaltar que, se a página a ser removida sofreu alterações enquanto esteve na memória, a cópia virtual existente em disco deverá ser atualizada. Por outro lado, se a página não foi modificada, significa que sua cópia está atualizada e, portanto, não é necessário reescrevê-la.
Segmentação
É uma das maneiras mais comuns para a proteção de memória. Significa que parte da memória é removida do processo sendo executado atualmente, através do uso de registradores. Se o dado prestes a ser lido ou escrito está fora do espaço de endereços do processo, uma falha de segmentação é lançada.
Sistema de Arquivos
É um conjunto de estruturas lógicas e de rotinas que permitem ao sistema operacional controlar o acesso ao disco rígido.
Arquivo
É uma sequência de informações binárias, ou seja, uma sequência de 0 e 1. Este arquivo pode ser armazenado para guardar um vestígio destas informações. Um arquivo texto é um arquivo composto de caracteres armazenados sob a forma de bytes.
Diretórios
São as raízes dos arquivos de um sistema operacional, seja Windows ou Linux. Exemplo: a unidade C: é um diretório, onde se originam todas as pastas do sistema, arquivos, músicas, fotos.
Implementação de Arquivos
A criação de arquivos exige que o sistema operacional tenha controle de quais áreas ou blocos no disco estão livres. É importante o controle de quais blocos de discos estão relacionados a quais arquivos. Este gerenciamento pode ser feito, principalmente, de várias formas:
- Alocação contígua
- Alocação por lista encadeada
- Alocação indexada
- Alocação combinada
Introdução a Impasses (Deadlocks)
Os deadlocks acontecem quando um conjunto de processos/threads disputam por um ou mais recursos. Estes recursos podem ser, por exemplo:
- Um arquivo
- Uma impressora
- Um pedaço da memória
- Vários arquivos
Se não existe o controle de acessos ao recurso comum, danos irreparáveis podem ocorrer. Exemplos:
- Arquivos corrompidos
- Perda de documentos na fila da impressora
- Erros lógicos em programas de usuário
Portanto, deadlocks podem ocorrer tanto na disputa por recursos de hardware como na disputa por recursos de software.
Estratégias para Tratar Deadlocks
- Ignorar por completo o problema
- Detecção e recuperação
- Alocação cuidadosa de recursos (evita o deadlock)
- Prevenção: negação de uma das quatro condições necessárias
- Ignorar por completo o problema
Recuperação por Meio de Preempção
Em alguns casos, pode ser possível tomar provisoriamente um recurso de seu proprietário atual para fornecê-lo a outro processo. Exemplo: se a impressora R for tomada do processo A, a impressora deve parar a impressão de A, empilhar o conteúdo de sua bandeja em outro compartimento, para iniciar sua operação com seu novo processo proprietário. Ao final, deve desempilhar as folhas da impressão de A e continuar sua impressão.
Recuperação por Meio de Reversão de Estado
- Para entender este algoritmo, imagine, via grafos, que o processo possui um determinado estado em cada instante de tempo.
- O S.O. então controlaria uma Máquina de Estado Finito.
- Sempre, antes de requisitar um recurso, o processo deve armazenar em um arquivo temporário seu estado atual.
- Quais são os problemas deste método?
- O custo para guardar as imagens pode ser alto demais:
- Processo que ocupa muita memória; ou
- Processo que efetua muitas requisições invocará muitas vezes a função de imagem no disco
- Processos que interagem com usuários finais: imagine perder tudo que digitou no editor de textos nos últimos 10 minutos.
- Processos que interagem com outros processos: exemplo (comunicação em uma rede). Se um processo regredir, a comunicação pode ser totalmente perdida.
- O custo para guardar as imagens pode ser alto demais:
Recuperação por Meio de Eliminação de Processos
- Método radical.
- Sempre que um ciclo é identificado no grafo, o S.O. mata um processo.
- Se o ciclo ainda existir, ele mata outro, até quebrar o ciclo, eliminando consequentemente o deadlock.
- O S.O. tem que ter o cuidado de não matar processos que não pertencem ao ciclo.
- Amenizando os efeitos da eliminação de processos:
- Prioridades podem ser definidas entre processos.
- Ou seja, indicar a ordem de importância entre os processos, para minimizar os efeitos colaterais na eliminação do deadlock.
- Exemplo: um compilador sempre pode ser reexecutado sem problemas, então, sua prioridade pode ser baixa.