Saltar para o conteúdo

Núcleo (sistema operacional)

Origem: Wikip�dia, a enciclop�dia livre.
(Redirecionado de Modo n�cleo)
Um n�cleo de sistema conecta o software aplicativo ao hardware de um computador

Na inform�tica, o kernel (em portugu�s: "n�cleo") � o componente central do sistema operativo da maioria dos dispositivos computacionais (computador e smartphone por exemplo); ele serve de ponte entre programas-aplicativos e o processamento real de dados feito a n�vel de hardware, cuja responsabilidades incluem gerenciar os recursos do sistema (a comunica��o entre componentes de hardware e software)[1] usando o m�todo da abstra��o (encapsulamento) facilitando o uso do dispositivo.

Geralmente como um componente b�sico do sistema operativo, um n�cleo pode oferecer a camada de abstra��o de n�vel mais baixo para os recursos (especialmente processadores e dispositivos de entrada/sa�da) que softwares aplicativos devem controlar para realizar sua fun��o. Ele tipicamente torna estas facilidades dispon�veis para os processos de aplicativos atrav�s de mecanismos de comunica��o entre processos e chamadas de sistema. Para evitar um sistema com n�cleo, deve-se projetar o sistema que n�o trabalhe com abstra��o, por�m isto aumenta a complexidade do projeto.

Tarefas de sistemas operativos s�o feitas de maneiras diferentes por n�cleos diferentes, dependendo do seu desenho e abordagem. Enquanto n�cleos monol�ticos tentam alcan�ar seus objetivos executando todos os c�digos de sistema no mesmo espa�o de endere�amento para aumentar a performance do sistema, micron�cleos executam a maioria dos servi�os do sistema no espa�o de usu�rio como servidores, buscando melhorar a manuten��o e a modularidade do sistema operativo.

Vis�o geral

[editar | editar c�digo-fonte]

Na defini��o de n�cleo, o professor alem�o 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 n�cleo. A exist�ncia de um n�cleo � uma consequ�ncia natural de projetar um sistema de computador como s�ries de camadas de abstra��o,[3] cada uma das fun��es dependendo das fun��es das camadas abaixo de si. O n�cleo deste ponto de vista, � simplesmente o nome dado ao n�vel mais inferior de abstra��o que � implementado em software. Caso queira fazer/implementar um sistema operacional sem n�cleo, ter-se-ia que projetar todo o software no sistema de modo a n�o utilizar abstra��o alguma; isto iria aumentar a complexidade e o projeto a tal ponto que apenas os sistemas mais simples seriam capazes de ser implementados.

Enquanto isto hoje � chamado n�cleo, originalmente a mesma parte do sistema tamb�m foi chamado o nucleus ou caro�o[1][4][5][6] (Nota, no entanto, este termo caro�o 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 caro�os magn�ticos), e foi concebido originalmente como contendo apenas os recursos de suporte essenciais do sistema operativo.

Na grande maioria dos casos, o processo de inicia��o come�a executando o n�cleo no modo supervisor.[7] O n�cleo depois inicializa a si e depois o primeiro processo. Depois disto, tipicamente, o n�cleo n�o executa diretamente, apenas em resposta para eventos externos (ex., atrav�s de chamadas de sistema usados pelos aplicativos para requisitar servi�os do n�cleo, ou via interrup��es usadas pelo hardware para notificar o n�cleo sobre eventos). Al�m disso, tipicamente o n�cleo fornece um la�o que � executado sempre que nenhum processo esta dispon�vel para execu��o; geralmente chamado de processo desocupado.

O desenvolvimento do n�cleo � considerado uma das mais complexas e dif�ceis tarefas em programa��o.[8] Sua posi��o central em um sistema operativo implica a necessidade de bom desempenho, que define o n�cleo como pe�a de software cr�tica e torna seu desenvolvimento correto e implementa��o correta dif�cil. Devido a diversas raz�es, o n�cleo pode at� n�o ser capaz de utilizar mecanismos de abstra��o, que ele fornece a outro software. Tais raz�es incluem preocupa��es com o gerenciamento de mem�ria e a falta de reentr�ncia, logo o seu desenvolvimento torna-se ainda mais dif�cil para engenheiros de software. A otimiza��o do uso de mem�ria faz-se necess�ria, pois o n�cleo n�o pode utilizar recursos de pagina��o por demanda, j� que ele pr�prio fornece esta facilidade, tendo, ent�o, que permanecer na mem�ria para tal.

Geralmente um n�cleo vai fornecer recursos para escalonamento de processos de baixo n�vel,[9] comunica��o entre processos, sincroniza��o de processos, troca de contexto, manipula��o de blocos de controle de processo, gerenciamento de interrup��es, cria��o e destrui��o de processos, e suspens�o e continua��o de processos (veja estados de processos).[4][6]

Finalidades b�sicas

[editar | editar c�digo-fonte]

O principal prop�sito do n�cleo � gerenciar os recursos do computador e permitir que outros programas rodem e usem destes recursos.[1] Tipicamente estes recursos consistem de:

  • Unidade de processamento central (CPU, o processador): principal parte de um sistema de computa��o, respons�vel por executar programas nele. O n�cleo tem a responsabilidade de decidir, em qualquer momento, qual dos programas em execu��o deve ser alocado para o processador ou processadores (cada um dos quais geralmente pode executar um programa por vez)
  • Mem�ria: usada para armazenar instru��es do programa e dados. Tipicamente, ambos precisam estar presentes na mem�ria de modo a tornar a execu��o do programa poss�vel. Frequentemente m�ltiplos programas buscar�o acesso � mem�ria ao mesmo tempo, na maioria das vezes exigindo mais mem�ria do que o computador pode disponibilizar. O n�cleo � respons�vel pela decis�o de que mem�ria cada processo pode utilizar, e determinar o que fazer quando menos do suficiente est� dispon�vel.
  • Dispositivos de entrada/sa�da, tais como teclado, mouse, entradas de disquete, impressoras, telas etc. O n�cleo aloca pedidos de aplicativos para realizar entrada/sa�da para um dispositivo apropriado (ou subse��o de um dispositivo, no caso de arquivos em um disco ou janelas em uma tela) e fornece m�todos convenientes para o uso do dispositivo (tipicamente abstra�do ao ponto onde o aplicativo n�o precisa mais conhecer os detalhes da implementa��o do dispositivo).

Aspectos importantes no gerenciamento de recursos s�o a defini��o de um dom�nio de execu��o (espa�o de endere�amento) e o mecanismo de prote��o utilizado para mediar o acesso a recursos dentro de um dom�nio.[1]

N�cleos geralmente n�o oferecem m�todos para sincroniza��o e comunica��o entre processos (IPC (em ingl�s)).

Um n�cleo 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��o.

Gerenciamento de processos

[editar | editar c�digo-fonte]

A principal tarefa de um n�cleo � permitir a execu��o de aplicativos e ajud�-los com recursos como abstra��es de hardware. Um processo define-se por um fluxo de atividades que se utiliza de recursos. Nesse caso, a execu��o de uma aplica��o gera um processo. Processo este que delimita as por��es da mem�ria o aplicativo pode acessar.[10] O gerenciamento de processos do n�cleo deve levar em conta o equipamento de hardware embarcado para prote��o de mem�ria.[11]

Para executar um aplicativo, um n�cleo geralmente cria um espa�o de endere�amento, carrega o arquivo contendo as instru��es do programa na mem�ria (talvez via pagina��o por demanda), cria uma pilha para o programa e ramos para uma dada localiza��o dentro do programa, iniciando, portanto, a sua execu��o.[12]

N�cleos multitarefa s�o capazes de dar ao usu�rio a ilus�o de que um n�mero de processos que est� sendo executado simultaneamente no sistema � maior do que o n�mero de processos que aquele sistema � fisicamente capaz de executar. Usualmente, o n�mero de processos que um sistema pode executar simultaneamente � igual ao n�mero de CPUs que ele possui instaladas (no entanto, isto pode n�o ser o caso de processadores que suportam m�ltiplas linhas de execu��o simult�neas).

Em um sistema multitarefas preemptivo, o n�cleo d� a todos programas uma parcela do tempo e alterna entre os processos t�o rapidamente que d� ao usu�rio a impress�o de que eles est�o sendo executados simultaneamente. O n�cleo utiliza algoritmos de escalonamento para determinar qual processo ser� executado a seguir e quanto tempo lhe ser� dado. O algoritmo escolhido pode permitir que alguns processos tenham uma prioridade mais alta que muitos outros. O n�cleo geralmente tamb�m prov� a esses processos uma maneira de comunicarem-se; isto � chamado comunica��o entre processos (IPC (em ingl�s)) e as principais implementa��es s�o mem�ria compartilhada, troca de mensagens e chamadas de procedimento remoto (veja computa��o concorrente).

Outros sistemas (particularmente em computadores menos potentes) podem fornecer multitarefa de coopera��o, em que para cada processo � permitida execu��o ininterrupta at� que ele fa�a uma requisi��o especial ao n�cleo para que ele alterne para outro processo. Tais requisi��es s�o conhecidos como "indulg�ncias" (yield (em ingl�s)), e tipicamente ocorrem ou em resposta a um pedido para comunica��o entre processos, ou para esperar at� o 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 aumentava[13].

O sistema operativo pode tamb�m suportar o multiprocessamento (multiprocessamento sim�trico (SMP (em ingl�s)), ou, acesso n�o-uniforme a mem�ria); neste caso, diferentes programas e linhas de execu��o podem rodar em diferentes processadores. Um n�cleo 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 sincroniza��o (como trava-giros) para assegurar que dois processadores n�o tentar�o modificar os mesmos dados ao mesmo tempo.

Gerenciamento de mem�ria

[editar | editar c�digo-fonte]

O n�cleo possui acesso completo � mem�ria do sistema e deve permitir que processos acessem a mem�ria com seguran�a conforme suas necessidades. Frequentemente, o primeiro passo para isso � o endere�amento virtual, geralmente alcan�ado atrav�s da pagina��o e/ou segmenta��o. O endere�amento virtual permite ao n�cleo fazer com que um endere�o f�sico pare�a ser outro, o endere�o virtual. Espa�os de endere�o virtual podem ser diferentes para diferentes processos; a mem�ria acessada por um processo atrav�s de um endere�o virtual particular pode ser diferente da acessada por um outro processo atrav�s do mesmo endere�o virtual. Isto possibilita que todos os programas funcionem como se estivessem sendo executados sozinhos, al�m do n�cleo, e por isso evita que aplicativos travem uns aos outros.[12]

Em v�rios sistemas, o endere�o virtual de um programa pode se referir a dados que n�o est�o na mem�ria atualmente. A cama de indire��o oferecida pelo endere�amento virtual permite que o sistema utilize meios de armazenagem de dados, como um disco r�gido, para armazenar o que de outro modo teria que permanecer na mem�ria RAM. Como resultado. sistemas operativos podem permitir que programas usem mais mem�ria do que est� fisicamente dispon�vel. Quando um programa precisa de dados que n�o est�o na RAM, a CPU avisa o n�cleo que isto ocorre, e este responde escrevendo o conte�do de um bloco de mem�ria inativo para o disco (se necess�rio) e substituindo-o na mem�ria com os dados requisitados pelo programa. O programa pode ent�o continuar sua execu��o do ponto em que foi suspenso. Este esquema � geralmente conhecido como pagina��o por demanda.

Endere�amento virtual tamb�m permite a cria��o de parti��es virtuais de mem�ria em duas �reas separadas, uma sendo reservada para o n�cleo (espa�o de n�cleo) e o outra para os aplicativos (espa�o de usu�rio). Os aplicativos n�o t�m permiss�o do processador para acessar a mem�ria do n�cleo, prevenindo, portanto, que um aplicativo possa danificar o n�cleo em execu��o. Esta parti��o fundamental de espa�o de mem�ria contribuiu muito para os projetos de n�cleos realmente de prop�sito geral e � quase universal em tais sistemas, embora alguns n�cleos de pesquisa (como o Singularity) usem outros m�todos.

Gerenciamento de dispositivos

[editar | editar c�digo-fonte]

Para realizar fun��es �teis, processos precisam acessar perif�ricos conectados ao computador, que s�o controlados pelo n�cleo atrav�s do driver do dispositivo. Por exemplo, para mostrar ao usu�rio algo utilizando a tela, um aplicativo teria que fazer uma requisi��o ao n�cleo que encaminharia a requisi��o para o seu driver de tela, que � o respons�vel por gerar a imagem atrav�s dos pixels.[12]

Um n�cleo deve manter uma lista de dispositivos dispon�veis. Esta lista pode ser conhecida de antem�o (como em um sistema embarcado em que o n�cleo ser� reescrito se o hardware dispon�vel mudar), configurada pelo usu�rio (t�pico em computadores pessoais antigos e em sistemas projetados para uso pessoal) ou detectada pelo sistema durante a execu��o (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 gest�o de dispositivos � uma tarefa muito especifica do SO, os drivers s�o manipulados de forma diferente pelo tipo de arquitetura do n�cleo. Em todos os casos, por�m, o n�cleo deve fornecer a entrada/sa�da para permitir que os drivers acessem fisicamente seus dispositivos atrav�s de alguma porta ou localiza��o da mem�ria. Decis�es muito importantes precisam ser feitas ao projetar o sistema de gest�o de dispositivos, j� que alguns projetos de acesso podem envolver trocas de contexto, tornando a opera��o custosa para o processador e causando um gasto excessivo de recursos.[carece de fontes?]

Chamadas do sistema

[editar | editar c�digo-fonte]

Para realmente realizar algo �til, um processo deve acessar os servi�os oferecidos pelo n�cleo. Isto � implementado por cada n�cleo, mas a maioria oferece uma Biblioteca padr�o do C ou uma Interface de programa��o de aplicativos, que envolve as fun��es relativas ao n�cleo.[14]

O m�todo de invocar as fun��es do n�cleo varia entre diferentes n�cleos. Se o isolamento de mem�ria est� sendo usado, � imposs�vel para um processo de usu�rio chamar o n�cleo diretamente, visto que isso seria uma viola��o das regras de controle de acesso do processador. Algumas possibilidades s�o:

  • Usar uma interrup��o de software simulada. Este m�todo est� dispon�vel na maioria dos hardwares, e �, portanto, muito comum.
  • Usando um port�o de chamada. Um port�o de chamada � um endere�o especial armazenado pelo n�cleo em uma lista na mem�ria do n�cleo em uma localiza��o conhecida pelo processador. Quando o processador detecta uma chamada para este endere�o, ele ao inv�s disso redireciona para a localiza��o alvo sem causar nenhuma viola��o de acesso. Exige suporte no hardware, mas este tipo de hardware � muito comum.
  • Usando uma instru��o de chamada de sistema especial. Esta t�cnica exige suporte especial no hardware, que em algumas arquiteturas habituais n�o possuem (notavelmente, x86). Instru��es de chamadas de sistema foram adicionadas a modelos recentes de processadores x86, embora, poucos (mas n�o todos) sistemas operativos fazem uso destes quando dispon�veis.
  • Usando uma fila baseada na mem�ria. Um aplicativo que faz um grande n�mero de requisi��es, mas n�o precisa esperar o resultado de cada uma pode adicionar detalhes das requisi��es em uma �rea da mem�ria que o n�cleo sonda periodicamente para encontrar requisi��es.

Decis�es de desenho

[editar | editar c�digo-fonte]

Problemas com o suporte do n�cleo para prote��o

[editar | editar c�digo-fonte]

Uma considera��o importante no desenho do n�cleo � o suporte que ele oferece para prote��o contra faltas (toler�ncia a falhas) e comportamentos mal-intencionados (seguran�a). Estes dois aspectos geralmente n�o s�o claramente distinguidos, e a separa��o no desenho do n�cleo leva a rejei��o de uma estrutura hier�rquica de prote��o.[1]

Os mecanismos ou pol�ticas oferecidas pelo n�cleo podem ser classificados de acordo com v�rios crit�rios, como: est�tico (for�ado durante o tempo de compila��o) ou din�mico (for�ado durante o tempo de execu��o); preemptivo ou p�s-detec��o; de acordo com os princ�pios de prote��o a que eles correspondem (ex. Denning[15][16]); quer eles sejam suportados pelo hardware ou baseados em linguagem; quer eles sejam mais um mecanismo aberto ou m� pol�tica compulsiva; e muito mais.

Toler�ncia a falhas

[editar | editar c�digo-fonte]

Uma medida �til para o n�vel de toler�ncia a falhas de um sistema � qu�o estrito ele � com rela��o ao princ�pio do menor privil�gio.[17] Em casos onde m�ltiplos programas est�o rodando em um �nico computador, � importante prevenir falhas em um dos programas de afetar negativamente outro. Estendendo-se ao desenho com m�s inten��es mais do que a falha em si, isto tamb�m implica a seguran�a, quando � necess�rio impedir processos de acessar informa��es sem que lhes seja dada a devida permiss�o.

As duas principais implementa��es via hardware[18] para prote��o (de informa��es sens�veis) s�o dom�nios hier�rquicos de prote��o (tamb�m chamadas arquiteturas anel, arquiteturas de segmento ou modo supervisor),[19] e endere�amento baseado em capacidades.[20]

an�is de privil�gio, como na x86, s�o uma abordagem habitual de dom�nios hier�rquicos de prote��o usados em muitos sistemas comerciais para obter algum n�vel de toler�ncia a falhas.

Dom�nios hier�rquicos de prote��o s�o muito menos flex�veis, como no caso de qualquer n�cleo com uma estrutura hier�rquica presumida como um crit�rio de desenvolvimento global.[1] No caso de prote��o n�o � poss�vel designar diferentes privil�gios a processos que n�o est�o no mesmo n�vel de privil�gio, e por isso n�o � poss�vel corresponder aos quatro princ�pios de Denning para a toler�ncia a falhas,[15][16] particularmente o princ�pio do menor privil�gio. Dom�nios hier�rquicos de prote��o tamb�m carregam uma enorme desvantagem na performance, j� que a intera��o entre diferentes n�veis de prote��o, quando um processo tem que manipular uma estrutura de dados em ambos 'modo usu�rio' e 'modo supervisor', sempre exige c�pia de mensagens (transmiss�o por valor).[21] Um n�cleo baseado em capacidades, no entanto, � mais flex�vel em designar privil�gios, pode corresponder aos princ�pios de Denning para a toler�ncia a falhas,[22] e geralmente n�o sofrem de problemas de performance da c�pia por valor.

Ambas implementa��es tipicamente exigem algum suporte de hardware ou firmware para serem oper�veis e eficientes. O suporte de hardwarepara dom�nios hier�rquicos de prote��o[23] geralmente � de "modos de CPU." Um modo simples e eficiente de fornecer suporte a hardware � delegar � unidade de gerenciamento de mem�ria a responsabilidade por checar as permiss�es de acesso para todos acessos a mem�ria, um mecanismo chamado endere�amento baseado em capacidades.[22] Falta na maioria das arquiteturas comerciais, o suporte a MMU para capacidades.

Uma abordagem alternativa � simular capacidades usando dom�nios hier�rquicos comumente suportados; nesta abordagem, cada objeto protegido deve residir num espa�o de endere�amento ao qual o aplicativo n�o possui acesso; o n�cleo tamb�m mant�m uma lista de capacidades em tal mem�ria. Quando um aplicativo precisa acessar um objeto protegido por uma capacidade, ele realiza uma chamada de sistema e o n�cleo realiza o acesso a ele. O custo de performance de trocar de espa�o de endere�amento limita a praticabilidade desta abordagem em sistemas com intera��es complexas entre objetos, mas � utilizado nos sistemas operativos atuais para objetos que n�o s�o acessados frequentemente ou que n�o devem ser feitos rapidamente.[24][25] Implementa��es onde os mecanismos de prote��o n�o suportados pelo firmware, mas s�o, ao inv�s disso, simulados em n�veos mais altos (ex. simulando capacidades ao manipular tabelas de p�ginas em hardware que n�o possui suporte direto), s�o poss�veis, mas h� implica��es de performance.[26] No entanto, falta de suporte no hardware pode n�o ser problema, para sistemas que escolhem usar uma prote��o baseada em linguagem.[27]

Uma decis�o importante no projeto do n�cleo � a escolha dos n�veis de abstra��o em que os mecanismos e pol�ticas de seguran�a devem ser implementados. Os mecanismos de seguran�a do n�cleo t�m um papel cr�tico no suporte a seguran�a nos n�veis superiores.[22][28][29][30][31]

Uma abordagem � utilizar suporte no n�cleo e firmware para toler�ncia a falhas (ver acima), e montar as pol�ticas de seguran�a para comportamento malicioso em cima disso (adicionando recursos como mecanismos de criptografia quando necess�rio), delegar mais responsabilidade para o compilador. Implementa��es que delegam a aplica��o de pol�ticas de seguran�a para o compilador e/ou n�vel do aplicativo s�o geralmente chamados seguran�a baseada em linguagem.

A falta de muitos mecanismos cr�ticos de seguran�a nos principais sistemas operativos impede a implementa��o adequada de pol�ticas de seguran�a no n�vel de abstra��o do aplicativo.[28] Na verdade, um engano muito comum na seguran�a de computadores � que qualquer pol�tica de seguran�a pode ser implementada no aplicativo, independentemente do suporte no n�cleo.[28]

Prote��o baseada em hardware ou linguagem

[editar | editar c�digo-fonte]

Hoje, t�picos sistemas de computa��o usam regras aplicadas pelo hardware sobre quais programas t�m permiss�o para acessar quais dados. O processador monitora a execu��o e desliga um programa que viole uma regra (ex., um processo de usu�rio que tenta ler ou escrever na mem�ria do n�cleo, e assim por diante). Em sistemas que n�o possuem suporte para capacidades, processos s�o isolados um do outro, utilizando-se espa�os de endere�amento separados.[32] Chamadas de um processo de usu�rio no n�cleo s�o regidas pela exig�ncia de que eles usem um dos m�todos de chamada do sistema descritos acima.

Uma abordagem alternativa � usar prote��o baseada em linguagem. Em um sistema de prote��o baseado em linguagem, o n�cleo vai permitir a execu��o apenas de c�digo produzido por um compilador em que ele confie. A linguagem pode ent�o, ser projetada de modo tal que ser� imposs�vel para o programador instruir algo que violaria os requisitos de seguran�a.[27]

Desvantagens incluem:

  • Demora maior para a inicializa��o efetiva do aplicativo. Aplica��es devem ser verificadas sempre que s�o iniciadas para garantir que foram compiladas utilizando um compilador "correto" ou podem necessitar de recompila��o de c�digo fonte ou bytecode.
  • Sistemas de tipo inflex�vel. Em sistemas tradicionais, aplicativos realizam frequentemente opera��es que n�o s�o de tipagem forte. Tais opera��es n�o podem ser permitidas em um sistema de prote��o baseado em linguagem, o que significa que aplicativos podem precisar ser reescritos e podem, em alguns casos, perder performance.

Vantagens desta abordagem incluem:

  • Separa��o de espa�os de endere�amento desnecess�ria. A troca de espa�os de endere�amento � uma opera��o lenta que causa grande degrada��o na performance, e muito trabalho de otimiza��o � feito atualmente para prevenir trocar desnecess�rias nos sistemas operativos. Trocar � complemente desnecess�rio em um sistema de prote��o baseada em linguagem, j� que todo c�digo opera no mesmo espa�o de endere�amento.
  • Flexibilidade. Qualquer esquema de prote��o que possa ser desenvolvida para ser expresso atrav�s de linguagem de programa��o pode ser implementada atrav�s deste m�todo. Mudan�as no esquema de prote��o (ex. de um sistema hier�rquico para um baseado em capacidades) n�o exigem novo hardware.

Exemplos de sistemas com prote��o baseada em linguagem incluem o JX e Singularity.

Coopera��o de processos

[editar | editar c�digo-fonte]

Edsger Dijkstra provou que partindo de um ponto de vista l�gico, opera��es at�micas de travamento e destravamento operando em sem�foros bin�rios s�o suficientemente primitivos para expressar a qualquer funcionalidade de coopera��o entre processos.[33] No entanto esta abordagem � geralmente tomada como deficiente em termos de seguran�a e efici�ncia, enquanto que uma abordagem via troca de mensagens � mais flex�vel.[6]

Gerenciamento de dispositivos de entrada/sa�da

[editar | editar c�digo-fonte]

A ideia de um n�cleo onde dispositivos de entrada/sa�da s�o gerenciados uniformemente com outros processos, como processos paralelos em coopera��o, foi proposta e implementada primeiramente por Brinch Hansen (embora ideias similares tenham sido sugeridas em 1967[34][35]). Na descri��o de Hansen disto, os processos "comuns" s�o chamados processos internos, enquanto que os dispositivos de entrada/sa�da s�o chamados processos externos.[6]

Formas de desenvolvimento

[editar | editar c�digo-fonte]

Naturalmente, as tarefas e recursos listados acima podem ser fornecidas de v�rios modos que diferem entre si em projeto e implementa��o.

O princ�pio da separa��o entre o mecanismo e a pol�tica � a diferen�a substancial entre a filosofia de micron�cleo e n�cleo monol�tico.[36][37] Aqui um mecanismo � o apoio que permite a implementa��o de v�rias pol�ticas diferentes, enquanto uma pol�tica � um "modo de opera��o" particular. Por exemplo, um mecanismo pode oferecer �s tentativas de entrada de um usu�rio um m�todo de chamar um servidor de autoriza��o para determinar se um acesso deve ser dado; uma pol�tica pode ser para o servidor de autoriza��o 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 pol�tica pode ser alterada com mais facilidade (ex. ao exigir o uso de um passe) do que se um mecanismo e pol�tica fossem integrados no mesmo m�dulo.

Em um micron�cleo m�nimo algumas pol�ticas b�sicas s�o inclu�das,[37] e seus mecanismos permite que o que est� rodando sobre o n�cleo (a parte remanescente do sistema operativo e outras aplica��es) decida quais pol�ticas adotar (como gerenciamento de mem�ria, escalonamento de processo de alto n�vel, gerenciamento de sistema de arquivos, etc.).[1][6] Um n�cleo monol�tico ao inv�s disso, tende a incluir v�rias pol�ticas, ent�o restringindo o resto do sistema dependente delas.

Per Brinch Hansen apresentou um argumento convincente a favor da separa��o do mecanismo e da pol�tica.[1][6] A falha em preencher completamente esta separa��o, � uma das maiores causas para a falta de inova��o nos sistemas operativos existentes atualmente,[1] um problema comum nas arquiteturas de computador.[38][39][40] O projeto monol�tico � induzido pela abordagem de arquitetura "modo n�cleo"/"modo usu�rio" para prote��o (tecnicamente chamada de dom�nios hier�rquicos de prote��o), que � comum em sistemas comercias convencionais;[41] na verdade, todo m�dulo que necessite de prote��o �, portanto, preferivelmente inclu�do no n�cleo.[41] Esta liga��o entre projeto e "modo privilegiado" pode ser reconduzida at� o problema chave da separa��o do mecanismo e da pol�tica;[1] de fato, a abordagem de arquitetura de "modo privilegiado" se funde ao mecanismo de prote��o com as pol�ticas de seguran�a, enquanto a principal abordagem de arquitetura alternativa, endere�amento baseado em capacidades, claramente distingue ambos, levando naturalmente ao desenvolvimento de um micron�cleo design[1] (veja Separa��o entre prote��o e seguran�a).

Enquanto n�cleos monol�ticos executam todo seu c�digo no mesmo espa�o de endere�amento (espa�o de n�cleo) micron�cleos tentam executar a maior parte dos seus servi�os no espa�o de usu�rio, buscando aprimorar a manuten��o e modulabilidade do c�digo base.[42] A maioria dos n�cleos n�o se encaixa exatamente em uma destas categorias, sendo mais encontrados entre estes dois projetos. Os chamados n�cleos h�bridos. Projetos mais ex�ticos como nanon�cleos e exon�cleos est�o dispon�veis, mas s�o usados raramente em sistemas produtivos. O virtualizador Xen, por exemplo, � um exon�cleo.

Diagrama de n�cleos monol�ticos

N�cleos monol�ticos

[editar | editar c�digo-fonte]
Ver artigo principal: n�cleo monol�tico

Em um n�cleo monol�tico, todos os servi�os do sistema operativo rodam junto com a linha de execu��o principal do n�cleo, portanto, tamb�m se encontram na mesma �rea de mem�ria. Esta abordagem permite o acesso vasto e poderoso de hardwares. Alguns desenvolvedores, como desenvolvedor do UNIX Ken Thompson, defendem que � "mais f�cil de implementar um n�cleo monol�tico"[43] que micron�cleos. As principais desvantagens de n�cleos monol�ticos s�o as depend�ncias entre os componentes do sistema - um defeito em um driver de dispositivo pode paralisar todo o sistema - e o fato de n�cleos grandes podem se tornar muito dif�ceis de manter.

Na abordagem do micron�cleo, o pr�prio n�cleo fornece apenas funcionalidades b�sicas que permite a execu��o de servidores, programas separados que assumem fun��es que seriam do n�cleo monol�tico, como drivers de dispositivos, servidores de interface de usu�rio, etc.
Diagrama de intera��o de um micron�cleo

Micron�cleos

[editar | editar código-fonte]
Ver artigos principais: Micronúcleo (informática) e Micronúcleo

A abordagem de micronúcleo consiste em definir abstrações simples sobre o hardware, com um conjunto de primitivos ou chamadas de sistema para implementar serviços mínimos do sistema operativo como gerenciamento de memória, multitarefas, e comunicação entre processos. Outros serviços, incluindo aqueles normalmente fornecidos por um núcleo monolítico como rede, são implementados em programas de espaço de usuário, conhecidos como servidores. Micronúcleos são mais fáceis de manter do que núcleos monolíticos, mas um grande número de chamadas de sistemas de trocas de contexto podem desacelerar o sistema por que eles geralmente geram mais degradação na performance do que simples chamadas de função.

Um micronúcleo permite a implementação das partes restantes do sistema operativo como aplicativos normais escritos em linguagem de alto nível, e o uso de diferentes sistemas operativos sobre o mesmo núcleo não modificado.[6] Ele também torna possível alternar dinamicamente entre sistemas operativos e manter mais de um deles ativos simultaneamente.[6]

Núcleos monolíticos x micronúcleos

[editar | editar código-fonte]

Conforme o núcleo do computador crescem, um número de problemas se torna evidente. Um dos mais óbvios é que o espaço de memória aumenta. Isto é mitigado de certo modo ao aperfeiçoar o sistema de memória virtual, mas nem todas arquitetura de computador suportam memórias virtuais.[44] Para reduzir o espaço utilizado pelo núcleo, modificações extensivas precisam ser realizadas para remover cuidadosamente código inútil, que pode ser muito difícil devido a dependências pouco aparentes entre partes de um núcleo com milhões de linhas de código.

Pelo começo dos anos 1990, devido a vários problemas de núcleos monolíticos em comparação a micronúcleos, núcleos monolíticos foram considerados obsoletos por virtualmente todos pesquisadores de sistemas operativos. Como resultado, o projeto do Linux, um núcleo monolítico mais do que um micronúcleo foi o tópico da famosa discussão inflamada entre Linus Torvalds e Andrew Tanenbaum.[45] Há méritos em ambos argumentos presentes no debate Tanenbaum–Torvalds.

Núcleos monolíticos são projetados para que todo o seu código fique no mesmo espaço de endereçamento (espaço de núcleo), que alguns desenvolvedores argumentam ser necessário para aumentar a performance do sistema.[46] Alguns desenvolvedores também sustentam a hipótese de que núcleos monolíticos são extremamente eficientes se forem bem escritos.[46][fonte confiável?]

A performance de micronúcleos construídos nos anos 1980 e começos dos 1990 era terrível.[2][47] Estudos empíricos que mediram a performance destes micronúcleos não analisaram os motivos para tal ineficiência.[2] As explicações para estes dados foram deixadas para o "folclore"[necessário esclarecer], com a suposição de que eles eram devido ao aumento da frequência da troca de modo núcleo para modo usuário,[2] devido a maior frequência de comunicação entre processos[2] e a maioria frequência de trocas de contexto.[2]

De fato, como foi conjeturado em 1995, os motivos para a terrível performance dos micronúcleos podem também ter sido: (1) uma real ineficiência na implementação de toda a abordagem de micronúcleo, (2) conceitos particulares implementados nesses micronúcleos, e (3) a implementação individual destes conceitos.[2] Portanto ainda falta estudar se a solução para construir um micronúcleo eficiente foi, ao contrário de tentativas anteriores, a de aplicar as técnicas corretas de construção.[2]

No outro extremo, a arquitetura de domínios hierárquicos de proteção que leva a um projeto de núcleo monolítico[41] gera impactos significativos na performance cada vez que há uma interação entre diferentes níveis de proteção (ex. quando um processo tem que manipular uma estrutura de dados em ambos 'modo usuário' e 'modo supervisor'), desde que isto exija cópia de mensagem por valor.[21]

Em meados de 1990, a maioria dos pesquisadores abandonou a crença de que ajustes cuidadosos poderiam reduzir estes impactos dramaticamente,[carece de fontes?] mas recentemente, novos micronúcleos, otimizados para performance, tais como os L4[48] e K42 vêm trabalhando nestes problemas.[necessário verificar]

A abordagem de núcleo híbrido combina velocidade e projetos mais simples de um núcleo monolítico com a modularidade e execução segura de um micronúcleo.

Núcleos híbridos

[editar | editar código-fonte]
Ver artigo principal: Núcleo híbrido

Núcleos híbridos são um acordo entre o desenvolvimento de micronúcleos e núcleos monolíticos. Isto implica executar alguns serviços (como a pilha de rede ou o sistema de arquivos) no espaço do núcleo para reduzir o impacto na performance[carece de fontes?] de um micronúcleo tradicional, mas ainda executar o código no núcleo (como drivers de dispositivos) como servidores no espaço de usuário.

Ver artigo principal: Nanonúcleo

Um nanonúcleo delega virtualmente todos os serviços — incluindo até os mais básicos como controlador de interrupções ou o temporizador — para drivers de dispositivo para tornar o requerimento de memória do núcleo ainda menor do que o dos tradicionais micronúcleos.[49]

Diagrama de interação de um exonúcleo
Ver artigo principal: Exonúcleo

Um exonúcleo é um tipo de núcleo que não abstrai hardware em modelos teóricos. Ao invés disso, ele aloca recursos físicos de hardware (como o tempo de um processador), páginas de memória e blocos de disco, para diferentes programas. Um programa rodando em um exonúcleo pode ligar para uma biblioteca do sistema operacional que usa o exonúcleo para simular as abstrações de um sistema operativo conhecido, ou ele pode desenvolver abstrações específicas para aquele aplicativo para uma performance superior.[50]

História do desenvolvimento do núcleo

[editar | editar código-fonte]

Os primeiros sistemas operativos

[editar | editar código-fonte]

Falando estritamente, um sistema operativo (e, isto inclui um núcleo) não é obrigado a rodar um computador. Programas podem ser carregados diretamente e executados na máquina de "bare metal", desde que os autores destes programas estiverem dispostos a trabalhar sem nenhuma abstração de hardware ou suporte a sistema operativo. Os primeiros computadores operaram desta maneira durante os anos de 1950, começo dos 1960, eram reiniciados e recarregados entre cada execução de diferentes programas. Eventualmente, pequenos programas auxiliares como carregadores de programas e depuradores foram mantidos na memória entre as execuções, ou carregados de memória somente de leitura. Conforme estas eram desenvolvidas, elas formaram a base do que depois se tornaria o núcleo 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 núcleos modernos.

Em 1969 o RC 4000 Multiprogramming System (microcomputador RC-4000[51]) introduziu a filosofia de desenvolvimento de sistemas de pequeno núcleo "na qual sistemas operativos para diferentes propósitos poderiam ser criados de maneira metódica",[52] algo que poderia ser chamado de abordagem de micronúcleo.

Sistemas operativos de tempo compartilhado

[editar | editar código-fonte]
Ver artigo principal: 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 máquinas. Uma das maiores evoluções durante esta era foi o tempo compartilhado, em que um número de usuários conseguiria pequenas parcelas do tempo do computador, em uma taxa que fazia parecer que cada um estava conectado à sua própria máquina, embora mais lenta.[53]

O desenvolvimento dos sistemas de tempo compartilhado levou a inúmeros problemas. Um deles foi que usuários, particularmente em universidades, em que os sistemas estavam sendo desenvolvidos, pareciam tentar hackear o sistema para conseguir mais tempo de processamento. Por esta razão, segurança e controles de acesso se tornaram um foco principal do projeto Multics em 1965.[54] Outro problema corrente era gerenciar apropriadamente os recursos do sistema: usuários 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 usuário ativo durante estes períodos. Por fim, tipicamente os sistemas ofereciam uma hierarquia de memória de várias camadas de profundidade, e particionar este recurso caro levou a um grande desenvolvimento nos sistemas de memória virtual.

Ver artigo principal: Unix
Diagrama da relação de família de predecessor/sucessor para os sistemas tipo Unix.

Durante a fase de projeto do Unix, os programadores decidiram modelar todo dispositivo de alto nível como um arquivo, por que eles acreditavam que o propósito da computação era a transformação de dados.[55] Por exemplo, impressoras eram representadas como um "ficheiro" em uma localização conhecida — quando dados eram copiados para o arquivo, ela realizava a impressão destes. Outros sistemas, para fornecer uma funcionalidade similar, possuem a tendência de virtualizar dispositivos em um nível mais baixo — ou seja, ambos dispositivos e ficheiros seriam instâncias de algum conceito de nível inferior. Virtualizar o sistema a nível de ficheiros permitiu aos usuários manipular todo o sistema usando seus conceitos e ferramentas de gerenciamento de ficheiros, simplificando a operação dramaticamente. Como uma extensão do mesmo paradigma, o Unix permite que programadores manipulem arquivos usando uma série de pequenos programas, usando o conceito de encadeamento, que permite aos usuários completar operações em etapas, alimentando um ficheiro através de uma cadeia de ferramentas de propósito único. Embora o resultado final fosse o mesmo, usar programas menores aumentou drasticamente a flexibilidade, assim como o uso e desenvolvimento, permitindo que o usuário modificasse seu fluxo de trabalho ao adicionar ou remover um programa da cadeia.

No modelo Unix, o sistema operativo consiste de duas partes: a primeira é uma enorme coleção de programas de utilidades que guiam a maioria das operações; a segunda, o núcleo que executa os programas.[55] No Unix, do ponto de vista da programação, a distinção entre os dois é extremamente tênue: o núcleo é um programa rodando no modo supervisor,[7] que age como um carregador de programas e supervisor para os pequenos programas de utilidade que integram o resto do sistema e fornecem travas e serviços de entrada/saída para estes programas; além disso, o núcleo não intervém de modo algum no espaço de usuário.

Ao longo dos anos o modelo de computação mudou, e o tratamento do Unix de tudo como um ficheiro ou fluxo de bytes não era mais universalmente aplicável como antes. Embora um terminal pudesse ser tratado como um ficheiro ou fluxo de bytes, de que se exibia ou lia, o mesmo não parecia ser verdade para a interface gráfica. As redes se tornaram outro problema. Mesmo se a comunicação de rede pudesse ser comparada ao acesso de ficheiros, a arquitetura de baixo nível orientada a pacotes lidava com pedaços discretos de dados e não com ficheiros completos. Conforme a capacidade dos computadores crescia, o Unix se tornava cada vez mais desorganizado com relação a código. Enquanto núcleos podiam ter 100.000 linhas de código nos anos 1970 e 1980, núcleos sucessores modernos do núcleo do Unix como o Linux possuem mais de 4,5 milhões de linhas.[56]

Derivados modernos do Unix são geralmente baseados em núcleos monolíticos que carregam módulos. Exemplos disto são o Linux, um núcleo monolítico com suporte a núcleos, e diversas distribuições que o incluem, assim como os núcleos 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 núcleos que são criados como passatempo que acabam compartilhando vários dos recursos com o Linux e/ou os núcleos do FreeBSD, DragonflyBSD, OpenBSD e NetBSD e/ou sendo compatíveis com eles.[57]

Ver artigos principais: macOS, Mac OS Classic e História do macOS

A Apple lançou Mac OS pela primeira vez em 1984, empacotado com o seu computador pessoal Apple Macintosh. Nos primeiros lançamentos, o Mac OS (ou Sistema de Software, como ele foi chamado) careceu de muitos recursos básicos, como multitarefas e um sistema hierárquico. Com o passar tempo, o sistema operacional evoluiu e se tornou o Mac OS 9 com alguns recursos adicionados, mas o núcleo se manteve basicamente o mesmo.[carece de fontes?] Em oposição a isto, o macOS é baseado no Darwin, que utiliza um conceito de núcleo híbrido chamado XNU, criado combinando o núcleo do 4.3BSD e o Mach.[58]

Ver artigo principal: AmigaOS

O Amiga da Commodore foi lançado em 1985, e estava dentre os primeiros (e certamente mais bem sucedidos) computadores domésticos a apresentar um sistema operativo com um micronúcleo. O núcleo do Amiga, a exec.library, era pequena mas capaz, oferecendo multitarefas rápidas e preemptivas em hardware similar ao do Apple Macintosh, e um sistema avançado de ligações dinâmicas que permitia uma expansão fácil.[59]

Microsoft Windows

[editar | editar código-fonte]
Ver artigo principal: Microsoft Windows

O Microsoft Windows foi lançado em 1985 como uma extensão para o MS-DOS. Devido à sua dependência de outro sistema operativo, todas as versões até a 95 são consideradas um ambiente operacional (e não um sistema operativo propriamente dito). Tal linha de produtos continuou por 1980 e 1990, resultando nos lançamentos das séries Windows 9x, atualizando as capacidades do sistema para endereçamento de 32 bits e multitarefas preemptivo, ao longo dos anos 1990, terminando com o lançamento do Windows Me em 2000.

O lançamento do Windows XP em outubro de 2001 uniu as duas linhas de produto, com a intenção de combinar a estabilidade do núcleo NT com os recursos ao consumidor das séries 9x.[60] A arquitetura do núcleo do Windows NT é considerada híbrida pois o próprio núcleo contém tarefas como o gerenciador de janelas e o gerenciador de comunicação entre processos, mas vários subsistemas são executados no modo de usuário.[61] O ponto de quebra exato entre espaço de usuário e espaço de núcleo têm deslocado conforme a versão, mas a introdução do UMDF (User-Mode Driver Framework) no Windows Vista e do escalonamento de linha de execução no espaço de usuário no Windows 7,[62] deslocou mais recursos do núcleo para processos no espaço de usuário.

Desenvolvimento de micronúcleos

[editar | editar código-fonte]

Embora o Mach, desenvolvido na Universidade Carnegie Mellon de 1985 a 1994, é o micronúcleo de propósito geral mais conhecido, outros micronúcleos foram desenvolvidos com objetivos mais específicos. Uma família de micronúcleos L4 (principalmente o micronúcleo L3 e o L4) foi criada para demonstrar que micronúcleos não são necessariamente lentos.[48] Implementações mais novas como Fiasco e Pistachio são capazes de executar o Linux junto com outros processos L4 em espaços de endereçamento separados.[63][64]

QNX é um Sistema operativo de tempo-real com um projeto de micronúcleo minimalista que vem sendo desenvolvido desde 1982, sendo mais bem-sucedido do que o Mach em alcançar os objetivos do paradigma do micronúcleo.[65] Ele é usado principalmente em sistemas embarcados e em situações em que o software não pode falhar, como nos braços robóticos do ônibus espacial e máquinas que controlam a moeção de vidro a tolerâncias extremamente finas, onde um minúsculo erro poderia custar centenas de milhares de reais.

Referências

  1. a b c d e f g h i j k Wulf 74 pp.337-345
  2. a b c d e f g h Liedtke 95
  3. Tanenbaum 79, chapter 1
  4. a b Deitel 82, p.65-66 cap. 3.9
  5. Lorin 81 pp.161-186, Schroeder 77, Shaw 75 pp.245-267
  6. a b c d e f g h Brinch Hansen 70 pp.238-241
  7. a b O nível de privilégio mais alto possui vários nomes pelas diferentes arquiteturas, tais como modo supervisor, modo núcleo, CPL0, DPL0, Anel 0, etc. Veja [Anel (segurança)] para mais informações.
  8. «Desenvolvimento do SO Bona Fide - Tutorial do Bran para Desenvolvimento de Núcleo, por Brandon Friesen» 
  9. Para escalonamento de processos de baixo nível veja Deitel 82, ch. 10, pp. 249–268.
  10. Levy 1984, p.5
  11. Needham, R.M., Wilkes, M. V. Domínio de proteção e gerenciamento de processos, Computer Journal, vol. 17, no. 2 de maio de 1974, pp 117-120.
  12. a b c Silberschatz 1990
  13. «Definition of non-preemptive multitasking». PCMAG (em inglês). Consultado em 2 de agosto de 2020 
  14. Tanenbaum, Andrew S. (2008). Modern Operating Systems 3rd Edition ed. [S.l.]: Prentice Hall. pp. 50–51. ISBN 0-13-600663-9. . . . quase todas as chamadas de sistemas [são] invocadas de programas C ao chamar uma biblioteca de procedimento . . . A biblioteca de procedimento . . . executa uma instrução TRAP para alternar do modo usuário para o modo núcleo e começar a execução . . . 
  15. a b Denning 1976
  16. a b Swift 2005, p.29 quote: "isolação, controle de recursos, verificação de decisão (checagem), e recuperação de erros."
  17. Cook, D.J. Medindo a proteção da memória, 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. a b Hansen 73, Seção 7.3 p.233 "interações entre diferentes níveis de proteção exigem a transmissão de mensagens por valor"
  22. a b c Linden 76
  23. Schroeder 72
  24. Stephane Eranian & David Mosberger, Memória Virtual no núcleo Linux IA-64, Prentice Hall PTR, 2002
  25. Silberschatz & Galvin, Conceitos de Ssistema Operativo, 4th ed, pp445 & 446
  26. Hoch, Charles; J. C. Browne (Universidade do Texas, Austin) (Julho de 1980). «An implementation of capabilities on the PDP-11/45» (pdf). ACM SIGOPS Operating Systems Review. 14 (3): 22–32. doi:10.1145/850697.850701. Consultado em 7 de janeiro de 2007 
  27. a b «Uma Abordagem a Segurança Baseada em Linguagem, Schneider F., Morrissett G. (Universidade Cornell) e Harper R. (Universidade Carnegie Mellon)» (PDF) 
  28. a b c P. A. Loscocco, S. D. Smalley, P. A. Muckelbauer, R. C. Taylor, S. J. Turner, and J. F. Farrell. A Inevitabilidade do Futuro: A Presunção Falsa de Segurança no Ambiente de Computação Moderna Arquivado em 21 de junho de 2007, no Wayback Machine.. Em procedimentos da 21ª Conferência Nacional de Segurança de Sistemas de Informação, páginas 303–314, Out. de 1998. [1].
  29. J. Lepreau e outros. A Relevância Persistente do Ssistema Operativo Local aos Aplicativos Globais. Procedimentos da 7ª ACM SIGOPS Eurcshelf/book001/book001.html Segurança da Informação: Uma Coleção Integrada de Dissertações], IEEE Comp. 1995.
  30. J. Anderson, Estudo de Planejamento de Segurança de Computadores Arquivado em 21 de julho de 2011, no Wayback Machine., Air Force Elect. Systems Div., ESD-TR-73-51, Outubro de 1972.
  31. * Jerry H. Saltzer, Mike D. Schroeder (Setembro de 1975). «A proteção de informação em sistemas de computador». Proceedings of the IEEE. 63 (9): 1278–1308. doi:10.1109/PROC.1975.9939 
  32. Jonathan S. Shapiro; Jonathan M. Smith; David J. Farber. «EROS: um sistema de capacidades rápido». Procedimentos da 70º simpósio ACM sobre princípios de sistemas operativos 
  33. Dijkstra, E. W. Processos Sequenciais Cooperadores. Math. Dep., Technological U., Eindhoven, Set. 1965.
  34. «SHARER, um sistema de compartilhamento de tempo para o CDC 6600». Consultado em 7 de janeiro de 2007 
  35. «Supervisores Dinâmicos - seu projeto e construção». Consultado em 7 de janeiro de 2007 
  36. Baiardi 1988
  37. a b Levin 75
  38. Denning 1980
  39. Jürgen Nehmer A Imoralidade dos sistemas operativos, ou: Pesquisa nos sistemas operativos ainda é Justificável? Notas em Ciência da Computação; Vol. 563. Processo da Oficina Internacional sobre sistemas operativos dos anos 90 em diante. pp. 77 - 83 (1991) ISBN 3-540-54987-0 [2] citação: "Os últimos 25 anos mostraram que a pesquisa sobre arquiteturas de sistemas operativos teve pouco efeito nos principais sistemas operativos." [3] Arquivado em 14 de outubro de 2007, no Wayback Machine.
  40. Levy 84, p.1 citação: "Embora a complexidade dos aplicativos de computador aumenta anualmente, a arquitetura de hardware subjacente para aplicativos se manteve intocada por décadas."
  41. a b c Levy 84, p.1 citação: "Arquiteturas convencionais suportam um único modo privilegiado de operação. Esta estrutura leva a um desenvolvimento monolítico; qualquer módulo precisando de proteção deve ser parte do único núcleo do sistema operativo. Se, ao contrário, qualquer módulo pudesse executar em um domínio protegido, sistemas poderiam ser construídos como uma coleção de módulos independentes ampliáveis por qualquer usuário."
  42. Roch 2004
  43. «Códigos Abertos : Vozes da Revolução do Código Aberto» 
  44. Endereçamento 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 dina.dk Arquivado em 3 de outubro de 2012, no Wayback Machine., groups.google.com, oreilly.com e Sítio do Andrew Tanenbaum
  46. a b Matthew Russell. «O que é Darwin (e como ele sustenta o Mac OS X)». O'Reilly Media  citação: "A natureza fortemente unida do núcleo monolítico permite torná-lo eficiente no uso do hardware subjacente [...] Micronúcleos, por outro lado, rodam um número muito maior de processos no espaço de usuário. [...] Infelizmente, estes benefícios trazem o custo de micronúcleos terem a necessidade de passar informações dentro e fora do espaço do núcleo através de um processos chamado troca de contexto. Trocas de contexto trazem uma degradação de performance considerável." Estas afirmações não fazem parte de um artigo revisto por partes.
  47. Härtig 97
  48. a b «A família de núcleos L4 - Visão geral» 
  49. «Arquitetura de nanonúcleo do KeyKOS». Consultado em 9 de janeiro de 2010. Arquivado do original em 21 de junho de 2011 
  50. «Ssistema Operativo de Exonúcleo do MIT». Consultado em 9 de janeiro de 2010. Arquivado do original em 23 de março de 2011 
  51. «Nuclear · Lecture Note for 221». yutingwang.gitbooks.io. Consultado em 10 de abril de 2024 
  52. Hansen 2001 (os), pp.17-18
  53. «Versão BSTJ do C.ACM Jornal Unix» 
  54. «Introdução e Visão Geral do Sistema Multics, por F. J. Corbató e V. A. Vissotsky.» 
  55. a b «O Sistema UNIX — A Única Especificação do Unix» 
  56. «Linux 2.6: Ele Vale Mais!, por David A. Wheeler, 12 de outubro de 2004» 
  57. Esta comunidade se reúne em sua maioria no Desenvolvimento de SO Bona Fide, O Fórum de Mensagens Mega-Tokyo e outros sítios de entusiastas de sistemas operativos.
  58. «XNU: O núcleo». Consultado em 9 de janeiro de 2010. Arquivado do original em 22 de agosto de 2011 
  59. Sheldon Leemon. «O que torna isso tão ótimo! (Amiga Commodore)». Creative Computing. Consultado em 5 de fevereiro de 2006 
  60. «LinuxWorld IDC: Consolidação de Windows acontece». Consultado em 9 de janeiro de 2010. Arquivado do original em 16 de dezembro de 2008 
  61. «Histórico do Windows: Histórico de Produtos de Mesa de Trabalho» 
  62. Holwerda, Thom (7 de fevereiro de 2009). «Windows 7 ganha escalonamento de espaço de usuário». OSNews. Consultado em 28 de fevereiro de 2009 
  63. «O micronúcleo Fiasco - Visão geral» 
  64. «L4Ka - A família L4 de micronúcleos e amigos» 
  65. «Visão Geral do SSistema operativo de tempo-real» 

Leituras importantes

[editar | editar código-fonte]

Ligações externas

[editar | editar código-fonte]