fala pessoal aqui é o Fábio da boson Treinamentos e nesse vídeo sobre conceitos básicos de informática Vamos aprender o que é um Kernel em sistemas operacionais se você é estudante de ciência da computação engenharia de sistemas ou análise de sistemas ou algum outro curso correlato você provavelmente já ouviu falar na palavra Kernel que que é um Kernel Kernel basicamente é o núcleo de um sistema operacional qualquer moderno núcleo no sentido de um um software principal e esse software ele gerencia a comunicação entre o hardware e o software Essa é a função do Kern ele vai
atuar como um software que é uma espécie de intermediário e o kon vai permitir que os programas as aplicações de usuário consigam utilizar os recursos dos sistemas recursos de hardware eh e outros recursos de forma eficiente e segura o Kern é uma parte do sistema operacional que tá sempre residente na memória e entre outras as funções dele ele gerencia os recursos do sistema como a CPU memória RAM dispositivos ele vai facilitar a comunicação entre o hardware e o software e vai garantir que os programas e usuários consigam operar o computador de forma adequada eficiente segura
sem um Kernel os programas não conseguiriam nos sistemas modernos interagir com o hardware e o próprio sistema não conseguiria gerenciar os recursos de forma adequada de forma eficaz sistemas muito antigos não usavam kerna lá pros anos 50 ou 60 lá os programas eram carregados na máquina quando necessário acessavam diretamente o hardware não é mais o caso atualmente aqui eu tenho o modelo de um sistema Linux com seu Kernel para você ter uma uma noção de onde se encaixa o kerno dentro de um sistema de computador então o kerno tá aqui essa parte de software Ele
parece grandão aqui nessa ilustração mas na verdade o kerno costuma ser pequeno no Linux por exemplo ele é um componente pequeno e ele faz a ponte Entre todos os softwares do sistema sejam eles softwares internos do sistema como bibliotecas Shell que são as interfaces sistemas de janelas ou aplicações que o usuário utiliza e a interface disso é feita com um hardware por meio do Kernel que acessa ou possui módulos ou drivers no Linux funciona dessa forma o Kel também lida com gerenciamento de processos ele supervisiona a criação agendamento e encerramento de processos dos mais variados
tipos garantindo assim que os processos Tenham sempre uma parcela uma parte correta E adequada do tempo da CPU para processamento fazendo uma espécie de compartilhamento do tempo um driver dispositivo caso você esteja se perguntando é um programa que encapsula monitora e controla um dispositivo de hardware então para cada dispositivo de hardware vai existir um programinha associado que deve estar instalado na máquina eh que vai permitir o gerenciamento daquele dispositivo como uma placa de rede uma placa de vídeo uma impressora e assim por diante tudo em nome do sistema operacional bom Quais são as principais funções
do Kernel então o k ele realiza o gerenciamento de processos por exemplo cria um processo executa e faz o escalonamento que é a troca de um processo para outro ele gerencia a memória do sistema por exemplo a locação dinâmica da memória que programa vai receber quanto de memória Em que momento e assim também previne conflitos entre os processos Lembrando que um processo é um programa que tá em execução na memória da máquina ele também gerencia os dispositivos de hardware e faz a comunicação com eles usando os drivers que a gente acabou de de ver então
Mouse teclado disco rígido SSD e assim por diante o k também vai permitir o gerenciamento de arquivos no caso manipular os arquivos que estão em uma mídia realizar o controle de acesso e verificar a integridade desses arquivos gerencia também a segurança e aqui segurança não é no sentido cibernético de vírus antivírus ameaças hackers É no sentido de segurança de proteção entre processos mesmo isolamento de processos e privilégios de acesso do sistema E também o kerno ele recebe as chamadas do sistema que são solicitações e serviços do sistema operacional para fazer uma interface com os programas
de usuário então quando um programa de usuário precisa de um recurso do sistema ele faz uma chamada de sistema para o Kern solicitando esse recurso e o Kernel é que vai realizar ou não essa chamada fazendo um parêntese processa um programa em execução código dados recursos e uma thread é uma unidade de execução dentro de um processo então um processo ele pode ser dividiriam idades menores que a gente vai chamar de threads e um processo ele pode executar várias threads em paralelo por exemplo um navegador ele pode realizar vários downloads ao mesmo tempo você pode
mandar baixar um monte de coisa no navegador cada download vai ser matad diferente dentro de um processo maior que é o próprio processo de download esses conceitos ajudam a gente a entender a função de um kerno existem vários tipos de kerno na verdade então a gente vai ver agora os principais tipos de kerno que existem em computação os mais comuns são o Kernel monolítico o micro Kernel e o Kernel híbrido E além disso també existem o exokernel e o Nan Kernel antes da gente falar dos tipos de Kernel a gente precisa entender a diferença entre
os modos de operação protegido e modo usuário ou modo Kernel Kernel mode e modo usuário user mode ou user Space então o que que são os modos de operação são os níveis de Privilégio com os quais o sistema vai executar efetivamente as instruções dos programas e são esses dois principais a gente vai ter o modo Kernel que é um espaço do Kernel e com modo privilegiado no qual o sistema tem acesso total e direto ao hardware e recursos críticos da máquina quem tem esse acesso é o kerno já os programas de usuário e outros aplicativos
do sistema eles eles operam com acesso mais limitado numa área da memória separada chamada user Space no modo de usuário e aí para essas aplicações poderem interagir com hardware elas fazem as Tais as chamadas de sistema pro k uma chamada de sistema ou System Call é a forma pela qual o processo vai requisitar o serviço do Kernel um serviço que ele não tem permissão de executar obviamente é uma espécie de interface entre o processo e o sistema operacional isso aqui é literalmente programação são instruções programáveis se você por trabalhar um dia com programação em baixo
nível por exemplo escrever um driver ou alguma coisa do gênero você vai lidar com chamadas de sistema bom vejamos agora os tipos de Kel com um pouquinho mais de detalhes primeiro falando do k potico que é um tipo de k do sistema operacional no qual todos os serviços principais do so por exemplo gerenciamento de memória o agendamento de processos gerenciar os sistemas de arquivos e drivers eles são executados inteiramente num único espaço de memória de endereço que é o espaço do kmo protegido Esse é um tipo de Kero que tem um acesso mais poderoso ao
hardware todas as funções do núcleo do so e os drivers e dispositivos ele pode ser complexo e grande nem sempre ele vai ser grande é um um pouco mais difícil de depurar o desempenho costuma ser elevado desse tipo de Kel com baixa latência ou seja o acesso rápido aos recursos mas eventualmente uma falha em algum componente por exemplo um driver de dispositivo pode afetar todo o sistema não é que vai afetar mas pode afetar exemplos de sistemas operacionais que usam kerno monolítico incluem o Linux o freebsd e outras variantes Open BSD etc e algum algumas
variantes do Unix como o yx e o HP x o Solares também entre outros e aqui a gente vê nessa ilustração que o k ele fica exatamente no meio entre o software e o hardware que é aquela definição mais padrão zona que a gente acabou de estudar o kerno do Linux em particular ele é monolítico e modular a gente consegue introduzir módulos e também remover módulos carregáveis em tempo de execução por exemplo eu posso inserir um driver de dispositivo novo no Linux sem precisar desligar a máquina por exemplo V fazer uma instalação dele já o
microcel é um Kel diferente no qual somente serviços essenciais como o gerenciamento de processos ou de memória são executados no espaço do kerno os demais serviços por exemplo os drivers de dispositivos ou sistemas de arquivos podem ser executados no espaço do usuário tendo acesso direto portanto assim ao hardware ele pode ser mais seguro e mais modular H ele pode ter uma sobrecarga potencial por conta disso porque muitas chamadas de sistema acabam acontecendo e muito chaveamento de contexto que é a troca de um processo para outro durante a execução exemplos de de sistemas que usam o
microcel são o Mac o minix 3 e o Blackberry Ken x aí já são sistemas um pouquinho diferentes do que a gente tá acostumado a ver no dia a dia talvez você não tenha ouvido falar deles mas esses sistemas eles existem e encontram aplicação em computação por exemplo aqui a gente tem uma ilustração que mostra como que é o sistema BlackBerry kex neutrino que é um sistema que é bastante usado no sistema no setor automotivo por exemplo na na fabricação são de dispositivos médicos robótica sistemas embarcados industriais que necessitam deste tipo de Kel para funcionar
Você nota que temos um micro Kernel com algumas funcionalidades e outras funcionalidades que ficam dentro do Kel num Kel monolítico nesse caso estão fora do micro kerno como acesso ao sistema de arquivos ou entradas de drivers aqui na descrição do vídeo Inclusive eu vou deixar um link para você consultar se tiver interesse informações mais detalhadas sobre esse tipo de sistema como BlackBerry canan X muito bem então aqui a gente tem uma comparação entre um sistema com kerno monolítico e um sistema com micro kerno então nessa ilustração uma imagem de domínio público a gente tem no
no Kel monolítico as aplicações fazendo chamadas de sistema E aí tudo isso passa pela pilha do Kernel até chegar no hard então ele ele fica bem no meio do caminho e controla tudo já no micro Kernel é diferente veja que a pilha é bem menor e as aplicações conseguem se comunicar eh por exemplo o servidor de arquivos e os Dri de dispositivo com as aplicações de forma mais direta e o modo kerno Ele é bem menor Então essa é a comparação entre monolítico e micro kerne e o kerne híbrido bom kerne híbrido como o nome
diz ele é uma mistura de dois outros dois ou mais outros tipos de kerneis no caso é uma arquitetura de kerne e de sistema operacional que combina elementos do kér monolítico com elementos do micro kér A ideia é juntar os pontos fortes de ambos os designs e atenuando problemas eventuais que eles possuam nesse caso alguns dos serviços do sistema operacional são executados no espaço do Kernel por motivos de desempenho e outros são executados no espaço do usuário É bem parecido com micro kerno Só que nesse caso nós temos mais serviços sendo executados no kerno em
si no espaço do kerno Puxa um pouquinho mais pra ideia do do do kerno monolítico mas ele ele mistura as duas abordagens na verdade então ele ele chega numa espécie de Equilíbrio entre desempenho do quni monolítico e flexibilidade do microc se for bem implementado claro exemplos de sistemas que usam o k híbrido netware quer dizer usam não usavam porque o netware já já é muito antigo o os2 da IBM e a família Windows Windows desde o Windows NT até o Windows 11 atual Windows anteriores A Windows NT ou da outra família Windows 95 98 Windows
Millennium eles usavam kerne monolítico com uma abordagem híbrida Ele é bem monolítico com poucos elementos de modularidade então não são considerados kernis híbridos e um outro exemplo de Kernel híbrido que a gente tem na atualidade é o macos e o iOS que roda no iPhone por exemplo eles usam um Kernel xnu ou xnu que é um que é um Kernel que combina o micro Kernel Mac ou Mac que a gente viu anteriormente com componentes derivados do BSD lembra BSD Kernel monolítico bom esses três são os três principais tipos de kernos a gente viu que eles
eles estão presentes nos PIS sistemas operacionais e aqui a gente tem uma comparação entre eles kerno monolítico micro kerno a gente acabou de ver essa ilustração e o kerno híbrido que já tem uma um espaço de Kero maior do que o micro Kero mas menor do que no kerno monolítico com algumas alguns tipos de serviços sendo acessados diretamente pelas aplicações e outros tendo que passar pelo k legal então os três principais tipos de Kel Além disso nós vamos ter os kerneos mais exóticos como o exokernel que é um tipo de que é projetado para fornecer
uma abstração assim mínima entre o hardware e os aplicativos aqui os ex kernos eles expõem os recursos de hardware diretamente aos aplicativos assim os aplicativos eles conseguem gerenciar os recursos por si próprios em tese isso traz maior flexibilidade mais controle Por parte dos aplicativos e uma otimização melhor do desempenho exemplos de exoc Kern sistemas xos e o xok que é um Kern desenvolvido pelo MIT eles TM algumas vantagens portanto a flexibilidade desempenho pode ser elevado esses cernas podem ser escritos para serem bem especializados mas tem algumas desvantagens também por exemplo ele é mais complexo para
os desenvolvedores trabalharem porque o desenvolvedor ele vai ter que escrever todas as rotinas para acessar diretamente os dispositivos de hardware isso complica a situação aí do da programação em si a adoção é limitada eles não são muito usados atualmente e não tem uma padronização muito adequada A ministração é muito pequena então não tem uma forma simples de padronizar ou até mesmo implementar os serviços de nível superior mas o exoc ainda encontra caso de uso computação de ao desempenho sistemas de tempo real e alguns sistemas embarcados podem usar ex kerno e claro para pesquisa experimentação como
é de se esperar finalmente o nano kerno é uma abordagem muito minimalista é um design muito exótico para design de sistemas operacionais ele leva o conceito do micro kér ao extremo reduzindo muito ainda mais o tamanho e a funcionalidade do próprio Kern aqui o Kern fornece somente serviço muito muito básico e essencial como por exemplo a comunicação entre os processos dentro do sistema e praticamente todas as outras funcionalidades ficam para processos que rodam no espaço do usuário ou para servidores externos servidor externo Na verdade são serviços de software que rodam no sistema operacional não tem
nada a ver com o servidor físico de rede né a ideia de servidor aqui é um serviço de software que que roda na máquina e fornece alguma funcionalidade pro Kern ou ou para as aplicações aqui a gente tem um minimalismo extremo ele o nano é projetado para ser o menor possível e alguns exemplos de nano incluem o kos o Eros e o Mac o Mac no caso em algumas configurações ele normalmente é considerado microc mas ele pode ser alterado e configurado para operar como se fosse um nano kerno movendo mais serviços pro espaço do usuário
vantagem aqui seria o minimalismo né um k muito pequeno ele é muito modular bastante modular el em tese o kerno fica mais seguro porque tem pouca tem pouco recurso rodando dentro dele e ele é bastante flexível por conta disso desvantagens sobrecarga do desempenho vai acabar acontecendo a complexidade pros desenvolvedores é muito maior e a doção é bastante limitada onde você poderia encontrar isso aqui sistemas embarcados geralmente sistemas embarcados vão acabar podem fazer uso de um nanon e porque ali o minimalismo e modularidade são muito importantes e até às vezes até mais do que desempenho bruto
em si Principalmente quando o sistema embarcado tem um recurso mais limitado então uma tabelinha comparativa entre as arquiteturas de kerno que evidentemente eu não vou ler mas você pode dar um print na tela para estudar aqui eu trago alguns dos principais aspectos dos kernels estrutura desempenho resiliência que é estabilidade dele e a modularidade as informações para cada um dos cinco tipos de Kernel que a gente viu com os exemplos de sistemas operacionais dá print aí na tela para você dar uma lida e estudar concluindo o Kernel é a base do funcionamento dos sistemas operacionais modernos
ele é a parte central para operação dos sistemas operacionais existem diferentes tipos de kerno que vão atender a necessidades distintas dos sistemas modernos como desempenho modalidade flexibilidade etc e os principais tipos de kernos São monolítico micro Kel o Kel híbrido que mistura funcionalidades do monolítico características do microel exokernel e o nanel Então é isso espero que vocês tenham gostado Espero que tenh aprendido alguma coisa sobre k se você não sabia nada a respeito de Espero que saia desse vídeo sabendo alguma coisa sabendo Para que serve um k qual sua importância no sistema operacional e eu
deixo aqui uma pequena bibliografia recomendada livros muito bons onde você vai encontrar informações sobre esse assunto beleza gente então é isso aí agradeço vocês e até o próximo vídeo Então é isso aí pessoal espero que vocês tenham gostado desse vídeo aproveitem para se inscrever aqui no canal da Boss no treinamento Se vocês não forem inscritos ainda e se já forem inscritos cliquem no Sininho aqui embaixo para ativar as notificações e assim serem avisados Quando tivermos conteúdo novo postado aqui no canal e se você quiser contribuir com a boson treinamentos torne-se membro do nosso clube de
canais temos o link aqui embaixo na descrição do vídeo e também o botão seja membro do YouTube com as instruções e não deixe de acessar o nosso website www.bosontreinamentos.com.br além de nos seguir nas redes sociais hein que estão aparecendo aqui em cima obrigado e até a próxima