Componentes do Kernel e Gerência de Processos
Classificado em Computação
Escrito em em
português com um tamanho de 3,63 KB
Os principais componentes do kernel do SO são: gerência de processador, gerência de memória, sistema de arquivos e gerência de entrada e saída.
Gerência de processos: Existem várias informações que o sistema operacional deve manter a respeito dos processos. No "programa" sistema operacional, um processo é representado por um registro. Esse registro é chamado de bloco descritor de processo ou simplesmente descritor de processo (DP). No DP, fica tudo que o sistema operacional precisa saber sobre o processo. Um processo quase sempre faz parte de alguma fila e os próprios descritores de processo são utilizados como elementos dessas filas, implementadas como listas encadeadas. Abaixo está uma lista de campos normalmente encontrados no DP:
- Prioridade do processo no sistema, usada para definir a ordem na qual os processos recebem o processador;
- Localização e tamanho da memória principal ocupada pelo processo;
- Identificação dos arquivos abertos no momento;
- Informações para contabilidade, como tempo de processador gasto, espaço de memória ocupado, etc.;
- Estado do processo: apto, executando, bloqueado;
- Contexto de execução quando o processo perde o processador, ou seja, conteúdo dos registradores do processador quando o processo é suspenso temporariamente;
- Apontadores para encadeamento dos blocos descritores de processo.
Chaveamento de contexto: A base da multiprogramação é o compartilhamento do processador entre os processos. Em um sistema multiprogramado, é necessário interromper processos para continuá-los mais tarde. Essa tarefa é chamada de chaveamento de processo, ou chaveamento de contexto de execução. O local usado para salvar o contexto de execução de um processo é o seu próprio bloco descritor.
Threads: Um processo é uma abstração que reúne uma série de atributos como espaço de endereçamento, descritores de arquivos abertos, permissões de acesso, quotas, etc. Um processo possui ainda áreas de código, dados e pilha de execução. Também é associado ao processo um fluxo de execução. Por sua vez, uma thread nada mais é que um fluxo de execução. Na maior parte das vezes, cada processo é formado por um conjunto de recursos mais uma única thread.
A ideia de multithreading é associar vários fluxos de execução (várias threads) a um único processo. Em determinadas aplicações, é conveniente disparar várias threads dentro do mesmo processo (programação concorrente). É importante notar que as threads existem no interior de um processo, compartilhando entre elas os recursos do processo, como o espaço de endereçamento (código e dados). Devido a essa característica, a gerência de threads (criação, destruição, troca de contexto) é "mais leve" quando comparada com processos. Threads são muitas vezes chamadas de processos leves.
Escalonador de curto prazo: Seleciona entre os processos em estado de pronto que estão na memória para serem executados pelo processador. O escalonador de curto prazo faz decisões de escalonamento muito mais frequentemente que os de médio e longo prazo.
Escalonador de médio prazo: É responsável por colocar e retirar os processos da memória (controle de swap).
Escalonador de longo prazo: Quando a máquina está sobrecarregada, este escalonador agenda as tarefas para serem executadas no futuro, utilizado normalmente em servidores.