Gerenciamento de Processos Windows 10
Por: Crristovao • 10/8/2018 • Pesquisas Acadêmicas • 1.735 Palavras (7 Páginas) • 469 Visualizações
[pic 1]
1 Gerenciamento de Processos
- Scheduling de Processos no Windows NT
O escalonador do Windows NT [1] é preemptivo, isso significa dizer que o SO controla totalmente o programa que é executado, em um determinado momento e por quanto tempo. Cada programa pode ser executado por um pequeno quantum de tempo. Quando o quantum expira, o SO salva as informações sobre o estado do programa em execução para que ele possa mais tarde começar a execução de onde parou. Em seguida, carrega o próximo programa para a execução. O processo de salvar o estado de um programa e carregar outro é chamado de mudança de contexto.
Dado isso, as prioridades do escalonador é organizado em duas classes: tempo real e variável. Cada classe possui 16 níveis de prioridades, sendo que as threads de 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 (cada fila usa a política RR) de acordo com as prioridades em cada uma das classes.
A atribuição de prioridades é diferente para cada uma das classes. As threads da classe de tempo real possuem prioridade fixa determinada no momento da criação, enquanto que as threads da classe variável tem suas prioridades atribuídas de forma dinâmica. Assim quando uma thread da classe de tempo real é criada, recebe uma prioridade e é inserida sempre na fila dessa prioridade, já uma thread da classe variável pode migrar entre as filas de prioridades.
Na classe variável, a prioridade das threads é formada por dois parâmetros, um vinculado a própria thread e o outro vinculado ao processo a que ela pertence.
Um objeto processo recebe na sua criação, uma prioridade que varia de zero a quinze e cada thread recebe uma prioridade variando de duas unidades para cima ou para baixo da prioridade do processo. O critério usado para variar a prioridade de uma thread é o tempo de uso do processador. Se a thread é interrompida por usar todo o quantum de tempo que lhe foi atribuído, o escalonador reduz sua prioridade, caso contrário sua prioridade é aumentada.
- Comunicação entre processos (IPC) [1.2]
Windows NT dá a cada processo um espaço de endereço separado. Isso faz com que os aplicativos e o SO seja mais confiável, robusto e seguro. No entanto, ele também torna a comunicação entre threads em diferentes processos mais difícil porque os threads não visualizam a memória ou chamam funções de outros processos. Esse problema é mais agudo para aplicativos e processos do subsistema que precisam se comunicar com frequência devido à sua relação cliente-servidor.
Este problema é resolvido através da canalização de comunicação entre processos através de um componente do Windows NT chamado de gerenciador de comunicação entre processos (IPC). O gerenciador de IPC fornece mecanismos eficientes de threads em diferentes processos para enviar mensagens uns aos outros.
Considere o que acontece quando um processo Win32 (cliente) chama uma função que é fornecida pelo processo do subsistema Win32 (servidor):
1) Uma mensagem é construída no processo do cliente. A mensagem especifica qual função será executada. A mensagem também contém todos os dados da função que o servidor terá de executar.
2) A mensagem é enviada a partir do processo do cliente para o processo servidor via gerenciador de IPC do Windows NT. O gerenciador IPC recupera a mensagem do processo do cliente, realiza uma mudança de contexto para que o processo do servidor execute e entrega a mensagem para o processo do servidor.
3) O processo do servidor executa a função solicitada.
4) O servidor constrói uma mensagem de resposta para enviar para o cliente. A mensagem de resposta pode conter o resultado da execução da função.
5) O servidor envia a mensagem de volta para o cliente através do gerenciador de IPC. O gerenciador de IPC recupera a mensagem do processo do servidor, volta para o contexto do processo de cliente e entrega a mensagem.
Embora os processos de cliente e servidor não podem chamar funções um do outro diretamente, o gerenciador de IPC fornece uma maneira para eles fazerem a mesma coisa através da troca de mensagens. Isso é possível porque o gerenciador de IPC é executado em modo privilegiado (kernel) e pode ver os espaços de endereço de ambos os processos, cliente e servidor. Segurança e confiabilidade do sistema nunca são comprometidas porque os processos (usuário) de cliente e servidor não operam em modo privilegiado, e nunca serão capazes de ver espaços de endereço um do outro.
- Multitarefa
Para ajudar a garantir uma experiência de usuário rápida, responsiva e otimizar o consumo de energia no dispositivo, no Windows Phone apenas um aplicativo pode ser executado em primeiro plano num intervalo de tempo. No entanto, vários recursos do WP dão à aplicativos a capacidade de executar ações, mesmo quando o aplicativo não estiver no plano ativo (foreground) [2].
Exemplos de tarefas que são executadas em foreground:
- Background audio (Áudio em background);
- Scheduled tasks (Agendamento de tarefas);
- Background file transfers (Transferência de arquivos em background);
- Scheduled notifications (Notificações);
- Fast Application Switching (Troca rápida de aplicação);
A seguir estão os tipos de Scheduled Taks (Agendamento de Tarefas):
PeriodicTask
Agentes Periódicos executam em um curto período de tempo num intervalo recorrente regular. Cenários típicos para este tipo de tarefa incluem upload de localização do dispositivo e executar pequenas quantidades de sincronização de dados [3].
ResourceIntensiveTask
Agentes de Uso Intensivo executam por um período relativamente longo de tempo quando o telefone atende a um conjunto de requisitos relativos a atividade do processador, fonte de alimentação e conexão de rede. Um cenário típico para este tipo de tarefa é sincronizar grandes quantidades de dados para o telefone enquanto ele não está sendo usado ativamente pelo usuário [3].
1.3.1 Threads
O Windows NT suporta o uso de vários threads, dando vantagens de vários processos serem executados sem a sobrecarga (overhead) de criação de espaço de endereço separado. Cada programa pode ter um ou mais threads de execução que executam as tarefas diferentes ao mesmo tempo. Por exemplo, um aplicativo de planilha pode dedicar um thread para gerenciar a interface do usuário, outro thread para executar em background o recálculo de valores da planilha. Do ponto de vista da aplicação, ambos os threads executar simultaneamente.
...