Desenvolvimento em kernel
Tradução Michel Manarin
Introdução
Desenvolvimento em kernel não é uma tarefa fácil. Apenas bons programadores conseguem desenvolve-lo. Desenvolvimento em kernel é como dizer que você entende como criar um software, que interaja com hardware. Um kernel é núcleo central do sistema operacional ou seja a logica que administra os recursos que o hardware pode oferecer.
Um dos mais importantes recursos que necessita ser gerenciado é o processador ou CPU, fazendo o mesmo, administrar as atribuições de tempo para determinada operação, e possivelmente interromper uma tarefa ou processo, quando há mais eventos para acontecer. Isto implica em multitarefas. A multitarefa cooperativa é quando o próprio aplicativo ou tarefa determina quando tempo de processamento será utilizado, determinando assim, quando o processamento de tarefa irá acabar passando assim ‘a bola’ para outra tarefa. A multitarefa preventiva, tem um escalonamento de processos, ou seja uma lista, baseado em prioridades e totalmente gerenciado pelo sistema. O temporizador do sistema é utilizado para interromper o processo atual, para fazer a troca para um novo processo: é a forma de troca forçada, isto é mais garantido que delimitar um tempo especifico para que o processo possa ser executado. Existem diversos algoritmos para descobrir qual será a ordem dos próximos processos a serem utilizados. O mais simples deles, é chamado de ‘Round Robin’. Isto é o local onde você simplesmente pega o próximo processo na lista e escolhe qual ira ser executado. Um agendador mais complicado é envolver prioridades, onde certamente as prioridades maiores, são permitidas para que possam obter um tempo maior de execução que as menores. Ainda mais complicado é a agenda em tempo real. Isto é designado para garantir que um processo terá um determinado numero de pulsos do timer para ser executado. Finalmente este recurso calculo o tempo.
O próximo recurso mais importante do sistema