sistemas operacionais modernos

36
Sistemas com Múltiplos Processadores Um multiprocessador de memória compartilhada (ou simplesmente multiprocessador de agora em diante) é um sistema de computador no qual duas ou mais CPUs compartilham acesso total a uma RAM comum. Para a maioria, os sistemas operacionais multiprocessadores são simplesmente sistemas operacionais regulares. Eles tratam de chamadas de sistemas, fazem gerenciamento de memória, fornecem um sistema de arquivos e gerenciam dispositivos de E/S. Apesar disso, existem algumas áreas nas quais eles têm características únicas. Entre elas estão sincronização de processos, gerenciamento de recursos e escalonamento.

Upload: raiane

Post on 17-Sep-2015

26 views

Category:

Documents


0 download

DESCRIPTION

3º Edição - Andrew Tanenbaum

TRANSCRIPT

Apresentao do PowerPoint

Sistemas com Mltiplos Processadores

Um multiprocessador de memria compartilhada (ou simplesmente multiprocessador de agora em diante) um sistema de computador no qual duas ou mais CPUs compartilham acesso total a uma RAM comum. Para a maioria, os sistemas operacionais multiprocessadores so simplesmente sistemas operacionais regulares. Eles tratam de chamadas de sistemas, fazem gerenciamento de memria, fornecem um sistema de arquivos e gerenciam dispositivos de E/S. Apesar disso, existem algumas reas nas quais eles tm caractersticas nicas. Entre elas esto sincronizao de processos, gerenciamento de recursos e escalonamento. Sistemas com Mltiplos ProcessadoresEm contraste, os multiprocessadores NUMA (nonuniform memory acess acesso no uniforme memria) no apresentam essa propriedade. Multiprocessadores UMA de barramento nico geralmente so limitados a no mais do que algumas dezenas de CPUs, e os multiprocessadores crossbar ou de comutao precisam de muito hardware (caro) e no permitem sistemas to maiores. Todas as mquinas NUMA tm trs caractersticas principais que, juntas, as diferenciam de outros multiprocessadores: 1.Existe um espao de endereamento nico, visvel a todas as CPUs. 2.O acesso memria remota feito via instrues LOAD e STORE.3.O acesso memria remota mais lento do que o acesso memria local.O meio mais usado para construir grandes multiprocessadores CC-NUMA normalmente chamado de multiprocessador baseado em diretrio (directory-based multiprocessor). Sistemas com Mltiplos ProcessadoresOs processadores multincleo s vezes so chamados de CMPs (chip-level multiprocessors multiprocessadores em um chip). Da perspectiva do software, os CMPs no so to diferentes dos multiprocessadores baseados em barramento ou dos multiprocessadores usando redes de comutao. Os CMPs tambm so diferentes no que se refere tolerncia a falhas. Como as CPUs esto conectadas a curta distncia, falhas nos componentes compartilhados podem fazer com que mltiplas CPUs parem ao mesmo tempo, situao menos provvel nos multiprocessadores tradicionais. Alm dos processadores multincleo simtricos, nos quais todos os ncleos so idnticos, outra categoria existente a do sistema em um chip. Esses chips possuem uma ou mais CPUs principais, mas tambm ncleos com propsitos especiais, como decodificadores de udio e vdeo, criptoprocessadores, interfaces de rede e outros, fazendo com que um sistema computacional inteiro exista em um chip.

Sistemas com Mltiplos ProcessadoresO algoritmo de escalonamento mais simples para tratar de threads no relacionados emprega uma nica estrutura de dados para os threads prontos no sistema talvez simplesmente uma lista ou, mais provavelmente, um conjunto de listas para threads com diferentes prioridades. Quando se tem uma nica estrutura de dados de escalonamento, usada por todas as CPUs, o tempo compartilhado das CPUs ocorre como em um sistema monoprocessador. Ele tambm fornece balanceamento de carga automtico, pois nunca pode ocorrer de uma CPU estar ociosa enquanto outras esto sobrecarregadas. A outra estratgia geral para escalonamento de multiprocessador pode ser usada quando os threads so de algum modo relacionados uns aos outros. Muitas vezes tambm ocorre de um nico processo criar mltiplos threads para trabalharem juntos. Por exemplo, se os threads de um processo se comunicam muito, til faz-los executar ao mesmo tempo. O escalonamento de mltiplos threads ao mesmo tempo sobre mltiplas CPUs chamado de compartilhamento de espao. Sistemas com Mltiplos ProcessadoresComo os multiprocessadores de grande porte so difceis de construir, e portanto, so caros, para solucionar esse problema, muita pesquisa tem sido feita com multicomputadores, que so CPUs fortemente acopladas que no compartilham memria. Cada CPU tem sua prpria memria local. Esses sistemas tambm so conhecidos por uma variedade de outros nomes, como aglomerados de computadores e COWS (clusters of workstations aglomerados de estaes de trabalho). Multicomputadores so fceis de construir porque o componente bsico consiste em apenas um PC puro com a adio de uma placa de interface de rede. Dois tipos de esquemas de comutao so usados nos multicomputadores. O nodo bsico de um multicomputador formado por uma CPU, memria, uma interface de rede e algumas vezes um disco rgido. O nodo pode ser empacotado em um gabinete-padro de PC, mas o adaptador grfico, o monitor, o teclado e o mouse esto quase sempre ausentes. Em alguns casos, o PC contm uma placa de multiprocessador com dois ou quatro CPUs, em vez de uma nica CPU, mas, para simplificar, presumiremos que cada nodo tem uma CPU. Muitas vezes centenas ou at milhares de nodos ligam-se para formar um multicomputador.Sistemas com Mltiplos ProcessadoresA grade ou malha (grid oumesh) um projeto bidimensional que tem sido empregado em muitos sistemas comerciais. Ela altamente regular e fcil de escalar para tamanhos grandes. Seu dimetro o caminho mais longo entre quaisquer dois nodos e aumenta somente em funo da raiz quadrada do nmero de nodos. Uma variante para a grade o toro duplo, uma grade com as margens conectadas. Ela mais tolerante a falhas do que a grade; alm disso, tem um dimetro menor, pois os cantos opostos podem agora se comunicar em dois passos somente.Dois tipos de esquemas de comutao so usados nos multicomputadores. No primeiro caso, cada mensagem primeiro quebrada (ou pelo software do usurio ou pela interface de rede) em um bloco de algum tamanho mximo chamado de pacote. O esquema de comutao, denominado comutao de pacotes armazenar e encaminhar (store-and-forward packet switching), consiste na injeo do pacote na primeira chave pela placa de rede do n remetente. O outro esquema de comutao, a comutao de circuito, consiste em o computador remetente estabelecer primeiro uma rota atravs de todos os comutadores at o comutador destinatrio. Uma vez que o caminho foi estabelecido, os bits so bombeados at o fim, da origem para o destino, sem parar. No existe a utilizao de buffer intermedirio interferindo na comutao. A comutao de circuitos requer uma fase de estabelecimento docaminho, que consome algum tempo, mas mais rpida depois que esse estabelecimento foi concludo. Aps o pacote ter sido enviado, o caminho deve ser desfeito novamente. Uma variao da comutao de circuito, chamada de rota do verme (wormhole routing), quebra cada pacote em subpacotes e permite que o primeiro pacote inicie mesmo antes de o caminho todo ter sido construdo. Sistemas com Mltiplos ProcessadoresEm todos os multicomputadores, a placa de interface contm alguma RAM para armazenar os pacotes de entrada e sada. Normalmente, um pacote de sada tem de ser copiado para a RAM da placa de interface antes que ele possa ser transmitido para o primeiro switch. A justificativa para esse projeto que muitas redes de interconexo so sncronas, de modo que, uma vez que a transmisso de um pacote tenha sido iniciada, os bits devem continuar fluindo em uma taxa constante. Se o pacote est na RAM principal, esse fluxo contnuo de sada para a rede no pode ser garantido devido a outros trfegos no barramento da memria. Esse problema eliminado usando uma RAM dedicada na placa de interface.O mesmo problema ocorre com os pacotes de entrada. Os bits chegam da rede em uma taxa constante e muitas vezes extremamente alta. Se a placa de rede no pode armazen-los em tempo real no momento em que eles chegam, os dados so perdidos. Novamente nesse caso, tentar ir pelo barramento do sistema (por exemplo, barramento PCI) para a memria principal muito arriscado..Sistemas com Mltiplos ProcessadoresO inimigo da comunicao de alto desempenho em sistemas de multi computadores a cpia excessiva de pacotes. Na melhor situao, existir uma cpia da RAM pata a placa de interface no nodo remetente, uma cpia da placa de interface remetente para a placa de interface destinatria e uma cpia dessa ltima para a RAM destinatria, totalizando trs cpias. Entretanto, em outros sistemas o quadro ainda pior. Em particular, se a placa de interface mapeada no espao de endereamento virtual do ncleo e no no espao de endereamento virtual do usurio, um processo do usurio pode somente enviar um pacote por intermdio de uma chamada ao sistema, a qual desvia para o ncleo. Os ncleos podem ter de copiar os pacotes para suas prprias memrias tanto na sada quanto na entrada, para evitar, por exemplo, falta de pgina durante a transmisso pela rede. Alm disso, provvel que o ncleo que est recebendo no saiba onde colocar os pacotes que chegam at que ele tenha tido oportunidade de examin-los. Sistemas com Mltiplos ProcessadoresOs processos em diferentes CPUs de um multicomputador se comunicam enviando mensagens uns aos outros. Em sua forma mais simples, essa troca de mensagens exposta aos processos do usurio. Em outras palavras, o sistema operacional oferece uma maneira de enviar e receber mensagens e procedimentos de bibliotecas tornam essas chamadas de baixo nvel disponveis aos processos dos usurios. Em uma configurao mais sofisticada, a troca de mensagem real escondida dos usurios fazendo com que a comunicao remota se parea com uma chamada de procedimento.No mnimo, os servios de comunicao oferecidos podem ser reduzidos a duas chamadas (biblioteca): uma para enviar mensagens e outra para receb-las. A chamada para o envio da mensagem pode ser: send (dest, &mPtr);e a chamada para o recebimento da mensagem pode ser: receive (addr, &mPtr);A primeira envia a mensagem apontada por mptr para um processo identificado por dest e faz com que o chamador seja bloqueado at que a mensagem tenha sido enviada. A segunda faz o chamador ser bloqueadoat que uma mensagem chegue. Quando isso ocorre, a mensagem copiada para o buffer apontado por mptr e o chamador desbloqueado. O parmetro addr especifica o endereo de qual receptor est espera. Muitas variantes so possveis para esses dois procedimentos e seus parmetros.Sistemas com Mltiplos ProcessadoresA tecnologia de mquinas virtuais, que tem mais de 40 anos e normalmente denominada virtualizao. Ela permite que um nico computador hospede mltiplas mquinas virtuais, cada uma com seu prprio sistema operacional. A vantagem dessa abordagem que a falha em uma das mquinas virtuais no faz com que as outras falhem automaticamente. Em um sistema virtualizado, diferentes servidores podem funcionar em diferentes mquinas virtuais, o que mantm o modelo de falha parcial de um multicomputador a um custo muito mais baixo e de muito mais fcil manuteno. A execuo de software nas mquinas virtuais apresenta outras vantagens alm do forte isolamento. Uma delas que ter menos mquinas fsicas significa economia de dinheiro hardware e em eletricidade e menos espao ocupado no escritrio. Outra vantagem das mquinas virtuais que a criao de pontos de salvaguarda (check points) e a migrao (por exemplo, para balanceamento de carga entre diferentes servidores) so muito mais fceis do que no caso dos processos funcionando em um sistema operacional normal. Outro uso para as mquinas virtuais armazenar aplicaes de verses mais antigas de um sistema operacional (ou verses do sistema operacional) que no possuem mais suporte ou que no funcionam no hardware atual. As mquinas virtuais tambm so utilizadas no desenvolvimento do software.Sistemas com Mltiplos ProcessadoresUm computador constitudo de elementos eletrnicos, como resistores, capacitores e principalmente transistores. Nesses computadores, os transistores so, em geral, componentes de determinados circuitos eletrnicos que precisam armazenar os sinais binrios e realizar certos tipos de operaes com eles. Esses circuitos, chamados de circuitos digitais, so formados por pequenos elementos capazes de manipular grandezas apenas binrias. Os pequenos elementos referidos so conhecidos como portas (gates) lgicas, por permitirem ou no a passagem desses sinais, e os circuitos que contm as portas lgicas so conhecidos como circuitos lgicos. Assim, circuitos lgicos so montados a partir da combinao de uma unidade bsica construtiva denominada porta lgica, a qual obtida mediante a combinao de transistores e dispositivos semicondutores auxiliares. Portanto, a porta lgica a base para a construo de qualquer sistema digital.Em geral, os circuitos lgicos so agrupados e embutidos em um Circuito Integrado (CI). Esses dispositivos implementam uma determinada funo com o objetivo de cumprir uma tarefa especfica.Sistemas com Mltiplos ProcessadoresUm tipo de hipervisor, denominado hipervisor tipo 1 (ou monitor de mquina virtual). Na verdade, ele o sistema operacional, j que este o nico programa funcionando no modo ncleo. Sua tarefa gerenciar mltiplas cpias do hardware real, denominadas mquinas virtuais, como os processos que um sistema operacional normal gerencia. Por sua vez, um hipervisor 2, completamente diferente. simplesmente um programa do usurio funcionando, digamos, no Windows ou no Linux, que funciona como um interpretador do conjunto de instrues da mquina e tambm cria uma mquina virtual.Os sistemas distribudos so similares aos multicomputadores pelo fato de cada n ter sua prpria memria privada, sem nenhuma memria fsica compartilhada no sistema. Contudo, os sistemas distribudos ainda so mais fracamente acoplados do que os multicomputadores. De certa maneira, o acoplamento fraco dos computadores em um sistema distribudo , ao mesmo tempo, uma vantagem e uma desvantagem. Sistemas com MltiplosProcessadoresOs sistemas distribudos so construdos sobre as redes de computadores. AS redes existem em duas classes principais, as LANs (local rea networks redes locais), que abrangem um edifcio ou um campus, e as WANs (wide rea networks redes de longa distncia), que podem abranger cidades, pases ou mesmo o planeta inteiro. O mais importante tipo de LAN a Ethernet e a outra WAN a Internet. As redes de computadores fornecem servios para os hospedeiros e processos que as esto usando. O servio orientado a conexo modelado de modo similar ao sistema telefnico. O aspecto essencial de uma conexo que ela age como uma tubulao: o emissor coloca objetos de um lado e o receptor coleta-os do outro na mesma ordem. Contrariamente, o servio sem conexo modelado de modo similar ao sistema postal. Cada mensagem (carta) carrega endereo completo do destinatrio e roteada pelo sistema de modo independente umas das outras. Um servio no confivel (isto , sem confirmao) sem conexo muitas vezes chamado de servio datagrama em analogia ao servio de telegrama -, o qual no oferece uma confirmao ao emissor. Ainda h o servio de solicitao-rplica (request-reply service). Nesse servio, o emissor transmite um nico datagrama com uma solicitao; a rplica contm a resposta. Sistemas com Mltiplos ProcessadoresTodas as redes tm regras altamente especializadas para que as mensagens possam ser enviadas e para que as respostas sejam retornadas queles que as enviaram. O conjunto de regras pelas quais os computadores especficos se comunicam chamado de protocolo. Todas as redes modernas usam aquilo que chamado de pilha de protocolos para assentar protocolos diferentes no topo de um outro. Visto que a maioria dos sistemas distribudos usa a Internet como base, os protocolos principais que esses sistemas empregam so os dois maiores protocolos da Internet: IP e TCP. O paradigma original da Web era muito simples: cada computador pode possuir um ou mais documentos, chamados de pginas da Web. Cada pgina da Web pode conter textos, imagens, cones, sons, filmes etc., bem como hyperlinks (ponteiros) para outras pginas da Web. Quando um usurio solicita uma pgina da Web usando um programa chamado navegador da Web, a pgina mostra na tela de vdeo. Cada pgina da Web tem um endereo nico, chamado de URL (uniform resource locator localizador uniforme de recursos), na forma protocolo://nome-no-DNS/nome-do-arquivo.

SeguranaAlgumas pessoas usam os termos 'segurana' e 'proteo' como se fossem a mesma coisa. Todavia, muitas vezes til distinguir os problemas gerais relacionados a assegurar que arquivos no sejam lidos ou modificados por pessoas no autorizadas, que incluem, de um lado, questes tcnicas, administrativas, legais e polticas e, de outro, mecanismos especficos do sistema operacional empregados para oferecer segurana. Para evitar confuso, usaremos o termo segurana para o problema geral e a expresso mecanismos de proteo para designar os mecanismos especficos do sistema operacional usados para salvaguardar informaes no computador. Contudo, a fronteira entre esses dois termos no bem definida. A segurana tem muitas facetas. Trs das mais importantes so a natureza das ameaas, a natureza dos invasores e a perda acidental de dados.Do ponto de vista da segurana, os sistemas computacionais tm trs objetivos gerais, com as correspondentes ameaas. O primeiro objetivo, a confidencialidade de dados, manter em segredo os dados secretos. O segundo objetivo, a integridade de dados, significa que usurios no autorizados no devem ser capazes de modificar qualquer dado sem a permisso do proprietrio. O terceiro objetivo, a disponibilidade do sistema, significa que ningum pode perturbar o sistema para deix-lo inutilizvel. Esses ataques de recusa de servio esto cada vez mais comuns. Por fim um novo tipo de ameaa surgiu nos ltimos anos.SeguranaOutro aspecto do problema de segurana a privacidade: proteo de indivduos contra o mau uso da informao sobre eles. Isso implica vrias questes legais e morais. O governo deve reunir dossis sobre algum para capturar um fraudador-de-X, seja X 'previdncia' ou 'impostos', dependendo de sua poltica? A polcia deve ter autorizao de investigar algum para combater o crime organizado? Os empregadores e as companhias de seguro tm direitos? O que acontece quando esses direitos entram em conflito com os direitos individuais? Todas essas questes so extremamente importantes, mas esto alm do escopo deste estudo.A maioria das pessoas tem um comportamento cordial e obedece s leis; portanto, por que a preocupao com a segurana? Porque infelizmente h os no to cordiais e que querem causar problemas (provavelmente para seu prprio benefcio comercial). Na literatura sobre segurana, as pessoas que bisbilhotam em coisas que no lhes dizem respeito so chamadas de invasores ou algumas vezes de adversrios. Os invasores agem de duas maneiras diferentes. Os invasores passivos querem apenas ler os arquivos que no esto autorizados a ler. Os invasores ativos so mais nocivos; querem alterar dados alheios. Durante o projeto de um sistema seguro contra invasores importante ter em mente que tipo de invasor se est tentando combater. Algumas categorias comuns so: Curiosidades casuais de usurios leigos;Espionagem por pessoas internas; Tentativas determinadas para ganhar dinheiro e Espionagem comercial ou militar SeguranaAlm das ameaas causadas por invasores nocivos, dados valiosos podem ser perdidos por acidente. Algumas das causas mais comuns de perda acidental de dados so: 1. Fenmenos naturais: incndios, enchentes, terremotos, guerras, motins ou ratos roendo fitas ou discos flexveis. 2. Erros de hardware ou de software: defeitos na CPU, discos ou fitas com problemas de leitura, erros de telecomunicao, erros de programas. 3. Erros humanos: entrada incorreta de dados, m montagem de disco ou fita, execuo do programa errado, perda de disco ou fita ou algum outro erro. A maioria dessas causas pode ser tratada com a manuteno adequada das cpias de segurana, preferivelmente em um lugar distante dos dados originais. Embora proteger dados contra perda acidental parea banal se comparado a proteger contra invasores inteligentes, na prtica, provavelmente mais danos sejam causados pelo primeiro que pelo ltimo.O propsito da criptografia levar uma mensagem ou um arquivo, chamado de texto plano, e criptograf-lo em um texto cifrado de tal modo que somente a pessoa autorizada saiba convert-lo novamente para um texto plano.SeguranaOs sistemas por chave secreta so eficientes, pois a quantidade de computao necessria para criptografar ou decriptar uma mensagem controlvel, porm h uma grande desvantagem: o emissor e o receptor devem, ambos, possuir a chave secreta compartilhada. Podem at mesmo obt-la fisicamente, um dando-a ao outro. Para contornar esse problema, usada a criptografia por chave pblica (Diffie e Hellman, 1976). Esse sistema apresenta a seguinte propriedade: chaves distintas so usadas para criptografia e decriptao e, dada uma chave criptogrfica bem conhecida, praticamente impossvel descobrir a chave correspondente de decriptao. Sob essas circunstncias, a chave criptogrfica pode ser pblica e somente a chave de decriptao privada mantida em segredo. Para se ter uma noo da criptografia por chave pblica, considere estas duas questes:

Questo 1: Quanto 314159265358979 x 314159265358979?Questo 2: Qual a raiz quadrada de 3912571506419387090594828508241?

A maioria dos alunos da sexta srie, com lpis, papel e a promessa de um grande sorvete com cobertura se a resposta estiver correta, poderia responder questo 1 em uma ou duas horas. SeguranaA maioria dos adultos, com lpis, papel e a Promessa de um desconto de 50 por cento nos impostos pelo resto da vida, no resolveria a questo 2 sem usar uma calculadora, um computador ou alguma ajuda externa. Embora as operaes de elevar ao quadrado e de extrao da raiz quadrada sejam inversas, suas complexidades computacionais so muito diferentes. Esse tipo de assimetria forma a base da criptografia por chave pblica. Um sistema de chave pblica, chamado RSA, explora o fato de a multiplicao de grandes nmeros ser muito mais fcil para um computador que a fatorao de grandes nmeros, especialmente quando toda a aritmtica implementada com base na aritmtica de mdulo e todos os nmeros envolvidos tm centenas de dgitos (Rivest et aL.,7978). Esse sistema amplamente usado no mundo criptogrfico, assim como sistemas baseados em logaritmos discretos (El Gamal, 1985). O principal problema da criptografia por chave pblica que ela milhares de vezes mais lenta que a criptografia simtrica. A criptografia por chave pblica funciona com todos escolhendo um par de chaves (pblica, privada) e tornando pblica a chave pblica. A chave pblica a chave criptogrfica; a chave privada a de decriptao. Em geral, a criao da chave automatizada, possivelmente com uma senha escolhida pelo usurio alimentada em um algoritmo como uma semente.SeguranaH vrias situaes, as quais veremos depois, em que desejvel ter alguma funo, f, com uma propriedade que dados f e seu parmetro x, calcular y = f (x) seja fcil, mas dada somente f(x), encontrar x seja computacionalmente invivel. Essa funo costuma embaralhar os bits de um modo bastante complexo. Comea atribuindo x como um valor inicial de y. Ento, a funo teria um lao para iterar o nmero de vezes correspondente ao nmero de bits 1, em x, com cada iterao permutando os bits de y de uma maneira dependente da iterao, adicionando uma constante diferente a cada iterao e geralmente misturando os bits muito bem.Muitas vezes necessrio assinar um documento digitalmente. As assinaturas digitais tornam possvel assinar mensagens eletrnicas e outros documentos digitais de modo que elas no possam ser depois repudiadas por quem as enviou. Uma maneira comum , primeiro, submeter o documento a um algoritmo de hashing de uma via que seja muito difcil de inverter. A funo hashing produz em geral um resultado de tamanho fixo e independente do tamanho do documento original. As funes hashing mais conhecidas e usadas so a MDS (message digest - compndio de mensagens), que produz um resultado de 16 bytes (Rivesl, 1992), e a SHA (secure hash algorithm - algoritmo seguro de hash), que produz um resultado de 20 bytes (NIIST 1995).

SeguranaEm alguns sistemas, a proteo implementada por um programa chamado monitor de referncia. Cada vez que se tenta um acesso a um recurso potencialmente protegido, o sistema pede, primeiro, ao monitor de referncia para verificar sua validade. O monitor de referncia procura, ento, em sua tabela de polticas e toma uma deciso. A seguir listamos alguns exemplos:1.Domnios de proteo;2.Listas de Controle de Acesso;3.Capacidades;4.Sistemas Confiveis;5.Base computacional Confivel;6.Modelos Formais de Sistemas seguros;7.Segurana Multinveis;8.Canal Oculto

SeguranaQuando um usurio se conecta a um computador, o sistema operacional normalmente busca determinar quem o usurio, um processo chamado de autenticao de usurio. Os primeiros computadores de grande porte no possuam um sistema operacional e muito menos um procedimento de acesso ao sistema (login). Depois, os computadores de grandeporte cujos sistemas trabalhavam em lotes e por compartilhamento de tempo tinham, em geral, um procedimento de acesso ao sistema para autenticar os trabalhos e os usurios.Sabendo como a autenticao importante, o prximo passo encontrar uma boa maneira de faz-la. A maioria dos mtodos de autenticao de usurios para quando eles tentam obter acesso ao sistema baseia-se em um dos trs princpios gerais de identificao:1.Alguma coisa que o usurio sabe.2.Alguma coisa que o usurio tem.3.Alguma coisa que o usurio .Esses princpios levam a esquemas diferentes de autenticao com diferentes complexidades e propriedades de segurana. Quem quiser causar problemas em um sistema particular deve, primeiro, obter acesso quele sistema, o que significa conseguir passar por qualquer que seja o procedimento de autenticao l usado.

SeguranaA maneira mais amplamente usada de autenticao pedir que o usurio digite um nome de entrada e uma senha. A proteo por senha fcil de entender e de implementar. A implementao mais simples mantm uma lista central de pares (nome de entrada, senha). O nome de entrada digitado buscado na lista e a senha digitada, comparada senha armazenada. Se forem coincidentes, o acesso ser permitido; do contrrio, o acesso ser rejeitado. No preciso dizer que, enquanto uma senha estiver sendo digitada, o computador no deve exibir os caracteres digitados, para que olhos curiosos prximos ao terminal no possam v-los.A maioria dos crackers invade apenas se ligando a um computador-alvo e tentando vrias combinaes (nome, senha) at que encontrem uma que funcione. Muitas pessoas usam seus nomes de alguma maneira como nomes de entrada. Claro que acertar um nome no basta. Deve-se chegar senha tambm. Isso mais fcil do que se pensa. O trabalho clssico sobre segurana por senha foi elaborado por Morris e Thompson (L979) para sistemas Unix.

SeguranaO segundo mtodo de autenticao de usurios consiste em verificar a posse de algum objeto fsico e no alguma coisa que eles saibam. Para esse fim, as chaves de metal para portas so usadas h sculos. Atualmente, um objeto fsico bastante empregado o carto de plstico, que inserido em um leitor que faz parte de um terminal ou de um computador. Em geral, o usurio no deve somente inserir o carto, mas tambm digitar uma senha, a fim de impedir que algum use um carto perdido ou roubado. Visto desse modo, o uso do caixa automtico de um banco ou ATM (automated teller machine - mquina de atendimento automatizado) comea com o usurio se conectando ao computador do banco por um terminal remoto (a mquina do caixa automtico) por meio de um carto de plstico e uma senha.O terceiro mtodo de autenticao mede caractersticas fsicas do usurio, caractersticas que sejam difceis de falsificar (BIOMETRIA) (Pankanti et aL, 2000) . Por exemplo, uma impresso digital ou um identificador de voz no terminal poderia verificar a identidade do usurio. Um sistema biomtrico tpico formado por duas partes: cadastramento e identificao. Durante o cadastramento, as caractersticas do usurio so medidas e os resultados so digitalizados. Ento, os atributos significativos so extrados e armazenados em um registro associado ao usurio. O registro pode ser mantido em um banco de dados central (por exemplo, para acesso a um computador remoto) ou armazenado em um carto inteligente que o usurio carrega e insere depois em um leitor remoto (por exemplo, emum caixa automtico). A outra parte a identificao. O usurio se exibe e fornece um nome de entrada.SeguranaEnto, o sistema faz novamente a medio. Se os novos valores forem os mesmos que os amostrados no momento do cadastramento, o acesso ser permitido; caso contrrio, o acesso ser rejeitado. O nome de entrada necessrio, pois as medidas no so exatas; portanto, difcil index-las e depois buscar o usurio pelo ndice. Alm disso, duas pessoas podem ter as mesmas caractersticas, exigindo assim que as caractersticas medidas para corresponder a um usurio especfico sejam mais rgidas do que apenas exigir que elas correspondam quelas de um outro usurio qualquer. A caracterstica escolhida deve ter uma variabilidade suficiente para que o sistema possa, sem erro, distinguir uma dentre muitas pessoas.Projeto de Sistemas OperacionaisO projeto do sistema operacional mais um projeto de engenharia do que uma cincia exata. Para projetar um sistema operacional bem-sucedido, os projetistas precisam ter uma ideia clara do que querem. Obviamente isso varia de um sistema para outro, assim como de sistemas embarcados para sistemas servidores. Contudo, para sistemas operacionais de propsito geral, quatro itens principais devem ser considerados: 1.Definir abstraes.2.Fornecer operaes primitivas.3.Garantir isolamento.4.Gerenciar o hardware.A tarefa mais importante talvez a mais difcil de um sistema operacional definir as abstraes corretamente. Um sistema operacional fornece um conjunto de abstraes, implementadas principalmente por tipos de dados (por exemplo, arquivos) e operaes sobre eles (por exemplo, read). Juntos, esses servios formam a interface para seus usurios. Existem princpios capazes de guiar o projeto de interface? Acreditamos que sim. Em linhas gerais, so: simplicidade (uma interface mais simples mais fcil de compreender e implementar de uma maneira livre de erros), completude (o sistema operacional deve fazer exatamente o que necessrio que ele faa e mais nada) e capacidade para ser implementado eficientemente (se uma caracterstica ou uma chamada de sistema no puder ser implementada de modo eficiente, provavelmente no vale a pena t-la). Projeto de Sistemas OperacionaisUma das questes mais importantes como fazer todas as caractersticas do sistema bem unificadas para formar aquilo que muitas vezes chamado de coerncia arquitetural. Nesse sentido, importante diferenciar dois tipos de clientes de sistemas operacionais. De um lado, existem os usurios, que interagem com os programas aplicativos; do outro lado esto os programadores, que escrevem esses programas. Os primeiros, na maioria das vezes, interagem com a interface grfica; os outros, em geral, interagem com a interface de chamada de sistema. Uma vez que os objetivos foram estabelecidos, o projeto pode comear. Um bom ponto de partida pensar sobre como os clientes enxergaro o sistema. importante diferenciar dois tipos de clientes de sistemas operacionais: usurios que interagem com os programas aplicativos e programadores que escrevem esses programas.Para ambas as interfaces em nvel de interface grfica e em nvel de chamada de sistema, o aspecto mais importante a existncia de um bom paradigma para fornecer uma maneira de enxergar a interface. Muitas interfaces grficas para PCs usam o paradigma WIMP. Esse paradigma usa o aponte e clique, aponte e clique duplamente, arraste e outros idiomas por toda a interface para fornecer uma coerncia arquitetural.

Projeto de Sistemas OperacionaisA coerncia arquitetural importante no nvel do usurio, mas igualmente importante no nvel da interface de chamadas de sistema. Nesse caso til diferenciar entre o paradigma de execuo (o programa faz chamadas de sistema de tempos em tempos para obter a entrado do usurio, os servios do sistema operacional, etc, ou o programa executa algum tipo de inicializao e depois espera que o sistema operacional o informe sobre o primeiro evento) e o paradigma de dados (a inteno unificar dados, dispositivos seja por fita, arquivo, objeto ou documento, de modo que seja mais fcil trabalhar com eles).O sistema operacional deve fornecer o mnimo possvel de chamadas de sistema e cada uma deve ser a mais simples possvel. Um paradigma unificado de dados pode desempenhar um papel importante nesse caso.Em alguns casos, as chamadas de sistema podem parecer precisar de diversas variantes, mas uma prtica muitas vezes melhor ter uma camada que trate o caso geral, com diferentes rotinas de bibliotecas para esconder esse fato dos programadores.Esquecendo as interfaces de chamadas de sistema e o usurio, vamos ver como implementar um sistema operacional.Provavelmente, a primeira deciso que os programadores devem tomar qual ser a estrutura do sistema.

Projeto de Sistemas OperacionaisUma estratgia razovel que tem sido bem estabelecida ao longo dos anos um sistema em camadas. O sistema THE de Dijkstra foi o primeiro sistema operacional em camadas. Para um novo sistema, os projetistas que optarem por esse caminho devem primeiro escolher muito cuidadosamente as camadas e definir a funcionalidade de cada uma. Enquanto a diviso em camadas tem seus incentivadores entre os projetistas de sistemas, existe tambm um outro grupo com uma viso precisamente oposta. Esse conceito diz que, se algo tem de ser feito pelo prprio programa de usurio, dispendioso faz-lo tambm em uma camada inferior. O argumento fim a fim diz que o uso de um protocolo de rede confivel no necessrio, uma vez que o ponto final tenha informao suficiente para verificar a correo do arquivo. O argumento fim a fim pode ser estendido para quase todos os sistemas operacionais. Essa ideia defende que o sistema operacional no deve fazer tudo aquilo que o programa de usurio capaz de fazer por si prprio.

Projeto de Sistemas OperacionaisUm meio-termo entre o sistema operacional ter de fazer tudo e no fazer nada o sistema operacional fazer um pouco. Essa ideia leva ao microncleo, em que muitas partes do sistema operacional executam como processos servidores no nvel do usurio. De todas as ideias, essa a mais modular e flexvel. O mximo da flexibilidade consiste em permitir que cada driver de dispositivo tambm execute como um processo do usurio, totalmente protegido contra o ncleo e outros drivers, mas a modularidade aumenta mesmo quando os drivers de dispositivos funcionam no modo ncleo. Vale ressaltar que, embora os microncleos no sejam populares em desktops, eles so largamente utilizados em aparelhos celulares, PDAs, sistemas industriais, sistemas embarcados e sistemas militares, nos quais uma alta confiabilidade necessria.Com os sistemas cliente servidor discutidos anteriormente, a ideia era colocar o mximo possvel fora do ncleo. A abordagem oposta colocar mais mdulos no ncleo de uma maneira protegida. Inicializando com um sistema mnimo que possui pouco mais que um mecanismo de proteo e depois adicionado mdulos protegidos ao ncleo, um por vez, at que se alcance a funcionalidade desejada, um sistema mnimo pode ser construdo para aplicao em mos.

Projeto de Sistemas OperacionaisOutra questo relevante diz respeito aos threads do sistema. Muitas vezes conveniente permitir que os threads do ncleo tenham existncia independente de qualquer processo do usurio. Esses threads podem executar em segundo plano. Alm dos threads do ncleo que esto executando em segundo plano, a maioria dos sistemas operacionais dispara muitos processos servidores em segundo plano.Outro princpio que auxilia na coerncia arquitetural, mantendo ainda as coisas pequenas e bem estruturadas, a separao do mecanismo da poltica. Colocando o mecanismo no sistema operacional e deixando a poltica para os processos do usurio, o sistema por si prprio pode ser mantido sem modificao, mesmo que exista a necessidade de trocar a poltica. Ainda que o mdulo de poltica seja mantido no ncleo, ele deve ser isolado do mecanismo, se possvel, de modo que as alteraes no mdulo de poltica no afetem o mdulo de mecanismo. Um bom projeto de sistema consiste em conceitos separados que podem ser combinados independentemente. A habilidade para combinar conceitos separados independentemente chamada de ortogonalidade.Muitas das estruturas de dados de longa durao usadas por um sistema operacional tm algum tipo de nome ou identificador pelos quais elas podem ser referenciadas. Muitas vezes a nomeao feita em dois nveis: externo e interno.

Projeto de Sistemas OperacionaisOs sistemas operacionais usam vrios tipos de nomes para referenciar os objetos (mapeamento entre um nome e objeto fixo, outras vezes no). A associao antecipada simples, mas no flexvel, ao passo que a associao tardia mais complicada, embora muitas vezes mais flexvel.Os projetistas de sistemas operacionais so constantemente forados a escolher entre estruturas de dados estticas (mais simples de compreender, mais fceis de programar e mais rpidas de usar) e dinmicas (mais flexveis).Embora seja melhor projetar o sistema no estilo de cima pra baixo, teoricamente ele pode ser implementado tanto no estilo de cima pra baixo quanto no de baixo pra cima. Em uma implementao de cima pra baixo, os implementadores inicializam com os tratadores de chamadas de sistema e observam quais mecanismos e estruturas de dados necessrios para que eles funcionem. Esses procedimentos so escritos e a descida prossegue at que o hardware seja alcanado. Muitos desenvolvedores acham mais prtico construir o sistema no estilo de baixo pra cima (primeiro a escrita do cdigo que esconde o hardware de baixo nvel).

Projeto de Sistemas OperacionaisAnalisamos tcnicas abstratas para o projeto e implementao de sistemas. Agora examinaremos algumas tcnicas concretas teis para implementao de sistemas, sendo elas:1.Escondendo o hardware o hardware possui muitas partes complicadas, que devem ser escondidas o quanto antes;2.Indireo a indireo tambm empregada na sada dos dados. Os programas podem escrever caracteres ASCII na tela, que so interpretados como ndices em uma tabela para a fonte de sada utilizada. A entrada na tabela contem o mapa de bits para o caractere. Essa indireo possibilita separar os caracteres das fontes;3.Reusabilidade frequentemente possvel reutilizar o mesmo cdigo em contextos ligeiramente diferentes. E isso uma boa ideia, uma vez que reduz o tamanho do cdigo binrio e significa que o cdigo tem de depurado somente uma vez;4.Reentrncia se caracteriza pela possibilidade de o cdigo ser executado duas ou mais vezes simultaneamente;5.Fora bruta todo sistema operacional tem muitas rotinas que so raramente chamadas ou operam com to poucos dados que sua otimizao no vale a pena. Se o cdigo otimizado maior e tem mais erros, pode no ser interessante se importar com a otimizao;6.Primeiro verificar os erros o sistema operacional deve verificar cuidadosamente cada possvel erro antes de executar a chamada.

Projeto de Sistemas OperacionaisUm sistema operacional rpido e no confivel no to bom quanto um outro lento e confivel. Os sistemas operacionais atuais esto mais lentos porque esto fazendo muito mais. As otimizaes nos sistemas operacionais devem ocorrer nas partes que podem causar problemas inevitveis. Quando se faz uma otimizao importante, vale a pena procurar por algoritmos que ganham velocidade com o uso de mais memria ou, de modo oposto, economizam memria preciosa com a realizao de mais computao.Uma tcnica bem conhecida para melhora de desempenho o uso de cache. Ela aplicvel sempre que existir a probabilidade de o mesmo resultado ser necessrio vrias vezes.Processos e programas no agem aleatoriamente. Eles apresentam uma quantidade razovel de localidade no tempo e no espao e essa informao pode ser explorada de vrias maneiras para melhorar o desempenho.Normalmente, uma boa ideia diferenciar entre o caso mais comum e o pior caso possvel e trat-los diferentemente. Muitas vezes os cdigos para as duas situaes so totalmente diversos. importante tornar o caso comum rpido. Para o pior caso, se ele ocorre raramente, suficiente torn-lo correto.

Projeto de Sistemas OperacionaisA maioria dos programadores acha que escrever um programa correr at o teclado e comear a digitar e, logo em seguida, o programa totalmente depurado finalizado. Para programas muito grandes, no se trabalha assim. A seguir explanaremos de modo rpido alguns pontos sobre gerenciamento de projetos de grandes sistemas operacionais:1.O mtico homem ms muito tempo consumido no planejamento de como dividir a tarefa em mdulos, especificando os mdulos e suas interfaces e imaginado como esses mdulos iro interagir, mesmo antes de comear a decodificao. Em seguida os mdulos devem ser implementados e depurados separadamente.2.Estrutura de equipe qualquer grande projeto precisa ser organizado de maneira hierrquica. No nvel mais baixo existem muitas equipes pequenas, cada qual liderada por um programador chefe. No nvel seguinte, grupos de equipe devem ser comandados por um gerente. Esses gerentes devem ser gerenciados e assim segue.3.O papel da experincia ter projetistas experientes fundamental para o projeto de um sistema operacional, visto que a maioria dos erros no est no cdigo e sim no projeto.4.No h bala de prata temos de nos contentar com melhoras graduais, incrementais. Projeto de Sistemas OperacionaisA seguir listamos onde os sistemas operacionais podem chegar futuramente:

1.Virtualizao;2.Processadores multincleo;3.Sistemas operacionais com grandes espaos de endereamento;4.Em rede;5.Sistemas paralelos e distribudos;6.Multimdia;7.Computadores movidos a bateria;8.Sistemas embarcados;9.N sensor.