terça-feira, 23 de junho de 2009

11 - Segurança - Wassily

Os recursos do computador precisam ser protegidos contra acesso não-autorizado, destruição ou alteração maliciosa e introdução acidental a inconsistência.

                    Formas de acesso malicioso


• Leitura não autorizada de dados (ou roubo de informações)
• Modificação não-autorizada de dados
• Impedimento de uso legítimo do sistema (ou negação de serviço)

Para proteção do sistema, é necessario tomar medidas de segurança em 4 níveis:


Físico: Instalações contendo sistemas computadorizados precisam ser fisicamente protegidas contra a entrada armada ou sorrateira de intruosos


Humano: Evitar que usuário tenha a chance de autorizar um usários que podem dar acesso a intrusos.


Rede: A interceptação do enorme fluxo de dados nos sistemas modernos pode ser prejudicial, e a interrupção das comunicações poderia constituir um ataque de negação de serviço (denial of service) remoto, diminuindo o uso dos usuários e a confiança do sistema


Sitesma operacional: Precisa se proteger contra brechas de segurança acidentais ou propositais.

                                               

                    Autentificação do usuário


-Identificar os programas e processos em execução, inicialmente identificando cada usuário do sistema.

Formas:
Senha – se senha fornecida pelo usuário combinar com a senha armazenada no sistema, o sistema considera que o usuário é legítimo. Usadas para proteger objetos no sistema computadorizado, na ausência de esquemas de proteção mais complexos.


Vulnerabilidades da senha – podem ser adivinhadas, expostas de forma acidental, farejadas, ou transferidas de usuários autorizados para não autorizados.


Senhas criptografadas – O sistema contém uma função (algorítmo de criptografia) bem difícil de inverter, mas simples de calcular. A função é encarregada de codificar todas as senhas. Mesmo que a senha seja vista, não poderá ser decodificada a menos que se conheça o código usado na decodificação. Há porém uma falha, já que o sistema não tem mais o controle sobre as senhas. Qualquer um com uma cópia do arquivo de senhas pode executar rápidas rotinas de criptografia contra ela. 

-Novas versões do UNIX armazena as entradas de senha criptografadas em um arquivo que só pode ser lido pelo superusuário
-Muitos sistemas como o próprio UNIX tratam apenas os primeiros caracteres significativos da senha.

Senhas de única vez – Quando a sessão é iniciada, o sistema seleciona aleatoriamente e apresenta uma parte de um par de senhas; o usuário precisa fornecer a outra parte. A senha é diferente em cada ocasião, e qualquer um que capture a senha de uma sessão e tente reutilizá-la em outra sessão falhará. 


Biometria – Leitores de impressão digital lêem os padrões de sulcos do seu dedo e os convertem em uma sequência de números. O software pode então digitalizar um dedo no aparelho e comparar suas características com aquelas sequências armazenadas. 

                    Ameaças ao programa

Cavalo de tróia – em sistemas que permitem que programas escritos por usuários sejam executados por outros usuários, caso os programas sejam executados com direitos de acesso do usuário executando, outros usuários podem abusar desses direitos. Um segmento de código que abusa do seu ambiente é um cavalo de Tróia.


Porta de armadilha – projetista de um programa ou sistema pode deixar um furo no software onde somente ele é capaz de usar.


Estouro de pilha e buffer – o ataque explora um bug de um programa. O atacante envia mais dados do que o programa estava esperando, e por tentativa e erro, ou examinando o código fonte do atacado, determina a vulnerabilidade.

 

                    Ameaças ao sistema

 
Worm – Uso do mecanismo de procriação para arruinar o desempenho do sistema. Verme procria cópias de si mesmo usando os recursos do sistema e talvez vloqueando todos os acessos.


Vírus – Se espalham em outros programas. Fragmentado de código embutido em um programa legítmo. 


Negação de serviço – Visa interromper o uso legítmo de um sistema ou instalação.                            

                   Segurança de sistemas e instalações

-Sondar o sistema periodicamente em busca de furos na segurança.

Detecção de intrusões

Possui grande variedade de técnicas, que variam por diversos eixos:
• Momento em que detecção ocorre
• Tipos de entradas examinadas para detectar a atividade intrusiva
• Intervalo de capacidades de resposta

Auditoria e logging – Elementos relevantes à segurança são registrados em uma trilha de auditoria e depois comparados com assinaturas de ataque ou analisados em busca do comportamento anômalo. 

Tripwire – ferramenta para monitorar os sistemas de arquivos em busca de arquivos acrescentados, excluidos ou alterados, e alertar os administradores de sistemas sobre essas modificações.

Monitoração de chamadas de sistema – Monitora as chamadas de sistema de um processo para detectar, em tempo real, quando um processo está desviando do seu comportamento esperado de chamada de sistema. 

                    CRIPTOGRAFIA
 
- A criptografia é usada para restringir os emissores e receptores em potencial de uma mensagem. É baseada em segredos, chamados chaves, que são distribuidos seletivamente aos computadores em uma rede e usados para processar mensagens. Permite ao destinatário de uma mensagem verificar se a mensagem foi criada por algum computador que possui ou uma certa chave, ou origem da mensagem.

Codificação -É um meio de restringir os possíveis receptores de uma mensagem. Um algorítmo de codificação permite ao emissor de uma mensagem garantir que somente um computador possuindo uma chave certa possa ler a mensagem

                    Classificações da segurança do computador


• A - Nível mais alto, equivalente a B3 arquitetonicamente, mas utiliza especificações de projeto formais e técnicas de verificação, concedendo um alto grau de garantia que a TCB foi implementada de maneira correta.
• B – Todas as características da C2, e rótulo de sensibilidade a cada objeto
• C – Proteção discricionária e contabilidade dos usuários e suas ações
• D – Classificação de nível mais baixo, proteção mínima


segunda-feira, 22 de junho de 2009

Métodos de Controle de E/S

Existem basicamente três métodos de controle de entrada e saída:

- pooling (ou entrada/saída programada);
- E/S por interrupção;
- acesso direto à memória, DMA (Direct Memory Access).

Na entrada e saída programada o processador fica em um estado de inquisição para os dispositivos de E/S. Em cada dispositivo é verificada a palavra de status. Se um dado foi enviado ao dispositivo, ou chegou de um dispositivo, o registrador de status do controlador é alterado o que permite ao processador saber se existem dados a serem tratados.


Na segunda hipótese de transferência de dados, o processador não se preocupa em perguntar aos dispositivos se existem novos dados, mas o próprio dispositivo pede ao processador sua atenção usando um pedido de interrupção. Neste caso o processador deve parar a execução do processo corrente e atender ao dispositivo que o chama.

Finalmente o processo de DMA desafoga o processador do controle de entrada e saída dos dados entre a memória e o dispositivo periférico.No DMA o processador usa um dispositivo externo, chamado controlador de DMA, para programar as transferências de dados. Tipicamente, o processador informa os endereços da memória e do dispositivo de E/S envolvidos na transação e a quantidade de dados a ser transferida. Depois ele libera os barramentos para uso e controle do controlador de DMA. O processo de transferência de dados diretamente para memória implica no acesso aos barramentos do sistema (barramento de endereços, dados e controle que interliga o sistema de memórias, o processador e os dispositivos de E/S). É preciso um árbitro para os barramentos a fim de garantir que cada módulo os utiliza no momento adequado.



domingo, 21 de junho de 2009

10 - Sistemas de E/S - Phabiulla

Os dispositivos de E/S variam muito com sua velocidade, métodos variados são necessários para controla-los. Esses métodos formam um subsistema de E/S do kernel, que isola o restante do kernel da complexidade de gerenciamento dos dispositivos de E/S.

quarta-feira, 17 de junho de 2009

9-Sistemas de Arquivo - Mauro

Antes de começarmos a falar de sistemas de arquivos, primeiramente vamos definir o que vem a ser um arquivo?
Um arquivo é uma coleção nomeada de informações relacionada no armazenamento secúndário, os arquivos são mapeados pelo sistema operacional que cria uma unidade de armazenamento lógica.
Agora já sabemos o que é um arquivo e como o sistema operacional o armazena.
A estrutura de arquivo consiste em três tipos:
- Sequência em bytes.
- Sequência de registros.
- Árvore.

Possui vários tipos de arquivos:
Um arquivo texto é uma sequência de caracteres organizados em linha, um arquivo executável é uma série de seções de códigos que o loader pode trazer para a memória ou um arquivo objeto que é uma sequência de bytes organizados em blocos que podem ser entendidos pelo linker do sistema.
Os acessos aos arquivos podem ser feitos de duas maneiras:
. Acesso sequêncial - faz a leitura de todos os bytes e registros desde o início e não pode saltar ou fazer a leitura fora de sequência.
. Acesso aleatório - os registros ou bytem são lidos em qualquer ordem e é essencial para sistemas de base de dados.
Os arquivos possui atributos que armazenam informações específicas do arquivo, os mais importantes são:
. Nome: Nome simbólico do arquivo.
. Identificador: Normamente utiliza um número que identifica o arquivo dentro do sistema de arquivos.
. Tipo: Essa informação faz com que o sistema admite diferentes tipos de arquivos.
. Local: Ponteiro para um dispositivo e para o local do arquivo nesse dispositivo.
. Tamanho: O tamanho atual do arquivo e possivelmente o tamanha máximo do arquivo.
. Proteção: Informações de controle de acesso que permitem quem pode realizar leitura, escrita, execução e outras operações sobre o arquivo.
. Hora, Data e Identificação do usuário: Essas informações são utilizadas para ser mantidas a criação, última modificação e o último uso.
Alguns exemplos de nomeação de arquivo:
arquivo.c: programa fonte em c.
arquivo.gif: Imagem de formato de intercâmbio gráfico da Compuserve.
arquivo.hlp: Arquivo de auxílio.
arquivo.jpg: Imagem codificada com o padrão JPEG.
arquivo.mp3: Música codificada no formato de áudio MPEG - camada 3.
arquivo.pdf: Arquivo no formato portátil de documentos.
arquivo.txt: Arquivo texto.
arquivo.zip: Arquivo comprimido.
Um arquivo é um tipo de dado abstrato, para defini-lo podemos considerar as operações que podem ser feitas sobre eles. São elas:
Criar um arquivo: É dividido em duas etapas, primeiro encontrar um espaço no sistema de arquivos para esse arquivo e segundo uma entrada para um novo arquivo que precisa ser feita no diretório.
Escrever um arquivo: Podemos fazer uma chamada de sistema especificando o nome do arquivo e as informações a serem escritas no arquivo.
Ler um arquivo: Para ler um arquivo usamos uma chamada de sistema que especifica o nome do arquivo e onde o próximo bloco do arquivo deve ser colocado.
Reposicionar dentro de um arquivo: O diretório é pesquisado em busca da entrada correta e o ponteiro da posição atual do arquivo é reposicionado para um determinado valor.
Excluir arquivo: Procuramos o arquivo nomeado no diretório, depois liberamos todo o espaço do arquivo para poder ser reutilizados por outros arquivos.
Truncar um arquivo: Essa função permite o usuário excluir seus arquivos mas mantém seus atributos podendo recria-los.
O diretório ou pasta é visto como uma tabela de símbolos, que traduz nomes de arquivos nas entradas de diretório e aponta para a posição de memória dos arquivos que estão no diretório.
As operações que podem ser feitas sobre o diretório são:
Procurar um arquivo:É pesquisada uma estrutura de diretório para prourar a entrada de um determinado arquivo.
Criar uma arquivo: Novos arquivos são criados e adicionados ao diretório.
Excluir uma arquivo:Quando um arquivo não possui utilidade é necessário remove-lo.
Listar um diretório:Lista os arquivos em um diretório e os arquivos da entrada do diretório.
Renomear um arquivo:O nome do arquivo é alterado e com a troca do nome de uma arquivo támbem podem ser alterado sua posição dentro da estrutura do diretório.
Atravessar o sistema de arquivos:Podemos acessar cada diretório de cada arquivo dentro de uma estrutura de diretório. Todos os arquivos são salvos e copiados para uma fita magnética.
Diretório de uma único nível: Todos os arquivos estão no mesmo diretório, o que facilita a manutenção e o entendimento. Mas esse tipo de diretório possui limitações quando o número de arquivos aumenta ou quando o sistema possui mais de um usuário e causa confusão de nome de arquivos de diferentes usuários.
Diretório de dois níveis: Cada usuário possui seu próprio diretório, possui estruturas semelhantes, mas quando o usuário faz o login o diretório master é pesquisado.

terça-feira, 16 de junho de 2009

8 - Memória virtual - Victor

A memória virtual é uma técnica que permite a execução de processos que não completamente na memória. Uma grande vantagem desse esquema é que os programas podem ser maiores do que a memória física. Além do mais, a memória virtual extrai a memória principal para um conjunto de armazenamento extremamente grande e uniforme, separando a memória lógica, vista pelo usuário, da memória física.

6 - Deadlocks - Juliane

Tratando-se de Sistemas Operacionais, um Deadlock caracteriza uma situação em que ocorre um evento inesperado e dois ou mais processos ficam impedidos de continuar suas execuções, ficando bloqueados. O deadlock é considerado uma falha e não um erro. O erro é a ocorrência frequente de deadlocks.

Eles ocorrem, por exemplo, quando mais de um usuário altera um mesmo registo simultaneamente.

Do ponto de vista técnico, um deadlock ocorre com um conjunto de processos e recursos não-preemptíveis, onde um ou mais processos desse conjunto está aguardando a liberação de um recurso por um outro processo que, por sua vez, aguarda a liberação de outro recurso alocado ou dependente do primeiro processo.

Uma situação de deadlock pode surgir se as condições seguintes forem atendidas simultaneamente em um sistema:

  1. Exclusão mútua
  2. Manter e esperar
  3. Não-preempção
  4. Espera circular
A forma que o linux trata deadlocks é ignorando-os, assumindo que nunca irão acontecer. Esse modo de tratamento é um dos três existentes. São eles:
  • Prevenir
  • Identificar e Tratar
  • Ignorar
Em geral, o custo para tratamento de deadlocks não compensa e pode gerar um dano ainda maior que o próprio deadlock. Assim, a maioria dos sistemas ignora ou previne.

Existe uma técnica que torna possível eliminar um deadlock. Para isso, um processo será abortado. Existem duas formas de se conseguir isto, são elas: abortar todos os processos em deadlock ou abortar um processo de cada vez até que o ciclo de deadlock seja eliminado. Abortar um processo pode não ser fácil. Se o processo estiver no meio da atualização de um arquivo, por exemplo, seu cancelamento deixará esse arquivo em estado incorreto.

Existe ainda outra forma de eliminar deadlocks que é usando preempção de recursos, apropriando alguns recursos dos processo com sucesso e entregando esses recursos a outros processos, até que o ciclo de deadlock seja desfeito. Para isto, deve-se resolver três questões. A primeira é a Seleção da Vítima, ou seja, quem deverá ser preemptado. A seguir, a Reversão, que decide o que será feito com o processo do qual foi retirado um recurso. E, por último, garantir que a Starvation não ocorrerá, ou seja, nem sempre os recursos do mesmo processo serão preemptados.

7 - Memória principal - João Amancio

Os algoritmos de gerência de memória variam de uma técnica puramente de máquina até estratégias de paginação e segmentação.

A memória principal e os registradores embutidos no próprio processador são os únicos tipos de armazenamento acessíveis diretamente pela CPU. Existem instruções de máquina que pegam endereços de máquina como argumentos, mas nenhuma pega endereços de disco

Bibliográfia utilizada

SILBERSCHATZ, Abraham - Sistemas Operacionais com Java, 7ª ed. rev. atual. - Rio de Janeiro: Elsevier Campus, 2008



TANENBAUM, Andrew S. - Sistemas Operacionais Modernos, 2ª ed. - São Paulo: Prentice Hall, 2003




STALLINGS, william - Operating Systems: Internals and Design Principles, Sixth Edition, 2009.