0% acharam este documento útil (0 voto)
18 visualizações21 páginas

Kernel

O núcleo, ou kernel, é o componente central de um sistema operacional, atuando como intermediário entre software e hardware, gerenciando recursos como CPU, memória e dispositivos de entrada/saída. Existem diferentes tipos de núcleos, como monolíticos e micro núcleos, que variam em complexidade e abordagem de gerenciamento de recursos. O desenvolvimento do núcleo é uma tarefa complexa, exigindo otimização e segurança, e é fundamental para a execução eficiente de aplicativos e processos no sistema.

Enviado por

Roberto Nunes
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
18 visualizações21 páginas

Kernel

O núcleo, ou kernel, é o componente central de um sistema operacional, atuando como intermediário entre software e hardware, gerenciando recursos como CPU, memória e dispositivos de entrada/saída. Existem diferentes tipos de núcleos, como monolíticos e micro núcleos, que variam em complexidade e abordagem de gerenciamento de recursos. O desenvolvimento do núcleo é uma tarefa complexa, exigindo otimização e segurança, e é fundamental para a execução eficiente de aplicativos e processos no sistema.

Enviado por

Roberto Nunes
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
+O) WixrrtpiA YA enciclopédia livre Nucleo (sistema operacional) Na informatica, o kernel (em portugués: "nicleo") é 0 componente central do sistema operativo da maioria dos dispositivos computacionais (computador e smartphone por exemplo); ele serve de ponte entre programas-aplicativos e 0 processamento real de dados feito a nivel de hardware, cuja responsabilidades incluem gerenciar os recursos do sistema (a comunicagio entre componentes de hardware e software!) < usando o método da abstragao (encapsulamento) facilitando o uso do dispositivo. Um niicieo de sistema conecta o software aplicativo ao hardware Geralmente como um componente bisico do sistema operativo, de un computador um nitcleo pode oferecer a camada de abstragao de nivel mais baixo para os recursos (especialmente processadores e dispositivos de entrada/saida) que softwares aplicativos devem controlar para realizar sua fungio. Ele tipicamente torna estas facilidades disponiveis para os processos de aplicativos através de mecanismos de comunicagdo entre processos e chamadas de sistema. Para evitar um sistema com niicleo, deve-se pro io trabalhe com abstragio, porém isto aumenta a complexidade do projeto. Tarefas de sistemas operatives so feitas de maneiras diferentes por micleos diferentes, dependendo do seu desenho e abordagem. Enquanto nticleos monoliticos tentam alcancar seus objetivos executando todos os cédigos de sistema no mesmo espaco de enderecamento para aumentar a performance do sistema, micronticleos executam a maioria dos servigos do sistema no spago de usuario como servidores, buscando melhorar a manutengdo e a modularidade do sistema operativo. Visao geral Na definigio de micleo, o professor alemio Jochen Liedtke disse que a palavra é "tradicionalmente usada para definir a parte do sistema operativo que é obrigatéria e comum a todo software no sistema."2) ‘A maioria dos sistemas operativos depende do conceito de micleo. A existéncia de um nticleo é uma consequéncia natural de projetar um sistema de computador como séries de camadas de abstracéio,!3! cada uma das fungdes dependendo das fungdes das camadas abaixo de si. O nticleo deste ponto de vista, é simplesmente 0 nome dado ao nivel mais inferior de abstragdo que é implementado em software. Caso queira fazer/implementar um sistema operacional sem nicleo, ter-se-ia que projetar todo o software no sistema de modo a nao utilizar abstragao alguma; isto iria aumentar a complexidade e 0 projeto a tal ponto que apenas os sistemas mais simples seriam capazes de ser implementados. Enquanto isto hoje € chamado nticleo, originalmente a mesma parte do sistema também foi chamado o nucleus ou carogo!/41I51161 (Nota, no entanto, este termo carogo também foi usado para se referir a meméria primordial de um sistema de computador, por que alguns dos primeiros computadores usaram uma forma de meméria chamada meméria de carogos magnéticos), e foi concebido originalmente como contendo apenas os recursos de suporte essenciais do s operativo. tema Na grande maioria dos casos, 0 processo de iniciagio comega executando o niicleo no modo isor.21 © micleo depois inicializa a si e depois 0 primeiro processo. Depois disto, em resposta para eventos externos (ex., de chamadas de sistema usados pelos aplicativos para requisitar servigos do nicleo, ou via atrav interrupgdes usadas pelo hardware para notificar o micleo sobre eventos). Além disso, tipicamente © micleo fornece um lago que é executado sempre que nenhum processo esta disponivel para execuciio; geralmente chamado de processo desocupado. O desenvolvimento do nacleo é considerado uma das mais complexas e dificeis tarefas em programagao.'8! sua posicéo central em um sistema operativo implica a necessidade de bom desempenho, que define 0 niicleo como pega de software critica e torna seu desenvolvimento correto e implementacio correta dificil. Devido a diversas raz6es, 0 micleo pode até nao ser capaz de utilizar mecanismos de abstragao, que ele fornece a outro software. Tais razdes incluem preocupagées com o gerenciamento de meméria e a falta de reentrancia, logo o seu desenvolvimento torna-se ainda mais dificil para engenheiros de software. A otimizagio do uso de meméria faz-se necessiria, pois o niicleo no pode utilizar recursos de paginac&o por demanda, ja que ele préprio fornece esta fa dade, tendo, entdo, que permanecer na meméria para tal. Geralmente um nicleo vai fornecer recursos para escalonamento de processos de baixo nivel,!2! comunicagio entre processos, sincronizagio de processos, troca de contexto, manipulagio de locos de controle de processo, gerenciamento de interrupgées, criagdo e destruigao de processos, e suspensiio e continuagdo de processos (veja estados de processos). 41161 Finalidades basicas O principal propésito do micleo é gerenciar os recursos do computador e permitir que outros programas rodem e usem destes recursos.!"! Tipicamente estes recursos consistem de: = Unidade de processamento central (CPU, 0 processador): principal parte de um sistema de ‘computacao, responsavel por executar programas nele. O nucleo tem a responsabilidade de decidir, em qualquer momento, qual dos programas em execugao deve ser alocado para o processador ou processadores (cada um dos quais geralmente pode executar um programa por vez) = Meméria: usada para armazenar instrugdes do programa e dados. Tipicamente, ambos precisam estar presentes na meméria de modo a tornar a execugao do programa possivel. Frequentemente miltiplos programas buscardo acesso a meméria ao mesmo tempo, na maioria das vezes exigindo mais meméria do que o computador pode disponibilizar. O nucleo € responsavel pela decisao de que meméria cada processo pode utilizar, e determinar o que fazer quando menos do suficiente esta disponivel. = Dispositivos de entrada/saida, tais como teclado, mouse, entradas de disquete, impressoras, telas etc. O nuicleo aloca pedidos de aplicativos para realizar entrada/saida para um dispositive apropriado (ou subsegao de um dispositivo, no caso de arquivos em um disco ou Janelas em uma tela) e fomece métodos convenientes para 0 uso do dispositive (tipicamente abstraido ao ponto onde o aplicativo nao precisa mais conhecer os detalhes da implementagao do dispositivo). Aspectos importantes no gerenciamento de recursos sio a defini¢ao de um dominio de execugio (espaco de enderegamento) e o mecanismo de protegio utilizado para mediar o acé dentro de um dominio.!!! sO a recursos Niicleos geralmente nao oferecem métodos para sincronizacao e comunicagao entre processos (IPC (em inglés)). Um nicleo pode implementar estes recursos ele mesmo, ou depender de alguns processos que ele executa para fornecer estas facilidades a outros processos, no entanto neste caso ele deve oferecer algum modo do IPC permitir que processos acessem as facilidades fornecidas um pelo outro. Finalmente, um nécleo deve oferecer um método de acesso a estas facilidades para os programas em execu Geren mento de processos A principal tarefa de um micleo é permitir a execugo de aplicativos e ajudé-los com recursos como abstragées de hardware. Um processo define-se por um fluxo de atividades que se utiliza de recursos. Nesse caso, a execugdo de uma aplicagdo gera um processo. Processo este que delimita as porgées da meméria o aplicativo pode acessar."©] © gerenciamento de processos do nticleo deve evar em conta o equipamento de hardware embarcado para protecao de meméria,/2!) Para executar um aplicativo, um nticleo geralmente cria um espaco de enderecamento, carrega 0 arquivo contendo as instrugdes do programa na meméria (talvez via paginagéo por demanda), cria uma pilha para o programa e ramos para uma dada localizagio dentro do programa, iniciando, portanto, a sua execucao,12] Niicleos multitarefa sto capazes de dar ao usuario a ilusio de que um mimero de processos que est sendo executado simultaneamente no sistema é maior do que o niimero de processos que aquele sistema é fisicamente capaz de executar. Usualmente, o nimero de processos que um tema pode executar simultaneamente é igual ao namero de CPUs que ele possui instaladas (no entanto, isto pode nao ser o caso de processadores que suportam miiltiplas linhas de execugi imultaneas). Em um sistema multitarefas preemptivo, o nticleo dé a todos programas uma parcela do tempo e alterna entre os processos to rapidamente que d4 ao usuario a impressio de que eles esto sendo executados simultaneamente. O nicleo utiliza algoritmos de escalonamento para determinar qual processo sera executado a seguir e quanto tempo lhe sera dado. O algoritmo escolhido pode permitir que alguns processos tenham uma prioridade mais alta que muitos outros. 0 nticleo geralmente também prové a esses processos uma maneira de comunicarem-se; isto é chamado comunicagio entre processos (IPC (em inglés)) e as principais implementagées sio meméria compartilhada, troca de mensagens e chamadas de procedimento remoto (veja computagio concorrente). Outros sistemas (particularmente em computadores menos potentes) podem fornecer multitarefa de cooperagao, em que para cada proceso é permitida execucao ininterrupta até que ele faca uma requisicio especial ao micleo para que ele alterne para outro processo. Tais requisigGes so conhecidos como "indulgéncias" (yield (em inglés)), e tipicamente ocorrem ou em resposta a um pedido para comunicagao entre processos, ou para esperar até 0 acontecimento de um evento. Versées mais antigas do Microsoft Windows e do Mac OS utilizaram o conceito de multitarefa cooperativa, mas alternaram para esquemas preemptivos conforme a poténcia dos computadores alvo de seu mercado aumentaval"S), O sistema operativo pode também suportar o multiprocessamento (multiprocessamento simétrico (SMP (em inglés), ou, acesso nao-uniforme a meméria); neste caso, diferentes programas e linhas de execugdo podem rodar em diferentes processadores. Um nicleo para tal sistema deve ser projetado para ser reentrante, o que significa que ele pode rodar seguramente duas partes de seu cédigo simultaneamente. Isto tipicamente significa oferecer mecanismos de sincronizagdo (como trava-giros) para assegurar que dois processadores nao tentarao modificar os mesmos dados ao mesmo tempo. Gerenciamento de memoria O niicleo possui acesso completo 4 meméria do sistema e deve permitir que processos acessem a memiéria com seguranca conforme suas necessidades. Frequentemente, o primeiro passo para isso 6 o enderegamento virtual, geralmente alcangado através da paginagdo e/ou segmentagio. O enderegamento virtual permite ao nticleo fazer com que um endereco fisico parega ser outro, o endereso virtual. Espacos de endereso virtual podem ser diferentes para diferentes processos; a meméria acessada por um processo através de um endereco virtual particular pode ser diferente da acessada por um outro processo através do mesmo endereco virtual. Isto possibilita que todos os programas funcionem como se estivessem sendo executados sozinhos, além do nticleo, e por isso evita que aplicativos travem uns aos outros."21 Em virios sistemas, o endereso virtual de um programa pode se referir a dados que nao esto na meméria atualmente. A cama de indirecdo oferecida pelo enderecamento virtual permite que o sistema utilize meios de armazenagem de dados, como um disco rigido, para armazenar o que de outro modo teria que permanecer na meméria RAM. Como resultado. sistemas operativos podem permitir que programas usem mais memoria do que esté fisicamente disponivel. Quando um programa precisa de dados que nao esto na RAM, a CPU avisa o nticleo que responde escrevendo o contetido de um bloco de meméria inativo para o disco (se necessdrio) e substituindo-o na meméria com os dados requisitados pelo programa. O programa pode entio continuar sua execugio do ponto em que foi suspenso. Este esquema é geralmente conhecido como paginacio por demanda. to ocorre, e este inderegamento virtual também permite a criagio de particSes virtuais de meméria em duas areas separadas, uma sendo reservada para o nticleo (espaco de miicleo) e 0 outra para os aplicativos (espaco de usuario). Os aplicativos nao tém permissao do processador para acessar a meméria do niicleo, prevenindo, portanto, que um aplicativo possa danificar o nticleo em execugao. Esta particfo fundamental de espaco de meméria contribuiu muito para os projetos de nticleos realmente de propésito geral e € quase universal em tais sistemas, embora alguns miicleos de pesquisa (como o Singularity) usem outros métodos. Geren mento de dispositivos Para realizar fungGes titeis, processos precisam acessar periféricos conectados ao computador, que sio controlados pelo micleo através do driver do dispositivo. Por exemplo, para mostrar ao usuario algo utilizando a tela, um aplicativo teria que fazer uma requisigao ao niicleo que encaminharia a requisicao para o seu driver de tela, que é o responsdvel por gerar a imagem através dos pixels.!"21 Um niicleo deve manter uma lista de dispositivos disponiveis. Esta lista pode ser conhecida de antemo (como em um sistema embarcado em que o niicleo ser reescrito se o hardware disponivel mudar), configurada pelo usuério (tipico em computadores pessoais antigos e em sistemas projetados para uso pessoal) ou detectada pelo sistema durante a execucéio (normalmente chamado Plug and Play). Num sistema "Plug and Play", um dispositivo realiza primeiro uma sondagem nos diferentes barramentos de hardware, como Interconector de Componentes Periféricos (PCI (em inglés)) ou Barramento Serial Universal (USB (em inglés)), para detectar os dispositivos instalados e depois procura os drivers apropriados. Como a gestio de dispositivos é uma tarefa muito especifica do SO, os drivers so manipulados de forma diferente pelo tipo de arquitetura do nticleo. Em todos os casos, porém, o niicleo deve fornecer a entrada/saida para permitir que os drivers acessem fisicamente seus dispositivos através de alguma porta ou localizagio da meméria. Decisdes muito importantes precisam ser feitas ao projetar o sistema de gestio de dispositivos, jé que alguns projetos de acesso podem envolver trocas de contexto, tornantio a operaco custosa para o processador e causando um gasto excessivo de recursos. |sreee de fontes?) Chamadas do sistema Para realmente realizar algo titil, um processo deve acessar os servigos oferecidos pelo nicleo. Isto é implementado por cada nicleo, mas a maioria oferece uma Biblioteca padrio do C ou uma Interface de programacio de aplicativos, que envolve as funcées relativas ao nucleo./4! O método de invocar as funcdes do micleo varia entre diferentes micleos. Se o isolamento de meméria est4 sendo usado, é impossivel para um processo de usudrio chamar 0 ntcleo diretamente, visto que isso seria uma violagdo das regras de controle de acesso do processador. Algumas possibilidad = Usar uma interrupeao de software simulada. Este método esta disponivel na maioria dos hardwares, e 6, portanto, muito comum, = Usando um portao de chamada. Um portéo de chamada é um enderego especial armazenado pelo niicleo em uma lista na meméria do nticleo em uma localizagao conhecida pelo processador. Quando o processador detecta uma chamada para este enderego, ele ao invés disso redireciona para a localizagao alvo sem causar nenhuma violagao de acesso. Exige suporte no hardware, mas este tipo de hardware é muito comum = Usando uma instrugao de chamada de sistema especial. Esta técnica exige suporte especial no hardware, que em algumas arquiteturas habituais nao possuem (notavelmente, x86). Instrugdes de chamadas de sistema foram adicionadas a modelos recentes de processadores x86, embora, poucos (mas nao todos) sistemas operativos fazem uso destes quando disponiveis = Usando uma fila baseada na meméria. Um aplicativo que faz um grande numero de requisigdes, mas nao precisa esperar o resultado de cada uma pode adicionar detalhes das requisigdes em uma area da meméria que o niicleo sonda periodicamente para encontrar requisigdes Decisdes de desenho Problemas com o suporte do nucleo para protecao Uma consideragio importante no desenho do micleo é o suporte que ele oferece para protecio contra faltas (tolerancia a falhas) e comportamentos mal-intencionados (seguranga). Estes dois aspectos geralmente nao sio claramente distinguidos, e a separago no desenho do nicleo leva a rejeicaio de uma estrutura hierarquica de protegao.!") Os mecanismos ou politicas oferecidas pelo micleo podem ser clasificados de acordo com varios critérios, como: estatico (forgado durante o tempo de compilagao) ou dinamico (forgado durante 0 tempo de execuco); preemptivo ou pés-deteccao; de acordo com os principios de protecdo a que eles correspondem (ex. Denning!5126); quer eles sejam suportados pelo hardware ou baseados em linguagem; quer eles sejam mais um mecanismo aberto ou ma politica compulsiva; e muito mais. Tolerancia a falhas Uma medida dtil para o nfvel de tolerdncia a falhas de um sistema é quio estrito ele é com relagio ao principio do menor privilégio."7] Em casos onde miltiplos programas estiio rodando em um nico computador, é importante prevenir falhas em um dos programas de afetar negativamente outro. is do que a falha em si, isto também implica a seguranga, quando é necessério impedir processos de acessar informagGes sem que Thes seja dada a devida permissao. As duas principais implementagées via hardware!8! para protecio (de informagées sensfveis) so dominios hierérquicos de protegio (também chamadas arquiteturas anel, arquiteturas de segmento ou modo supervisor), 29] e enderecamento baseado em capacidades, 201 Dominios hierarquicos de protegio sio muito menos flexiveis, como no caso de qualquer nicleo com uma ere enaeon estrutura hierdrquica presumida como um critério de desenvolvimento global.!! No caso de protecio nao é possivel designar diferentes privilégios a processos que néo estéo no mesmo nivel de privilégio, e por isso nao é possivel corresponder aos quatro principios de Denning para a tolerancia a falhas,5Il6] particularmente o principio do menor privilégio. Dominios hierérquicos de protecdo também carregam uma enorme desvantagem na _anéis de privilégio, como na x86, sao performance, jé que a interagdo entre diferentes niveis de __ uma abordagem habitual de dominios protegio, quando um processo tem que manipular uma __ bierérquicos de protego usados em estrutura de dados em ambos ‘modo usuario’ ¢ ‘modo ullos sistemas comerciais para obter a a algum nivel de tolerdncia a falhas. supervisor’, sempre exige cépia de —mensagens (transmissio por valor)2] Um nucleo baseado em capacidades, no entanto, é mais flexivel em designar privilégios, pode corresponder aos prineipios de Denning para a tolerdncia a falhas,2! e geralmente no sofrem de problemas de performance da cépia por valor. Ambas implementagées tipicamente exigem algum suporte de hardware ou firmware para serem operaveis e eficientes. O suporte de hardwarepara dominios hierarquicos de protecao!3! geralmente é de "modos de CPU.” Um modo simples ¢ eficiente de fornecer suporte a hardware ¢ delegar A unidade de gerenciamento de memoria a responsabilidade por checar as permissdes de acesso para todos sos a memoria, um mecanismo chamado enderegamento bast capacidades.|22] Falta na maioria das arquiteturas comerciais, o suporte a MMU para capacidades. do em aces: Uma abordagem alternativa é simular capacidades usando dominios hierérquicos comumente suportados; nesta abordagem, cada objeto protegido deve residir num espago de enderecamento ao qual o aplicativo ndo possui acesso; o néicleo também mantém uma lista de capacidades em tal memoria. Quando um aplicativo precisa acessar um objeto protegido por uma capacidade, ele realiza uma chamada de sistema e 0 micleo realiza 0 acesso a ele, O custo de performance de trocar de espaco de enderecamento limita a praticabilidade desta abordagem em sistemas com interagbes complexas entre objetos, mas é utilizado nos sistemas operativos atuais para objetos que nao sio acessados frequentemente ou que nao devem ser feitos rapidamente.!241[25] Implementagées onde os mecanismos de protecio nao suportades pelo firmware, mas so, ao invés disso, simulados em niveos mais altos (ex. simulando capacidades ao manipular tabelas de paginas em hardware que no possui suporte direto), so possiveis, mas ha implicagées de performance.!2°! No entanto, falta de suporte no hardware pode nao ser problema, para sistemas que escolhem usar uma protegio baseada em linguagem. (27! Uma decisio importante no projeto do niicleo é a escolha dos niveis de abstrago em que os mecanismos e politicas de seguranga devem ser implementados. Os mecanismos de seguranga do niicleo tém um papel critico no suporte a seguranga nos niveis superiores.(22I(281[29If3o1(31) Uma abordagem é utilizar suporte no nticleo e firmware para tolerdncia a falhas (ver acima), e montar as politicas de seguranca para comportamento malicioso em cima disso (adicionando recursos como mecanismos de criptografia quando necessario), delegar mais responsabilidade para o compilador. Implementagdes que delegam a aplicagio de politicas de seguranga para o compilador ¢/ou nivel do aplicativo sio geralmente chamados segurana baseada em linguagem. A falta de muitos mecanismos criticos de seguranca nos principais sistemas operativos impede a implementacéio adequada de politicas de seguranga no nivel de abstracio do aplicativo.28! Na verdade, um engano muito comum na seguranga de computadores é que qualquer politica de seguranga pode ser implementada no aplicativo, independentemente do suporte no micleo. (281 Protegao baseada em hardware ou linguagem Hoje, tipicos sistemas de computacao usam regras aplicadas pelo hardware sobre quais programas tém permissfio para acessar quais dados. O processador monitora a execucio e desliga um. programa que viole uma regra (ex., um processo de usuario que tenta ler ou escrever na meméria do nticleo, e assim por diante). Em sistemas que nao possuem suporte para capacidades, processos so isolados um do outro, utilizando-se espacos de enderecamento separados.'32] Chamadas de um processo de usuario no micleo sio regidas pela exigéncia de que eles usem um dos métodos de chamada do sistema descritos acima. Uma abordagem alternativa é usar protectio baseada em linguagem. Em um sistema de protecio baseado em linguagem, o niicleo vai permitir a execugéio apenas de cédigo produzido por um compilador em que ele confie. A linguagem pode ent&o, ser projetada de modo tal que sera impossivel para o programador instruir algo que violaria os requisitos de seguranga.27) Desvantagens incluem: = Demora maior para a inicializagao efetiva do aplicativo. Aplicages devem ser verificadas sempre que so iniciadas para garantir que foram compiladas utilizando um compilador “correto” ou podem necessitar de recompilagao de cédigo fonte ou bytecode, = Sistemas de tipo inflexivel. Em sistemas tradicionais, aplicativos realizam frequentemente operagées que nao sao de tipagem forte. Tais operagdes ndo podem ser permitidas em um sistema de protegdo baseado em linguagem, o que significa que aplicativos podem precisar ser reescritos e podem, em alguns casos, perder performance. Vantagens desta abordagem incluem: = Separagao de espagos de enderecamento desnecessaria. A troca de espagos de enderecamento é uma operagao lenta que causa grande degradagao na performance, e muito trabalho de otimizagao ¢ feito atualmente para prevenir trocar desnecessarias nos sistemas operativos. Trocar é complemente desnecessario em um sistema de protegao baseada em linguagem, j4 que todo cédigo opera no mesmo espaco de enderegamento. = Flexibilidade. Qualquer esquema de protegdo que possa ser desenvolvida para ser expresso através de linguagem de programagao pode ser implementada através deste método. Mudancas no esquema de protecao (ex. de um sistema hierrquico para um baseado em capacidades) nao exigem novo hardware. Exemplos de sistemas com protegiio baseada em linguagem incluem o JX e Singularity. Cooperacao de processos Edsger Dijkstra provou que partindo de um ponto de vista logico, operacdes atémicas de ‘travamento e destravamento operando em seméforos binarios sao suficientemente primitivos para expres [331 No entanto esta abordagem é geralmente tomada como deficiente em termos de seguranca e eficiéncia, enquanto que uma abordagem via troca de mensagens é mais flexivel.!61 r a qualquer funcionalidade de cooperagio entre pro Gerenciamento de dispositivos de entrada/saida A ideia de um nticleo onde dispositivos de entrada/saida sao gerenciados uniformemente com outros processos, como processos paralelos em cooperacio, foi proposta e implementada primeiramente por Brinch Hansen (embora ideias similares tenham sido sugeridas em 1967/41135}), Na descrigo de Hansen disto, os processos "comuns” sao chamados processos internos, enquanto que os dispositivos de entrada/saida sao chamados processos externos.!61 Formas de desenvolvimento Naturalmente, as tarefas e recursos listados acima podem ser fornecidas de varios modos que diferem entre si em projeto e implementacio. 0 principio da separagdo entre o mecanismo e a politica é a diferenga substancial entre a filosofia de microntcleo e ntcleo monolitico(36Il37) Aqui um mecanismo é 0 apoio que permite a implementagio de varias politicas diferentes, enquanto uma politica é um "modo de operacao" particular. Por exemplo, um mecanismo pode oferecer as tentativas de entrada de um usuario um método de chamar um servidor de autorizacdo para determinar se um acesso deve ser dado; uma politica pode ser para o servidor de autorizagdo exigir uma senha e checé-la contra uma senha embaralhada armazenada numa base de dados. Devido ao fato de o mecanismo ser genérico, a politica pode ser alterada com mais facilidade (ex. ao exigir o uso de um passe) do que se um mecanismo ¢ politica fossem integrados no mesmo médulo. Em um microntcleo minimo algumas politicas basicas sio incluidas,27) e seus mecanismos permite que o que est rodando sobre o nticleo (a parte remanescente do sistema operative outras aplicagdes) decida quais politicas adotar (como gerenciamento de meméria, escalonamento de processo de alto nivel, gerenciamento de sistema de arquivos, etc.).!“16] Um nicleo monolitico ao invés disso, tende a incluir varias politicas, entio restringindo o resto do sistema dependente delas Per Brinch Hansen apresentou um argumento convincente a favor da separacao do mecanismo e da politica.JI6] 4 falha em preencher completamente esta separacéio, é uma das maiores causas para a falta de inovagdo nos sistemas operativos existentes atualmente,“] um problema comum nas arquiteturas de computador.[381[391I4°] Q projeto monolitico é induzido pela abordagem de arquitetura "modo nécleo"/"modo usuario" para protegdo (tecnicamente chamada de domini hierarquicos de protecéio), que é comum em sistemas comercias convencionais;'4"! na verdade, todo médulo que necessite de protecio é, portanto, preferivelmente inclufdo no nticleo.[44] Esta ligagdo entre projeto e "modo privilegiado” pode ser reconduzida até o problema chave da separacio do mecanismo e da politica;!#! de fato, a abordagem de arquitetura de "modo privilegiado" se funde ao mecanismo de protecio com as politicas de seguranga, enquanto a principal abordagem de arquitetura alternativa, enderecamento baseado em capacidades, claramente distingue ambos, levando naturalmente ao desenvolvimento de um microntcleo design!*! (veja Separaciio entre protegdo e seguranca). Enquanto niicleos monoliticos executam todo seu eédigo no mesmo espaco de enderecamento (espago de nitcleo) microniicleos tentam executar a maior parte dos seus servigos no espaco de rio, buscando aprimorar a manutengéio e modulabilidade do cédigo base.!4#] A maioria dos niicleos nao se encaixa exatamente em uma destas categorias, sendo mais encontrados entre estes dois projetos. Os chamados nicleos hibridos exoniicleos esto disponiveis, mas so usados raramente em Xen, por exemplo, é um exomicleo. Projetos mais exéticos como nanonticleos e ‘temas produtivo s. O virtualizador Nucleos monoliticos Em um niicleo monolitico, todos os servigos do sistema operativo rodam junto com a linha de execugao principal do nticleo, portanto, também se encontram na mesma 4rea de meméria. Esta abordagem permite 0 acesso vasto e poderoso de hardwares. Alguns desenvolvedores, como desenvolvedor do UNIX Ken Thompson, defendem que é Software "mais facil de implementar um nticleo monolitico"!43! que micromicleos. As principais desvantagens de nicleos monoliticos sio as dependéncias entre os componentes do sistema - um defeito em um driver de dispositive pode paralisar todo o sistema - ¢ o fato de niicleos grandes podem se tornar muito dific Diagrama de nticleos mon is de manter. = BSD = Linux = MS-DOS e derivados, incluindo Windows 95, Windows 98 e Windows ME = Solaris = Palm OS i! Servers Microntcleos ‘A abordagem de micronticleo consiste em definir abstragoes simples sobre o hardware, com um conjunto de primitivos ou chamadas de sistema para implementar servigos stema operative como _Na abordagem do microniicleo, 0 préprio gerenciamento de meméria, multitarefas, e comunicago _"usle0 fornece apenas funcionalidades entre processos. Outros servicos, incluindo aqueles #5i025 que permite a execugao de 2 ° oa servidores, programas separados que normalmente fornecidos por um nticleo monolitico como SV" Dantes ops We rede, so implementados em programas de espaco de jo iticn como drivers de diopenivos, usuario, conhecidos como servidores. Micronticleos so Servidores de interface de usuario, etc mais féceis de manter do que niicleos monoliticos, mas um grande numero de chamadas de sistemas de trocas de contexto podem desacelerar o sistema por que cles geralmente geram mais degradagio na performance do que simples chamadas de fungao. Software minimos do Um micronticleo permite a implementagio das partes restantes do sistema operativo como aplicativos normais escritos em linguagem de alto nivel, e o uso de diferentes sistemas operativos sobre o mesmo micleo nao modificado{] Ele também torna possivel alternar dinamicamente entre sistemas operativos e manter mais de _pagrama de interagéo de um um deles ativos simultaneamente.!61 micronticleo = Hurd = MINIX = Mach Nucleos monoliticos x micronicleos Conforme o néicleo do computador crescem, um nimero de problemas se torna evidente. Um dos rto modo ao aperfeigoar o mais dbvios é que o espaco de meméria aumenta. Isto é mitigado de sistema de meméria virtual, mas nem todas arquitetura de computador suportam memérias virtuais.“4) Para reduzir o espaco utilizado pelo nticleo, modificagdes extensivas precisam ser realizadas para remover cuidadosamente c6digo inttil, que pode ser muito dificil devido a dependéncias pouco aparentes entre partes de um nticleo com milhdes de linhas de cédigo. Pelo comego dos anos 1990, devido a varios problemas de néicleos monoliticos em comparagio a micronticleos, niicleos monoliticos foram considerados obsoletos por virtualmente todos pesquisadores de sistemas operativos, Como resultado, o projeto do Linux, um nticleo monolitico mais do que um micronticleo foi o tépico da famosa discussao inflamada entre Linus Torvalds e Andrew Tanenbaum./45] H4 méritos em ambos argumentos presentes no debate Tanenbaum— Torvalds. Performance Nicleos monoliticos so projetados para que todo o seu cédigo fique no mesmo espaco de enderecamento (espaco de niicleo), que alguns desenvolvedores argumentam ser necessario para aumentar a performance do sistema.'4°! Alguns desenvolvedores também sustentam a hipétese de que micleos monoliticos sao extremamente eficientes se forem bem escritos./461 A performance de micronticleos construidos nos anos 1980 e comegos dos 1990 era terrivel. 2IL471 Estudos empfricos que mediram a performance destes micronticleos nao analisaram os motivos para tal ineficiéncia.!2! As explicagdes para estes dados foram deixadas para o "folclore", com a suposigio de que eles eram devido ao aumento da frequéncia da troca de modo nitcleo para modo usuario, 2] devido a maior frequéncia de comunicagio entre processos!! e a maioria frequéncia de trocas de contexto,!21 De fato, como foi conjeturado em 1995, os motivos para a terrivel performance dos micromicleos podem também ter sido: (4) uma real ineficiéncia na implementacao de toda a abordagem de micronticleo, (2) conceitos particulares implementados nesses micronticleos, e (3) a implementagéo individual destes conceitos.!2) Portanto ainda falta estudar se a solugéo para struir um microniicleo eficiente foi, ao contrario de tentativas anteriores, a de aplicar as cons técnicas corretas de construgio.!21 No outro extremo, a arquitetura de dominios hierarquicos de protegio que leva a um projeto de nticleo monolitico!"] gera impactos significativos na performance cada vez que ha uma interagdo entre diferentes niveis de protecdo (ex. quando um processo tem que manipular uma estrutura de dados em ambos ‘modo ususio’ e ‘modo supervisor), desde que isto exija cépia de mensagem por valor.l?1 Em meados de 1990, a maioria dos pesquisadores abandonou a cremtca de que ajustes cuidadosos poder impactos dramaticamente,!ca"ee_4@_fontes?] mas 5 micronicl s para performance, tais como os L4!48] e K42 vém trabalhando nestes problemas m reduzir estes s, otimizad: recentemente, novos Nucleos hibridos Niicleos hibridos so um acordo entre o desenvolvimento Kent de micronticleos e nécleos monoliticos. Isto implica executar alguns servigos (como a pilha de rede ou o LI sistema de arquivos) no espaco do ntcleo para reduzir 0 impacto na performancel@@ree de fortes?! ge um micronicleo tradicional, mas ainda executar o cédigo no niicleo (como drivers de dispositivos) como servidores no espago de usuario. aco Aabordagem de niicleo hibrido combina = BeOS / Haiku velocidad o projelos mas simples de um = Microsoft Windows NT nticleo monolitico com a modularidade © = XNU (nticleo do Darwin utilizado no Mac OS X) jo segura de um micronticleo, Nanonucleos Um nanonicleo delega virtualmente todos os servigos — incluindo até os mais basicos como controlador de interrupgdes ou o temporizador — para drivers de dispositivo para tornar o requerimento de memoria do nicleo ainda menor do que o dos tradicionais micronticleos./49! = Adeos = Dycos [4] ([Link] archive. org/web/20070930004256/http:/[Link]-muenchen de/forschung/modis/dycos/) = EROS = EKA2 = Jari Operating System [5] (http:/[Link]/) = JNode = KeyKOS = LSE/OS = Mac OS nanonticleo = OZONE = Trion Operating System = XtratuM [6] (http:/[Link]/) Exonticleos Um exonticleo é um tipo de niicleo que nao abstrai Ht Jut J hardware em modelos tedricos. Ao invés disso, ele aloca [Library || Livary {Libary recursos fisicos de hardware (como 0 tempo de um 9 9 processador), paginas de meméria e blocos de disco, para [ oT ) diferentes programas. Um programa rodando em um Software exomticleo pode ligar para uma biblioteca do sistema operacional que usa o exonicleo para simular as Diagrame de interago de um exoniicleo abstragées de um sistema operativo conhecido, ou ele pode desenvolver abstragdes especificas para aquele aplicativo para uma performance superior.(5°) Histéria do desenvolvimento do nucleo Os primeiros sistemas operativos Falando estritamente, um sistema operativo (¢, isto inclui um niicleo) nao é obrigado a rodar um computador. Programas podem ser carregados diretamente e executados na maquina de "bare metal", desde que os autores destes programas estiverem dispostos a trabalhar sem nenhuma abstragiio de hardware ou suporte a maneira durante os anos de 1950, comego dos 1960, eram reiniciados e recarregad execugo de diferentes programas. Eventualmente, pequenos programas auxiliares como carregadores de programas e depuradores foram mantidos na meméria entre as execugdes, ou carregados de meméria somente de leitura. Conforme estas eram desenvolvidas, elas formaram a base do que depois se tornaria o niicleo dos sistemas operativos. A abordagem de "bare metal" ainda é usada hoje em alguns consoles de videogame e sistemas embarcados, mas no geral, computadores novos usam sistemas operativos e nicleos modernos. istema operativo. Os primeiros computadores operaram di s entre cada Em 1969 o RC 4000 Multiprogramming System (microcomputador RC-4000!5#!) introduziu a filosofia de desenvolvimento de sistemas de pequeno niicleo "na qual sistemas operativos para diferentes propésitos poderiam ser criados de maneira metédica",52] algo que poderia ser chamado de abordagem de micronticleo. Sistemas operativos de tempo compartilhado Na década precedendo o fenémeno Unix, computadores aumentaram muito em poder de processamento — ao ponto de os operadores de computador estarem buscando novos modos de conseguir com que as pessoas usassem o tempo livre em suas mquinas. Uma das maiores evolugées durante esta era foi o tempo compartilhado, em que um niimero de usudrios conseguiria pequenas parcelas do tempo do computador, em uma taxa que fazia parecer que cada um estava conectado & sua prépria maquina, embora mais lenta/53) O desenvolvimento dos sistemas de tempo compartilhado levou a inameros problemas. Um deles foi que usudrios, particularmente em universidades, em que os sistemas estavam sendo desenvolvidos, part is tempo de processamento. Por esta razo, seguranca e controles de acesso se tornaram um foco principal do projeto Multies em 1965./54) Outro problema corrente era gerenciar apropriadamente os recursos do sistem: usudrios gastavam a maior parte do tempo iniciando na tela e pensando ao invés de realmente utilizar os recursos do computador, e o sistema de tempo compartilhado deveria dar tempo de processamento para um usudrio ativo durante estes periodos. Por fim, tipicamente os sistemas ofereciam uma hierarquia de meméria de varias camadas de profundidade, e particionar este recurso caro levou a um grande desenvolvimento nos sistemas de meméria virtual. m tentar hackear o sistema para conseguir mi Unix Durante a fase de projeto do Unix, os programadores decidiram modelar todo dispositive de alto nivel como um arquivo, por que eles acreditavam que o propésito da computagio era a de dados.[551 Por exemplo, impresoras eram representadas como um "ficheiro” em uma localizago conhecida — quando dados eram copiados para o arquivo, ela realizava a od uem a tendénci de virtualizar dispo: instancias de algum conceito de nivel inferior. Virtualizar o sistema a nivel de ficheiros permitiu aos usudrios manipular todo o sistema usando seus conceitos e ferramentas de gerenciamento de ficheiros, simplificando a operagao dramaticamente. Como uma extensao do mesmo paradigma, 0 Unix permite que programadores manipulem arquivos usando uma série de pequenos programas, usando 0 coneeito de encadeamento, que permite aos usuarios completar operagdes em etapas, alimentando um ficheiro através de uma cadeia de ferramentas de propésito Gnico. Embora o resultado final fo assim como 0 uso e desenvolvimento, permitindo que 0 usudrio modificasse seu fluxo de trabalho ao adicionar ou remover um programa da cadeia. para fornecer uma funcionalidade similar, pos tivos ¢ ficheiros seriam baixo — ou seja, ambos dispos © mesmo, usar programas menores aumentou drasticamente a flexibilidade, No modelo Unix, o sistema operativo consiste de duas partes: a primeira é uma enorme colegio de programas de utilidades que guiam a maioria das operagdes; a segunda, 0 niicleo que executa os programas.'55] No Unix, do ponto de vista da programacao, a distingdo entre os dois é extremamente ténue: 0 micleo é um programa rodando no modo supervisor,!7! que age como um carregador de programas e supervisor para os = pequenos programas de utilidade que integram 0 resto do sistema e fornecem travas e servigos de entrada/saida para estes programas; além dit niicleo nao intervém de modo algum no espago de usuario. ‘Ao longo dos anos o modelo de computagdo mudou, = € 0 tratamento do Unix de tudo como um ficheiro ou fluxo de bytes ndo era mai aplicdvel como antes. Embora um terminal pudesse ser tratado como um ficheiro ou fluxo de bytes, de que se exibia ou lia, 0 mesmo nao parecia ser verdade para a interface grafica. As redes se \ ae tornaram outro problema. Mesmo se a comunicacio " de rede pudesse ser comparada ao acesso de ficheiros, a arquitetura de baixo nivel orientada a pacotes lidava com pedagos discretos de dados e nfo com ficheiros completos. Conforme a capacidade dos computadores crescia, 0 Unix se oe tornava cada vez mais desorganizado com relagio a cédigo. Enquanto niicleos podiam ter 100.000 linhas de cédigo nos anos 1970 e 1980, niicleos « sucessores modernos do niicleo do Unix como o = Linux possuem mais de 4,5 milhdes de linhas, [5°] Diagrama da relagdo de familia de universalmente Derivados modernos do Unix sao geralmente baseados em micleos monoliticos que carregam médulos. Exemplos disto sio o Linux, um niicleo monolitico com suporte a nitcleos, e diversas distribuigées que o incluem, assim como os micleos das variantes do BSD como FreeBSD, DragonflyBSD, OpenBSD, NetBSD etc. Além destas alternativas, desenvolvedores amadores mantém uma comunidade ativa de desenvolvimento de sistemas operativos, cheia de nicleos que so criados como passatempo que acabam compartilhando varios dos recursos com o Linux e/ou os miacleos do FreeBSD, DragonflyBSD, OpenBSD e NetBSD e/ou sendo compativeis com eles.!57) macOS ‘A Apple langou Mac OS pela primeira vez em 1984, empacotado com o seu computador pe Apple Macintosh. Nos primeiros langamentos, 0 Mac OS (ou Sistema de Software, como ele foi chamado) careceu de muitos recursos basicos, como multitarefas e um sistema hierarquico. Com o passar tempo, o sistema operacional evoluiu e se tornou o Mac OS g com alguns recursos adicionados, mas o niicleo se manteve basicamente o mesmo.|<27e¢e 4efontes?] Em oposic&o a isto, 0 macOS é baseado no Darwin, que utiliza um conceito de nicleo hfbrido chamado XNU, criado combinando 0 nicleo do 4.3BSD e 0 Mach./581 val Amiga Amiga da Commodore foi langado em 1985, e estava dentre os primeiros (e certamente mais bem sucedidos) computadores domésticos a apresentar um sistema operativo com um micromticleo. O niicleo do Amiga, a [Link], era pequena mas capaz, oferecendo multitarefas répidas e preemptivas em hardware similar ao do Apple Macintosh, e um sistema avancado de ligagdes dindmicas que permitia uma expansio facil.[59] Microsoft Windows O Microsoft Windows foi langado em 1985 como uma extensio para o MS-DOS. Devido a sua dependéncia de outro sistema operativo, todas as versées até a 95 sao consideradas um ambiente operacional (e nao um sistema operativo propriamente dito). Tal linha de produtos continuou por 1980 e 1990, resultando nos langamentos das séries Windows 9x, atualizando as capacidades do sistema para enderecamento de 32 bits e multitarefas preemptivo, ao longo dos anos 1990, terminando com o langamento do Windows Me em 2000. O lancamento do Windows XP em outubro de 2001 uniu as duas linhas de produto, com a intengio de combinar a estabilidade do nucleo NT com os recursos ao consumidor das séries 9x.[60] 4 arquitetura do nécleo do Windows NT é considerada hibrida pois o proprio ndcleo contém tarefas como o gerenciador de janelas ¢ o gerenciador de comunicagio entre processos, mas varios subsistemas sao executados no modo de usudrio.{©1] © ponto de quebra exato entre espaco de usuario e espaco de micleo tém deslocado conforme a versio, mas a introdugéio do UMDF (User- Mode Driver Framework) no Windows Vista e do escalonamento de linha de execugaio no espaco de usuario no Windows 7,/£2) deslocou mais recursos do nticleo para processos no espago de usuario. Desenvolvimento de micronicleos Embora o Mach, desenvolvido na Universidade Carnegie Mellon de 1985 a 1994, 6 0 micronicleo de propésito geral mais conhecido, outros micromticleos foram desenvolvidos com objetivos mais especificos. Uma familia de micromicleos L4 (principalmente o micronticleo L3 e 0 L4) foi criada para demonstrar que microntcleos nao so necessariamente lentos.!48] Implementagdes mais novas como Fiasco e Pistachio so capazes de executar o Linux junto com outros processos L4 em espagos de enderegamento separados,(631[64] QNX 6 um Sistema operativo de tempo-real com um projeto de micronticleo minimalista que vem sendo desenvolvido desde 1982, sendo mais bem-sucedido do que 0 Mach em aleancar os objetivos do paradigma do micronticleo.{65! Ele é usado principalmente em sistemas embarcados e em situagdes em que o software nao pode falhar, como nos bracos robéticos do dnibus espacial e méquinas que controlam a moecio de vidro a tolerdncias extremamente finas, onde um mintseulo erro poderia custar centenas de milhares de reais. Ver também Comparagao entre nticleos Compilador Driver de dispositive Entrada/saida = Falha (tecnologia) = Filosofia Unix = Pedido de interrupgao = Meméria = Meméria de acesso aleatério = Meméria virtual = Paginagao, Segmentagao = Espago de troca = Espaco de usuario = Unidade de gerenciamento de meméria = Multitarefa = Processo = Linha de execugao = Escalonamento = Tempo compartilhado = Troca de contexto = Comunicagao entre processos Sistema operativo Referéncias Wulf 74 pp.337-345 Liedtke 95 . Tanenbaum 79, chapter 1 . Deitel 82, p.65-66 cap. 3.9 . Lorin 81 pp.161-186, Schroeder 77, Shaw 75 pp.245-267 . Brinch Hansen 70 pp.238-241 . O nivel de privilégio mais alto possui varios nomes pelas diferentes arquiteturas, tais como modo supervisor, modo nticleo, CPLO, DPLO, Anel 0, etc. Veja [Anel (seguranga)] para mais informacées. 8, «Desenvolvimento do SO Bona Fide - Tutorial do Bran para Desenvolvimento de Nuicleo, por Brandon Friesen» ([Link] 9. Para escalonamento de processos de baixo nivel veja Deitel 82, ch. 10, pp. 249-268. 10. Levy 1984, p.5 11. Needham, R.M., Wilkes, M. V. Dominio de protecdo e gerenciamento de processes ([Link] [Link]/egi/contenV/abstracV/17/2/117), Computer Journal, vol. 17, no. 2 de maio de 1974, pp 117-120. 12, Silberschatz 1990 13, «Definition of non-preemptive multitasking» (https:/[Link]/encyclopedia/term/non-pr eemplive-multitasking). PCMAG (em inglés). Consultado em 2 de agosto de 2020 14. Tanenbaum, Andrew S. (2008). Modern Operating Systems 3rd Edition ed. [S.|: Prentice Hall pp. 50-51. ISBN 0-13-600663-9. ". . . quase todas as chamadas de sistemas [sao] invocadas de programas C ao chamar uma biblioteca de procedimento . . . A biblioteca de procedimento executa uma instrugdo TRAP para alternar do modo usuario para o modo nucleo e comegar a execugao ” 15. Denning 1976 16. Swift 2005, p.29 quot recuperagao de erros.” NOMRwONe "isolagao, controle de recursos, verificago de decisao (checagem), ¢ 17. Cook, D.J. Medindo a protecao da meméria ([Link] cfm ?id=803220), aceito na terceira Conferéncia Internacional da Engenharia de Software, Atlanta, Georgia, Maio de 1978. 18. Swift 2005 p.26 19. Intel Corporation 2002 20. Houdek et al. 1981 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34, 35. 36. 37. 38. Hansen 73, Seco 7.3 p.233 "interagées entre diferentes niveis de protegao exigem a transmissao de mensagens por valor" Linden 76 Schroeder 72 Stephane Eranian & David Mosberger, Meméria Virtual no nicleo Linux 1A-64 ([Link] [Link]/articles/[Link]?p=29961), Prentice Hall PTR, 2002 Silberschatz & Galvin, Conceitos de Ssistema Operativo, 4th ed, pp445 & 446 Hoch, Charles; J. C. Browne (Universidade do Texas, Austin) (Julho de 1980). «An implementation of capabilities on the PDP-11/45» ([Link] &dl=acm&coll=&CFID=15151515&CFTOKEN=6184618) (pdf). ACM SIGOPS Operating Systems Review. 14 (3): 22-32. doi:10.1145/850697.850701 ([Link] 0697.850701). Consultado em 7 de janeiro de 2007 «Uma Abordagem a Seguranga Baseada em Linguagem, Schneider F., Morrissett G. (Universidade Comell) e Harper R. (Universidade Carnegie Mellon)» (http:/[Link]/~r whipapers/langsec/[Link]) (PDF) P.A. Loscocco, S. D, Smalley, P. A. Muckelbauer, R. C. Taylor, S. J. Tumer, and J. F. Farrell. A Inevitabilidade do Futuro: A Presungdo Falsa de Seguranca no Ambiente de Computacao Moderna (http:/;[Link]/[Link]) Arquivado em ([Link] 21155813/http:/[Link]/[Link]) 21 de junho de 2007, no Wayback Machine. Em procedimentos da 21 Conferéncia Nacional de Seguranga de Sistemas de Informagao, paginas 303-314, Out. de 1998, [1] ([Link] 1 pdf). J. Lepreau e outros. A Relevancia Persistente do Ssistema Operativo Local aos Aplicativos Globais ([Link] Procedimentos da 7* ACM SIGOPS Eurcshelf/book001/[Link] Seguranga da Informagao: Uma Colegdo Integrada de Dissertagdes], IEEE Comp. 1995. J. Anderson, Estudo de Planejamento de Seguranga de Computadores ([Link] lications/history/[Link]) Arquivado em ([Link] [Link]/publications/history/[Link]) 21 de julho de 2011, no Wayback Machine., Air Force Elect. Systems Div., ESD-TR-73-51, Outubro de 1972. * Jerry H. Saltzer, Mike D. Schroeder (Setembro de 1975). «A protecdo de informagao em sistemas de computador» ([Link] Proceedings of the IEEE. 63 (9): 1278-1308. doi:10.1109/PROC. 1975,9939 ([Link] 10.1109%2FPROC.1975.9939) Jonathan S. Shapiro; Jonathan M. Smith; David J. Farber. «EROS: um sistema de capacidades rapido» (hitp://[Link]?doid=319151.319163). Procedimentos da 70° simpésio ACM sobre principios de sistemas operativos Dijkstra, E. W. Processos Sequenciais Cooperadores. Math. Dep., Technological U., Eindhoven, Set. 1965 «SHARER, um sistema de compartilhamento de tempo para o CDC 6600» ([Link] [Link]?id=3637788dl=ACM&coll=GUIDE&CFID=11111111 &CFTOKEN=2222222). Consultado em 7 de janeiro de 2007 «Supervisores Dinamicos - seu projeto e construgdo» ([Link] 6758d/=ACM&coll=GUIDE&CFID=11111111&CF TOKEN=2222222). Consultado em 7 de janeiro de 2007 Baiardi 1988 . Levin 75 Denning 1980 39. Jiirgen Nehmer A Imoralidade dos sistemas operativos, ou: Pesquisa nos sistemas operativos ainda é Justificavel? ([Link] Notas em Ciéncia da Computacao; Vol. 563. Processo da Oficina Internacional sobre sistemas operativos dos anos 90 em diante. pp. 77 - 83 (1991) ISBN 3-540-54987-0 [2] (http:/[Link]/dblp/db/contid agstuhl/os1991 html) citagao: "Os uiltimos 25 anos mostraram que a pesquisa sobre arquiteturas de sistemas operativos teve pouco efeito nos principais sistemas operativos.” [3] (http:/[Link]/~brucem/soft_ins/dissert html) Arquivado em ([Link] [Link]! web/20071014180242/[Link] 14 de outubro de 2007, no Wayback Machine. 40. Levy 84, p.1 citagao: "Embora a complexidade dos aplicativos de computador aumenta anualmente, a arquitetura de hardware subjacente para aplicativos se manteve intocada por décadas." 41. Levy 84, p.1 citagao: "Arquiteturas convencionais suportam um Unico modo privilegiado de operagao. Esta estrutura leva a um desenvolvimento monolitico; qualquer médulo precisando de protegao deve ser parte do Unico niicleo do sistema operativo. Se, ao contrario, qualquer médulo pudesse executar em um dominio protegido, sistemas poderiam ser construidos como uma colegao de médulos independentes amplidveis por qualquer usudrio.” 42. Roch 2004 43. «Cédigos Abertos : Vozes da Revolugao do Cédigo Aberto» ([Link] ces/book/appa. html) 44. Enderecamento virtual é comumente mais obtido através da unidade de gerenciamento de meméria incorporado. 45. Registros do debate entre Torvalds e Tanenbaum podem ser encontrados em [Link] (http:/w [Link]/~abraham/Linus_vs_Tanenbaum.html) Arquivado em (https:/[Link]/web/2 0121003060514/[Link] 3 de outubro de 2012, no Wayback Machine., [Link]. com (https:[Link]/group/[Link] nix/browse_thread/thread/c25870d7a41696d2/f447530d082cd95d?tvc=2#1447530d082cd95d), [Link] ([Link] e Sitio do Andrew Tanenbaum ([Link] 46. Matthew Russell, «O que é Darwin (e como ele sustenta o Mac OS X)» ([Link] almac/2005/09/27/[Link]?page=2). O'Reilly Media citagao: "A natureza fortemente unida do nticleo monolitico permite torna-lo eficiente no uso do hardware subjacente [...] Micronicleos, por outro lado, rodam um niimero muito maior de processos no espaco de usuario. [... Infelizmente, estes beneficios trazem 0 custo de micronticleos terem a necessidade de passar informagGes dentro e fora do espago do nucleo através de um processos chamado troca de contexto. Trocas de contexto trazem uma degradacao de performance consideravel.” Estas afirmagées nao fazem parte de um artigo revisto por partes 47. Harlig 97 48. «A familia de nicleos L4 - Visdo geral» ([Link] [Link]/L4/[Link]|) 49. «Arquitetura de nanonticleo do KeyKOS» ([Link] archive orgiweb/20110621235229/http:// [Link]/~KeyKOS/NanoKernel/[Link]). Consultado em 9 de janeiro de 2010. Arquivado do original ([Link] em 21 de junho de 2011 50. «Ssistema Operativo de Exonticleo do MIT» ([Link] [Link]/20110323025628/htt [Link]/[Link]). Consultado em 9 de janeiro de 2010. Arquivado do original (htt [Link]/[Link]) em 23 de margo de 2011 51. «Nuclear - Lecture Note for 221» (https:/[Link]/lecture-note-for-221/contentin [Link]). [Link]. Consultado em 10 de abril de 2024 52. Hansen 2001 (os), pp.17-18 53. «Versio BSTJ do [Link] Jornal Unix» ([Link] 54, «lntrodugao e Viséo Geral do Sistema Multics, por F. J. Corbaté e V. A. Vissotsky.» ([Link] [Link]/fjcct html) 55. «O Sistema UNIX — A Unica Especificagdo do Unix» ([Link] unix_specification. html) 56. «Linux 2.6: Ele Vale Mais!, por David A. Wheeler, 12 de outubro de 2004» (http:/[Link] [Link]/essays/[Link]) 57. Esta comunidade se reune em sua maioria no Desenvolvimento de SO Bona Fide (http:/www. [Link]), © Férum de Mensagens Mega-Tokyo ([Link] e outros sitios de entusiastas de sistemas operativos. 58. «XNU: O nicleo» ([Link] ancient/whatismacosx/arch_xnu.html). Consultado em 9 de janeiro de 2010. Arquivado do original ([Link] em 22 de agosto de 2011 59. Sheldon Leemon. «O que torna isso tao timo! (Amiga Commodore)» (http:/[Link] [Link]/creative/vi1n9/34_What_makes_it_so_great.php). Creative Computing. Consultado em 5 de fevereiro de 2006 60. «LinuxWorld IDC: Consolidagao de Windows acontece» ([Link] 6142549/[Link] php/id%3B940707233%3B1p%3B2%3Bipid%3B 1). Consultado em 9 de janeiro de 2010. Arquivado do original ([Link] [Link]/in dex. php/id;940707233;fp;2;fpid;1) em 16 de dezembro de 2008 61. «Histérico do Windows: Histérico de Produtos de Mesa de Trabalho» (http:/[Link] miwindows/[Link]) 62. Holwerda, Thom (7 de fevereiro de 2009). «Windows 7 ganha escalonamento de espago de usuario» ([Link] Gets User Mode Scheduling). OSNews. Consultado em 28 de fevereiro de 2009 63. «O micronucleo Fiasco - Visao geral» ([Link] 64. «L4Ka - A familia L4 de microniicleos e amigos» (http:/ww.![Link]) 65. «Visdio Geral do SSistema operativo de tempo-real» (http:/[Link]/products/rtos/microke [Link]) Referéncias Roch, Benjamin (2004), «Nuicleo Monalitico x Micronticleo» ([Link] [Link]/20061 101012856/[Link] pdf) (PDF). Consultado em 12 de outubro de 2008. Arquivado do original ([Link] [Link]/courses/akti12/journal/04ss/article_04ss_Roch.pdf) (PDF) em 1 de novembro de 2006 = Silberschatz, Abraham; James L, Peterson, Peter B, Galvin (1991), Operating system concepts ([Link] 618). Boston, Massachusetts: Addison-Wesley. 696 paginas. ISBN 0-201-51379-X = Deitel, Harvey M. (1984) [1982]. An introduction to operating systems ([Link] [Link]?id=79046&dl=GUIDE&coll=GUIDE) revisited first edition ed. [S.I,]: Addison-Wesley. 673 paginas. ISBN 0-201-14502-2 = Denning, Peter J. (dezembro de 1976). «Fault tolerant operating systems» (http:/[Link] [Link]?id=3566808dl=ACM&coll=&CFID=15151515&CFTOKEN=6184618). ACM Computing Surveys. 8 (4): 359-389. |SSN 0360-0300 (https:/;[Link]. org/issr/0360-030 0). doi:10.1145/356678, 356680 ([Link] = Denning, Peter J. (abril de 1980). «Why not innovations in computer architecture?» ([Link] [Link]?id=8595068coll=8di=ACM&CFID=15151515&CF TOKEN=6184618). ACM SIGARCH Computer Architecture News. 8 (2): 4-7. ISSN 0163-5964 (https:/;[Link] at org/issn/0163-5964). doi:10.1145/859504.859506 ([Link] doi. org/10.1145%2F859504.859 506) = Hansen, Per Brinch (abril de 1970). «The nucleus of a Multiprogramming System» ([Link] [Link]/[Link]?id=362278&dI=ACM&coll=GUIDE&CFID=11111111&CFTOKEN=222222 2). Communications of the ACM. 13 (4): 238-241. ISSN 0001-0782 (https:/[Link] sn/0001-0782), doi:10.1145/362258.362278 ([Link] 362258, 362278) = Hansen, Per Brinch. Operating System Principles ([Link] 5). Englewood Cliffs: Prentice Hall. 496 paginas. ISBN 0-13-637843-9 Hansen, Per Brinch (2001). «The evolution of operating systems» ([Link] ers/[Link] (pdf). Consultado em 24 de outubro de 2006incluido em livro: Per Brinch Hansen (ed.). «1» ([Link] net/papers/[Link]) (PDF). Classic operating systems: from batch processing to distributed systems ([Link] cfm ?id=36 05968&dI=ACM&coll=&CFID=15151515&CF TOKEN=6184618). New York,: Springer-Verlag. pp. 1-36. ISBN 0-387-95113-X Hermann Hartig, Michael Hohmuth, Jochen Liedtke, Sebastian Schénberg, Jean Wolter A performance de sistemas baseados no nticleo ys ([Link] hmer:1991:OSA) [7] ([Link] ACM SIGOPS Operating Systems Review, v.31 n.5, p. 66-77, Dec. 1997 Houdek, M. E., Soltis, F. G., and Hoffman, R. L. 1981. IBM System/38 support for capabilty- based addressing ([Link] In Proceedings of the 8th ACM International Symposium on Computer Architecture. ACM/IEEE, pp. 341-348. Intel Corporation (2002) The IA-32 Architecture Software Developer's Manual, Volume 1: Basic Architecture ([Link] intel. com/design/pentium4/manuals/[Link]) Levin, R.; E. Cohen, W. Corwin, F. Pollack, William Wulf (1975). «Policy/mechanism separation in Hydra» ([Link] &dl=ACM&coll=&CFID=15151515&CFT OKEN=6184618). ACM Symposium on Operating Systems Principles / Proceedings of the fifth ACM symposium on Operating systems principles: 132-140 Levy, Henry M. (1984). Capability-based computer systems (http:/[Link]/hom es/levy/capabook/[Link]). Maynard, Mass: Digital Press. ISBN 0-932376-22-3 Liedtke, Jochen. Sobre a construgéo do nticleo py ([Link] 800594 /http:[Link]/research/publications/papers/index. php 7lid=en&docid=642), Proc. 15th ACM Symposium on Operating System Principles (SOSP), December 1995 Linden, Theodore A. (dezembro de 1976). «Operating System Structures to Support Security and Reliable Software» ([Link] org/[Link]?id=3566828coll=&dl=ACM&CFID=15 151515&CFTOKEN=6184618). ACM Computing Surveys. 8 (4): 409-445, ISSN 0360-0300 (htt ps:/[Link]. org/issn/0360-0300). doi: 10.1145/356678.356682 ([Link] 5%2F356678.356682) [8] ([Link] Lorin, Harold (1981). Operating systems ([Link] \DE&di=GUIDE&CF ID=26517328CF TOKEN=19681373), Boston, Massachusetts: Addison- Wesley. pp. 161-186. ISBN 0-201-14464-6 Schroeder, Michael D.; Jerome H. Saltzer (marco de 1972). «A hardware architecture for implementing protection rings» ([Link] FID=15151515&CFTOKEN=6184618). Communications of the ACM. 15 (3): 157170. ISSN 0001-0782 (https:/[Link]/issn/0001-0782). doi:10.1145/361268,361275 (http s:/[Link]/10.1145%2F361268.361275) Shaw, Alan C. (1974). The logical design of Operating systems ([Link] m?id=540329). [S.1,]: Prentice-Hall. 304 paginas. ISBN 0-13-540112-7 Tanenbaum, Andrew S. (1979). Structured Computer Organization. Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 0-13-148521-0 Wulf, W.; E. Cohen, W. Corwin, A. Jones, R. Levin, C. Pierson, F. Pollack (junho de 1974). «HYDRA: 0 nticleo do um sistema operativo multiprocessado» ([Link] m?id=364017 &coll=portal&dI=ACM). Communications of the ACM. 17 (6): 337-345. ISSN 0001-0782 (https:/[Link]/0001-0782). doi:10,1145/355616.364017 (http s://[Link]/10.1145%2F 3556 16.364017) [9] (https:/[Link]/web/20070926161655/ht tp:/[Link]/papers/[Link]) Baiardi, F.; A. Tomasi, M. Vanneschi ([Link] (1988). Architettura dei Sistemi di Elaborazione, volume 1 (hitp://[Link] ?isbn=882042746X&id=435 7&PHPSESSID=9da1895b 18ed1cda115cf1c7ace9bdf0) (em italiano). [S.1]: Franco Angeli. ISBN 88-204-2746-X = Swift, Michael M; Brian N. Bershad , Henry M. Levy, Improving the reliability of commodity operating systems (http:/[Link]), [10] ([Link] 1145/1047915.1047919) ACM Transactions on Computer Systems (TOCS), v.23 n.1, p. 77-110, February 2005 Leituras importantes ‘Andrew Tanenbaum, Operating Systems - Design and Implementation (Third edition); Andrew Tanenbaum, Modern Operating Systems (Second edition); Daniel P. Bovet, Marco Cesati, The Linux Kernel; David A. Peterson, Nitin Indurkhya, Patterson, Computer Organization and Design, Morgan Koffman (ISBN 1-55860-428-6); B.S. Chalk, Computer Organisation and Architecture, Macmillan P.(ISBN 0-333-64551-0). Ligagdes externas = [Link], sitio oficial do Linux. (http:/[Link]) = Nucleos de Sistemas Operatives no SourceForge ([Link] 56/[Link] = Nucleos de Sistemas Operativos no Freshmeat ([Link] http:/[Link]/browse/144/) = MIT Sistemaoperacional de Exonuicleo (https:/[Link]/web/20080720154135/[Link] [Link],edu/exo. htm!) = Imagem de nticleo - Wiki Debian ([Link] [Link]/web/200703091505 1 1/[Link] [Link]/kernel_image) = Aarquitetura do nanonticleo do KeyKOS ([Link] [Link],upenn,edu/~KeyKOS/NanoKernel/[Link]), um artigo de 1992 por Norman Hardy e outros. = Uma visao geral do Ssistema Operativo NetWare (http:/[Link]/publications/library/pr ‘oceedings/sf94/full_papers/minshall.a), um artigo de 1994 por Drew Major, Greg Minshall, e Kyle Powell (arquitetos pfincipais por tras do SO NetWare). = Kernelnewbies ([Link] uma comunidade para aprender a hackear o Linux. = Comparagao detalhada entre os nticleos dos sistemas operativos mais populares ([Link] x,pbwiki,com/Kernel%20Comparison%20Linux%20vs%20Windows) Obtida de “[Link] wikipedia [Link]?ttle ldcleo_(sistema_operacional)&oldid=70269815"

Você também pode gostar