TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Engenharia Sistemas

Monografias: Engenharia Sistemas. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  29/11/2014  •  8.307 Palavras (34 Páginas)  •  383 Visualizações

Página 1 de 34

KERNEL DE UM SISTEMA OPERACIONAL

Kernel de um sistema operacional é entendido como o núcleo ou cerne. Ele representa a camada mais baixa de interface com o Hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo. É no kernel que estão definidas funções para operação com periféricos (mouse, discos, impressoras, interface serial/interface paralela), gerenciamento de memória, entre outros. Resumidamente, o kernel é um conjunto de programas que fornece para os programas de usuário (aplicativos) uma interface para utilizar os recursos do sistema.

Quanto à sua arquitetura, o kernel pode ser monolítico — em um único bloco, com todas as funcionalidades carregadas na memória —, ou modular — com os módulos específicos para cada tarefa carregados opcionalmente, dinamicamente.

O kernel é a parte mais importante do sistema operacional, pois, sem ele, a cada programa novo que se criasse seria necessário que o programador se preocupasse em escrever as funções de entrada/saída, de impressão, entre outras, em baixo nível, causando uma duplicação de trabalho e uma perda enorme de tempo. Como o kernel já fornece a interface para que os programas possam acessar os recursos do sistema de um nível mais alto e de forma transparente, fica resolvido o problema da duplicação do trabalho.

Quando há periféricos ou elementos de um sistema computacional que o kernel não cobre, então se faz necessário escrever a interface para eles, os chamados drivers. Geralmente, os kernels oferecem uma função para se executar chamadas de sistema, como por exemplo do Linux. Valendo-se dessa função, podem-se escrever rotinas para qualquer periférico.

Responsabilidades do kernel

As responsabilidades do kernel consistem, genericamente, em abstrair interfaces de hardware diversas e gerir os recursos do computador, permitindo que os processos utilizem estes recursos concorrentemente de forma segura e padronizada, fornecendo a estes uma interface unificada para os diversos componentes do sistema computacional.

Em um computador, a parte central é a CPU: o dispositivo que "executa" os diferentes programas. A memória RAM é o outro recurso crucial do computador: o conjunto de chips onde os programas são carregados para execução e onde são armazenados os seus dados de acesso rápido. Estes são os principais recursos que o kernel gere e divide entre as aplicações.

O kernel deve também gerir a entrada e saída, de modo a assegurar que apenas um programa acesse a determinado dispositivo a dada altura. Finalmente, o kernel deve disponibilizar aos processos, executados em espaço do usuário, uma interface uniforme para atender aos seus serviços.

Gerenciamento de processos

A principal tarefa do kernel de um sistema operacional (SO) é permitir a execução de aplicações e dar suporte a elas através de níveis de abstração sobre o hardware. Para executar uma aplicação, o kernel precisa carregar na memória o arquivo que contém o código da aplicação (e eventualmente inicializar o seu próprio espaço de endereçamento), inicializar a pilha de execução do programa e assim iniciar a sua execução.

Um kernel multitarefa é preparado para dar ao usuário a ilusão que o número de processos em execução simultânea no computador é maior que o número máximo de processos que o computador é capaz de executar simultaneamente. Tipicamente, o número de processos que um sistema pode executar simultaneamente é igual ao número de CPUs instaladas.

Em um sistema multitarefa, o kernel dá a cada programa uma fatia do tempo e alterna de processo para processo tão rapidamente que o usuário pensa que estes processos são executados simultaneamente. O kernel utiliza algoritmos de agendamento para determinar qual processo será executado na sequência e quanto tempo ele terá, ele também considera que um processo pode ter uma prioridade maior em relação aos outros. O kernel deve disponibilizar aos processos um modo para que se comuniquem; isto é obtido através de memória compartilhada e/ou interrupções de software.

Gerenciamento de memória

O kernel tem acesso completo à memória do sistema e deve permitir que os programas do espaço do usuário tenham acesso seguro à memória quando o requisitam. O primeiro passo para permitir esta funcionalidade é o endereçamento virtual, usualmente obtido através da paginação ou segmentação. O endereçamento virtual permite ao kernel fazer com que um dado endereço apareça como outro, o endereço virtual. Isto permite ao programa acreditar que ele é o único em execução (com exceção do kernel) e assim previne que as aplicações colidam umas com as outras.

Um endereço virtual de um programa pode ser uma referência a dados que não estão na memória RAM. O nível de abstração disponibilizado pela memória virtual permite ao sistema operacional o uso de outros repositórios de dados, como discos rígidos, para armazenar aquilo que, de outra forma, seria armazenado na memória principal do sistema. Como resultado, os sistemas operacionais permitem que um programa utilize mais memória que aquela disponível fisicamente no sistema. Quando um programa necessita de dados que não estão na memória naquele momento, o SO escreve no disco os dados encontrados numa porção de memória não utilizada e substituí-a com os dados que o programa requisitou.

Além disso, o endereçamento virtual permite a criação de partições virtuais da memória, na forma de duas áreas separadas, uma reservada para o kernel (espaço do kernel) e outra para as aplicações (espaço do usuário).

Gerenciamento de dispositivo

Para realizar algum trabalho real, o SO precisa acessar os periféricos conectados ao computador, que são controlados por drivers de dispositivo disponibilizados por desenvolvedores e/ou fabricantes deste dispositivo (hardware). Por exemplo, para mostrar algo na tela, o kernel delega o trabalho ao driver de monitor que fica responsável por mostrar os caracteres.

Inicialmente, um gerenciador de dispositivo realiza uma busca nos diferentes barramentos existentes (como PCI ou USB) para descobrir dispositivos instalados, e então procura pelos drivers apropriados. Como o gerenciamento de dispositivo é um assunto especificamente de sistemas operacionais, estes drivers são manipulados de maneira diferente em cada projeto de kernel, mas em todos os casos, o kernel deve disponibilizar a I/O para permitir que estes drivers acessem fisicamente os dispositivos através de alguma porta ou locação de memória. Decisões muito importantes devem ser tomadas em um projeto

...

Baixar como (para membros premium)  txt (57.8 Kb)  
Continuar por mais 33 páginas »
Disponível apenas no TrabalhosGratuitos.com