Sistemas Operacionais - Curso Inicial Public

Sistemas Operacionais - Curso Inicial

Douglas Soares de Oliveira
Course by Douglas Soares de Oliveira, updated more than 1 year ago Contributors

Description

Este curso atende as seguintes atividades: Swapping, Alocação Contígua, Alocação não-Contígua (Paginação e Segmentação), Memória Virtual, sistemas de arquivos

Module Information

No tags specified

Context

Swapping é um técnica aplicada à gerencia de memória que visa dar maior taxa de utilização à memória principal, melhorando seu compartilhamento. Ela também pode resolver o problema da falta de memória principal num sistema.       Quando um programa necessitar ser alocado para execução e não haver mais espaço na memória, o sistema operacional escolhe entre os processos alocados que não tem previsão de utilizar a CPU nos próximos instantes, Colocando este processo da memómoria para uma área especial em disco, chamando arquivo de swap, onde o processo fica armazenado temporariamente. Durante o tempo em que o processo fica em swap, o outro que necessitava de memória entra em execução ocupando o espaço deixado pelo que saiu. Pouco antes de chegar a vez do processo armazenado em swap utilizar a CPU, o sistema escolhe um outro processo para descarregar para swap e devolve o anterior da área de swap para a memória principal, para que este possa ser executado novamente. E vai trabalhando assim até que os processos vão terminando. O problema dessa técnica é que pode provocar um número excessivo de acesso à memória secundária (disco), levando o sistema a uma queda de desempenho.
Show less
No tags specified

Context

O método de alocação contígua exige que cada arquivo ocupe um conjunto de setores contíguos no disco. Para localizar um arquivo basta saber o número do setor inicial e o tamanho do arquivo, em blocos.  Para acessar o arquivo de forma sequencial, o sistema operacional mantém o número do último bloco acessado, incrementando este valor a cada acesso. Para um acesso direto ao setor i de um arquivo que inicia no setor b, o sistema deve acessar o setor b+i. Ambos os métodos sequencial e direto são facilmente implementados.             A dificuldade com este esquema é encontrar um espaço livre para um novo arquivo. Se o novo arquivo ocupa n setores, é necessário pesquisar a lista de setores livres até encontrar n setores contíguos livres.             O espaço em disco pode ser visto como um grande vetor de blocos. Em um determinado momento, alguns blocos estão ocupados e outros livres, compondo segmentos de blocos contíguos ocupados e segmentos de blocos contíguos livres (buracos). O problema da alocação dinâmica de armazenamento consiste em como satisfazer um pedido de n blocos livres contíguos a partir de uma lista de blocos vazios. Os algoritmos que podem ser utilizados são os mesmos já vistos no capítulo de gerência de memória (first-fit, best-fit, etc.).             O maior problema deste método é determinar o número de setores a serem alocados para cada arquivo, no momento de sua criação. Em algumas situações isto é simples, como na cópia de um arquivo existente. Mas, em geral, esta tarefa edifícil. Se pouco espaço é alocado, o arquivo talvez não possa ser estendido porque o espaço nos dois lados está ocupado. A única solução neste caso é a cópia de todo o arquivo para um espaço maior. Se o espaço alocado é maior que o necessário, o disco não estará sendo utilizado de forma eficiente.
Show less
No tags specified

Context

Alocação Encadeada: Neste método, cada arquivo corresponde a uma lista encadeada de blocos, estando os mesmos em qualquer local do disco. O diretório contém apenas o endereço do bloco inicial e o número de blocos (ou endereço do último bloco), e cada bloco de dados contém o endereço do bloco seguinte. Existe uma perda associada a cada bloco, uma vez que é necessário gastar bytes com ponteiros.             Com alocação encadeada, os arquivos podem ser criados com tamanho zero. Na medida em que o arquivo precisa crescer, setores serão removidos da lista de setores livres e inseridos na lista encadeada que forma o arquivo. Qualquer setor do disco, independente de sua posição, pode ser aproveitado. Os arquivos podem crescer livremente até o limite do disco.             Este método somente pode ser utilizado de forma eficiente para implementar acesso sequencial. Para acessar diretamente o setor n, seria necessário realizar n acessos ao disco. Isto impede, na prática, o acesso direto. Além disto, este método apresenta problemas de confiabilidade: como cada setor contém o endereço do setor seguinte, basta que um setor seja danificado (hardware ou software) para que boa parte do arquivo seja perdida.
Show less
No tags specified

Context

Alocação Indexada: Este método é capaz de resolver o problema do crescimento dos arquivos ao mesmo tempo que permite o acesso relativo. Na alocação indexada, cada arquivo possui uma tabela de índices. Cada entrada dessa tabela contém o endereço de um dos blocos físicos que formam o arquivo. No exemplo da Figura 8.2, cada descritor de arquivo contém uma tabela com 10 entradas, numeradas de 0 a 9. A entrada 0 da tabela contém o número do bloco físico que contém o bloco lógico 0 do arquivo, a entrada 1 faz o mesmo para o bloco lógico 1, e assim por diante. Um acesso relativo pode ser facilmente realizado através de uma consulta à tabela de índices. O endereço no disco de qualquer bloco lógico é obtido através de um único acesso a essa tabela. Para que esse acesso seja rápido, a tabela de índices é normalmente mantida na memória principal enquanto o arquivo está aberto. Uma forma conveniente é manter a tabela de índices dentro do próprio descritor do arquivo. Uma questão importante é o tamanho da tabela de índices. Ele define o tamanho máximo de um arquivo no sistema. Por exemplo, suponha que cada bloco físico corresponda a 4 K.bytes. Para que o tamanho máximo de um arquivo no sistema seja de 4 G.bytes, será necessário uma tabela de índices contendo “4 G.bytes 4 K.bytes” entradas, ou seja, 1.048.576 entradas (1 M na informática, ou seja, 1024 1024). Manter uma tabela de índices desse tamanho para cada arquivo é um absurdo. O tamanho médio dos arquivos em sistemas de propósito geral fica entre 10 K.bytes e 20 K.bytes. Mantendo a suposição de que cada bloco físico corresponde a 4 K.bytes, uma tabela de índices com apenas 5 entradas seria suficiente para um arquivo de 20 K.bytes. A solução típica para compatibilizar uma maioria de arquivos pequenos com um tamanho máximo de arquivo satisfatório é empregar níveis de indireção na indexação. Por exemplo, suponha que o descritor de arquivos contém uma tabela de índices com 13 entradas. As primeiras 10 entradas (numeradas de 0 a 9) apontam para blocos de dados do arquivo, permitindo o acesso aos primeiros 40 K.bytes de cada arquivo (supondo sempre blocos de 4 K.bytes). Eles são
Show less
No tags specified

Context

A Memória Virtual é um espaço variável e reservado no disco rígido. Este espaço é reservado no momento em que é feito a instalação do Sistema Operacional, seja ele Windows, Linux, e etc. Quando o Sistema Operacional notar que a Memória RAM não tem mais espaço de execução, o sistema vai passar a executar os seus programas na Memória Virtual.  Pode-se dizer que, a memória virtual é como se fosse uma reserva da Memória RAM, ou seja, se a Memória RAM estiver cheia, é utilizado a memória Virtual. Algumas características: 1- Quando a Memória Virtual é utilizada, o sistema fica extremamente lento (isto porque o HD é considerado um tipo de memória lenta – utiliza componentes mecânicos); 1- A Memória Virtual pode ser chamada também de: Page-file, paginação, memória paginada, swap ou memória de troca.
Show less
No tags specified

Context

Um sistema de arquivos é um conjunto de estruturas lógicas que permite o sistema operacional controlar o acesso a um dispositivo de armazenamento como disco rígido, pen drive, cd-room, etc. Diferentes sistemas operacionais podem usar diferentes sistemas de arquivos. Atualmente, o NTFS (New Technology File System) é o sistema de arquivos padrão do Windows, enquanto o ext4 é o do Linux. Para verificar quais os sistemas de arquivos que o seu Linux suporta, basta verificar o conteúdo do arquivo /proc/filesystems. O suporte para diferentes sistemas de arquivos pode ser obtido através de módulos de kernel carregáveis no diretório /lib/modules/XXX/kernel/fs, onde XXX é a versão atual do Linux. Para ver as partições do seu sistema, veja o arquivo /etc/fstab. No Linux: Um diretório (corresponde ao conceito de pasta do Windows) pode ter outros diretórios ou arquivos. Dizemos que um diretório é filho de outro diretório quando ele está logo abaixo do diretório em questão. O diretório que está um nível acima é chamado de diretório pai. O diretório raiz do Linux (ou diretório /) é o diretório com maior hierarquia entre todos os diretórios do sistema. Isto significa que todos os diretórios do Linux ficam abaixo deste diretório. A seguir são apresentados alguns exemplos de diretórios que ficam abaixo do diretório raiz. Tipos de Diretórios:  bin - diretório com os comandos disponíveis para os usuários comuns (não privilegiados). boot - diretório com os arquivos do boot de inicialização. dev - diretório com as definições dos dispositivos de entrada/saída. etc - diretório com os arquivos de configuração do sistema. home - diretório que armazena os diretórios dos usuários do sistema. lib - diretório com as bibliotecas e módulos (carregáveis) do sistema. mnt - diretório usado para montagem de partições. proc - diretório com informações sobre os processos do sistema. root - diretório home do root. sbin - diretório com os aplicativos usados na administração do sistema. tmp - diretório com arquivos temporários. usr - diretório com aplicativos e arquivos utilizados pelos usuários como, por exemplo, o sistema de janelas X, jogos, bibliotecas compartilhadas, programas de usuários e de administração, etc. var - diretório com arquivos de dados variáveis (spool, logs, etc). Convém também observar que é possível colocar os subdiretórios do diretório raiz em partições separadas. O objetivo é facilitar a manutenção do sistema e aumentar a segurança dos dados. Portanto, a distribuição do diretório raiz em várias partições é uma escolha pessoal do administrador do sistema. Normalmente, é sugerido que os seguintes diretórios possuam uma partição própria: /home, /opt, /tmp, /usr e /usr/local.
Show less
Show full summary Hide full summary