o que é um kernel? [fechadas]

2

Estou aprendendo Unix pelo livro Unix Architecture de Maurice J Bach.

Minha confusão é com o conceito de kernel. O que é um kernel? Eu entendo que é o sistema operacional e é um processo.

Mas quando meu professor ensina, ele diz que uma chamada de sistema () resulta em um processo que vai do modo de usuário para o modo kernel.

O que realmente acontece em uma chamada do sistema? O processo do usuário vai dormir e o sistema operacional o executa em nome do processo do usuário e retorna o valor para o processo do usuário ou o processo do usuário é executado no modo kernel? Se este último estiver correto, o que isso significa?

    
por 1994 16.11.2013 / 09:59

1 resposta

3

What is a kernel?

No sentido da sua pergunta, é um único programa grande que é executado em um nível de privilégio especial no processador. Ele fornece todos os recursos básicos do sistema operacional: multitarefa , IPC , sistemas de arquivos , etc. É também o processo que executa os drivers de dispositivo , que por sua vez controlam o hardware do computador em nome do kernel.

I understand it's the operating system

Na verdade, não. Um sistema operacional é muito mais do que apenas o kernel .

Mesmo nos dias em que Maurice Bach estava escrevendo seu livro, o SO incluía shells , < a = href="http://en.wikipedia.org/wiki/Compiler"> compiladores , utilitários , editores de texto , etc.

Com o tempo, o termo sistema operacional passou a incluir ainda mais coisas, como o subsistema da GUI .

É uma decisão pessoal em que você desenha a linha entre o SO e os programas normais do usuário. A maioria das pessoas concorda que um processador de texto GUI não faz parte do sistema operacional, mesmo se ele foi instalado junto com o sistema operacional adequado. Mas muitos também concordam que o editor de texto simples que vem com o SO é parte do sistema operacional. Muitos nesse campo também concordariam que os processadores de marcação que vêm com o SO - troff, TeX, etc. - também são considerou instalações de SO nos dias de hoje. Mas combinar um editor de texto e um processador de marcação, e você tem algo indistinguível de um processador de texto em alguns aspectos.

Desenhar uma linha gritante que todos podem concordar em impossível.

it is a process.

Não é verdade, não.

Uma arquitetura microkernel é a mais próxima possível para tornar essa afirmação verdadeira. Mesmo assim, o kernel é uma coleção de processos, um dos quais é especial, pois é o que pode executar todos os outros processos outros . Portanto, mesmo nesse caso, ainda existe um núcleo - um pequeno kernel - que não pode ser considerado um processo normal.

No caso de um kernel monolítico , o kernel está em uma posição especial e é executado todos os processos.

What actually happens in a System call?

Leia o resto do livro de Bach.

Você notará que essa resposta tem muitos links da Wikipédia, e a maioria dos artigos com os quais eu faço links são longos e complicados, com muitos outros links começando. Isto é porque você basicamente nos pediu para destilar um tópico muito complicado em uma resposta simples. Não há uma resposta simples, então tentei fornecer um guia para as respostas, no plural.

Does the user process go to sleep and the operating System Executes it on behalf of User process and returns the value to user process…?

Em um núcleo monolítico clássico, como discutido por Bach, sim.

Os sistemas modernos peneiram essa imagem simples.

Primeiro, o "sistema operacional" não executa a chamada do sistema, o kernel faz. Eu não estou apenas sendo pedante. Como a enorme massa de um SO moderno é composta de diversos programas de espaço de usuário, e os sistemas operacionais modernos são multitarefa, você não pode dizer que o sistema operacional pára e executa a chamada do sistema. O sistema operacional pode estar fazendo muitas coisas ao mesmo tempo, uma das quais está lidando com uma chamada de sistema de um único programa do usuário.

Mas, segundo, e isso é muito mais importante, os kernels modernos do SO não são mais programas de tarefas únicas que lidam com uma chamada de sistema por vez. Um SO pode estar no meio de muitas chamadas ao sistema de uma só vez. Um programa de espaço de usuário de tarefa única que faz uma chamada de sistema pode perceber que o mundo pára até que a chamada do sistema termine, mas o kernel pode estar fazendo muitas outras coisas enquanto a chamada de sistema continua.

Mesmo no caso de um kernel de tarefa única com estilo antigo, você tinha coisas como metades de cima e de baixo a>, que permitia que o kernel desligasse e manejasse coisas como E / S de disco para fornecer serviço de baixo nível para uma chamada de sistema de nível relativamente alto como open(2) .

or the user process executes in kernel Mode?

Você pode ver dessa maneira, mas isso é verdade da mesma maneira que meu navegador da web e o Stack Exchange são o mesmo programa, porque eles estão interoperando para fornecer uma experiência coesa única.

    
por 16.11.2013 / 12:29