TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Sistemas operacionais

Por:   •  31/5/2015  •  Trabalho acadêmico  •  996 Palavras (4 Páginas)  •  313 Visualizações

Página 1 de 4

[pic 1]              DISCIPLINA: ____________________________________________[pic 2][pic 3]

PROFESSORA: __________________________________________[pic 4][pic 5]

SEMESTRE: ___________________      DATA: _________________

[pic 6]

ALUNOS: ________________________________________________________________

[pic 7]

Como o escalonamento é realizado em seu projeto?

O algoritmo de escalonamento usado em qualquer sistema operacional baseado em Linux depende da entidade chamada de núcleo. Android é um sistema operacional que usa um Kernel Linux modificado.

O Linux trata threads e não os processos como a unidade fundamental para a execução.

Assim, o escalonamento no Android refere-se a threads e não a processos. O escalonador aloca o tempo de execução para threads em um processador. Cada thread que está em execução em um aplicativo está competindo com todos os outros threads no pedido de tempo de execução. O escalonador decide qual thread deve ser executado e por quanto tempo ele deve ser autorizado a executar antes dele pega um novo thread para executar e uma mudança de contexto ocorrer.

Um escalonador escolhe o próximo thread para executar dependendo de algumas de suas propriedades, que são diferentes para cada tipo de escalonamento, embora a prioridade do thread seja o mais importante.

No Android, os threads de aplicação são escalonados pelo padrão de escalonamento do Kernel do Linux e não pela Máquina Virtual Dalvik. Na prática, isto significa que os threads em nossa aplicação estão competindo não só diretamente uns com os outros para o tempo de execução, mas também contra os threads em todas as outras aplicações.

O escalonador do kernel Linux é conhecido como um Completely Fair Scheduler (CFS). Ele é "justo" no sentido de que tenta equilibrar a execução de tarefas não só com base na prioridade do segmento, mas também pelo monitoramento da quantidade de time execução que foi dado a um thread. Se um thread teve baixo tempo de acesso ao processador, ele será autorizado a executar antes dos threads de maior prioridade. Se um thread não usa o tempo alocado para executar, o CFS irá assegurar que a prioridade será reduzida para que ele tenha menos tempo de execução no futuro.

A plataforma tem principalmente duas maneiras de alterar o escalonamento de threads:

Prioridade: Altera a prioridade do thread no Linux.

Grupo de controle: Altera o grupo de controle específico do Android.

Prioridade:

Todos os threads em um aplicativo são associados a prioridade que indica para o escalonador qual o tempo de execução que cada thread deve alocar em cada mudança de contexto. No Linux, a prioridade do thread é chamado de "gentileza" (niceness) ou "valor legal" (nice value), que, basicamente, é uma indicação de quão bem um thread deve se comportar em relação a outros threads. Assim, uma gentileza baixa (low niceness) corresponde a uma alta prioridade. No Android, um thread tem valores niceness na faixa de -20 (mais priorizadas) a 19 (menos priorizados), com uma niceness padrão 0. Um thread herda sua prioridade desde o thread onde ele é iniciado e o mantém a menos que seja explicitamente alterado pela aplicação.

Grupos de Controle:

O Android não só conta com o CFS do Linux para escalonamento de threads, mas também impõe Grupos de Controle em todos os threads. Os Grupos de Controle de threads são contêineres do Linux que são usados para gerenciar a alocação de tempo de processador para todos os threads em um contêiner.

Todos os threads criados em um aplicativo pertencem a um dos Grupos de Controle de threads. O Android define vários grupos de controle, mas os mais importantes para as aplicações são os Grupos Foreground (Foreground Group ou Grupos de Primeiro Plano) e os Grupos Background (Background Group ou  Grupos de Plano de Fundo). A plataforma Android define restrições de execução, de modo que os threads nos diferentes grupos de controle são atribuídos diferentes quantidades de tempo de execução do processador. Para os threads no Grupo de Primeiro Plano é alocado muito mais tempo de execução que para os threads no Grupo de Plano de Fundo, e o Android utiliza isso para garantir que os aplicativos visíveis na tela fiquem com mais tempo de alocação do processador que os de aplicativos que não estão visíveis na tela.

...

Baixar como (para membros premium)  txt (6.4 Kb)   pdf (118.3 Kb)   docx (19.7 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com