Os arquitetos da Bell Laboratories e seus associados originais da General Electric e do Instituto de Tecnologia de Massachusetts projetado Unix como um poderoso sistema operacional multitarefa . O kernel do Unix - o núcleo ou o centro em torno do qual a funcionalidade externa do OS é mergulhado - fala com o hardware nu-ossos através de drivers de dispositivos e software para controlar processos e alocar recursos do sistema. Um processo em Unix é qualquer procedimento de controle de fluxo executável carregado na memória, e torna-se a atenção do CPU somente quando o kernel permite. Processo
A parte central e crucial do kernel do Unix , o subsistema de controle de processos , é responsável pela sincronização de processos , comunicação inter- processo , processo de agendamento e gerenciamento de memória. Um processo cria um processo filho usando o fork () chamada de sistema e, com exceção para o processo 0, todos os processos têm um processo pai que chamou fork () em algum momento de criar a criança .
O kernel identifica um processo por sua identificação , referido como PID . Um processo Unix funciona no modo usuário ou modo kernel, e mantém duas pilhas separadas ao alternar entre eles. Um processo entra em modo kernel quando ele faz uma chamada de sistema ou recebe uma interrupção ou um sinal , dando-lhe maior prioridade e mais reivindicação de recursos e de preempção do que aqueles no modo de usuário .
Agendamento
o kernel permite que um processo novo ou diferente para usar a CPU somente quando o primeiro processo vai dormir, e não permitir que ele para mudar o estado ou recursos de acesso atribuídos a outro processo. Módulo programador do kernel preempts um processo de usuário periodicamente para evitar que ele monopolizar o CPU , no entanto.
Controle
Processos se comunicam entre si através de chamadas de sistema , e enquanto eles podem sugerir que outro processo ir embora, apenas o kernel pode antecipar isso. Um processo pode ir dormir em seu próprio, mas o kernel pode despertá-lo . Processos tipicamente dormir em um evento, esperando para ocupar a CPU , enquanto o evento desejado não ocorreu.
Sinais
Quando o kernel aloca a CPU para outro processo, chamado de uma mudança de contexto , o processo de preempção é salvo na pilha , permitindo-lhe continuar de onde parou em seu próximo turno. Um processo pode enviar um sinal para outro, ou o kernel pode enviar um sinal internamente , mas apenas o kernel pode enviar um sinal a um processo em execução para antecipar -lo de modo que ele vai dormir. O kernel então troca -lo por um processo de ready- to-run que estava esperando para obter o controle da CPU. Um processo pode dormir à uma certa prioridade interruptível e ignorar um sinal de baixa prioridade .
Quinhão
O kernel implementa um algoritmo de escalonamento de quinhão que lhe dá a processos partes de tempo da CPU com base em prioridades atribuídas, dependendo da natureza da tarefa . Processos de prioridade mais alta se programado com mais freqüência e receber mais tempo de CPU , mas um processo pode exercer controle bruto de sua programação , usando o bom chamada system () da seguinte forma : nice (valor) ; prioridade do processo é uma função deste valor legal. prioridade do processo de uso da CPU = recente /a prioridade + base constante + valor legal.
Este algoritmo dá grupo de usuários a duas vezes o slot para o grupo B , três vezes maior do que C e quatro vezes maior do que D, onde os processos de usuário são agrupadas por prioridade . Este método não é adequado para processamento em tempo real , onde o processo não pode dar ao luxo de esperar em tarefas de missão crítica ; . Tal processo ganha uso imediato CPU , fazendo chamadas de sistema e envio de sinais de interrupção de alta prioridade