TRABALHO DE SISTEMAS OPERACIONAIS – ESCALONAMENTO DE PROCESSOS
Por: Rodrigo.Claudino • 13/10/2018 • 1.417 Palavras (6 Páginas) • 378 Visualizações
...
- Escalonamento de processos – MAC OS X
- Sobre o MAC
O Mac OS X é um sistema operacional formado de vários componentes projetados e implementados pela Apple. Embora o sistema seja em maior parte fechado, possui uma grande parte do código aberto, denominado Darwin. O kernel do Mac OS X, chamado XNU (X is Not Unix), foi originalmente desenvolvido pela extinta empresa NeXT para ser um kernel híbrido.
- Escalonamento no MAC OS X
Para melhor entender o processo de escalonamento no Max OS X, é preciso entender a Camada Mach: a Mach pode ser o núcleo do kernel, pois provê os serviços de baixo nível de forma transparente para as aplicações do usuário. Tal como um microkernel, a base de seu funcionamento se dá por troca de mensagem, provendo apenas as funcionalidades de gerência de processos, comunicação entre processos, gerência e suporte à memória virtual e tratamento de interrupções do hardware. Para atender a estes serviços, a Mach possui as seguintes abstrações: portas, tasks, threads, espaço de endereçamento e mensagens. É utilizando estas abstrações que a camada opera suas atribuições escalonando processos, controlando a comunicação entre processos, gerencia de memória e relógio.
Então...
O escalonamento fica a cargo da camada Mach e é feito sobre as threads. Portando, o XNU não possui “escalonamento de processos” e sim “escalonamento de threads”. Esta abordagem possui a vantagem de permitir que threads diferentes possam ser distribuídas para diferentes processadores em sistemas com vários núcleos. Além disso, ainda possibilita que o overhead interno de um processo, causado pela troca de contexto das threads, seja minimizado. O algoritmo de escalonamento das threads utilizado pelo XNU é composto de múltiplas filas, onde cada uma possui uma prioridade diferente. Cada nível de prioridade é classificado em 4 grupos básicos, sendo que cada grupo recebe uma faixa de pontuação por prioridade [5]: Normal (0-63), alta prioridade (64-79), modo kernel (80- 95) e prioridades de tempo real (98-127). Portanto, existe um total de 127 tipos de prioridades, significando que o escalonador tem que manter esta quantidade de filas. Toda vez que uma thread ganha tempo de CPU, ela perde 1 ponto de prioridade. Para evitar que as prioridades das threads fiquem indiferenciáveis após um tempo, cada tipo de thread (normal, de sistema, modo kernel ou tempo real) deve possuir uma prioridade base e outra máxima. Desta forma, uma thread do kernel sempre terá prioridade sobre uma de prioridade normal, garantindo bom funcionamento dos serviços do sistema operacional. Embora o principal fator para a mudança de nível da thread seja a posse da CPU, o escalonador também utiliza outros fatores para determinar sua prioridade: o escalonador verifica a demanda dos recursos necessários pela thread. Dependendo da sua classe, é possível redefinir sua prioridade, privilegiando aquelas que necessitam muito mais da CPU do que aquelas que ficam em espera ocupada. [pic 4]
- Escalonamento de processos – WINDOWS 2000
4.1 Escalonamento no WINDOWS 2000
O escalonador do Windows 2000 é preemptivo com prioridades. As prioridades são organizadas em duas classes: tempo real e variável. Cada classe possui 16 níveis de prioridades, sendo que as threads da classe tempo real têm precedência sobre as threads da classe variável. Todas as threads prontas para executar são mantidas em estruturas de filas associadas a prioridades em cada uma das classes. Cada fila é atendida por uma política Round-robin (assinaturas circulares). A atribuição de prioridades a threads é diferente para cada uma das classes. Enquanto na classe de tempo real, as threads possuem prioridade fixa, determinada no momento de sua criação, as threads da classe variável têm suas prioridades atribuídas de forma dinâmica. Dessa forma, uma thread de tempo real, quando criada, recebe uma prioridade e será sempre inserida na fila dessa prioridade, ao passo que uma thread da classe variável poderá migrar entre as diferentes filas de prioridades. Na classe variável, a prioridade de uma thread é estabelecida a partir de dois parâmetros, um vinculado à própria thread e outro, ao processo a que pertence. O critério empregado para variar a prioridade de uma thread é o tempo de utilização do processador. Se a thread for preemptada por ter executado durante todo o quantum de tempo que lhe foi atribuído, o escalonador do Windows 2000 diminui sua prioridade; caso contrário, sua prioridade é aumentada. Em outros termos, o escalonador do Windows 2000 tende a atribuir prioridades mais elevadas para threads do tipo I/O bound. Em máquinas monoprocessadoras, a thread de mais alta prioridade está sempre ativa a menos que esteja bloqueada esperando por um evento (E/S ou sincronização).
...