Você está na página 1de 23

Sistemas Operativos

O SO é o Conjunto de programas que se situa entre o hardware e os softwares


aplicativos , Oferecendo ao utilizador a facilidade de se comunicar com o
computador. Ele acorda a máquina e faz com que a CPU, reconheça a memória, o
teclado, o sistema de vídeo e som e as unidades de discos, e todos os periféricos
instalados na maquina. É o Núcleo que faz o computador funcionar, Intermediando
as solicitações entre os utilizadores e os programas, Gere o hardware do
computador e as transferências de dados de e para as unidades de disco.

COMPOSIÇÃO DO SISTEMA OPERATIVO


Kernel: Núcleo do sistema operativo, permanece Sempre (residente) na memória
do computador, Contém o código de baixo nível que se comunica com o hardware,
gere a memória e os dispositivos, mantém o clock do computador, inicializa os
aplicativos, e gere o compartilhamento de recursos.
Shell: Casca do sistema operativo, É substituído a cada execução de um
programa, Assume o controle do programa, recebe as inserções do utilizador,
interpreta-as e atua sobre elas.

CARACTERÍSTICAS DESEJÁVEIS DE UM S.O


Eficiência - Baixo tempo de resposta, pouca ociosidade da CPU e alta taxa de
processamento.
Confiabilidade - Pouca incidência de falhas e exatidão dos dados.
Manutenção - Facilidade de correção ou incorporação de novas características.
Pequena dimensão - Simplicidade e baixa ocupação da memória;
Concorrência - Capacidade de manter varias tarefas concorrentes
Compartilhamento de recursos – Gerir recursos de hardware e software
compartilhados.

INICIALIZAÇÃO DO SO
Passo 1: quando ligamos o botão on/of do computador, a fonte de alimentação
fornece energia elétrica para os diferentes componentes do computador. Passo 2:
O processador procura a BIOS: Basic Input/Output System (Sistema Básico de
Entrada/Saída) Firmware que contém as instruções de inicialização do computador.
Passo 3: A BIOS executa o POST: Power-On Self Test (auto-teste de partida) que
faz o Teste de todos os dispositivos instalados, alertando em caso de erro, com
uma sequência de bips sonoros. Passo 4: Os resultados do POST são comparados
com os dados armazenados no chip CMOS: Complementary Metal Oxyde
Semiconductor, que Armazena informações de configuração do computador e
também detecta novos dispositivos conectados. Passo 5: A BIOS vai buscar os
arquivos do sistema no discos na seqüência especificada no setup do
computador. Passo 6: Execução do MBR: Master Boot Record (registro mestre de
iniciação), e inicialização do sistema operativo. Fazendo com que o programa de
boot carrega o kernel (armazenado no HD) para a memória principal, que assume,
a partir de então, o controle do computador. Passo 7: O sistema operativo carrega
as informações de configuração que são visualizadas pelo ecram, e executa os
programas de inicialização.
Setup: procedimento de configuração dos parâmetros da BIOS do computador.

Arquivos do sistema : Arquivos específicos do sistema operativo que permitem o


arranque e o funcionamento da maquina.

Driver de Dispositivo: é uma camada de software que faz a comunicação do


sistema operativo com a interface do hardware. "Cada dispositivo de E/S ligado ao
computador precisa de algum código específico do dispositivo para controlá-lo.
Esse código, é chamado de driver do dispositivo. Para aceder ao hardware do
dispositivo, o driver normalmente deve ser parte do núcleo do SO. Os drives
possibilitam a comunicação do sistema operativo com um dispositivo de E/S. Todo
dispositivo tem um driver (software de controle) próprio.

Plug and Play: tecnologia que faz o Reconhecimento de novos dispositivos pelo
computador, instalação automática de drivers para esses dispositivos e verificação
de conflitos com outros dispositivos; é Suportado pela maioria dos dispositivos e
sistemas operativos atuais; Quando se conecta um sistema Plug’n Play, a BIOS
assumir o controle; Com base em identificadores (códigos permanentes gravados
na ROM), a BIOS reconhece os dispositivos instalados e o sistema operativo
assume o controle do mesmo.

FUNÇÕES DO SISTEMA OPERATIVO


Um S.O tem quatro grandes funções:
Gestão de processos- Suporte dos programas, Programação de tarefas, Controle
do desempenho.
Gestão de dispositivos de E/S- configuração de dispositivos.
Gestão de memória - Gestão do armazenamento.
Gestão de arquivos- gestão da posição de memoria onde são armazenados os
arquivos.

TIPOS DE SISTEMAS OPERATIVOS


A maneira como os Sistemas Operativos executam as tarefas pode ser
determinante para a sua classificação. Um dos principais indicadores para a
classificação dos Sistemas Operativos é o número de programas que são capazes
de executar em simultâneo e o número de processadores por eles controlados

Monoprogramação ou monotarefa
chama-se monotarefa um sistema operativo que permite a realização de apenas um
processo (job) de cada vez. O processador, memória e periféricos ficam dedicados
a uma única tarefa, e qualquer outra tarefa para ser executada, deve aguardar o
encerramento da tarefa atual. Enquanto uma aplicação aguarda um evento, o
processador permanecer ocioso, sem realizar qualquer tipo de processamento, a
memória acabar sendo sub-utilizada quando o programa não a utiliza totalmente e
os periféricos são dedicados a um único utilizador. Desta forma, os sistemas
monoprogramáveis acabam sendo por sua natureza muito pouco viáveis para os
tempos atuais.
Multiprogramação ou multitarefa
Multiprogramação ou Multitarefa é o nome dado à característica de alguns sistemas
operativos de rodar diversas aplicações de forma que parecem serem executadas
simultaneamente. Na realidade, na execução multitarefa, o tempo do processador é
dividido entre as aplicações em execução, e a execução das tarefas passa
rapidamente de uma para a outra, criando a ilusão de que as aplicações ocorrem
de forma conjunta. A idéia por detrás da multiprogramação é bastante simples.
Quando um programa liberta a CPU, seja para realizar alguma operação de E/S ou
por outro motivo, ela fica parada. Para acabar com a ociosidade deste tempo vários
programas são mantidos ao mesmo tempo na memória e o sistema operativo se
encarrega de escolher um deles para executar. Assim, sempre que um programa é
interrompido, um outro é escolhido para ser executado em seu lugar. Com isso, a
CPU estará durante grande parte do tempo ocupada processando instruções de
programas. Um dos principais benefícios da multiprogramação é o aumento da
utilização da CPU. Exº Sistemas em lotes, sistemas de tempo compartilhado e
sistemas de tempo real.

Sistemas Batch ou em lote


Os sistemas batch ou sistemas em lote foram os primeiros sistemas
multiprogramáveis a serem implementados (primeira fase da computação),
caracterizando-se por programas armazenados em disco ou fita, que uma vez
iniciados, exigem pouca ou nenhuma interação do utilizador, processando de forma
sequencial e contínua até o fim do serviço (job), quando então é devolvido o
resultado final do processamento. Exº sistemas embarcados.

Sistemas de Tempo Compartilhado (Time Sharing)


São sistemas que compartilham o tempo de uso da CPU entre diversos programas.
Também conhecido como time-sharing ou pseudoparalelismo, onde a CPU
consegue executar diversas tarefas simultaneamente, pois existe a divisão do
tempo do processador em pequenos intervalos, denominados fatia de tempo. Caso
a tarefa não termine durante a fatia a ela determinada, há uma interrupção e ela
volta para a fila de escalonamento, aguardando novamente sua vez.

SISTEMAS DE TEMPO REAL


São sistemas no qual o tempo tem uma função essencial. Em geral, um ou mais
dispositivos físicos externos ou computador geram estímulos, e o computador deve
reagir apropriadamente a eles dentro de um dado intervalo de tempo.

SISTEMAS MULTIPROCESSADOS
Sistemas multiprocessados são sistemas construídos sobre máquinas
computacionais que possuem mais de um processador para propósitos gerais.
Entre suas vantagens estão:
 Maior produção
 Balanceamento
O CONCEITO DE PROCESSO
Um processo pode ser entendido como um programa em execução, ou um módulo
executável único, que corre concorrentemente com outros módulos executáveis,
compostos por Múltiplas threads executaveis dentro de um mesmo processo..

A gestão de processos é uma das principais funções do sistema operativo que gere
os processos através de System Calls. Que são instruções com maior privilégio
usadas pelos aplicativos para solicitar ao kernel do SO, a execução de algum
serviço.
Através dos processos, um programa pode alocar recursos, compartilhar dados,
trocar informações, etc.
O sistema operativo é o responsável por gerir os programas em execução e
controlar o uso concorrente do processador. 
A CPU executa cada programa em razão de milissegundos, no decorrer de um
segundo ela pode trabalhar sobre vários programas, dando aos utilizadors a ilusão
de paralelismo. Na prática, a CPU troca, a todo momento, de um processo para
outro. O mecanismo de trocas rápidas, onde a CPU faz esses chaveamentos é
chamada Multiprogramação.

ESTRUTURA DO PROCESSO
Cada processo é implementado pelo sistema operativo através de uma estrutura de
dados chamada bloco de controle do processo (Process Control Block — PCB). A
partir do PCB, o SO mantém todas as informações sobre o contexto de hardware,
contexto de software e espaço de endereçamento de cada processo.
Para que a troca de programas ocorra sem problemas, é necessário que todas as
informações do programa interrompido sejam armazenadas para que, quando o
programa retorne a execução possa continuar exatamente de onde parou. Essas
informações são denominadas: Contexto. A troca de um processo por outro, é
denominada mudança de contexto. É através BPC (Control Process Blocks, ou
controle de Blocos de Processos), que o sistema operativo reúne todas essas
informações a cerca da execução dos processo

Existem 3 tipos de contexto: – Contexto de hardware. Contexto de software e


Espaço de Endereçamento. A mudança de contexto consiste em salvar o conteúdo
dos registradores do processo que esta deixando a CPU para carregá-los com os
valores referentes ao do novo processo que será executado. Os registradores são
utilizados pela CPU para armazenar dados importantes sobre as mudança de
contexto e resultados temporários. Seu uso é conveniente pois o tempo de acesso
à memória principal é muito maior do que o tempo de executar instruções.

Contexto de Hardware: salva as informações do processo em execução nos


registradores da CPU, e carregá-os com os valores referente ao do processo que
está ganhando a utilização do processador. 
Contexto de Software: é composto por três grupos de informações: identificação,
quotas e privilégios, que especificam os identificadores dos processo ou
utilizador, limites de recursos que podem ser alocados ao processo, como o número
máximo de arquivos abertos simultaneamente, prioridade de execução e tamanho
do buffer, etc e o que o processo pode ou não fazer em relação ao sistema e aos
outros processos.. Algumas destas características são determinadas no momento
da criação do processo, e outras são alteradas durante a sua execução.

Espaço de Endereçamento- É a Área da memória onde o processo e os dados


por ele utilizados serão executados, que Deve ser protegido do espaço de
endereçamento dos demais processos.

ESTADOS DE UM PROCESSO
O processo pode estar no estado:
● Novo
O processo está sendo criado
● Executando
Instruções estão sendo executadas
● Esperando
O processo está esperando que ocorra algum evento
● Pronto
O processo está esperando para ser atribuído a um processo
● Terminado
O processo terminou a execução

Num sistema multiprogramável, os 3 principais estados dos processos são: 


- Execução (running) - quando está sendo processado efetivamente pela CPU, ou
seja, utilizando o processador. Em sistemas com um único processador, somente
um processo pode estar em estado de execução em um dado instante. Em
sistemas com mais de uma CPU, o número de processos que pode estar em
execução ao mesmo tempo é igual ao número de processadores existentes. Neste
tipo de sistema, também é possível que um mesmo processo esteja sendo
executado em mais de um processador ao mesmo tempo. 
- Pronto (ready)  quando aguarda para ser executado. O sistema operativo é que
determina os critérios e a ordem pelos quais os processos em estado de pronto
devem fazer uso do processador. 
Podem existir diversos processos em estado de pronto aguardando para serem
executados. Estes processos são organizados em uma lista encadeada e são
ordenados pela sua importância, permitindo que os processos com prioridade mais
alta sejam executados primeiro. 
- Espera (wait) quando aguarda por algum evento externo ou por algum recurso
para continuar sua execução, como por exemplo, aguardando alguma operação de
entrada/saída.  Os processos no estado de espera também são organizados em
uma lista encadeada e, assim que o evento esperado aconteça, o processo que
aguardava o evento é então transferido para o estado de pronto.
Se o processo estiver esperando por algum recurso do sistema que não se
encontra disponível, diz~se que ele está Bloqueado.
MUDANÇA DE ESTADO DO PROCESSO
As mudança de estado são feitas tanto por eventos do próprio processo (eventos
voluntários) ou causados pelo sistema operativo (eventos involuntários). Dividido
em 4 tipos de mudanças:
 Pronto -> Execução = Quando um processo é criado, é colocado em uma lista de
processos no estado pronto. Então é escolhido pelo sistema para ser executado.
 Execução -> Espera = O processo passa para espera quando aguarda a
conclusão de um evento solicitado.
 Espera -> Pronto = O processo passa para pronto quando a operação solicitada
é atendida ou o recurso esperado é concedido.
 Execução -> Pronto = O processo passa de execução para pronto por eventos
gerados pelo sistema.

TIPOS DE PROCESSOS
CPU-bound (Ligado à CPU)
 O processo passa a maior parte do tempo no estado de execução.
 Realiza poucas operações de I/O
 Encontrado em aplicações que efetuam muitos cálculos.
I/O-bound (Ligado à E/S)
 O processo passa a maior parte do tempo no estado de espera
 Encontrado em aplicações comerciais com bastante leitura, processamento e
gravação.
 Encontrado também em aplicações interativas.

SUBPROCESSO OU PROCESSO FILHO


Em alguns sistemas, quando um processo cria outro, o processo pai e o processo
filho continuam, de certa forma, associados. Os processo filhos pode criar mais
processos, formando assim uma hierarquia de processos, porém nela apenas
existirá um processo pai e ter ou não um ou mais processos filhos. Assim:
processos filho são criados por um processo pai, de maneira hierárquica. O
subprocessos são eliminados quando o processo pai deixa de existir. Isso Permite
dividir a aplicação para trabalhar de forma concorrente. Cada processo e
subprocesso possuem seu ambiente e recursos alocados.
Os processos podem ser criados pela inicialização do sistema, Quando o sistema
operativo é carregado, vários processos aleatórios do próprio sistema são iniciados.
Por meio de outro processo em execução, Processos que já estão sendo
executados podem requisitar a criação de novos processos chamados filhos.
Por meio do utilizador do sistema, quando os utilizadores iniciam um programa por
meio de comandos ou janelas.

Término de Processos
Os processos podem terminar de forma voluntária (saída norma)l e involuntária
(saída por erro). Aqui estão alguns exemplos de motivos para os processos
cessarem sua execução e sua forma:
 Saída normal: A tarefa anteriormente solicitada termina sua execução e o
processo encerra sua execução dentro do previsto (com sucesso) avisando ao
sistema que o processo referente aquele programa terminou (saída voluntária);
 Saída por erro: O arquivo não é encontrado e o processo em execução
disparando uma requisição de sistema solicitando o encerramento do mesmo.
(saída voluntária);
 Erro fatal: acontece quando um processo encontra um erro inesperado,
geralmente por um erro de programa, e o próprio sistema operativo trata de
encerra-lo imediatamente (saída involuntária);
 Cancelamento por um outro processo: Quando um processo solicita que o
outro processo seja encerrado, por exemplo o processo pai, encerra um
processo filho que gerou para execução temporária ou para auxiliar alguma
tarefa. Kill, TerminateProcess (saída involuntária).

THREAD OU LINHA DE CONTROLE


Digamos que threads são processos dentro de processos Uma thread é parte de
um processo. Um processo é constituido de várias threads cada uma sendo
executada separadamente. Por exemplo, uma thread pode tratar do refresh e
gráficos na tela , outra trata da impressão, outra do mouse e teclado, Cada Thread
possui seu próprio conjunto de registradores, porém compartilha o mesmo espaço
de endereçamento com as demais threads do processo. Uma Thread pode alterar
os dados de outra Thread.

SEMÁFOROS
Os semáforos apresentam um mecanismo de sincronização sem espera activa que
pode ser adaptado aos diversos problemas de sincronização entre processos.

Os semáforos são constituídos por uma variável de controlo inteira e por uma lista
de processos. A primitiva Esperar bloqueia um processo quando a variável do
semáforo tem o valor zero. O contexto do processo é colocado na fila de processos
do semáforo e o seu estado passa a bloqueado. A primitiva Assinalar incrementa a
variável de controlo, se não existirem processos bloqueados, ou torna executável
um processo.

COOPERAÇÃO ENTRE PROCESSOS


A cooperação entre processos, na sua forma mais simples, consiste em bloquear
um processo P1 até que um processo P2 lhe assinale que uma determinada acção
ou acontecimento terminou.

Para sincronizar os dois processos é necessário dispor de um mecanismo de


execução que permita ao processo activo:
 Bloquear-se á espera de um sinal a ser emitido por outro processo
 Activar um processo bloqueado.
SINCRONIZAÇÃO
A sincronia de processos permite gerenciar o acesso concorrente a recursos do
sistema operacional de forma controlada por parte dos processos, de maneira que
um recurso não seja modificado em simultâneo, ou que os processos não fiquem
em espera que o recurso seja libertado.

Os processos (aplicativos ou programas) de um computador compartilham


determinados recursos da chamada região crítica, que são as variáveis globais, as
instruções de E/S, algum banco de dados, etc. Neste compartilhamento podem
ocorrer erros.
Exemplo:
Uma escola está fazendo sua matrícula apenas pela internet, o número de vagas é
5, dois usuários estão fazendo a matrícula no exato momento, finalizam a
matrícula . A operação que o programa usa da região critica: matrícula finalizada -1.
Se os dois usuários fazem a operação ao mesmo tempo, quando a matricula for
finalizada subtrai-se 1 vaga:
Matrícula finalizada -1 (5-1)=4
Matrícula finalizada -1 (5-1)=4

Quando um terceiro usuário for fazer esta mesma matrícula, o número de vagas
será expresso como 4, sendo que na verdade deveria ser 3. Isto causará
instabilidade e poderá comprometer todo o sistema. A solução para este tipo de
caso é a certeza de exclusão mútua, isto é, apenas um processo pode acessar a
região crítica por vez; Ela pode ser uma estratégia válida em certas circunstâncias,
mas no geral é considerada um anti-padrao e deve ser evitada, já que o tempo
de CPU gasto poderia ser usado noutra tarefa.

SINCRONIZAÇÃO DIRECTA
Usa um par de primitivas( dormir, Acordar) para bloquear o processo e coloca-lo
numa fila de processos suspensos ou acorda-lo, e transferi-lo para a fila dos
processos executáveis.
Uma restrição habitual é permitir apenas o uso de sincronização directa entre
processos relacionados hierarquicamente para evitar que um processo possa
arbitrariamente suspender outro sobre o qual não detém qualquer privilégio. Esta
protecção restringe a sincronização directa a processos do mesmo utilizar.

SINCRONIZAÇÃO INDIRECTA
A sincronização indirecta é feita com base em semáforos onde um único processo
executa a operação e os restantes processos esperam serem notificados de um
acontecimento através da primitiva acordar.

Exclusão Mútua
A exclusão mútua é o mecanismo mais simples para evitar compartilhamentos
problemáticos. A idéia é impedir que dois ou mais processos acessem um mesmo
recurso simultaneamente.
Neste caso, quando um processo estiver usando um recurso, todos os demais
processos devem ser colocados no estado em espera. Este acesso exclusivo do
recurso pelo processo é chamado exclusão mútua.
A exclusão mútua afeta apenas os processos concorrente quando eles
fazendo acesso a um recurso compartilhado. O trecho de código que faz
acesso ao recurso compartilhado é chamado região crítica;

ESCALONAMENTO OU CHAVEAMENTO
O Escalonador é um programa/algoritmo responsável por decidir o momento em
que cada processo obterá a CPU, e pela ordenação das “filas” de processos.

TIPOS DE ESCALONADORES
● Escalonador a longo prazo (ou escalonador de processo (job))– seleciona quais
processos devem ser trazidos para a fila de pronto.
● Escalonador a curto prazo (ou escalonador de CPU) – seleciona qual processo
deve ser
executado em seguida pela CPU.

Um escalonamento diz-se não-preemptivo, se, uma vez na posse do CPU, um


processo executa até o (ao CPU) “libertar” voluntariamente. Algoritmos não-
preemptivos têm problemas graves: pois certas classes de processos executam
durante muito tempo até bloquear, ou impedir que o computador execute processos
de outros utilizadores. Praticamente todos os sistemas operativos usam algoritmos
preemptivos

No Escalonamento Preemptivo  o SO usa as interrupções do relógio para


conceder e retirar o CPU a determinado processo. Durante certo tempo a CPU é de
um processo, Findo esse tempo, a CPU é de outro processo. : O SO usa as
interrupções do relógio para retirar o CPU ao processo em execução.

Escalonamentos preemptivos FIFO e Circular


O FIFO e um escalonamento preemptivo onde o processo que chegar primeiro ao
estado de pronto é o selecionado para a execução. Este algoritmo é bastante
simples, sendo necessário apenas uma fila, onde os processos passam para o
estado de pronto e são escalonados quando chegam ao inicio da fila. Quando um
processo vai para o estado de espera o primeiro processo da fila de pronto e
escalonado. Todos os processos quando saiem do estado de espera entram ao
final da fila de pronto.
O circular é um escalonamento preemptivo em que quando um processo passa
para o estado de execução, existe um tempo limite para o uso contínuo do
processador Denominado fatia de tempo.
Um conjunto de processos está em situação de Deadlock se cada processo 
estiver esperando por um evento que somente outro processo desse mesmo
conjunto poder fazer. Assim, nenhum processo consegue executar recurso que
precisa, ou libertar recurso que está de posse, ou ser acordado, pois o recurso que
precisa está ocupado..
As condições para se entrar no estado de Deadlock são 4 e todas devem ocorrer
simultaneamente para que ocorra Deadlock. Se uma dessas condições não ocorrer,
não haverá deadlock.:

 Exclusão Mútua: todo recurso está associado a um único processo ou


disponível;
 Posse e Espera: processos que retêm recursos solicitam novos recursos;
 Não Preempção: recursos concedidos previamente não podem ser tomados;
 Espera Circular: deve haver uma cadeia circular de dois ou mais processos,
na qual cada um está à espera de recursos retido pelo membro seguinte dessa
cadeia.

GESTÃO DA MEMÓRIA
O sistema operativo gere à memória do sistema para permitir que os processos
tenham acesso seguro à memória quando a requisitam utilizando a memória
secundária como uma extensão da memória principal. Um programa em execução
pode ser totalmente carregado para a memória principal ou não, depende do
sistema operativo, e de quanta memória livre tiver. É comum só as páginas com
código necessário serem carregadas. Mas se houver memória livre pode ser
carregado tudo. A Memória Virtual resulta da Combinação da memória principal e
secundária, dando a Impressão da memória ser muito maior do que é; na verdade
uma parte da memoria secundaria é usada como principal para armazenar uma
parte dos programas em execução.

A memória virtual, que possui 3 funções básicas:


1. Assegurar que cada processo tenha seu próprio espaço de
endereçamento, para evitar o problema de realocação
2. Prover proteção da memória para impedir que um processo utilize um
endereço de memória que não lhe pertença;
3. Impossibilitar que uma aplicação utilize mais memória do que a fisicamente
existente.

Para escolher o ponto em que deve ser carregado um processo recém criado ou
que veio do disco por uma troca, vamos utilizar alguns algoritmos assumindo que o
gerenciador de memória sabe quanto espaço alocar no processo:
 First Fit (primeiro encaixe): percorrer a fila até encontrar o primeiro espaço em
que caiba o processo. É um algoritmo rápido.
 Next Fit (próximo encaixe): o mesmo que o algoritmo anterior, só que ao invés
de procurar sempre a partir do início da lista, procura a partir do último ponto
em que encontrou. Desempenho próximo ao anterior.
 Best Fit (melhor encaixe): consiste em verificar toda a lista e procurar o
buraco que tiver espaço mais próximo das necessidades do processo. É mais
lento, e desempenho pior que o First Fit
 Worst Fit (pior ajuste): pega sempre o maior buraco disponível. Desempenho
ruim.

Fragmentação
Desperdício de páginas de memória alocadas. Pode ser de dois tipos:
 Interna: Ocorre quando o processo não ocupa inteiramente os blocos de
memória (páginas) reservados para ele. Geralmente acontece pois o tamanho
do processo não é um múltiplo do tamanho da página de memória, o que
acarreta sobra de espaço na última página alocada.
 Externa: Ocorre à medida que os programas vão terminando e deixando
lacunas cada vez menores de espaços entre as páginas. Dependendo do
tamanho que precisa ser escrito em memória, estes espaços podem ser
pequenos demais para serem úteis, e assim ficam inutilizados.
Estratégias para "atacar" o problema com o algoritmos Firt-fit, Best-fit, Worst-fit,
Next-fit

Swapping em Memória Virtual


Dentro de gestão de memória, pode não ser possível manter todos os processos
em memória, muitas vezes por não existir memória suficiente para alocar aquele
processo. Para solucionar esse problema existe um mecanismo chamado
swapping, onde a gestão de memória reserva uma área do disco para o seu uso em
determinadas situações, e um processo é completamente copiado da memória para
o disco (swap out); este processo é retirado da fila do processador e mais tarde
será novamente copiado para a memória (swap in); Então, o processo ficará ativo
na fila novamente.
O resultado desse revezamento no disco é que o sistema operativo consegue
executar mais processos do que caberia num mesmo instante na memória.
Os critérios mais utilizados para a escolha dos processos a serem carregados para
a memoria secundaria são a prioridade, escolhendo processos de menor prioridade,
e o estado do processo, selecionando os processos que estão no estado de espera.

Page fault ocorre Quando o processador tentar aceder ao endereço de uma página
marcada como fora da memoria principal, o sistema operativo terá que buscá-la no
"disco", colocar na memoria principal e só aí deixar o processador aceder a ele. Isto
é. 

Antigamente os programadores lidavam com programas maiores que a memória


disponível, para executalos a solução era dividi-los em módulos de sobreposição,
denominados overlays, os overlays eram mantidos em disco e carregados na
memória pelo sistema operacional, à medida que se tornavam necessários.
Overlay (ou sobreposição) é o mecanismo que permite dividir um programa em
módulos, e executa-los de forma independentemente um do outro.
O Mapeamento é o Mecanismo que transforma os endereços virtuais em
endereços reais.
Para que os processos possam ser referenciado ou executado, eles precisam estar
no espaços de endereçamento real. O mapeamento permite traduzir um endereço
localizado no espaço virtual para um associado no espaço real. Como
consequência do mapeamento, um programa não mais precisa estar
necessariamente em endereços contíguos na memória principal para ser
executado.

Quando um programa está em execução, existe uma tabela de mapeamento do


processo em execução. Se outro processo for executado em outro programa, o
sistema deve passar a referenciar a tabela do novo processo. Toda vez que há
mudança de contexto, o registrador é atualizado com os dados da nova tabela.

Existem duas formas de criação da memória virtual, paginação que é a técnica de


gestão de memória onde o espaço de endereçamento real é dividido em blocos do
mesmo tamanho, chamados páginas, e a segmentação que é a técnica de gestão
de memória onde o espaço de endereçamento virtual é dividido em blocos de
tamanhos diferentes, chamados segmentos.

PAGINAÇÃO
A paginação permite que o programa possa ser espalhado por áreas não contíguas
de memória física. O espaço de endereço virtual é dividido em unidades chamadas
páginas, e as unidades correspondentes na memória física são chamadas molduras
de página (ou frames). As páginas e as molduras (frames) têm de ter exatamente o
mesmo tamanho.

A divisão do espaço de endereçamento virtual e real é feito em blocos do mesmo


tamanho, que permite a ocorrência das transferências swap in e swap out, do disco
para a memoria e vice-versa.   Todo mapeamento é realizado a nível de página,
através de tabelas de páginas, em que cada página virtual do processo possui uma
entrada na tabela de pagina. Inicialmente o bit de validade é que indica se uma
página está ou não na memória principal. Se o bit tem valor 0, isto indica que a
página virtual não está na memória principal, mas se é igual a 1, a página está
localizada na memória principal. Então, todas as páginas estão com o flag = 0
quando estão na memoria secundaria, à medida que as páginas são referenciadas,
o flag é modificado para 1.

A paginação pode ser por demanda ou Antecipada.


Paginação por demanda  é quando as páginas dos processos são transferidas da
memória secundária para a principal apenas quando são referenciadas.
Paginação Antecipada é o carregamento antecipado de páginas na memória,
sendo que o sistema tenta prever as páginas que serão necessárias à execução do
programa.
Para decidir quais páginas remover da memória principal O Sistema Operativo usa
estratégias para realocação de páginas.
Exemplos de algoritmos de substituição de páginas:
FIFO (First-in, First-out) - • O SO mantém uma fila das páginas correntes na
memória. • A página no início da fila é a mais antiga e a página no final é a mais
nova. • Quando ocorre um page fault, a página do início é removida e a nova é
inserida ao final da fila. É Simples, mas pode ser ineficiente, pois uma página que
está em uso constante pode ser retirada.
Algoritmo da Segunda Chance • FIFO + bit R. • Inspeciona o bit R da página mais
velha. • Se for 0 → é velha e não usada recentemente → é trocada. • Se for 1, o bit
é feito 0. • A página é colocada no final da fila. • Seu tempo de carga é modificado,
fazendo parecer que recém chegou na memória (recebe uma segunda chance). • A
busca continua.
LRU (Least Recently Used) - algoritmo que substitui a página menos recentemente
usada. A implementação do LRU pode ser feita através de uma lista, mantendo as
páginas mais referenciada no início e a menos referenciada no final da lista. A ideia
é retirar da memória a página que vai demorar mais tempo para ser referenciada
novamente.
MRU (Most Recently Used) - faz a substituição da última página acedida.
Semelhante ao LRU, mas usa o Algoritmo Clock (relógio) para Mantér todas as
páginas numa lista circular (em forma de relógio). A ordem mantida segue a
sequência em que elas foram carregadas em memória. Além disso, é adicionado
um bit de uso que indica se a página foi referenciada novamente depois de ter sido
carregada. Ao precisar substituir uma página o algoritmo verifica se a página mais
antiga está com o bit zerado. Esse processo continua até que uma página antiga
com o bit zerado seja encontrada para ser substituída.
NRU (Not Recently Used) - busca as páginas que não foram referenciadas nos
últimos acessos para serem substituídas. Tal informação é mantida através do bit
de uso. O algoritmo também verifica, através de um bit de modificação, se a página
teve seu conteúdo alterado durante sua permanência em memória.
LFU (Least Frequently Used) ? algoritmo que escolhe a página menos acedida
dentre as que estão na memória. Para isso, é mantido um contador de acessos
associado a cada página para que se possa realizar esta verificação. Esta
informação é zerada cada vez que a página deixa a memória, prejudicando as
páginas recém-carregadas, uma vez que por estarem com o contador de acessos
zerado a probabilidade de serem substituídas é maior.
MFU (Most Frequently Used) - ele substitui a página mais referenciada. E o controle
é feito por contadores de acesso. Também é estabelecido um tempo máximo para
cada pagina na memória. Assim, toda página que tem seu tempo esgotado é
retirada da memória, deixando o número de páginas ativas variável.

SEGMENTAÇÃO:
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. 

Pedido de Interrupção (IRQ)


O Sistema Operativo permite que um aplicativo utilize o processador durante um
determinado período de tempo e então permite que outra aplicação o utilize. Como
o chaveamento é feito de uma forma muito rápida temos a impressão de que os
aplicativos estão sendo executados ao mesmo tempo.
Um pedido de interrupção (IRQ) é a forma pela qual componentes de hardware
requisitam tempo da CPU. Um IRQ é a sinalização de um pedido de interrupção de
hardware.
Por exemplo: caracteres digitados no teclado, operações de leitura sobre o HD,
dados recebidos pelo modem ou mesmo movimentos do mouse devem ser
executados mesmo que a máquina esteja processando alguma tarefa. Dessa forma
IRQ´s são canais de comunicação com o processador. Ao receber um pedido
através de algum destes canais, o processador percebe a solicitação de
interrompimento de um dispositivo.

Calls system (chamadas ao sistema)


As Interrupções podem ser geradas por hardware ou por software. No caso do
hardware, pelos dispositivos periféricos . As interrupções geradas por software são
conhecidas como calls system (chamadas ao sistema) ou traps (armadilhas). Elas
permitem por exemplo, definir acesso a recursos de baixo nível como alocação de
memória, periféricos e arquivos. Além disso, as chamadas de sistemas permitem a
criação e a finalização de processos.

Quando um programa emite uma chamada ao sistema, esta é encaminhada ao


driver apropriado. o driver pede ao dispositivo que lhe sinalize da ocorrencia. Dessa
forma, o CPU pode executar outras tarefas enquanto o programa que sinalizou um
pedido se encontra bloqueado. Ao final da operação, o controlador do dispositivo
gera uma interrupção, para sinalizar à CPU. Caso nenhuma outra interrupção esteja
pendente ou em tratamento e nenhum outro dispositivo fez uma requisição de maior
prioridade no mesmo momento, a interrupção é tratada imediatamente. Caso
contrário, ela é ignorada, e o dispositivo continuará emitindo sinal de interrupção.

Quando a execução de uma chamada de sistema é solicitada, o sistema operativo


salva todo o contexto do processo (para continuar mais tarde de onde parou),
verifica as permissões envolvidas no pedido e autoriza (se for o caso) o
processador a executar o serviço solicitado. Quando o processador termina a
execução da chamada de sistema, o SO retorna o controle para o processo,
colocando-o novamente na fila de processos prontos para a execução.

Acesso Direto à Memória (DMA)


O Acesso Direto à Memória (DMA) é uma das técnicas utilizadas para otimizar o
uso de memória por dispositivos. O DMA é um componente de hardware que
permite a transferência direta de dados entre dispositivos periféricos e a memória
principal, através de um controlador de DMA, tornando assim dispensável a
participação da CPU neste processo. Ele gere vários canais programados para
realizar a transferência de dados, de um dispositivo para a memória ou vice-versa.

Existem 8 canais DMA numerados de 0 a 7, sendo nos canais de 0 a 3 para a


transferência de dados feita a 8 bits e nos demais a 16 bits. O uso de 8 bits nos
primeiros 4 canais de DMA visa manter compatibilidade com periféricos mais
antigos por serem muito lentos, estes canais DMA são utilizados por periféricos
lentos, como leitor de disquete, placas de som e portas paralelas. Periféricos mais
rápidos, como discos rígidos, utilizam o Bus Mastering. O Canal 2 de DMA é usado
pela controladora de disquetes. Uma placa de som geralmente precisa de dois
canais de DMA, um de 8 e outro de 16 bits, usando geralmente o DMA 1 e 5. O
DMA 4 é reservado à placa mãe. Ficamos então com os canais 3, 6 e 7 livres.

DMA Disponível DMA Reservado à placa mãe


0 4
DMA Placa de Som DMA Placa de Som
1 5
DMA Controladora de drives de DMA Disponível
2 disquetes 6
DMA Porta paralela padrão ECP DMA Disponível
3 7

E/S usando DMA


No método de E/S orientada à interrupção, a cada caractere processado, é gerado
uma nova interrupção à CPU. Para diminuir o peso de processamento sobre a
CPU, a transferência por DMA acontece quando o processador inicializa o
controlador DMA, fornecendo todas as informações necessárias sobre os dados a
serem transferidos (quantidade de dados, origem e destino dos blocos e ainda o
sentido da transferência), depois ele dispara a execução do DMA e quanto a
transferência estiver ocorrendo o processador pode se dedicar a outra tarefa. Ao
final da transferência o DMA sinaliza ao processador por meio de uma interrupção
de hardware.

OS ARQUIVOS
Conceitualmente um arquivo é um conjunto de informações logicamente
relacionadas. Este conjunto de informações podem ser um conjunto de dados ou
um conjunto de instruções. Um arquivo executável possui instruções em linguagem
de máquina que são executadas pelo sistema operativo. Um arquivo também pode
ser um arquivo de dados, com dados estruturados, contendo um determinado
número de campos, com tamanhos definidos, posição inicial e posição final. Um
arquivo pode conter conteúdo multimídia, imagem, áudio, som, vídeo, etc. Do ponto
de vista do utilizador, temos diferentes tipos de arquivos porém para o sistema
operativo um arquivo é tão somente um conjunto de registros definido pelo sistema
de arquivos.

Armazenamento de Arquivos
Os arquivos são armazenados pelo sistema operativo em diferentes dispositivos
físicos como fitas magnéticas, discos magnéticos, discos ópticos, etc. O tipo de
dispositivo onde o arquivo é armazenado deve ser isolado do sistema operativo, de
forma que exista uma independência entre os arquivos a serem manipulados e o
meio de armazenamento, ou seja, O sistema operativo, deve ser capaz de
manipular arquivos independente do dispositivo físico onde estão armazenados.

Informações dos Arquivos


Um arquivo precisa ser identificado pelo sistema operativo através de um nome. Em
todos os sistemas operativos existem regras particulares para a definição de nomes
de arquivos tais como tamanho do nome, caracteres usados para o nome do
arquivo, distinção entre caracteres maiúsculos e minúsculos, etc. os SO tambem
incluem uma extensão como sendo parte do nome do arquivo. A extensão serve
para identificar o tipo do conteúdo do arquivo. Em todos os sistemas operativos é
válida a regra de não ser permitido dois arquivos com o mesmo nome no mesmo
diretório.

Organização de Arquivos
A organização de arquivos consiste em como os dados estão internamente
armazenados.  A estrutura dos dados pode variar em função do tipo de informação
do arquivo. Arquivos texto e arquivos executáveis são muito diferentes e possuem
propósitos diferentes, consequentemente estruturas diferentes. Quando um arquivo
é criado, o programa que o cria, determina a estrutura que será utilizada para
armazenar os dados no arquivo. Os arquivos possuem uma série de propriedades
que são utilizadas para definir a maneira como os dados serão lidos, atualizados,
apagados, como será apresentado para o utilizador, a data em que foi criado, etc.

As principais propriedades de um arquivo são:


•Modo de Acesso: esta propriedade define a maneira como o arquivo será
acedido, podendo ser basicamente da seguinte forma: o arquivo poderá ou não ser
lido, poderá ou não ser escrito, e se for um programa, o programa poderá ou não
ser executado;

1) •Modo de Exibição: aqui é definido se o arquivo será exibido ao utilizador


normalmente, ou se ficará oculto;
2) •Data de Criação: quando o arquivo é criado, a data de criação é armazenada;
3) •Data de Alteração: a cada instante que o conteúdo do arquivo for modificado,
ficará armazenada a data da alteração. Em sistemas que possuem apenas uma
data como propriedade do arquivo, utiliza-se geralmente a data de alteração do
arquivo na propriedade Data;
4) •Nome do Arquivo: esta propriedade identifica o arquivo, e é através do nome
que se tem acesso ao conteúdo do arquivo;
5) •Extensão do Arquivo: aqui será definido o tipo do arquivo. Esta propriedade
geralmente faz a associação do conteúdo de um arquivo com o programa
utilizado, por exemplo, um arquivo “relatório de trabalho.doc” possui o nome:
“relatório de trabalho” e a “extensão.doc”, que o associa com o programa MS-
Word.

Atributos dos Arquivos


Para suportar as operações de entrada/saída o sistema de arquivos mantem
informações de cada arquivo criado. As informações são também chamadas de
atributos dos arquivos e permitem ao sistema de arquivos conhecer entre outras
coisas o tamanho de um arquivo, qual o utilizador dono do arquivo, a data de
criação, qual a organização do arquivo, quais as permissões de
leitura/gravação/execução do arquivo, data do ultimo backup, senha para acesso ao
arquivo. Os atributos de um arquivo podem variar de acordo com o sistema
operativo. Porém alguns atributos como tamanho, data de criação e permissões
estão presentes em todos os sistemas operativos.

Sistema De Arquivos
Um sistema de arquivos é o conjunto de regras que definem a maneira como os
dados do utilizador, programas, e informações de configuração, serão gravados e
geridos nos dispositivos de armazenamento acedidos pelo computador. Essas
informações serão armazenadas fisicamente nos dispositivos, e geridas pelo
sistema operativo através de estruturas de dados, que serão a representação lógica
das informações.

Um sistema operativo é caracterizado pelo sistema de arquivos que utiliza, mas um


mesmo sistema operativo pode utilizar mais de um sistema de arquivos. No
universo Windows, o sistema de arquivos anteriormente utilizado era o FAT32 que
Devido às suas limitações, foi substituído pelo NTFS que devido à flexibilidade, se
estabeleceu até hoje. Já no universo Linux, Os mais usados são o EXT3 e o EXT4.

O nome FAT deriva da sigla, em inglês, File Allocation Table. Este sistema de
arquivos possui uma tabela que serve como um mapa de utilização do disco. O
numeral 32 deriva do fato de que cada posição no disco utiliza uma área variável de
32 bits. em discos formatados com o sistema de arquivos FAT32, não é possível ter
partições maiores do que 32 GB. Para piorar a situação, o sistema é incapaz de
reconhecer arquivos maiores que 4 GB. Além disso, é totalmente inseguro.
Qualquer pessoa com acesso ao disco pode ler todos os arquivos. O sistema
FAT32 não conseguiu atender aos requisitos dos sistemas informáticos modernos,
mas continua a ser perfeito para dispositivos de armazenamento como drive flash,
pen drive etc. uma vez que ele pode oferecer suporte para um tamanho de arquivo
de até 4 GB.

Características do FAT32
 É compatível com todos os sistemas operacionais;
 Ocupa menos espaço no disco USB;
 Conta com leitura e escrita de arquivos menores que 4 GB;
 Capacidade de criar partições do disco de ate 32 GB;
 Trabalha de forma mais rápida e com menos uso de memória.

ExFAT OU FAT64
Sabendo que o formato padrão para pen-drives é o FAT32, e que este padrao
apenas suporta tamanho máximo de arquivos de 2 Gb. Se se pretender gravar um
arquivo grande no pen-drive seria necessário dividi-lo em arquivos menores ou
então usar o sistema de arquivos NTFS, porém, não é recomendado, pois o padrao
NTFS reduz a vida útil do pen-drive em até 75%. Percebendo estes problemas, a
Microsoft criou uma extensão ao atual FAT32, que é o FAT64, também chamado
exFAT. O ExFat é o que chamamos de FAT64 bits. Ela é muito mais veloz que a
FAT32. É ideal para pen-drives usadas com grandes arquivos, ou mesmo HD's em
que a velocidade de acesso é essencial e não se precisa de recursos de segurança

Características do exFAT
 Conta com leitura e escrita de arquivos maiores que 4 GB;
 Capacidade de criar partições do disco com mais de 32 GB;
 Possui melhor gerenciamento de espaço;
 Conta com menos fragmentação.

O NTFS
O New Technology File System, conhecido como NTFS, trata-se de um sistema de
arquivos que surgiu juntamente com o lançamento do Windows NT. O NTFS possui
várias características favoráveis que, em caso de falhas, por o computador ter um
desligamento repentino, ele tem a capacidade de reverter os dados para a condição
anterior ao problema, uma vez que ele permite ao SO para manter os logs de todas
as alterações feitas sobre os arquivos, armazenamento podendo os mesmos serem
revertidos ao estado inicial, o que resulta na restauração dos arquivos.
Ele também suportar uma replicação de dados, nos sistemas RAID, e a atribuição
de permissões de acesso possibilitando ao utilizador definir quem pode e, como
aceder pastas ou arquivos. o NTFS faz uso do recurso EFS (Encriptation
FileSystem), que funciona como uma camada extra de segurança. Deste modo, o
utilizador pode encriptar seus arquivos no disco, exigindo senha para
desencriptação. O EFS não é suportado pelo FAT32.

Características do NTFS
 Cria partições maiores que 32GB;  
 Tem capacidade de compactar arquivos e economizar espaço em disco;
 Conta com melhor gestão de espaço, assim, gerando menos fragmentação;
 Possui menos espaço desperdiçado;
Conta com a criptografia de arquivos usando o EFS (Encrypting File System,).

Diretórios
O sistema de arquivos organiza os arquivos em estruturas conhecidas como
diretórios. O diretório é uma estrutura de dados em árvore que contem elementos
associados aos arquivos onde cada elemento armazena informações como a
localização física, nome, organização do arquivo e demais atributos.  Quando um
arquivo é aberto o sistema de arquivos busca sua entrada na estrutura de diretórios
e armazena a localização e nome do arquivo numa tabela mantida na memória
principal. Esta tabela mantem todos os arquivos abertos e é mantida em memória
por questões de desempenho das operações de arquivos. É importante que ao
término de uso do arquivo o mesmo seja fechado para que os dados da tabela
sejam libertados. 
Nomeação dos Arquivos e Diretórios
Os sistemas de arquivos atuais permitem a criação de arquivos e diretórios com
nomes de até 255 caracteres. Tendo em conta que não se deve utilizar nenhum
caracter especial, pois alguns são utilizados para auxiliar na organização, exibição
e administração dos arquivos. Os caracteres: “/”, “?”, “$”, “~”, etc, dependendo do
sistema operativo podem ter significados específicos. Por exemplo, nos sistemas
Unix, se um arquivo começa com o caractere “.”, indica que o arquivo ficará oculto,
e se começa com “~” significa que é uma cópia de segurança. Nas versões
Windows, dependendo do SO, o nome do arquivo pode aparecer com algumas
variações.

Gestão de Espaço Livre em Disco


A criação de arquivos existe que seja feito uma gestão do espaço livre, quais blocos
e setores estão livres para criação de arquivos. Este controle é feito através de uma
estrutura de dados em memória que possui uma lista ou tabela onde podemos
identificar blocos livres que pode ser alocados a um arquivo. Neste caso o espaço é
removido da lista para que não seja alocado a outro arquivo. Da mesma forma,
quando um arquivo é removido, os blocos são libertados e colocados de volta na
lista de blocos livres.

Existem diferentes formais de gerir a alocação do espaço livre em disco. Uma forma
mais simples é usar uma tabela de bits ou mapa de bits. Cada entrada na tabela é
associada a um bloco do disco representado por um bit, podendo assumir valor
igual a 0 ( bloco livre ) ou 1 ( bloco alocado a algum arquivo ).

Uma outra forma é usar uma estrutura de dados de lista encadeada de todos os
blocos livres do disco. Nesta forma de alocação de espaço livre, cada bloco possui
o endereço do próximo bloco no disco. A partir do primeiro bloco livre encontrado é
possível encontrar outros blocos livres para alocação ao arquivo através do acesso
de forma encadeada.  

Uma outra forma é considerar que blocos contínuos são geralmente alocados ou
libertados simultaneamente.  Com isso podemos enxergar o disco como um
conjunto de segmentos de blocos livres. Desta forma, mantem-se uma tabela com o
endereço do primeiro bloco de cada segmento e o número de blocos livres que se
seguem. Esta técnica é conhecida com técnica de blocos livres.

Alocação de Espaço em Disco


O sistema de arquivos também precisa gerir o espaço alocado aos arquivos pois na
medida em que o tempo passa e atualizações são feitas, os arquivos mudam e com
isso a necessidade de espaço para armazenamento também muda. Como o
recurso é limitado, o espaço em disco, é necessário gerir também o espaço alocado
aos arquivos. As principais técnicas para gestão do espaço alocado aos arquivos
são as seguintes:

A Alocação Contígua
A alocação contígua consistem em armazenar um arquivo em blocos
sequencialmente dispostos no disco. Neste tipo de alocação, o sistema de arquivos
localiza um arquivo através do primeiro bloco e da sua extensão em blocos
( tamanho do arquivo ). O principal problema para esta técnica de alocação de
espaço é que caso um arquivo seja criado é necessário que haja blocos livres
contíguos suficiente no disco para permitir a alocação. No momento em que o
sistema de arquivo aloca um segmento de blocos contíguos a um arquivo pode ser
que haja mais de um segmento disponível com o tamanho necessário para o
arquivo. Neste caso existem algoritmos que são usados para escolher qual
segmento de blocos será utilizado:

 First-fit - Considera o primeiro segmento de blocos encontrado com tamanho


suficiente para alocação ao arquivo.
 Best-fit - Considera o segmento de blocos com menor tamanho suficiente para
alocação ao arquivo.
 Worst-fit - Considera o segmento de blocos com o maior tamanho para
alocação ao arquivo.

A Alocação Encadeada
Na alocação encadeada um arquivo pode ser organizado com um conjunto de
blocos ligados logicamente no disco, independente de sua localização física ou
seja, não é necessário que os blocos sejam fisicamente contíguos no disco. Neste
caso cada bloco possui um ponteiro para o bloco seguinte do arquivo e assim
sucessivamente. Nesta técnica a localização física do disco não apresenta
problema pois os blocos são ligados uns aos outros através do ponteiro e não
necessitam estar fisicamente contíguos no disco.
Na alocação indexada é possível o acesso direto ao bloco. Para isso os endereços
de todos os blocos são mantidos numa estrutura chamada bloco de índice.

Proteção de acesso
Todo sistema de arquivo deve permitir o compartilhamento de arquivos por diversos
utilizadores e processos garantindo que somente utilizadores autorizados tenham
acesso aos arquivos compartilhados. A proteção de acesso é implementada através
de controle de concessão de operações de leitura, gravação, execução e em alguns
casos remoção aos utilizadores do sistema operativo. A proteção de acesso aos
diretórios é implementada para as operações de visualizar os arquivos de
um diretório, criar/remover arquivos em um diretório e remover um diretório.
Existem Basicamente 3 mecanismos de proteção de acesso que estão disponíveis
na maioria dos sistemas operativos:

Senha de Acesso - O uso de senha de acesso ao arquivo é o mais simples. O


utilizador tem ou não acesso ao arquivo mediante o conhecimento da senha de
acesso do arquivo. Caso o arquivo seja compartilhado este mecanismo não poderá
ser usado pois todos os utilizadores teriam que saber a senha de acesso ao
arquivo.
Grupos de Utilizador - Cada utilizador é associado a um grupo de utilizadores. Os
utilizadores do mesmo grupo compartilham arquivos sem problemas. Este
mecanismo na realidade implementa as permissões de leitura/ gravação e
execução de arquivos que pertençam a um utilizador, a um grupo de utilizadores e
a outros utilizadores.
Lista de Controle de Acesso - Cada arquivo possui uma lista de controle de
acesso contendo quais utilizadores podem aceder o arquivo e quais as permissões
que cada utilizador possui.

A tecnologia RAID ( redundant array of independent disks), Conjunto Redundante


de Discos Independentes, é um mecanismo criado com o objetivo de melhorar o
desempenho e segurança dos discos rígidos é utilizada para controlar o uso de
várias unidades físicas (HDs) num único servidor para suprir duas necessidades
básicas, a confiabilidade (torna o sistema de disco mais seguro, usando a técnica
de Espelhamento - mirroring), e o desempenho (torna o sistema de disco mais
rápido, com o uso de Divisão de dados - stripping). A partir deste ponto, alguns
métodos (paridade, mirroring, stripping) são utilizados isolados ou combinados para
compor diferentes estruturas lógicas (RAIDs 0, 1, 2, 3, 4, 5, 6, 10) que podem ser
controladas por software ou por hardware.

OS NÍVEIS DE RAID

RAID NÍVEL 0 - Também chamado de "Striping" ou "Fracionamento" este nível é


usado quando se deseja melhorar a performance do computador, nele os dados
são divididos em segmentos, que tem um tamanho específico de bloco, e divididos
entre os discos proporcionando grande velocidade na gravação e leitura de
informações pois os dados são gravados ao mesmo tempo nos discos, logo quanto
maior o número de discos mais rápido é a distribuição dos dados. Esse nível não
aceita falhas uma vez que não existe redundância ao gravar os dados, logo se um
HD der problema pode ocasionar perda de informações.
RAID NÍVEL 1 - Também chamado de "Mirroring" ou "Espelhamento" este nível é
usado quando se deseja garantir a integridade dos dados, nele os dados são
clonados para outro dispositivo, ou seja, se um computador com dois disco rígidos
utilizam este nível, ao gravar dados em um disco automaticamente será gravado no
outro tornando-os cópias idênticas, a gravação se torna mais lenta uma vez que
precisa ser gravado duas vezes, entretando a leitura é mais rápida pois existem
duas fontes de dados idênticas para ler. Se houver falha em um disco ou perda de
dados basta recuperar o setor defeituoso copiando os arquivos contidos do outro
disco, esse nível é muito usado em servidores de arquivos.
RAID NÍVEL 2 - Este nível é responsável por monitorar os discos quanto a falhas
garantindo uma maior consistência nos dados caso ocorra falta de energia
durante a escrita. Essa funcionalidade perdeu utilidade a partir do momento em
que os fabricantes de disco rígidos passaram a implementar mecanismos internos
para detectar falhas e garantir a integridade dos dados.
RAID NÍVEL 3 4 5 e 6  - utilizam vários discos no processo de gravação, pois os
dados são divididos entre os discos onde são gravados e os discos que guardam as
informações de paridade, assim todos os bytes tem sua paridade exceto 1 que
identifica o erro, através dessas informações é possível identificar onde ocorreu o
erro garantindo a integridade dos dados em caso de recuperação, a sua montagem
é via software e exige que todos os eixos das unidades de discos estejam
sincronizados.
RAID NÍVEL 0+1 - É o nível mais caro de ser implementado pois exige no mínimo 4
discos rígidos, esse nível implementa rapidez e integridade dos dados pois ele
combina os níveis 0 e 1 onde os dados são divididos entre os discos para melhorar
o rendimento, mas também utilizam outros discos para duplicar as informações.

 RAID 0: todos os discos funcionam como apenas um, multiplicando a


performance geral pelo número de discos utilizados no conjunto (desde que o
sistema oepracional ofereça suporte), unicamente com o objetivo de aumentar o
desempenho. Não utilizada nenhuma forma de redundância ou paridade;

 RAID 1: utilizado quando a confiabilidade dos dados gravados é a maior
preocupação, utiliza no mínimo dois discos e basicamente copia os dados de um
em outro, se acaso um deles falhe. Possui uma performance geral menor em
comparação a um disco comum e não utiliza paridade;

 RAID 5: utiliza paridade para a verificação de dados em todos os discos
utilizados, sendo muito parecido com o RAID 0, mas com tolerância a falhas devido
à utilização de um ECC (Error Correcting Code). É umas das opções mais
vantajosas, mas tem uma implementação difícil;

 RAID 0 + 1: combinação do desempenho do RAID 0 com a tolerância a falhas
do RAID 1, sendo necessário no mínimo 4 discos funcionando como dois conjuntos
iguais ao de um RAID 0;

 RAID 1 + 0 (ou RAID 10): é o inverso da implementação acima, sendo um
RAID 0 de no mínimo 4 discos em RAID 1;
Existem outras opções de sistemas RAID que não incluimos na lista ou por estarem
obsoletas, não serem mais suportadas ou ambas. Depois da escolha destas
opções, é hora de escolher entre dois modos diferentes de gerenciá-las, ambos
com suas vantagens e desvantagens:

 Implementação via hardware: utiliza controladoras proprietárias e o


gerenciamento é feito sem a necessidade de utilizar o processador. O processo de
inicialização é feito pelo BIOS da placa-mãe e oferece um tratamento de erros mais
eficiente. Caso a placa-mãe não possua suporte nativo a essa opção, o usuário
pode optar por adquirir uma placa separada com inteface PCI ou PCI Express,
fornecendo também um armazenamento em forma de cache para melhorar a
performance;

Você também pode gostar