Академический Документы
Профессиональный Документы
Культура Документы
Abertos
II – OBJETIVOS ESPECÍFICOS
Para que a CPU não fique muito tempo sem executar tarefa alguma, os sistemas
operacionais utilizam técnicas para escalonar os processos que estão em execução ao
mesmo tempo na maquina.
O escalonamento de processos é uma tarefa complicada, pois nenhum algoritmo é
totalmente eficiente e a prova de falhas, principalmente em se tratando de sistemas
interativos, como o Windows, pois a interação com o usuário é fundamental para este
sistema onde quem o utiliza procura respostas rápidas e a todo o
momento processos são interrompidos pelo usuário.
O escalonador do SO utiliza alguns critérios de escalonamento, como: a taxa de
utilização de CPU, que é a fração de tempo durante a qual ela está sendo
ocupada; throughput que são números de processos terminados por unidade de
tempo; turnaround que é o tempo transcorrido desde o momento em que o software
entra e o instante em que termina sua execução; tempo de resposta: intervalo entre a
chegada ao sistema e inicio de sua execução; tempo de espera: soma dos períodos em
que o programa estava no seu estado pronto.
Revisão
O projeto de um escalonador adequado deve levar em conta uma série de diferentes necessidades, ou
seja, o projeto de uma política de escalonamento deve contemplar os seguintes objetivos:
Ser justo: Todos os processos devem ser tratados igualmentE, tendo possibilidades idênticas de uso do
processador, devendo ser evitado o adiamento indefinido.
Maximizar a produtividade (throughput): Procurar maximizar o número de tarefas processadas por
unidade de tempo.
Ser previsível: Uma tarefa deveria ser sempre executada com aproximadamentE o mesmo tempo e custo
computacional.
Minimizar o tempo de resposta para usuários interativos.
Maximizar o número possível de usuário interativos.
Minimizar a sobrecarga (overhead): Recursos não devem ser desperdiçados embora algum investimento
em termos de recursos para o sistema pode permitir maior eficiência.
Favorecer processos "bem comportados": Processos que tenham comportamento adequado poderiam
receber um serviço melhor.
Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados, ou seja, processos
que usam recursos sub- utilizados deveriam ser favorecidos.
Exibir degradação previsível e progressiva em situações de intensa carga de trabalho.
Revisão
Tempo de uso
Seqüência organizada
Condição de não-preempção: recursos já alocados a processos não podem ser tomados a força.
Eles precisam ser liberados explicitamente pelo processo que detém a sua posse;
Condição de exclusão mútua: cada recurso ou está alocado a exatamente um processo ou está
disponível;
Condição de posse-e-espera: cada processo pode solicitar um recurso, ter esse recurso alocado
para si e ficar bloqueado esperando por um outro recurso;
Condição de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada
um dos quais esperando por um recurso que está com o próximo membro da cadeia.
Observação
ps,
ps mostra os processos em andamento
kill, killall
kill killall, Mata um ou todos os processos
Um dos recursos mais práticos encontrados no htop é o que fornece a tecla F5, isto é, a árvore de
processos vinculados em andamento.
Administração de processos
ps
Permite a visualização de um ou todos os processos
em andamento. A variedade de parâmetros faz
ipossivel a reprodução dos mesmos aqui. Os que se
destacam sao -e para a visualização de todos os
parâmetros, H para a visualização em forma de
árvore hierarquica de processos e F para
visualização de threads
Administração de processos
kill, killall
São comandos que acabam
com processos em andamento.
Este comando realiza o trace (roteamento) de todas as chamadas de sistema que sao feitas num
determinado comando.
Os dados resultantes são a sequencia de chamadas de threads, com sua posição de memória, id de
processos e um conjunto de dados vinculados.
Administração de processos
strace
Administração de Hardware
Monitor de sistema
Este recurso é encontrado na
instalação padrão de
distribuições como Ubuntu. Está
disponível no menu atraves de
Sistema / Administração / Monitor
de sistema.
“A memória é um recurso importante que deve ser gerenciado com muito cuidado. Apesar de
atualmente os computadores pessoais possuírem milhares de vezes mais memória do que
um IBM 7094 ( o maior computador do mundo no inicio da década de ’60), os programas
crescem muito mais rapidamente do que as memórias”
Gerenciamento de Memória
Como já foi visto em disciplinas anteriores, existem três grupos básicos de
sistemas operacionais:
No caso de multi processados de acoplamento fraco são estudados por cada
sistema operacional de cada nó da configuração
Gerenciamento de Memória
Nos sistemas operacionais mono -
programáveis o sistema de Sistema Operacional
gerenciamento de memória é mais mono Programável
simples.
SO Programas
Gerenciamento de Memória
Na figura ao lado,
Tanenbaum apresenta a
idéia de três tipos de
gerenciamento de memória.
Nos três casos a
convivência entre programas
de usuário e de sistema
estão presentes.
Worst fit: Vasculha a lista à procura do maior espaço disponível, já que tomando
o maior espaço possível, o restante do espaço ainda é grande o suficiente para
acomodar um novo processo. Na verdade, a simulação mostrou que esta
abordagem não leva a bons resultados.
Módulo 4 – Memória Virtual: Aspectos
básicos, Paginação por demanda,
Substituição de Página, Algorítmos
FIFO, Otimo e LRU
Memória Virtual
“A memória virtual consiste em recursos de hardware e software com
três funções básicas:
Dessa forma a CPU pode ser dada a outro processo, como em qualquer
outro SO.
Memória Virtual
Conceitos Importantes:
Princípio da Localidade: Quando um programa que acessa uma
porção relativamente pequena do espaço endereçável em um instante
qualquer. Por este princípio, uma página acessada provavelmente será
acessada novamente.
Localidade Temporal: Se um item é referenciado, ele tenderá a ser
referenciado novamente. Exemplo: loops (instruções e dados).
Localidade Espacial: Se um item é referenciado, itens cujos endereços
são próximos a este, tenderão a ser referenciados também. Exemplo:
acesso a dados de um array.
Memória Virtual
Existem dois mecanismos principais para implementação da memória virtual: paginação e
segmentação
Na paginação a memória física é dividida em blocos de bytes contíguos
denominados molduras de páginas (page frames), geralmente com tamanho de
4 KB (arquiteturas x86 e x86-64) ou 8 KiB (arquiteturas RISC) de tamanho. Por sua vez, o
espaço de memória de um processo (contendo as instruções e dados do programa) é dividido
em páginas que são fisicamente armazenadas nas molduras e possuem o mesmo tamanho
destas.
Na segmentação existem vários espaços de endereçamento para cada aplicação (os
segmentos). Neste caso, o endereçamento consiste em um par ordenado
[segmento:deslocamento], onde o deslocamento é a posição do byte dentro do segmento.
Na arquitetura x86 (32 e 64 bits), são usadas a segmentação e a paginação[. O espaço de
endereçamento de uma aplicação é dividido em segmentos, onde é determinado um
endereço lógico, que consiste no par [segmento:deslocamento]; o dispositivo de segmentação
converte esse endereço para um endereço linear (virtual); finalmente, o dispositivo de
paginação converte o endereço virtual para físico, localizando a moldura de página que
contém os dados solicitados.
O endereço virtual é encaminhado para a unidade de gerenciamento de memória (MMU -
Memory Management Unit), um dispositivo do processador, cuja função é transformar o
endereço virtual em físico e solicitar este último endereço ao controlador de memória. A
conversão de endereços virtuais em físicos baseia-se em tabelas de páginas, que são
estruturas de dados mantidas pelo sistema operativo.
Nesta transparência são apresentados, com intuito de índice, alguns comandos que
permitem a visualização e gerenciamento da memoria
Free
Mostra espaços livres e ocupados
da memoria RAM e SWAP
Memstat
Lista todos os processos,
executáveis e Libraries partilhadas
que usam memoria virtual
PMap
Reporta o mapa de memória de um
determinado processo
Mapa de memória no Linux
Free Tamanho total da memória instalada
Tamanho total da memória usada
Comando free
Segundo o comando
man:
“memstat lists all the
processes,
executables, and
shared libraries that
are using up virtual
memory.”
Este comando tem as seguintes opções de visualização:
a. Dispositivos de Bloco; e
b. Dispositivos de Caractere.
Sistemas de E/S
O sistema de arquivos
arquivos, por exemplo, lida apenas com
dispositivos de blocos abstratos e deixa a parte dependente
do dispositivo para o software de baixo nível chamado drives
do dispositivo
dispositivo..
Sistemas de E/S
INTERRUPÇÃO
• Sinal gerado por um determinado hardware ou por software (TRAP)
que faz com que a CPU pare aquilo que está fazendo e inicie outra
atividade;
O DMA foi inventado para liberar a CPU desse trabalho de baixo nível.
Quando é utilizado, a CPU fornece dois itens de informação para a
controladora, além do endereço do bloco no disco: o endereço de memória
para onde o bloco deve ir e o número de bytes a transferir. A controladora
não pode copiar os dados diretamente para a memória, ela deve fazer uso de
um buffer interno, visto que mesmo iniciada a transferência para a memória
principal (MP) outros dados continuam entrando no disco; fazendo a
bufferização desses blocos entrantes é possível liberar o barramento. Quando
um bloco é bufferizado internamente o barramento não é necessário até que o
DMA inicie. Outra razão da
existência de um buffer interno é
a possibilidade de realizar a
verificação no próprio buffer antes
de mandá-lo para a MP.
Sistemas de E/S
Depois que a controladora leu o bloco inteiro do dispositivo para seu buffer e
verificou a soma de verificação, a controladora gera uma interrupção. Assim,
quando o SO inicia, ele não precisa copiar o bloco para a memória, pois ele já
está lá.
Sistemas de E/S
• E/S Programada: CPU faz polling para verificar se o dispositivo está pronto;
• E/S orientada à interrupção: Dispositivo avisa que está pronto através de uma
interrupção;
• E/S com DMA: CPU fica livre para fazer outras coisas e trata menos
interrupções;
Princípios de E/S
Cache de disco são porções da memória RAM usadas por arquivos e bibliotecas
lidos do HD que têm uma maior probabilidade de serem acessados, uma espécie
de Prefetch (usado pelo windows), o que melhora o desempenho do sistema.
Contexto de Memória Cache
A memória cache surgiu quando percebeu-se que as memórias não eram
mais capazes de acompanhar o processador em velocidade, fazendo
com que muitas vezes ele tivesse que ficar “esperando” os dados serem
liberados pela memória RAM para poder concluir suas tarefas, perdendo
muito em desempenho. Se na época do 386 a velocidade das memórias
já era um fator limitante, imagine o quanto este problema não atrapalharia
o desempenho dos processadores que temos atualmente. Para
solucionar este problema, começou a ser usada a memória cache, um
tipo ultra-rápido de memória que serve para armazenar os dados mais
freqüentemente usados pelo processador, evitando na maioria das vezes
que ele tenha que recorrer à comparativamente lenta memória RAM.
Sem ela, o desempenho do sistema ficará limitado à velocidade da
memória, podendo cair em até 95%!.
Contexto de Memória Cache
São usados dois tipos de cache, chamados de cache primário, ou cache
L1 (level 1), e cache secundário, ou cache L2 (level 2).
O cache primário é embutido no próprio processador e é rápido o
bastante para acompanhá-lo em velocidade. Sempre que um novo
processador é desenvolvido, é preciso desenvolver também um tipo mais
rápido de memória cache para acompanhá-lo.
Como este tipo de memória é extremamente caro (chega a ser algumas
centenas de vezes mais cara que a memória RAM convencional) usamos
apenas uma pequena quantidade dela.
Para complementar, usamos também um tipo um pouco mais lento de
memória cache na forma do cache secundário, que por ser muito mais
barato, permite que seja usada uma quantidade muito maior.
Conceito de PreFetch
O pré-fetch (fetch = busca) é uma busca antecipada, ou seja, uma
técnica que deixa os dados disponíveis antes de você precisar deles.
Os processadores usam inúmeras técnicas de prefetch para antecipar
qual o dado será necessário a seguir para armazená-lo na memória
cache interna (L1 e L2) antes que o processo pare aguardando a sua
disponibilidade, e com isso se ganha muito desempenho.
ABCDEFGHIJKLMNOPQRSTUVWYXZ
QWERTYUIOPASDFGHJKLZXCVBNM
Criptografia por chave Publica
Os sistemas por chave secreta são eficientes, pois a
quantidade de computação necessária para
criptografar ou decriptar uma mensagem é
controlável, porem há uma grande desvantagem: o
emissor e o receptor devem, ambos, possuir a
chave secreta compartilhada. Pode até, mesmo,
obte-la fisicamente, um dando-a ao outro. Para
contornar esse problema, é usada a criptografia
por chave Pública . Esse sistema apresenta a
seguinte propriedade: chaves distintas são usadas
para criptografar e decriptogração e , dada uma
chave criptográfica bem conhecida, é praticamente
impossível descobrir a chave correspondente de
decriptação
Criptografia por chave Publica
Um sistema de chave pública, chamado RSA, explora
o fato de a multiplicação de grandes números ser
muito mais fácil para um computador que a
fatoração de grandes números, especialmente
quando toda a aritmética está implementada com
base na aritmética de módulo e todos os números
envolvidos tem centenas de dígitos. Esse sistema é
amplamente usado no mundo criptográfico, assim
como sistemas baseados em logaritmos secretos. O
principal problema da criptografia por chave pública
é que ela é milhares de vezes mais lenta que a
criptografia simétrica.
Criptografia por chave Publica
A criptografia por chave pública funciona com todos
escolhendo um par de chaves (pública, privada) e
tornando pública a chave publica. A chave pública é a
chave criptográgica; a chave privada é a de decriptação.
Em geral, a criação da chave é automatizada,
possivelmente com uma senha escolhida pelo usuário
alimentada em um algoritmo como uma semente. Para
enviar uma mensagem secreta para um usuário, um
usuário emissor criptografa a mensagem usando a
chave pública do receptor. Como somente o receptor
tem a chave privada, apenas ele pode decriptar a
mensagem.
Assinaturas digitais
Muitas vezes é necessário assinar documentos
digitalmente. Por exemplo, suponha que um cliente
de um banco instrua a comprar algumas ações para
ele, enviando ao banco uma mensagem pelo correio
eletrônico. Uma hora depois da ordem ser dada, as
ações despencam. O cliente, então, nega que tenha
enviado a mensagem eletrônica. O banco poderia
produzir uma mensagem eletrônica, é claro, mas o
cliente poderia alegar que o banco a forjou para
obter a comissão. Como um juiz saberia quem está
dizendo a verdade?
Assinaturas digitais
As assinaturas digitais tornam possível assinar mensagens
eletrônicas e outros documentos digitais de modo que elas não
possam ser depois repudiadas por quem as enviou. Uma
maneira comum é, primeiro, submeter e documento a um
algoritmo de hashing de uma via que seja muito difícil de
inverter. A função hashing produz em geral um resultado de
tamanho fixo e independente do tamanho do documento
original. As funções hashing mais conhecidas e usadas são MD5
( message digest – compêndio de mensagens), que produz um
resultado de 16 bytes, a SHA(secure hash algorithm – algoritmo
seguro de hash), que produz um resultado de 20 bytes.
Assinaturas digitais
Ping w.x.y.z
Autenticação por meio de senhas
Invasões
Se os endereços citados estiverem ativos e se o
comando ping não estiver desligado pelo dono do
computador de destino, o cracker saberá que tem uma
porta aberta para realizar seus testes com os nomes e
senhas que ele achar que pode combinar como senhas.
Se encontrados IP´s que respondem ao chamado do
cracker poderá ser invadido com:
telnet w.x.y.z
Autenticação por meio de senhas
Invasões
Muitos daemons de telnet derrubam uma conexão TCP depois de
algumas tentativas de accesso ao sistema sem sucesso, para
atrapalhar crackers. Os crackers respondem configurando diferentes
threads em paralelo, a partir de diferentes máquinas,
simultaneamente.
Se o sistema for invadido como superusuário o cracker pode fazer
uso de farejadores de pacotes (package sniffer). Este farejador
examina todos os pacotes de rede no sistema evidenciando
vulnerabilidades.
Autenticação por objeto físico
O segundo método de autenticação de usuários consiste em
verificar a posse de algum objeto físico e não alguma coisa que seja
informada. Para esse fim, as chaves de metal para portas são usadas
hà séculos. Atualmente, um objeto físico bastante empregado é o
cartão de plástico, que inserido em um leitor que faz parte de um
terminal ou de um computador. Em geral, o usuário não deve
somente inserir o cartão, mas, também digitar uma senha, a fim de
impedir que alguém use o cartão de forma indevida.
Autenticação por objeto físico
Existem dois tipos de modalidades de cartões de uso
freqüente:
Banda magnética
Podem abrigar em torno de 140 bytes de informações numa
fita magnética colada no verso do cartao.
Uso de chip
Possuem um circuito integrado que armazena informações que
permitem a identificação do seu dono
Autenticação por objeto físico
Cartões com chips
Os cartões que possuem chips se subdividem em duas categorias:
◦Cartões com valores armazenados
Tem uma pequena quantia de memoria usando tecnologia EEPROM
(normalmente menos de 1Kb) para permitir que o valor permaneça
mesmo depois de retirado do leitor e não tenha alimentação de energia
◦Cartões inteligentes
Nos dias de hoje tem algo como uma CPU de 8 bits a 4Mhz, 16 Kb de
ROM, 4 Kb de EEPROM, 512 bytes de RAM e um canal de comunicação
com o leitor de 9600 bps. Este tipo de cartão que tem custo de 5 à 50
dólares, são destinados para usos bancários ou de crédito.
Autenticação por biometria
Mede as características físicas do usuário, procurando particularmente, as
características únicas de cada ser sem possibilidade de duplicidade entre
dois seres diferentes.
Um sistema biométrico típico é formado por duas partes: cadastramento
e identificação
Durante o cadastramento, as características do usuário são medidas e os
resultados digitalizados. Então, os atributos significativos são extraídos e
armazenados em um registro associado ao usuário.
Durante a identificação são informados os dados do usuário e o sistema
faz as medições fazendo as comparações com os dados armazenados.