universidade estadual de ponta grossa setor de ciências

Propaganda
UNIVERSIDADE ESTADUAL DE PONTA GROSSA
SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA
DEPARTAMENTO DE INFORMÁTICA
GABRIEL BOJKO
LUIZ OTÁVIO OYAMA
MECANISMO DE ESCALONAMENTO DE APLICAÇÕES NO iOS
PONTA GROSSA
2016
GABRIEL BOJKO
LUIZ OTÁVIO OYAMA
MECANISMO DE ESCALONAMENTO DE APLICAÇÕES NO iOS
Pesquisa apresentada para obtenção de
nota parcial na Universidade Estadual
de Ponta Grossa, na disciplina de
Sistemas Operacionais.
Professor: Dierone César Foltran Júnior.
PONTA GROSSA
2016
1. INTRODUÇÃO
Não podemos falar de iOS sem lembrar do seu principal idealizador: Steve
Paul Jobs, nome pelo qual deve perdurar por tempos no cenário da Tecnologia da
Informação. Grande parte do globo já pode ter utilizado algumas de suas criações,
principalmente as provenientes da Apple. Vale citar aqui o Macintosh (Mac), iPhone,
iPad, onde estes dois últimos fazem uso do Sistema Operacional iOS, abordado
neste trabalho.
Famoso por sua segurança, estabilidade e confiança, o iOS é conhecido
como um dos melhores Sistemas Operacionais do mundo. Juntamente com o
primeiro iPhone, foi originalmente lançado em 2007 e seu nome até a versão 4.0 era
“iPhone OS”. Em 2010 passou a ser o sistema embarcado utilizado nos iPads,
também da Apple.
Antes de expressar detalhes a respeito do Escalonamento de Processos no
iOS, é importante definir alguns termos, como “processo”, “multiprogramação” e
“escalonador de processos”. Entrando no mérito de Sistemas Operacionais, um
processo é uma abstração de um programa em execução (NOVATO, Douglas
2014). Ele mantém a capacidade de operações “pseudoconcorrentes”, mesmo
quando existe apenas uma CPU disponível, CPU esta que só executa um processo
a cada instante, porém, no decorrer de um segundo ela pode trabalhar sobre vários
processos dando a ilusão de paralelismo. O mecanismo de trocas rápidas da CPU é
chamado de multiprogramação. Quando diversos processos competem pela
Unidade Central de Processamento cabe ao Sistema Operacional decidir o momento
em que cada processo terá o seu acesso. Já o escalonador de processos fica
responsável por decidir o momento em que cada processo obterá a CPU. São
usados, aqui, algoritmos de escalonamento que estabelecem a lógica de decisão.
2. iOS E O SEU SISTEMA
Assumindo a ideia de que o kernel do iOS é muito semelhante ao kernel Mach
no MacOS, pode-se concluir que seus mecanismos de escalonamento são os
mesmos usados nesse sistema. O MacOS é um Sistema Operacional baseado no
kernel UNIX (XNU), sendo uma combinação do Darwin (um núcleo derivado do
micronúcleo Mach) com a interface gráfica de usuário Aqua.
O MacOS 9 utiliza o escalonamento cooperativo para as Threads, onde um
processo pode controlar várias destas Threads fornecendo um escalonamento
preemptivo para multitarefas. O kernel escalona multitarefas utilizando um algoritmo
de escalonamento preemptivo. Todos os processos do Gerenciador de Processos
são executados em uma tarefa especial, chama de blue-task (tarefa-azul). Usando
um algoritmo de escalonamento round-robin (escalonamento circular), esses
processos são programados cooperativamente. Um processo gera controle do
processador para outro processo chamando uma função de bloqueio como
WaitNextEvent. Cada processo tem sua própria cópia do Gerenciador de Threads
que escalona as threads desse processo de forma cooperativa. Uma thread gera
controle do processador para outra threads chamando YieldToAnyThread ou
YieldToThread.
O MacOS usa uma fila de vários níveis até chegar ao hardware, onde as
threads são agendadas de forma preventiva. Esse sistema também suporta threads
agendadas cooperativamente em sua implementação do Gerenciador de Threads.
Basicamente, a estrutura é composta por quatro camadas, como pode ser visto na
Figura 1. O Sistema obedece a uma hierarquia, de modo que quanto mais abaixo na
camada, maior deve ser a dificuldade no desenvolvimento e na compreensão.
Figura 1 – Gerenciamento de Processos iOS
3. TIPOS DE ESCALONAMENTOS DE PROCESSOS CITADOS
3.1. ESCALONAMENTO PREEMPTIVO
Neste tipo de escalonamento o Sistema Operacional pode interromper um
processo em execução para que outro processo utilize o processador, permitindo
que o sistema dê atenção imediata a processos mais prioritários, como no caso de
sistemas em tempo real. Ele também proporciona melhores tempos de resposta em
sistemas de tempo compartilhado.
O compartilhamento do processador ocorre mais uniformemente entre os
processos, sendo que a troca de um processo pelo outro na Unidade Central de
Processamento (CPU) gera um overhead (processamento ou armazenamento em
excesso) no sistema. Os critérios de preempção devem ser bem definidos para o
overhead não se tornar crítico.
3.2. ESCALONAMENTO CIRCULAR (ROUND-ROBIN) OU PREEMPÇÃO
POR TEMPO
O Escalonamento de Preempção por tempo é implementado em um
algoritmo semelhante ao Escalonamento FIFO (First-in-First-out), mas quando um
processo passa para o estado de execução ele adquire um tempo limite para sua
utilização de forma continua. Esse tempo limite é chamado de quantum ou timeslice, que no geral tem seu valor entre 100ms e 300 ms. Se o processo não terminar
a execução ele volta ao estado de pronto.
Dentro desse método, nenhum processo poderá monopolizar a CPU,
tornando o algoritmo bastante usual e adequado para sistemas multiusuários de
tempo compartilhado. No caso, o processo CPU-bound (quando o tempo de
processamento depende mais do processador do que das entradas e saídas) tem
mais chances de ser executado que o processo IO-bound (quando o sistema faz um
uso intensivo de processos de entrada e saída).
4 MACH OS – O SISTEMA
O Mach é capaz de gerenciar recursos de processador como o uso da CPU
e memória, manipula escalonamentos, fornece proteção de memória e uma
infraestrutura centrada em mensagens para o restante das camadas do sistema
operacional. O Mach contém um avançado escalonador baseado no CMU Mach 3.
O escalonamento realizado por ele é baseado em um sistema de filas de
execução em várias propriedades e que são tratas de formas diferentes. São 4
níveis de propriedades como mostra a Tabela 1:
Tabela 1: Os níveis de prioridades e suas características
Por várias razões as threads podem migrar entre os níveis de prioridade,
sendo a maior parte como um artefato do algoritmo de compartilhamento de tempo
usado.
As threads marcadas como sendo prioridade em tempo real são também
especiais aos “olhos” do escalonador. Uma thread em tempo real informa ao
escalonador que algo precisa executar A ciclos fora dos próximos B ciclos.
Exemplificando melhor, pode ser necessário executar para 3000 fora dos próximos
7000 ciclos de clock na ordem para manter em ordem. Ele também é capaz de
informar o escalonador se esses ciclos devem ser próximos. O uso longo e bem
agrupado de quanta (plural de quantum, menor valor que certas grandezas físicas
podem
apresentar),
geralmente
é
desaprovado,
mas
ocasionalmente
são
necessários para aplicações especializadas em tempo real.
O kernel fará todos os esforços para honrar o pedido, mas uma vez que este
é suave em tempo real, não pode ser garantido. Em particular, se a thread em tempo
real pede algo relativamente razoável, sua prioridade permanecerá na banda em
tempo real, mas se ela estiver descaradamente relacionada às suas necessidades e
se comportar de uma forma computacional, ela pode ser rebaixada para a prioridade
de um segmento normal.
5. CONCLUSÃO
Basicamente, o sistema de escalonamento é a parte do SO encarregada de
decidir entre os processos prontos, qual será colocado em execução. Sendo assim,
um bom algoritmo de escalonamento de processos é essencial para que cada
processo tenha uma parte de tempo justa na CPU e para garantir a eficiência da
mesma.
O sistema para dispositivos móveis da Apple (iOS) possui kernel semelhante
ao sistema MacOS. Sendo assim, conclui-se que o sistema de escalonamento de
processos será semelhante. Infelizmente, informações deste tipo são de difícil
acesso quando relacionados aos dispositivos da Apple, realidade totalmente
diferente dos códigos abertos do Linux.
6. REFERÊNCIAS
COLETTA,
Alex.
Escalonamento
de
Processos.
Disponível
em:
<http://alexcoletta.eng.br/artigos/escalonamento-de-processos/>. Acesso em: 18
abr. 2017.
MACH
Scheduling
and
Thread
Interfaces.
Disponível
em:
<https://developer.apple.com/library/content/documentation/Darwin/Conceptual/Kern
elProgramming/scheduler/scheduler.html#//apple_ref/doc/uid/TP30000905-CH211BEHJDFCA>. Acesso em: 17 abr. 2017.
KERNEL
Architecture
Overview.
Disponível
em:
<
https://developer.apple.com/library/content/documentation/Darwin/Conceptual/Kernel
Programming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1gCACDAEDC>. Acesso em: 17 abr. 2017.
MEYER,
Maximiliano.
A
História
do
iOS.
Disponível
em:
<
https://www.oficinadanet.com.br/post/17950-a-historia-do-ios>. Acesso em: 16 abr.
2017.
NOVATO, Douglas. Sistemas Operacionais- O que é Escalonamento de
Processos. Disponível em: < https://www.oficinadanet.com.br/post/12781-sistemasoperacionais-o-que-e-escalonamento-de-processos>. Acesso em: 16. Abr. 2017.
COSTA, C. E. C.; SILVA, F. A.; BRAGA, J. C. M.; CARVALHO, J. P. F. Sistema
Operacional iOS. Disponível em: <http://www.midiacom.uff.br/~natalia/2012-1sisop/tgrupo7.pdf>. Acesso em: 17 abr. 2017.
RIBEIRO, J.; SARAIVA, R.; NASCIMENTO, T. Sistemas Operacionais
Escalonamento
de
Processos.
Disponível
em:
<https://pt.slideshare.net/TallesNascimentoRodrigues/sistemas-operacionaisescalonamento-de-processos>. Acesso em: 17 abr. 2017.
ABOUT
This
Document.
Disponível
em:
<https://developer.apple.com/library/content/documentation/Darwin/Conceptual/Kern
elProgramming/About/About.html>. Acesso em: 17 abr. 2017.
HOW Does The Process Scheduler in iPhone OS Really Work Internally.
Disponível em: <http://stackoverflow.com/questions/1600562/how-does-the-processscheduler-in-iphone-os-really-work-internally>. Acesso em: 17 abr. 2017.
iOS Experts: What Scheduling Algorithm Does iOS Use. Disponível em:
<http://iphonedevsdk.com/forum/iphone-sdk-development/112821-ios-experts-whatscheduling-algorithm-does-ios-use.html>. Acesso em: 17 abr. 2017.
GERENCIAMENTO
de
Processos
iOS.
<https://bsi.github.io/ios/?full#5>. Acesso em: 17 abr. 2017.
Disponível
em:
Download