Você está na página 1de 1

O Escalonamento de Processos no Mac OS

Por Vítor Rideik e Thiago Carrere

O escalonamento de processadores é a forma com os processadores existentes


Num sistema computacional são utilizados para efetuar o processamento,
Isto é, é como os processos são distribuıdos para execução nos Processadores.

Tanenbaum propõe a seguinte definição:

Quando mais de um processo é executável, o sistema operacional


Deve decidir qual será executado primeiro. A parte do sistema operacional dedicada a esta
decisão é chamada escalonador (scheduler) e o algoritmo utilizado é chamado algoritmo de
escalonamento
(scheduling algorithm). [TAN92, p. 62]

O escalonador de processos do Mac OS X é derivado do escalonador OSFMK, porém várias


modificações foram feitas para o tratamento de interatividade no projeto de escalonador base.
Assim como o kernel do FreeBSD (5.0BSD), o escalonador de processos do Mac OS X
escalona os processos baseado numa variante do algoritmo de múltiplas filas com
realimentação, porém divide as filas de prioridades em 4 grupos de processos, agrupados de
acordo com suas características.

1. Normal: Prioridade das aplicações normais do usuário.


2. Sistema: Prioridade das aplicações do sistema, com prioridade superior as threads
normais de usuário.
3. Kernel: Classe reservada para threads em espaço de kernel que necessitam rodar
Com uma prioridade superior às threads de sistema.
4. Tempo real Threads nas quais a prioridade está baseada na necessidade de reservar
uma fração pré-definida de ciclos de clock, independente de outras
atividades sendo executadas no sistema.

No caso de tarefas de tempo real, È feito um controle forte pela aplicação no número de ciclos
do processador a serem utilizados. Assim, o programador utiliza chamadas de sistema para
requisitar ao sistema rodar por A ciclos nos próximos B ciclos. Por exemplo, um processo de
tempo real pode requisitar ao kernel que, para que ele possa executar corretamente dentro dos
seus padrões mínimos aceitáveis, ele necessite, a cada 7000 ciclos, 3000 ciclos reservados a
ele.

Caso a aplicação não respeite o número de ciclos requisitados, ou seja, não faça uma
operação de E/S ou use a chamada de sistema sched yield, um processo de tempo real será
penalizado dentro de sua fila de prioridades, sendo inclusive possível a migração para o grupo
de processos Normal, visando um maior desempenho e justiça no sistema.

A escolha do processo a ser executado obedece o algoritmo de Múltiplas Filas com


realimentação, sendo executados os grupos de filas de maior prioridade (Tempo real) e por
último o grupo de filas de prioridade de usuário (Normal).
A migração entre os diferentes grupos de threads e feita através do nível de prioridade
explicitada pelo usuário. A migração entre as filas de prioridade dentro do grupo de tarefas de
usuário é determinada pelo determinador de interatividade.

Você também pode gostar