Sistemas operacionais - Trabalho Public

Sistemas operacionais - Trabalho

Natali Stefany de Abreu
Course by Natali Stefany de Abreu, updated more than 1 year ago Contributors

Description

Neste trabalho será apresentado os temas de Swapping, Alocação Contígua, Alocação não-Contígua (Paginação e Segmentação), Memória Virtual, Sistemas de arquivos.

Module Information

P3

No tags specified

Context

O swapping é uma técnica criada na tentativa de melhorar o problema da insuficiência de memória durante a execução de alguns processos em ambientes multiprogramados. Essa técnica consiste em transferir automaticamente todo o processo da memoria principal para o disco (swap out) e vice-versa. Um dos problemas gerados pelo swapping é a relocação dos programas como no caso de um programa que saia muitas vezes e volte para a memoria, onde é necessária a realocação da mesma  seja realizada automaticamente pelo loader a cada operação de carregamento. A melhor solução para esta relocação é a realizada através do registrador base ou registrador de relocação. Toda vez que um programa é carregado na memória, o seu registrador base é carregado com o endereço inicial da região de memória onde o programa será carregado. Um dos problemas gerados pelo swapping é a relocação dos processos. O loader relocável permite que um processo seja colocado em qualquer posição de memória, porém a relocação é realizada no momento do carregamento.  Como vantagens, devemos citar o maior compartilhamento da memória, o maior throuput e a forma eficiente que oferece. E para as desvantagens não podemos esquecer os custos elevados das operações de entrada e saída.
Show less
No tags specified

Context

A alocação contígua consiste em armazenar um arquivo em blocos sequencialmente dispostos, permitindo ao sistema localizar um arquivo através do endereço do primeiro bloco e da sua extensão em blocos. O aceso é feito de maneira simples, tanto para a forma sequencial quanto para a direta.       Um problema desse tipo de alocação é que quando um arquivo é criado com n blocos, é necessário que exista uma cadeia de n blocos livres disposto sequencialmente. Nesse tipo de alocação, o disco é visto como um grande vetor, com segmentos ocupados e livres.       A alocação em um novo segmento livre consiste técnicas para escolha, algumas das principais são:       First-fit: Seleciona o primeiro segmento livre com o tamanho suficiente para alocar o arquivo e a busca é feita sequencialmente, interrompendo ao achar um segmento livre do tamanho adequado.       Best-fit: Seleciona o menor segmento livre disponível com o tamanho suficiente para armazenar o arquivo e é necessária a busca em toda a lista, caso esta não esteja ordenada por tamanho.       Worst-fit: Seleciona o maior segmento livre e a busca funciona como no caso anterior.       Um problema na alocação contígua é a fragmentação dos espaços livres causado pela criação e eliminação constante de arquivos é que com o tempo surgem espaços vagos sem o tamanho suficiente para se alocar novos arquivos.       A desfragmentação busca solucionar o problema da fragmentação, reorganizando os arquivos no disco de maneira que só exista um único segmento de blocos. A desfragmentação é lenta e deve ser realizada periodicamente.
Show less
No tags specified

Context

A paginação permite que o programa possa ser espalhado por áreas não contíguas de memória. Com isso, o espaço de endereçamento lógico de um processo é dividido em páginas lógicas de tamanho fixo e a memória física é dividida em páginas com tamanho fixo, com tamanho igual ao da página lógica. Nisso, o programa é carregado página a página, cada página lógica ocupa uma página física e as páginas físicas não são necessariamente contíguas. O endereço lógico é inicialmente dividido em duas partes: um número de página lógica (usado como índice no acesso a tabela de páginas, de forma a obter o número da página física correspondente) e um deslocamento dentro da página. Não existe fragmentação externa, porém existe fragmentação interna (Ex: um programa que ocupe 201kb, o tamanho de página é de 4 kb, serão alocadas 51 páginas resultando uma fragmentação interna de 3kb). Além da localização a tabela de páginas armazena também o bit de validade, (1 ou TRUE) se a página está na memória (0 ou FALSE) se a página não está na memória. E a transferência das páginas de processo podem ser transferidas para a memória por demanda, levando apenas o que é necessário para a execução do programa ou por paginação antecipada, onde o sistema tenta prever as páginas que serão necessárias à execução do programa.
Show less
No tags specified

Context

Técnica de gerência de memória onde programas são divididos em segmentos de tamanhos variados cada um com seu próprio espaço de endereçamento. A principal diferença entre a paginação e a segmentação é a alocação da memória de maneira não fixa, a alocação depende da lógica do programa. O mapeamento é feito através das tabelas de mapeamento de segmentos e os endereços são compostos pelo número do segmento e um deslocamento dentro do segmento. Cada entrada na tabela mantém o endereço físico do segmento, o tamanho do segmento, se ele está ou não na memória e sua proteção. Para isso ocorrer sem problemas, o sistema operacional mantém uma tabela com as áreas livres e ocupadas da memória e somente segmentos referenciados são transferidos para a memória principal. Nesse modelo diferentemente da Paginação, ocorre fragmentação externa. Abaixo um exemplo de Segmentação:
Show less
No tags specified

Context

Paginação com Segmentação: Se os segmentos são grandes, não dá para mantê-los na memória em sua totalidade. Gerando a ideia de paginar os segmentos só deixando na memória as páginas realmente necessárias a cada segmento. Um exemplo de SO que usa esse conceito é o MULTICS que foi o primeiro sistema com suporte a segmentos paginados. E como funciona? Simples, cada segmento é dividido fisicamente em páginas e o endereço é formado pelo número do segmento, número da página dentro desse segmento e o deslocamento dentro dessa página. Abaixo um exemplo de funcionamento de Paginação com Segmentação no MULTICS:
Show less
No tags specified
Os sistemas operacionais atuais, incluindo claro a família Windows, permitem usar o disco rígido para gravar dados caso a memória RAM se esgote, recurso chamado de memória virtual. Utilizando este recurso, mesmo que a memória RAM esteja completamente ocupada, o programa será executado, porém muito lentamente, devido à lentidão do disco rígido. Este é o motivo pelo qual uma boa quantidade de memória RAM é tão necessária, o disco rígido é absurdamente mais lento que a RAM, limitando muito o desempenho do micro.       Não adianta muito gastar num processador caro e economizar justamente na memória RAM, pois o micro vai continuar muito lento devido ao uso de memória virtual no disco rígido. O arquivo criado no disco rígido para simular memória RAM é chamado de arquivo de troca, ou swap file.       Bem antigamente, nos anos 80, época dos primeiros PCs, você só podia rodar programas que coubessem na memória RAM disponível. Naquela época, a memória RAM era muito mais cara que hoje em dia, então o mais comum era usar 256 ou 512 KB (sim, kbytes, duas mil vezes menos que usamos hoje, tempos difíceis aqueles :). Os mais abonados tinham dinheiro para comprar um megabyte inteiro, mas nada além disso.       Se você quisesse rodar um programa com mais de 256 KB, tinha que comprar mais memória, não tinha conversa. Sem outra escolha, os programadores se esforçavam para deixar seus programas o mais compactos possíveis para que eles rodassem nos micros com menos memória.       O recurso de memória virtual foi desenvolvido pela Intel e incluído em seus processadores a partir do 386. A memória virtual pode ser armazenada em um arquivo especialmente formatado no HD, ou em uma partição dedicada (como no caso do Linux) e a eficiência com que ela é usada varia bastante de acordo com o sistema operacional, mas ela permite que o sistema continue funcionando, mesmo com pouca memória disponível.       O problema é que o HD é muito mais lento que a memória RAM. Enquanto um simples módulo DDR2-533 (PC2-4200) comunica-se com o processador a uma velocidade teórica de 4200 megabytes por segundo, a velocidade de leitura sequencial dos HDs atuais (situação em que o HD é mais rápido) dificilmente ultrapassa a marca dos 100 MB/s.       Existe um comando no Linux que serve para mostrar de forma rápida o desempenho do HD, o "hdparm". Quando o rodo no meu micro, que usa um HD SATA relativamente recente, ele diz o seguinte: # hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 184 MB in 3.02 seconds = 60.99 MB/sec       No Windows, você pode medir a taxa de leitura sequencial do HD usando o HD Tach. Não se surpreenda com o resultado. Como disse, o HD é muito lento se comparado à memória.       Para piorar as coisas, o tempo de acesso do HD (o tempo necessário para localizar a informação e iniciar a transferência) é absurdamente mais alto que o da memória RAM. Enquanto na memória falamos em tempos de acesso inferiores a 10 nanosegundos (milionésimos de segundo), a maioria dos HDs trabalha com tempos de acesso superiores a 10 milissegundos. Isso faz com que o desempenho do HD seja muito mais baixo ao ler pequenos arquivos espalhados pelo disco, como é o caso da memória virtual. Em muitas situações, o HD chega ao ponto de não ser capaz de atender a mais do que duas ou três centenas de requisições por segundo.       A fórmula é simples: quanto menos memória RAM, mais memória swap (memória virtual) é usada e mais lento o sistema fica. O processador, coitado, não pode fazer nada além de ficar esperando a boa vontade do HD em mandar à conta-gotas os dados de que ele precisa para trabalhar. Ou seja, quando você compra um micro com um processador de 3 GHz e 256 MB de RAM, você está literalmente jogando dinheiro no lixo, pois o processador vai ficar boa parte do tempo esperando pelo HD.
Show less

Arq

No tags specified

Context

Os discos rígidos, por menores que sejam, possuem milhões de bits, o que exige organizar os dados para poder localizar as informações. Este é o objetivo do sistema de arquivos. Um disco rígido contém várias bandejas circulares que giram em torno de um eixo. As pistas (zonas concêntricas escritas de um lado e do outro da bandeja) estão divididas em quartos chamados de setores (com dimensão de 512 bytes).  A formatação lógica de um disco possibilita criar um sistema de arquivos no mesmo, que vai permitir que um sistema operacional (DOS, Windows 9x, UNIX, entre outros) utilize o espaço no disco para armazenar e utilizar os arquivos. O sistema de arquivos baseia-se na gestão dos clusters (unidade de alocação), ou seja, a menor unidade de disco que o sistema operacional é capaz de gerenciar.  Um cluster é constituído por um ou vários setores, assim, quanto maior for um cluster, menos entidades do sistema operacional ele terá que gerenciar. Por outro lado, já que um sistema operacional só sabe gerenciar unidades de alocação inteiras, ou seja, que um arquivo ocupa um número inteiro de cluster, o desperdício é ainda maior se houver setores por cluster. Compreende-se, então, a importância da escolha do sistema de arquivos.  Na realidade, a escolha do sistema de arquivos deve ser feita de acordo com o sistema operacional utilizado. Geralmente, quanto mais recente o sistema operacional, maior o número de sistemas de arquivos suportados. A partir do Windows 95 OSR2, podemos escolher entre os sistemas de arquivos FAT16 e FAT32. Se, por acaso, a dimensão da partição for superior a 2 GB, o sistema de arquivo FAT16 é excluído, devendo então utilizar o sistema FAT32 (ou alterar a dimensão da partição). Abaixo deste limite, o FAT16 é recomendado para partições com capacidade inferior a 500 MB.  No caso do Windows NT (até a versão 4) podemos escolher entre o sistema FAT16 e o NTFS. Geralmente, o sistema NTFS é aconselhado porque oferece segurança e desempenho maiores em relação ao FAT. A Microsoft recomenda o uso de uma pequena partição (compreendida entre 250 e 500 MB) do tipo FAT para o sistema operacional, para poder inicializar o PC a partir de um disquete DOS de arranque, em caso de problema, e armazenar os dados em uma segunda partição.  No Windows NT5 o leque aumenta, já que ele aceita partições do tipo FAT16, FAT32 e NTFS. Uma vez mais, o sistema de arquivos mais recentes (NTFS 5) é aconselhado, pois oferece mais funcionalidades do que os sistemas FAT. Pelas mesmas razões ditas acima, você pode optar por uma partição do tipo FAT.  Veja na tabela abaixo os sistemas suportados por cada um dos sistemas operacionais:
Show less
Show full summary Hide full summary