quinta-feira, 29 de outubro de 2009

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.

Como o Sistema Operacional gerencia a memória

Ricardo Verzi e Michele Martins

Alocação Contígua Simples: A forma mais simples de gerenciar a memória é dividindo ela em duas partes, mais conhecida como Alocação Contígua Simples, uma parte para o S.O e a outra para o uso dos processos do usuário. A parte dedicada aos processos do usuário é subdivida em partições de tamanhos iguais ou diferentes porem sempre fixas, a alocação contígua simples era utilizada em antigos S.O.
Multiprogramação com Partições Fixas: A principal virtude desse modelo de gerenciamento de memória reside no fato de que a CPU pode ser utilizada de uma maneira mais proveitosa. Em sistemas de compartilhamento de tempo, ter múltiplos processos na memória simultaneamente significa que quando um processo é bloqueado esperando a E/S acabar, outro pode utilizar a CPU.

O S.O. é responsável pelo controle das partições mantendo informações como partições alocadas, partições livres e tamanho das partições. Quando o sistema operacional gerencia a memória do computador, duas grandes tarefas precisam ser cumpridas.
1. Cada processo deve ter memória suficiente para ser executado. Ele não pode utilizar a memória de outro processo e outro processo também não pode utilizar a sua memória.
2. Os diferentes tipos de memória no sistema devem ser bem utilizados para que cada processo seja executado de forma eficaz.

Paginação: Quando o computador tem pouca memória RAM e precisa de mais imediatamente, o Windows usa o espaço em disco rígido para simular memória RAM do sistema. Isso é conhecido como memória virtual e é freqüentemente denominado arquivo de paginação. O tamanho padrão do arquivo de paginação da memória virtual (denominado pagefile.sys) criado durante a instalação tem 1,5 vezes a quantidade de RAM do computador.
É possível otimizar o uso da memória virtual dividindo o espaço entre as várias unidades e removendo-a de unidades mais lentas ou muito acessadas. Para melhor otimizar o espaço da memória virtual, divida-o entre o maior número possível de discos rígidos físicos. Ao selecionar unidades, tenha as seguintes diretrizes em mente:
- Evite ter um arquivo de paginação na mesma unidade que os arquivos de sistema.
- Não coloque vários arquivos de paginação em partições diferentes no mesmo disco rígido físico.

Limite mínimo recomendado e máximo de memória física

WINDOWS XP

Windows XP Professional – 32 bit
Mínimo recomendado 128 MB
Máximo recomendado 4 GB

Windows XP Professional – 64 bit
Mínimo recomendado 256 MB
Máximo recomendado 16 GB

WINDOWS VISTA

- Windows Vista Ultimate
Mínimo 512 MB
Recomendado 1 GB
Máximo 125 GB

- Windows Vista Home Premium
Mínimo 521 MB
Recomendado 1 GB
Máximo 16 GB

Escalonamento no Windows XP

Por Jones Henrique e Luiz Valério

Escalonamento de Processos

O escalonamento de processos ou agendador de tarefa é uma atividade organizacional feita pelo escalonador (scheduler) da CPU ou de um sistema distribuído, possibilitando executar os processos mais viáveis e concorrentes, priorizando determinados tipos de processos, como os de I/O Bound e os computacionalmente intensivos.

O escalonador de processos de 2 níveis escolhe o processo que tem mais prioridade e menos tempo e coloca-o na memória principal, ficando os outros alocados em disco; com essa execução o processador evita ficar ocioso.

Escalonamento no Windows XP

O Windows XP é um sistema operacional gráfico de 32bits, multitarefa preenptiva e plug and play que aproveita melhor os recursos das máquinas de 386 para cima.

Multitarefa é a capacidade que o Windows tem de executar vários processos (aplicativos) ao mesmo tempo. Existem dois modos de Multitarefa: a multitarefa preemptiva que é utilizada por aplicativos de 32 bits baseados em Windows 95 e a multitarefa cooperativa que é utilizada por aplicativos de 16 bits baseados em Windows 3.1.

Em um sistema Multitarefa preemptivo, cada encadeamento é executado durante um tempo determinado ou até que outro encadeamento de prioridade maior esteja pronto para ser executado. Como o agendamento é controlado pelo sistema operacional sem a cooperação do aplicativo, torna-se mais difícil para um programa ou encadeamento monopolizar o processador. Para impedir que encadeamentos de processos diferentes tenham acesso a um recursos que não podem ser compartilhados (como uma porta serial), o programa pode definir semáforos (sinalizadores especiais utilizados pelo programa) para bloquear este recurso até que ele termine de ser utilizado. No Windows XP, programas do MS-DOS e de 32 bits baseados no Windows são Multitarefa Preemptiva.

Em sistema Multitarefa cooperativos (também denominados não-apropriativos), um encadeamento é executado até que voluntariamente abandone o processador. O programa determina quando o encadeamento pára a execução. No Windows XP, programas de 16 bits baseados no Windows são Multitarefa de modo cooperativo, entre si. Todos os programas de 16bits baseados no Windows, juntos, são tratados como uma única tarefa para o Multitarefa Preemptivo. Este processo Multitarefa híbrido é necessário para manter a compatibilidade com programas de 16 bits baseados no Windows que controlam sua própria execução.