Вы находитесь на странице: 1из 35

KERNEL DE UM SISTEMA OPERACIONAL

Kernel de um sistema operacional entendido como o ncleo ou cerne. Ele representa a camada mais baixa de interface com o Hardware, sendo responsvel por gerenciar os recursos do sistema computacional como um todo. no kernel que esto definidas funes para operao com perifricos (mouse, discos, impressoras, interface serial/interface paralela), gerenciamento de memria, entre outros. Resumidamente, o kernel um conjunto de programas que fornece para os programas de usurio (aplicativos) uma interface para utilizar os recursos do sistema. Quanto sua arquitetura, o kernel pode ser monoltico em um nico bloco, com todas as funcionalidades carregadas na memria , ou modular com os mdulos especficos para cada tarefa carregados opcionalmente, dinamicamente. O kernel a parte mais importante do sistema operacional, pois, sem ele, a cada programa novo que se criasse seria necessrio que o programador se preocupasse em escrever as funes de entrada/sada, de impresso, entre outras, em baixo nvel, causando uma duplicao de trabalho e uma perda enorme de tempo. Como o kernel j fornece a interface para que os programas possam acessar os recursos do sistema de um nvel mais alto e de forma transparente, fica resolvido o problema da duplicao do trabalho. Quando h perifricos ou elementos de um sistema computacional que o kernel no cobre, ento se faz necessrio escrever a interface para eles, os chamados drivers. Geralmente, os kernels oferecem uma funo para se executar chamadas de sistema, como por exemplo do Linux. Valendo-se dessa funo, podem-se escrever rotinas para qualquer perifrico.

Responsabilidades do kernel
As responsabilidades do kernel consistem, genericamente, em abstrair interfaces de hardware diversas e gerir os recursos do computador, permitindo que os processos utilizem estes recursos concorrentemente de forma segura e padronizada, fornecendo a estes uma interface unificada para os diversos componentes do sistema computacional. Em um computador, a parte central a CPU: o dispositivo que "executa" os diferentes programas. A memria RAM o outro recurso crucial do computador: o conjunto de chips onde os programas so carregados para execuo e onde so armazenados os seus dados de acesso rpido. Estes so os principais recursos que o kernel gere e divide entre as aplicaes. O kernel deve tambm gerir a entrada e sada, de modo a assegurar que apenas um programa acesse a determinado dispositivo a dada altura. Finalmente, o kernel deve disponibilizar aos processos, executados em espao do usurio, uma interface uniforme para atender aos seus servios.

Gerenciamento de processos
A principal tarefa do kernel de um sistema operacional (SO) permitir a execuo de aplicaes e dar suporte a elas atravs de nveis de abstrao sobre o hardware. Para executar uma aplicao, o kernel precisa carregar na memria o arquivo que contm o cdigo da aplicao (e eventualmente inicializar o seu prprio espao de endereamento), inicializar a pilha de execuo do programa e assim iniciar a sua execuo. Um kernel multitarefa preparado para dar ao usurio a iluso que o nmero de processos em execuo simultnea no computador maior que o nmero mximo de processos que o computador capaz de executar simultaneamente. Tipicamente, o nmero de processos que um sistema pode executar simultaneamente igual ao nmero de CPUs instaladas.

Em um sistema multitarefa, o kernel d a cada programa uma fatia do tempo e alterna de processo para processo to rapidamente que o usurio pensa que estes processos so executados simultaneamente. O kernel utiliza algoritmos de agendamento para determinar qual processo ser executado na sequncia e quanto tempo ele ter, ele tambm considera que um processo pode ter uma prioridade maior em relao aos outros. O kernel deve disponibilizar aos processos um modo para que se comuniquem; isto obtido atravs de memria compartilhada e/ou interrupes de software.

Gerenciamento de memria
O kernel tem acesso completo memria do sistema e deve permitir que os programas do espao do usurio tenham acesso seguro memria quando o requisitam. O primeiro passo para permitir esta funcionalidade o endereamento virtual, usualmente obtido atravs da paginao ou segmentao. O endereamento virtual permite ao kernel fazer com que um dado endereo aparea como outro, o endereo virtual. Isto permite ao programa acreditar que ele o nico em execuo (com exceo do kernel) e assim previne que as aplicaes colidam umas com as outras. Um endereo virtual de um programa pode ser uma referncia a dados que no esto na memria RAM. O nvel de abstrao disponibilizado pela memria virtual permite ao sistema operacional o uso de outros repositrios de dados, como discos rgidos, para armazenar aquilo que, de outra forma, seria armazenado na memria principal do sistema. Como resultado, os sistemas operacionais permitem que um programa utilize mais memria que aquela disponvel fisicamente no sistema. Quando um programa necessita de dados que no esto na memria naquele momento, o SO escreve no disco os dados encontrados numa poro de memria no utilizada e substitu-a com os dados que o programa requisitou. Alm disso, o endereamento virtual permite a criao de parties virtuais da memria, na forma de duas reas separadas, uma reservada para o kernel (espao do kernel) e outra para as aplicaes (espao do usurio).

Gerenciamento de dispositivo
Para realizar algum trabalho real, o SO precisa acessar os perifricos conectados ao computador, que so controlados por drivers de dispositivo disponibilizados por desenvolvedores e/ou fabricantes deste dispositivo (hardware). Por exemplo, para mostrar algo na tela, o kernel delega o trabalho ao driver de monitor que fica responsvel por mostrar os caracteres. Inicialmente, um gerenciador de dispositivo realiza uma busca nos diferentes barramentos existentes (como PCI ou USB) para descobrir dispositivos instalados, e ento procura pelos drivers apropriados. Como o gerenciamento de dispositivo um assunto especificamente de sistemas operacionais, estes drivers so manipulados de maneira diferente em cada projeto de kernel, mas em todos os casos, o kernel deve disponibilizar a I/O para permitir que estes drivers acessem fisicamente os dispositivos atravs de alguma porta ou locao de memria. Decises muito importantes devem ser tomadas em um projeto de um sistema de gerenciamento de dispositivos, j que todo acesso envolve trocas de contexto, fazendo com que esta operao utilize a CPU muito intensamente, causando possveis problemas de desempenho.

Chamadas de sistema
As chamadas de sistema frequentemente utilizam uma instruo especial que faz com que a CPU transfira o controle para cdigo de maior privilgio, como especificado previamente pelo cdigo de maior privilgio. Isto permite que o cdigo de maior privilgio indique por onde ele ser chamado e, to importante quanto, o estado do processador no momento da chamada. Quando a chamada de sistema invocada, o programa que a invocou interrompido, e a informao necessria para continuar a sua execuo salva. O processador inicia a execuo do cdigo de maior

privilgio que, examinando o estado do processador (definido pelo cdigo de menor privilgio) e/ou a sua pilha, determina que servio foi requisitado. Quando a chamada termina, o controle retorna para o programa, o estado previamente salvo restaurado, e o programa continua a sua execuo. Note que em muitos casos, o retorno de fato para o programa no imediato. Se a chamada de sistema realiza qualquer tipo de operao de I/O mais demorada, um acesso ao disco ou rede, o programa pode ser suspenso ("bloqueado") e retirado da fila de programas "prontos para execuo" at que a operao termine, e o sistema operacional o eleja novamente como um candidato para execuo. Para que seja possvel realizar algum trabalho til, um programa no espao do usurio deve ter acesso a todos os servios disponibilizados pelo kernel. Esta implementao diferente em cada kernel, mas deve disponibilizar uma API - Interface de Programao de Aplicativos ( um conjunto de rotinas e padres estabelecidos por um software para utilizao de suas funcionalidades por programas aplicativos -- isto : programas que no querem envolver-se em detalhes da implementao do software, mas apenas usar seus servios) ao programa, que por sua vez invoca as funes do kernel relacionadas, seja atravs da memria compartilhada ou interrupes.

UM SISTEMA OPERACIONAL PODE SER DIVIDIDO EM:


SISTEMAS MONOLITICOS
Em um sistema monoltico, todos os componentes do ncleo operam em modo ncleo e se inter-relacionam conforme suas necessidades, sem restries de acesso entre si (pois o cdigo no nvel ncleo tem acesso pleno a todos os recursos e reas de memria). A grande vantagem dessa arquitetura seu desempenho: qualquer componente do ncleo pode acessar os demais componentes, toda a memria ou mesmo dispositivos perifricos diretamente, pois no h barreiras impedindo esse acesso. A interao direta entre componentes tambm leva a sistemas mais compactos. Todavia, a arquitetura monoltica pode pagar um preo elevado por seu desempenho. A robustez e a facilidade de desenvolvimento. Caso um componente do ncleo perca o controle devido a algum erro, esse problema pode se alastrar rapidamente a todo o ncleo, levando o sistema ao colapso (travamento, reinicializao ou funcionamento errtico). Alm disso, a manuteno e evoluo do ncleo se tornam mais complexas, porque as dependncias e pontos de interao entre os componentes podem no ser evidentes: uma pequena alterao em uma estrutura de dados pode ter resultados. A arquitetura monoltica foi a primeira forma de organizar os sistemas operacionais; sistemas UNIX antigos e o MS-DOS seguiam esse modelo. Atualmente, apenas sistemas operacionais embutidos usam essa arquitetura, devido suas limitaes do hardware sobre o qual executam. O ncleo do Linux nasceu monoltico, mas vem sendo paulatinamente estruturado e modularizado desde a verso 2.0 (embora boa parte de seu cdigo ainda permanea no nvel de ncleo).

SISTEMAS EM CAMADAS
Uma forma mais elegante de estruturar um sistema operacional faz uso da noo de camadas: a camada mais baixa realiza a interface com o hardware, enquanto as camadas intermedirias provem nveis de abstrao e gerncia cada vez mais sofisticados. Por fim, a camada superior define a interface do ncleo para as aplicaes (as chamadas de sistema). Essa abordagem de estruturao de software fez muito sucesso no domnio das redes de computadores, atravs do modelo de referncia OSI ( Open Systems Interconnection), e tambm seria de se esperar sua adoo no domnio dos sistemas operacionais. No entanto, alguns inconvenientes limitam sua aceitao nesse contexto: O empilhamento de vrias camadas de software faz com que cada pedido de uma aplicao demore mais tempo para chegar at o dispositivo perifrico ou recurso a ser acessado, prejudicando o desempenho do sistema. No bvio como dividir as funcionalidades de um ncleo de sistema operacional em camadas horizontais de abstrao crescente, pois essas funcionalidades so inter-dependentes, embora tratem muitas vezes de recursos distintos. Em decorrncia desses inconvenientes, a estruturao em camadas apenas parcialmente adotada hoje em dia. Muitos sistemas implementam uma camada inferior de abstrao do hardware para interagir com os dispositivos (a

camada HAL . Hardware Abstraction Layer, implementada no Windows NT e seus sucessores), e tambm organizam em camadas alguns sub-sistemas como a gerncia de arquivos e o suporte de rede (seguindo o modelo OSI). Como exemplos de sistemas fortemente estruturados em camadas podem ser citados o IBM OS/2 e o MULTICS [CV65].

SISTEMAS MICRO-NCLEO
Uma outra possibilidade de estruturao consiste em retirar do ncleo todo o cdigo de alto nvel (normalmente associado as suas polticas de gerncia de recursos), deixando no nvel ncleo somente o cdigo de baixo nvel necessrio para interagir com o hardware e criar as abstraes fundamentais (como a noo de atividade). Por exemplo, usando essa abordagem o cdigo de acesso aos blocos de um disco rgido seria mantido no ncleo, enquanto as abstraes de arquivo e diretrio seriam criadas e mantidas por um cdigo fora do ncleo, executando da mesma forma que uma aplicao do usurio. Por fazer os ncleos de sistema ficar menores, essa abordagem foi denominada micro-ncleo (ou -kernel). Um micro-ncleo normalmente implementa somente a noo de atividade, de espaos de memria protegidos e de comunicao entre atividades. Todos os aspectos de alto nvel, como polticas de uso do processador e da memria, o sistema de arquivos e o controle de acesso aos recursos so implementados fora do ncleo, em processos que se comunicam usando as primitivas do ncleo. Em um sistema micro-ncleo, as interaes entre componentes e aplicaes so feitas atravs de trocas de mensagens. Assim, se uma aplicao deseja abrir um arquivo no disco rgido, envia uma mensagem para o gerente de arquivos, que por sua vez se comunica com o gerente de dispositivos para obter os blocos de dados relativos ao arquivo desejado. Todas as mensagens so transmitidas atravs de servios do micro-ncleo. Como os processos tem de solicitar servios uns dos outros (para poder realizar suas incumbncias), essa abordagem tambm foi denominada cliente-servidor. Os micro-ncleos foram muito investigados durante os anos 80. Dois exemplos clssicos dessa abordagem so os sistemas Mach [RJO+89] e Chorus [RAA+92]. As principais vantagens dos sistemas microncleo so sua robustez e flexibilidade: caso um sub-sistema tenha problemas, os mecanismos de proteo de memria e nveis de privilgio iro confin-lo, impedindo que a instabilidade se alastre ao restante do sistema. Alm disso, possvel customizar o sistema operacional, iniciando somente os componentes necessrios ou escolhendo os componentes mais adequados vias aplicaes que sero executadas. Vrios sistemas operacionais atuais adotam parcialmente essa estruturao; por exemplo, o MacOSX da Apple tem suas razes no sistema Mach, ocorrendo o mesmo com o Digital UNIX. Todavia, o custo associado vias trocas de mensagens entre componentes pode ser bastante elevado, o que prejudica seu desempenho e diminui a aceitao desta abordagem. O QNX um dos poucos exemplos de micro-ncleo amplamente utilizado, sobretudo em sistemas embutidos e de tempo-real.

MQUINAS VIRTUAIS
Uma mquina virtual definida como uma duplicata eficiente e isolada de uma mquina real. Em uma mquina real, uma camada de software de baixo nvel (por exemplo, a BIOS dos sistemas PC) fornece acesso aos vrios recursos do hardware para o sistema operacional, que os disponibiliza de forma abstrata vias aplicaes. Em uma mquina real, quando o sistema operacional acessa os dispositivos de hardware, ele faz uso dos drivers respectivos, que interagem diretamente com a memria e os dispositivos da mquina. Um emulador o oposto da mquina real. O emulador implementa todas as instrues realizadas pela mquina real em um ambiente abstrato, possibilitando executar um aplicativo de uma plataforma em outra, por exemplo, um aplicativo do Windows executando no Linux. Infelizmente, um emulador perde muito em eficincia ao traduzir cada instruo da mquina real. Alm disso, emuladores so bastante complexos, pois geralmente necessitam simular a quase totalidade das instrues do processador e demais caractersticas do hardware que os circundam [Mal73]. A funcionalidade e o nvel de abstrao de uma mquina virtual encontram-se entre uma mquina real e um emulador, na medida em que abstrai somente os recursos de hardware e de controle usados pelas aplicaes. Uma mquina virtual um ambiente criado por um monitor de mquinas virtuais, tambm denominados: sistema operacional para sistemas operacionais. O monitor pode criar uma ou mais mquinas virtuais sobre uma nica mquina real. Enquanto um emulador fornece uma camada de abstrao completa entre o sistema em execuo e o hardware, um monitor abstrai o hardware subjacente e controla uma ou mais mquinas virtuais. Cada mquina virtual fornece facilidades para uma aplicao ou um sistema convidado que acredita estar executando sobre um ambiente normal com acesso fsico ao hardware. Existem basicamente duas abordagens para a construo de sistemas de mquinas virtuais: o tipo I, onde o monitor de mquinas virtuais implementado entre o hardware e os sistemas convidados, e o tipo II, onde o monitor implementado como um processo de um sistema operacional real subjacente, denominado sistema

anfitrio ou sistema hospedeiro. Como exemplos de sistemas de tipo I podem ser citados o VMWare ESX Server e o Xen; para o tipo II podem ser citados o VMWare Workstation, o MS Virtual PC e o User-Mode Linux. Como o sistema operacional convidado o e ambiente de execuo na mquina virtual so idnticos ao da mquina real, possvel usar os softwares j construdos para a mquina real dentro das mquinas virtuais. Essa transparncia evita ter de construir novas aplicaes ou adaptar as j existentes. As mquinas virtuais tm recebido bastante destaque nos ltimos anos, sobretudo devido ao grande sucesso de linguagens independentes de plataforma como Java. Todavia, a mquina virtual Java ( JVM . Java Virtual Machine) deve ser considerada basicamente um emulador, na medida em que cria um ambiente de execuo abstrato para aplicaes Java. Programas em linguagem Java so compilados em bytecodes, que so basicamente cdigo de mquina para um processador abstrato. Algumas vantagens para a utilizao de mquinas virtuais em sistemas de computao: Aperfeioamento e testes de novos sistemas operacionais; Ensino prtico de sistemas operacionais e programao; Executar diferentes sistemas operacionais sobre o mesmo hardware, simultaneamente; Simular configuraes e situaes diferentes do mundo real, como por exemplo, mais memria disponvel, outros dispositivos de E/S; Simular alteraes e falhas no hardware para testes ou reconfigurao de um sistema operacional, provendo confiabilidade e escalabilidade para as aplicaes; Garantir a portabilidade das aplicaes legadas (que executariam simulando o sistema operacional original); Desenvolvimento de novas aplicaes para diversas plataformas, garantindo a portabilidade destas aplicaes; Diminuir custos com hardware. A principal desvantagem do uso de mquinas virtuais o custo adicional de execuo dos processos na mquina virtual em comparao com a mquina real.

O sistema operacional uma ponte entre o computador e voc para que voc possa utilizar os programas. Sem o sistema operacional voc no poderia ver as letras e nem os desenhos na tela e nem imprimir ou ler e nem escrever no seu computador O Sistema Operacional um programa que diz ao seu computador como mostrar coisas na tela, como imprimi-las, l-las e escreve-las. Um programa de computador um conjunto de instrues especficas que sero executadas pela mquina. Assim tudo o que um computador faz instrudo a partir de programas. Para que o computador execute funes necessrio instalar programas especficos que podem ser basicamente de dois tipos: Softwares bsicos e programas de sistemas BIOS (Software Bsico) que o sistema bsico de entradas e sadas, ou seja, o programa bsico do computador, encarregado de ativar seus recursos com teclado, vdeo, memria, HD e disquete. O sistema operacional informa ao computador como interagir com o usurio e como usar dispositivos como a unidade de disco, monitor, teclado e impressora. Quando se liga o computador este passa por vrias etapas at ficar pronto para ser usado; A primeIra etapa autoteste, nesta etapa o computador identifica os dispositivos que esto conectados a ele, conta a quantidade de memria disponvel e faz uma verificao rpida para ver se a memria esta funcionando corretamente. O que faz um sistema Operacional? Permite que os programas armazenem e obtenham as informaes. Controla o fluxo de dados entre os componentes de um computador. Permite que os programas sejam executados sem interferncia de outros programas. Permitem que programas independentes cooperem periodicamente e compartilhem informaes Impe um escalonamento entre programas que solicitem recursos.

TIPOS DE SISTEMAS OPERACIONAIS Os sistemas operacionais podem variar de acordo com a execuo dos programas. Os principais tipos so: Monotarefa; Monousurio; Multitarefa; Multiusurio. Monotarefa: Neste tipo de SO realizada apenas uma nica atividade de cada vez. necessrio que a atividade anterior tenha terminado ou interrompida para que a atividade seguinte possa ser iniciada. Um exemplo deste sistema o MS-DOS. Monousurio: Este sistema possibilita que apenas um nico usurio trabalhe no computador por vez. Pode ser do tipo Monousurio Monotarefa e Monousurio Multitarefa.
MEMRIA CPU IMPRESSORA TERMINAIS UNID. DISCO Interao

SISTEMA DE COMPUTADOR

USURIO

Multitarefa: Este sistema representa um avano em relao ao sistema Monotarefa. Na maioria comportam apenas um nico usurio. Sua principal caracterstica executar vrias atividades simultneas. Como por exemplo, temos a possibilidade de ouvir um CD de msica e imprimir um trabalho ao mesmo tempo. No sistema multitarefa as tarefas se alternam rapidamente dando a impresso de serem executadas simultaneamente, desta forma haver uma maior demora na execuo das tarefas e uma maior quantidade de software devem residir na memria.
MEMRIA CPU IMPRESSORA TERMINAIS UNID. DISCO Compilador Processador de texto USURIO

SISTEMA DE COMPUTADOR

Multiusuiro: So mais complexos que os sistemas Monousurios, possibilitando que vrios usurios utilizem o mesmo Sistema Operacional. Este sistema deve ter um maior controle sobre os usurios e principalmente evitar interferncia dos usurios uns com outros. Outra caracterstica importante o controle do compartilhamento dos dados. CONCEITOS BSICOS DE SISTEMAS OPERACIONAIS Caractersticas comuns: Projeto de camadas Processos recursos/concorrncia Critrios de projeto Barganhas

Projeto de camadas: Muitos Sistemas Operacionais implementam a interface entre usurio e o computador. Srie de etapas ou camadas. Abordagem do projeto de Software Processos Os programas podem executar vrias atividades simultneas. Cada uma dessas atividades pode fazer solicitaes conflitantes. Errado afirmar que o sistema operacional responde diretamente ao usurio Estas atividades so chamadas de processos ou tarefas O nmero de programas por usurios e de processos por programas pode variar e geralmente so distintos. O sistema operacional est diretamente ligado aos processos que devem ser executados e competem recursos.

USURIO
PROGRAMA
PROCESSO PROCESSO

PROGRAMA
PROCESSO PROCESSO

Relao entre usurio, programa e processo. Recursos Os sistemas operacionais devem responder as necessidades de um processo Os processos requerem recursos.
MEMRIA DISPOSITIVOS PROCESSOS

S.O.
ARQUIVOS CPU

Memria: Um processo precisa de memrias para armazenar suas instrues e dados. No deve permitir que um processo ocupe tanta muita memria. CPU: Recurso que o processo precisa para executar suas instrues Dispositivos: O sistema Operacional determina que tem acesso a qu. Controla o fluxo de dados enquanto os processos lem e escrevem nos dispositivos. Arquivos: Localizar rapidamente um arquivo e registro.

Concorrncia Existncia de muitos processos simultaneamente geram solicitaes. Estas solicitaes fetias pelos processos resultam muitas vezes em conflitos. SINCRONIZAO: regular a ordem segundo a qual os processos acessam os dados. Critrios de projetos Gerenciar Recursos e executar suas funes no so os nicos critrios importantes para ao projeto de um Sistema Operacional. Facilidade de uso Tempo para aprender sistemas complexos. Eficincia no uso dos computadores.

Consistncia Estimativa razovel de tempo gasto no fornecimento das informaes. Nmero de processos permanece aproximadamente constante./ Dever ser constante o tempo de resposta. Flexibilidade Novas verses compatveis com anteriores. Necessidade de reescrever software. Permitir acrescentar novos perifricos facilmente Portabilidade Execuo do Sistema Operacional em vrios tipos de hardware. Barganhas Alguns destes critrios so sacrificados, de acordo com o nvel de importncia para o usurio. Interface grfica Aumento de poder de processamento

Existncia de maior Necessidade de espao em disco quantidade de drives Suporte mais eficiente Presena de conexes mais velozes Aumento de recursos Necessidades de atualizaes mais peridicas

Exerccios 1. O que caracteriza um sistema operacional de tempo real? Quais as duas classificaes de sistemas operacionais de tempo real e suas diferenas? 2. Quais os dois principais objetivos dos sistemas operacionais? 3. Por que a abstrao de recursos importante para os desenvolvedores de aplicaes? Ela tem utilidade para os desenvolvedores do prprio sistema operacional? 4. A gerncia de atividades permite compartilhar o processador, executando mais de uma aplicao ao mesmo tempo. Identifique as principais vantagens trazidas por essa funcionalidade e os desafios a resolver para implement-la. 5. Monte uma tabela com os benefcios e deficincias mais significativos das principais arquiteturas de sistemas operacionais. 6. A operao em modo usurio permite ao processador executar somente parte das instrues disponveis em seu conjunto de instrues. Quais das seguintes operaes no deveriam ser permitidas em nvel usurio? Por qu? (a) Ler uma porta de entrada/sada (b) Efetuar uma diviso inteira (c) Escrever um valor em uma posio de memria (d) Ajustar o valor do relgio do hardware (e) Ler o valor dos registradores do processador (f) Mascarar uma ou mais interrupes. 7. Seria possvel construir um sistema operacional seguro usando um processador que no tenha nveis de privilgio? Por qu? 8. Indique quais das seguintes operaes teria de ser implementada por uma chamada de sistema, justificando suas respostas: (a) Ler o relgio do sistema (b) Enviar um pacote de rede (c) Calcular um logartmo natural (d) Obter um nmero aleatrio (e) Remover um arquivo

Comunicao entre processos:


So comuns processos que trabalham juntos compartilharem recursos do sistema, como arquivos, registros, dispositivos e reas de memria. Na verdade no importa quais recursos so compartilhados, pois os problemas decorrentes dessa interao sero os mesmos. O compartilhamento de recursos entre processos pode gerar situaes indesejveis, capazes at de comprometer o sistema. Vejamos um exemplo onde dois processos concorrentes trocam informaes atravs de operaes de gravao e leitura em um buffer. Um processo s pode gravar informaes em um buffer caso ele no esteja cheio. Da mesma forma um processo s poder ler dados armazenados do buffer se existir algum dado para ser lido. Em ambos os casos os processos devero aguardar at que o buffer esteja pronto para as operaes de gravao ou de leitura. Os mecanismos que garantem a comunicao entre processos concorrentes e o acesso a recursos compartilhados so chamados mecanismos de sincronizao.

SINCRONIZAO PROCESSO GRAVADOR DADOS DADOS PROCESSO LEITOR

BUFFER
Em sistemas operacionais multiprogramveis fundamental a implementao de mecanismos de sincorizinao que garantam sua integridade e confiabilidade.

Soluo para os Problemas de Compartilhamento


Enquanto um processo estiver acessando determinado recurso, todos os outros que queiram acessar esse mesmo recurso devero esperar at que o primeiro processo termine o acesso. Essa idia de exclusividade de acesso chamada excluso mtua. A excluso mtua deve apenas afetar os processos concorrentes quando um deles estiver fazendo acesso ao recurso compartilhado.

Sincronizao Condicional Outra situao na qual necessria a sincronizao entre processos concorrentes quando um recurso compartilhado no se encontra pronto para ser utilizado pelos processos. Neste caso, o processo que deseja acessar o recurso dever ser colocado no estado de espera, at o recurso ficar pronto para o processamento. Esse tipo de sincronizao chamado sincronizao condicional.

Instruo Test-and-Set Muitos processadores possuem uma instruo especial, que permite ler uma varivel, armazenar seu contedo em uma outra rea e atribuir um novo valor a essa varivel. Esse tipo especial de instruo chamado instruo test-and-set e tem como caracterstica ser sempre executada sem interrupo, ou seja, trata-se de uma instruo indivisvel. Assim, no existe a possibilidade de dois processos estarem manipulando uma varivel compartilhada ao mesmo tempo, possibilitando a implementao da excluso mtua.

Semforos
Foi proposto por Dijkstra como um a soluo mais geral simples de ser implementada, para os problemas de sincronizao entre processos concorrentes. Um semforo uma varivel inteira, no negativa, que s pode ser manipulada por duas instrues: DOWN e UP, tambm chamadas originalmente instrues DOWN e UP. No caso de excluso mtua, as instrues P e V funcionam como protocolos de entrada e sada, respectivamente, para que um processo possa entrar e sair de sua regio crtica. O semforo fica associado a um recurso compartilhado indicando quando o recurso est sendo acessado por um dos processos concorrentes. Se seu valor for maior que 0, nenhum processo est utilizando o recurso; caso contrrio, o processo fica impedido do acesso. Sempre que deseja entrar na sua regio crtica, um processo executa uma instruo DOWN. Se o semforo for maior que 0, este decrementado de 1, e o processo que solicitou a operao pode executar sua regio crtica. Entretanto, se uma instruo DOWN executada em um semforo cujo valor seja igual a 0, o processo que solicitou a operao ficar no estado de espera, em uma fila associada ao semforo. O processo que est acessando o recurso, ao sair de sua regio crtica, executa uma instruo UP, incrementando o semforo de 1 e liberando o acesso ao recurso. Se um ou mais processos estiverem esperando, devido a operaes DOWN pendentes, o sistema escolhe um processo na fila de espera e muda seu estado para pronto.

Fila de espera de processos

DOWN (S= 0)

Libera processo da fila de espera

Processo deseja entrar na regio

Processo sai da regio crtica

DOWN (S > 0)

UP

Processo acessa a regio crtica

Monitores
O uso de semforos permite diferenciar o que est sendo usado para controlar a concorrncia, mas como semforos so globais a todas os threads que queiram utiliz-los, seu uso a fim de proteger uma nica estrutura de dados, por exemplo, pode estar disperso por todo o programa. Para entender como a estrutura acessada ou verificar que ela est corretamente protegida de acesso concorrente, tem-se que vasculhar o cdigo de todos os threads. Alm disso, no h associao sinttica entre semforos e os cdigos que estes protegem, portanto nada impede que o programador utilize vrios semforos para proteger a mesma estrutura de dados, tornando difcil entender que todos os vrios trechos do programa so relacionados. Analogamente, vrias regies crticas totalmente independentes podem ter sido protegidas com o mesmo semforo, potencialmente diminuindo desnecessariamente o potencial para concorrncia. Monitores; so mdulos de programas que tm a estrutura de um tipo abstrato de dados. Estes mdulos contm dados encapsulados (isto , disponveis apenas dentro da implementao do mdulo) que so manipulados pelas operaes definidas no mdulo. H excluso mtua entre as operaes, isto , em nenhum momento duas operaes podero estar sendo executadas ao mesmo tempo. A implementao dos monitores deve assegurar a excluso mtua de execuo de operaes. Um compilador poderia implementar monitores associando a cada monitor um semforo; a chamada de uma operao implicaria em um wait e o trmino de execuo da operao um sinal. Mas, excluso mtua no suficiente para programao concorrente, pois para muitos problemas a sincronizao condicional essencial para que os threads colaborem. Para este fim, os monitores proveem um novo tipo de varivel: varivel de condio. Estas variveis podem ser usadas pelo programador para expressar condies de interesse para os threads. Se um thread quer, por exemplo, esperar at que uma determinada varivel assuma o valor 0, ele poderia ficar continuamente monitorando o valor da varivel at que sua condio desejada seja verdadeira, mas este enfoque tem as desvantagens usuais de uma espera ocupada. Se o thread tem disponvel uma varivel de condio cond, o thread pode bloquear a si mesmo executando a operao cond.wait, e permanecer assim bloqueado at que algum outro Thread execute cond.signal. Assim, para esperar at que uma determinada varivel assuma o valor 0, pode ser criada uma varivel de condio, por exemplo, espera_zero, e o thread comea a esperar executando espera_zero.wait. Quando outros threads alterarem o valor da varivel, eles devem colaborar com o thread bloqueado executando espera_zero.signal, que acordar o thread bloqueado, que pode ento ver se a varivel ficou com 0 e at continuar esperando novamente se for o caso. Observe que mesmo este exemplo simples j mostra como o uso de condies suscetvel a erros: se algum thread falha em fazer a sua parte esquecendo de acionar signal, algum outro thread pode ficar bloqueado indefinidamente.

Troca de Mensagens
um mecanismos de informao sincronizado entre processos, implementado pelo sistema operacional atravs de duas rotinas do sistema: SEND e RECEIVE. A rotina SEND responsvel por enviar uma mensagem para um processo receptor, e a rotina RECEIVE por receber uma mensagem de um processo transmissor. Os procedimentos SEND e RECEIVE, mesmo no sendo suas execues mutuamente exclusivas, permitem tanto a comunicao entre processos como a sincronizao entre eles. A comunicao por troca de mensagens possui muitos problemas, como por exemplo, a perda de uma mensagem. Para garantir que uma mensagem no se perca, o processo receptor, ao receb-la, deve enviar ao processo transmissor uma mensagem de recebimento ACK. Caso o transmissor no receba um ACK em um determinado tempo, ele retransmite a mensagem.

Deadlock
dito deadlock quando est esperando por um evento que nunca ocorrer. Essa situao conseqncia, na maioria das vezes, do compartilhamento de recursos do sistema entre vrios processos, sendo que cada processo deve ter acesso ao recurso de forma exclusiva. Para que ocorra um deadlock so necessrias quatro condies: 1. Cada recurso s pode estar alocado a um nico processo em um determinado instante; 2. Um processo, alm dos recursos j alocados, pode estar esperando por outros recursos; 3. Um recurso no pode ser liberado de um processo s porque outros processos desejam o mesmo recurso; 4. Um processo pode ter de esperar por um recurso alocado a outro processo e vice-versa. Aps detectado o deadlock o sistema tem que corrigir o mesmo. Uma soluo bastante utilizada pela maioria dos sistemas operacionais , simplesmente, eliminar um ou mais processos envolvidos no deadlock e desalocar os recursos j garantidos por eles, quebrando assim a espera circular.

Escalonador
Um algoritmo escalonador tem como principal funo decidir qual dos processos prontos para execuo deve ser alocado CPU. Cada sistema operacional necessita de um algoritmo de escalonamento adequado a seu tipo de processamento. Os principais critrios de escalonamento: Throughput: representa o nmero de processos executados em um determinado intervalo de tempo. Quanto maior o throughput, maior o nmero de tarefas executadas em funo do tempo. A maximizao do throughput desejada na maioria dos sistemas. Tempo de turnaround: tempo que um processo leva desde sua admisso no sistema at ao seu trmino, levando em considerao o tempo de espera para alocao de memria, espera na fila de processos prontos para execuo, processamento na CPU e operaes e E/S. Tempo de resposta: em sistemas interativos, o tempo de resposta o tempo decorrido do momento da submisso de um pedido ao sistema at a primeira resposta produzida.

SISTEMA DE ARQUIVOS EM UM SO
O armazenamento e a recuperao de informaes so atividades essenciais para qualquer tipo de aplicao. Um processo deve ser capaz de ler e gravar grande volume de dados em dispositivos como fitas e discos de forma permanente, alm de poder compartilha-los com outros processos. Os arquivos so gerenciados pelo sistema operacional de modo a facilitar o acesso dos usurios ao seu contedo. A parte do sistema responsvel por essa gerncia denominada sistema de arquivos.

Arquivos: so constitudos por informaes logicamente relacionadas, podendo representar programas ou dados. Arquivos podem ser armazenados pelo SO em diferentes dispositivos fsicos. Eles so identificados por meio de um nome, formados por uma seqncia de caracteres. Organizao de arquivos: consiste no modo como os seus dados esto internamente armazenados. A estrutura dos dados pode variar em funo do tipo de informao contida no arquivo. Arquivos textos possuem propsitos completamente distintos de arquivos executveis; consequentemente, estruturas podem adequar-se melhor a um tipo do que a outro. Mtodos de Acesso: em funo de como o arquivo est organizado, o sistema de arquivos pode recuperar registros de diferentes maneiras. Inicialmente, os primeiros sistemas operacionais s armazenavam arquivos em fitas magnticas. Com isso o acesso era restrito leitura dos registros na ordem em que eram gravados, sendo a gravao de novos registros possvel apenas no final do arquivo. Esse tipo de acesso, chamado de seqencial, era prprio da fita magntica, que como meio de armazenamento possua tal limitao. J o outro chamado de acesso direto permite leitura e gravao de um registro diretamente na sua posio. Operaes de E/S: O sistema de arquivo oferece um conjunto de System calls que permite s aplicaes realizar operaes de E/S, como traduo de nomes em endereos, leitura e gravao de dados e criao/eleliminao de arquivos. As system calls de E/S tem como funo oferecer uma interface simples e uniforme entre a aplicao e os diversos dispositivos. Atributos: Cada arquivo possui informaes de controle denominadas atributos. Exemplos: tamanho, proteo, dono, criao, backup, organizao, senha. Diretrios: A estrutura de diretrios o modo como o sistema organiza logicamente os diversos arquivos contidos em um disco. O diretrio uma estrutura de dados que contm entradas associadas aos arquivos onde so armazenadas informaes como localizao fsica, nome, organizao e demais atributos. A estrutura de diretrios com dois nveis anloga a uma estrutura de dados em rvore, onde o MFD a raiz, os galhos so os UFD e os arquivos so as folhas.

Alocao de Espao em Disco: a criao de arquivos em disco exige que o sistema operacional tenha o controle de quais reas ou blocos no disco esto livres. Este controle ralizado atravs de uma estrutura de dados que armazena informaes que possibilitam ao sistema de arquivos gerenciarem o espao livre do disco. Nesta estrutura, geralmente uma lista ou tabela, possvel identificar blocos livres que podero ser alocados para um novo arquivo. Neste caso, o espao removido da estrutura para que no seja reutilizado. No memento em que um arquivo eliminado, todos os seus blocos so liberados para a estrutura de espaos livres. Proteo de Acesso: como os meios de armazenamento so compartilhados entre diversos usurios, de fundamental importncia que os mecanismos de proteo sejam implementados para garantir a proteo individual de arquivos e diretrios. Qualquer sistema de arquivos deve possuir mecanismos prprios para proteger o acesso s informaes gravadas me discos e fitas, alm de possibilitar o compartilhamento de arquivos entre usurios, quando desejado. Tipos de acessos possveis: Leitura est relacionada a qualquer tipo de operao em que o arquivo possa ser visualizado, como a exibio do seu contedo, edio atravs de um editor de textos ou at mesmo a cpia para criao de um novo arquivo. Gravao est relacionado alterao no contedo do arquivo, como incluso ou alterao de registros. Execuo s tem sentido quando associado a arquivos executveis ou arquivos de comandos, indicando o diretrio de execuo do arquivo. Eliminao expressa a permisso para se eliminar um arquivo.

Temos trs diferentes tipos de proteo: Senha de acesso se o usurio tiver conhecimento da senha, consequentemente vai ter a liberao do acesso ao arquivo concedida pelo sistema. Grupos de usurios so organizados com objetivos de compartilhar aquivos e diretrios, sendo que os usurios que desejam compartilhar arquivos entre si devem pertencer a um mesmo grupo. Lista de controle de acesso - consiste um uma lista associada a cada arquivo, onde so especificados quais os usurios e os tipos de acessos permitidos. Neste caso quando um usurio tenta acessar um arquivo, o sistema operacional verifica se a lista de controle autoriza a operao desejada.

GERNCIA DE DISPOSITIVOS DE UM SO
Sempre que um processo realiza uma operao de E/S, o sistema deve tornar a tarefa o mais simples possvel para o usurio e suas aplicaes. Para isso o sistema operacional deve ser projetado de forma a poder se comunicar com qualquer dispositivo que possa ser conectado ao hardware do computador. Esse conceito, denominado independncia de dispositivos, est presente em qualquer sistema de arquivos.

Device Drivers: ou somente driver, tem como principal funo a comunicao com dispositivos de E/S em nvel de hardware, geralmente atravs de controladores, especificando caractersticas fsicas de cada dispositivo. Enquanto o subsistema de E/S trata de funes que afetam a todos os dispositivos, os drivers tratam apenas dos seus aspectos particulares.

Controladores: ou interfaces so componentes eletrnicos responsveis para manipular diretamente os dispositivos de E/S. O sistema operacional se comunica com os dispositivos atravs de controladores. Em geral os controladores possuem memria e registros prprios, para executar instrues enviadas pelo device drivers. Essas instrues de baixo nvel so responsveis pela interface entre o controlador e o dispositivo. Dispositivos de E/S: so responsveis pela comunicao entre o computador e o mundo externo. Existem dispositivos que servem apenas para a entrada de dados (como teclado e mouse), dispositivos apenas de sada (como impressoras) e dispositivos que realizam tanto entrada quanto sada de dados (como modems, discos e fitas). Discos magnticos: Entre os diversos dispositivos de entrada/sada, os discos magnticos merecem ateno especial, por serem o depositrio de dados da grande maioria das aplicaes comerciais, como o fator tempo crucial no acesso a esses dados, aspectos como desempenho e segurana devem ser considerados. Existem duas tcnicas que permitem aumentar o desempenho e a segurana no armazenamento de dados em discos: espelhamento e striping. Espelhamento: a duplicao dos dados de um disco em um ou mais discos. Esta tcnica tem como objetivo diminuir o tempo de acesso aos dados e aumentar a segurana em caso e problemas fsicos nos discos. Striping: permite que dados sejam divididos e armazenados em diversos discos; de modo a diminuir o tempo de acesso.

Exerccios
1) Como feita a comunicao entre processos? 2) Explique o funcionamento de: a) Semforos b) Monitores c) Deadlocks d) Troca de mensagens e) Escalonador f) Instruo Test-and-Set 3) Em um Sistema de Arquivos de um Sistema Operacional defina: a) Arquivos b) Organizao de arquivos c) Mtodos de acesso d) Atributos e) Operaes de entrada e sada f) Alocao de espao em disco g) Proteo de acesso 4) Em Gerencia de Dispositivos de um Sistema Operacional Defina: a) Device Drivers b) Controladores c) Dispositivos de Entrada e Sada d) Discos Magnticos

PROTEO E SEGURANA
Livro: Sistemas Operacionais 5 Edio de Silberschatz e Galvin Captulo 19

So mecanismos usados para controlar o acesso aos dispositivos e componentes de um sistema de computao, como arquivos, segmentos de memria, CPU e outros, limitando os tipos de acesso disponveis e assegurando que os dispositivos sejam usados apenas por processos que tenham permisso para tal uso. Sistemas de segurana so usados para evitar que ocorram acessos no autorizados e que dados ou programas sejam alterados ou removidos maliciosamente, com base na identificao de usurios.

PROTEO SEGURANA Proteo = um problema estritamente interno: como controlar o acesso


aos programas e dados armazenados em um sistema computacional. uma medida de confiana na integridade de um sistema e seus dados.

Segurana = No Requer apenas um sistema de proteo adequado, mas


tambm consideraes sobre os ambientes externos no qual esse sistema opera. Proteo e Segurana tm que estar sempre em perfeita sintonia, pois um sistema de proteo no til se o console do operador estiver exposto ao uso de pessoas no autorizadas ou se os dispositivos do sistema puderem simplesmente ser retirados por pessoas no autorizadas. Esses problemas de segurana so essencialmente de gerenciamento, e no problemas de sistemas operacionais.

Objetivos da Proteo O aumento na complexidade dos sistemas e a disseminao desses sistemas fizeram com que a necessidade de proteo aumentasse. Uma razo obvia para proteger componentes de um sistema: prevenir a ocorrncia de violaes intencionais e nocivas de restries de acesso a esses componentes. importante assegurar que cada parte de um programa em execuo em um sistema use esses componentes do sistema de maneira consistente com as polticas determinadas para seu uso. Algumas polticas de bom funcionamento de um sistema so definidas no projeto do sistema, e outras formuladas para o gerenciamento do sistema; outras so definidas pelos usurios para proteger seus arquivos e programas. Existem vrios mecanismos de proteo que o sistema operacional deve fornecer para que os projetistas de sistemas possam us-los para projetar seus prprios programas de proteo. MECANISMOS POLTICA Mecanismos = determinam como algo feito. Polticas = como devem ser feitos.

Objetos e direitos de acesso


Um sistema computacional uma coleo de processos e objetos. Os objetos compreendem tanto os componentes de hardware quanto os de software. Cada objeto possui um nome nico que o diferencia de todos os outros objetos no sistema e cada um pode ser usado por meio de determinadas operaes. Os objetos so essencialmente elementos de tipo abstratos de dados. As operaes disponveis dependem do objeto. Por exemplo, uma DPU pode apenas executar instrues. Os segmentos de memria podem ser usados para leitura e escrita de dados enquanto uma leitora de cartes pode ser usada apenas para leitura de dados.

Estrutura de domnios
Um processo opera dentro de um domnio de proteo, que determina os recursos que o processo pode usar. Cada domnio define um conjunto de objetos e os tipos de operaes que ele pode chamar para cada objeto. A capacidade de executar uma operao em um objeto o direito de acesso, que compreendem os objetos que o processo pode usar e um conjunto de direitos de acessos correspondentes. Exemplo: Arquivos Teste {ler, escrever}, ento um processo que executa nesse domnio pode ler e escrever dados no arquivo teste; no entanto, ele no pode realizar nenhuma outra operao sobre esse objeto. Um domnio pode ser acessado a cada usurio, ou a cada processo, ou a cada procedimento. A mudana de domnios ocorre, respectivamente, pelo trmino de uma sesso e inicio de outra, ou pela alocao da CPU a um outro processo, ou pela chamada de um procedimento.

Matriz de acesso
As linhas de uma matriz de acesso representam domnios, e as colunas, objetos. Cada entrada na matriz consiste em um conjunto de direitos de acesso. O valor que est na estrada acesso (i,j) define o conjunto de operaes que um processo no domnio (Di), pode realizar sobre o objeto Oj.

Objeto Domnio D1 D2 D3 D4

A1 Ler

A2

A3 Ler

Impressora Imprimir

Ler Ler Escrever

Executar Ler Escrever

Matriz de acessos: Implementao Em geral a matriz ser grande, com a maioria das entradas vazias. A representao mais simples para a matriz de acesso uma tabela global contendo triplas <domnio, objeto, direitos-de-acesso>. Quanto uma operao M executada em um objeto O j no domnio Di, uma tripla < Di Oj Rk > onde M
E

Rk, procurada na tabela global. Se esta tripla

encontrada a operao pode continuar a ser executada; caso contrrio ocorre uma exceo (erro).

Mecanismo de Chave e Fechadura

Cada domnio e cada objeto tm uma lista de padres de bits nicos, chamados respectivamente de chaves e fechaduras. Um processo em um domnio pode usar um objeto apenas se esse domnio tiver uma chave que combine com uma das fechaduras do objeto. A lista de chaves para um domnio deve ser manipulada pelo sistema operacional. Os usurios no podem ler ou modificar a lista de chaves (ou fechaduras) diretamente.

Mecanismo com lista para cada objeto: os dados na lista correspondem diretamente s necessidades dos usurios. Quando um usurio cria um objeto, ele especifica quais domnios podem usar o objeto, assim como as operaes permitidas.

Mecanismo com lista para cada domnio: as listas no correspondem diretamente s necessidades dos usurios; entretanto elas so adequadas para localizar dados relativos a um determinado processo. Um processo que faz uma requisio para usar um determinado objeto deve apresentar o nome do objeto e as operaes que vai realizar sobre ele.

Sistemas de Objetos e Direitos de Acesso

Existem dois sistemas baseados no uso de listas de objetos e direitos de acesso associados. Apesar de eles no serem muito utilizados, eles constituem bases de estudo para teorias de sistemas de proteo. HYDRA: sistema de proteo bastante flexvel baseado em listas de objetos e seus direitos de acesso. O sistema fornece um conjunto fixo de possveis direitos de acesso, que so conhecidos e interpretados pelos sistemas. O Hidra tambm permite que um usurios (do sistema de proteo) defina direitos adicionais. SISTEMA CAP: menos poderoso, mas, tambm pode ser usado para oferecer proteo segura a objetos definidos por usurios. Os projetistas de um Sistema CAP notaram que o uso de direitos de acesso associado aos procedimentos tem permitido economias considerveis na formulao e implementao de polticas de proteo. O Sistema CAP no vem com um manual, quem quiser entend-lo deve aprender princpios e tcnicas de proteo, uma vez que o sistema no oferece uma biblioteca de procedimentos a serem usados.

Proteo baseada na linguagem

A especificao do acesso permitido a um objeto compartilhado pode ser feita no sistema de tipos de uma linguagem de programao. Quando as formas de acesso permitidas so especificadas juntamente com a declarao de variveis, os projetistas de subsistemas podem especificar requisitos de proteo e uso de outros objetos em um sistema. Essa especificao deveria ser fornecida diretamente no programa-fonte. Essa abordagem apresenta vantagens significativas: Formas de acesso permitidas so declaradas, em vez de programadas por meio de chamadas de procedimentos de um sistema operacional. Requisitos operacional. Os mecanismos para garantir que os requisitos de proteo sero satisfeitos no precisam ser especificados ou implementados pelo projetista de um subsistema. A especificao no programa fonte uma forma adequada de oferecer proteo aos objetos de um sistema porque formas de acessos aos objetos esto bastante relacionadas com o conceito de tipos abstratos. de proteo podem ser especificados

independentemente do mecanismo implementado em um sistema

Vantagens e Desvantagens de um sistema de proteo baseado no uso de rotinas do ncleo, em relao a um sistema baseado em restries garantidas em grande parte por um compilador? Segurana: em um sistema baseado no uso de rotinas do ncleo, a proteo ao prprio sistema de proteo maior. Em um sistema onde o cdigo para proteo gerado por um compilador, um sistema que usa campos com informao sobre o tipo de valores, em tempo de execuo, no qual os endereos so determinados dinamicamente por um hardware ou um determinado microprograma, oferece ainda mais segurana. Um sistema de proteo em hardware relativamente imune s violaes do sistema de proteo usado em nveis superiores. Flexibilidade: se uma linguagem no suficientemente flexvel, ela pode ser estendida ou substituda, com menos perturbao d sistema j em execuo do que pela modificao do ncleo do sistema operacional. Eficincia: o sistema baseado em linguagem tem a vantagem de oferecer suporte estaticamente, em tempo de compilao. Alm disso, como o mecanismo gerenciado por um compilador que pode ser adaptado para tratar eficientemente cada forma de proteo especificada, podem ser frequentemente evitados testes e chamadas a rotinas do ncleo em tempo de execuo.

SEGURANA
Para proteger o sistema devemos tomar medidas de segurana em dois nveis: Fsico: a entrada no local ou locais onde ficam os sistemas de computao deve ser protegido contra intrusos. Humano: cuidados devem ser tomados para reduzir a oportunidade de usurios passarem a autorizao de acesso aos intrusos (em troca de suborno, por exemplo). Autenticao Geralmente baseada em trs itens: Posse = de uma chave ou um carto Conhecimento = um nome e uma senha Atributo = impresso digital, padro da retina ou assinatura. Senhas So usadas constantemente para proteger objetos do sistema. Um usurio pode possuir senhas distintas para ler, atualizar e concatenar dados em um arquivo. Vulnerabilidade das Senhas Evite senhas comuns: nome do namorado(a), esposo(a), animais de estimao, Deus, Poderoso, Amor, datas comemorativas entre outros.

Senhas Criptografadas O sistema UNIX armazena a lista de senhas dos usurios de forma criptografada. Quando um usurio apresenta uma senha, ela criptografada e comparada com a senha armazenada. Mesmo se a senha armazenada for lida, a senha decodificada no descoberta. Uma senha por sesso Um sistema pode usar pares de senhas. No incio de uma sesso, o sistema aleatoriamente seleciona e apresenta um componente do par de senhas; o usurio deve fornecer o outro componente. Ameaa de Programas: Cavalo de Tria = Um usurio no muito concentrado tenta iniciar uma sesso em um determinado terminal e nota que aparentemente digitou de modo errado sua senha. Ele tenta novamente, e dessa vez tem sucesso. Nesse caso, pode ter acontecido que um programa emulador do programa de criao de novas sesses, que foi deixado em execuo nesse terminal com ms intenes, roubou sua senha. Na execuo do programa emulador, a senha foi armazenada e uma mensagem de erro foi impressa, em tentativa de criao de uma sesso; quando esse programa emulador terminou de ser executado, o programa real de criao de sesso foi imediatamente iniciado, e uma mensagem para inicio de sesso foi emitida na tela. Esse tipo de ataque pode ser derrotado pelo sistema operacional por intermdio do uso de uma seqncia de caracteres que causa uma interrupo, cujo tratamento no pode ser modificado, como a seqncia Ctrl+Alt+Del, usada no Windows.

Porta de Escape = O projetista deixa uma porta de escape na qual s ele conhece. Exemplo: houve um caos de programadores presos por desvio de fundos em bancos, decorrente da transferncia de fraes de centavos restantes de arredondamentos para suas contas. Esse crdito pode resultar em uma vasta quantia de dinheiro, considerando o nmero de transaes em um grande banco.

GERENCIAMENTO DE SISTEMAS DE SEGURANA


Duas tcnicas podem ser usadas para melhorar a segurana de um sistema: Testes para deteco de padres suspeitos de atividades que possam violar a segurana. Registrar o instante, usurio e tipo de todos os acessos a um objeto. Algumas verificaes que podem ser sugeridas em um sistema: Senhas curtas ou fceis de adivinhar. Programas no autorizado em diretrios do sistema. Processos sendo executados por muito tempo,

inesperadamente. Proteo inadequada para diretrios e arquivos do sistema.

Como computadores confiveis podem ser conectados com segurana a uma rede que no segura? Uma soluo o uso do Firewall, pois ele separa por domnios os acessos permitidos.

CRIPTOGRAFIA
Com o aumento da popularidade das redes, as mensagens podem ser interceptadas ou submetidas a escutas clandestinas. A codificao dos dados pode evitar isso. Dados so criptografados. Pode ser armazenado em um arquivo ou transmitido por canais desprotegidos O receptor deve decodifica-lo de volta sua forma original.