0 notas 0% acharam este documento útil (0 voto) 18 visualizações 21 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.
Título e descrição aprimorados por IA
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
Ir para itens anteriores Ir para os próximos itens
Salvar kernel para ler mais tarde
+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 (tipicamenteabstraido 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 umpedido 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.!"21Um 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
requisigdesDecisdes 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 senhaembaralhada 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 cadaEm 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 umcarregador 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
valAmiga
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 198039. 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-9Hansen, 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"