Академический Документы
Профессиональный Документы
Культура Документы
UNIDADE 1
2
Fundamentos de
Sistemas Operacionais
Processos e threads
2015
Editora e Distribuidora Educacional S. A.
Avenida Paris, 675 Parque Residencial Joo Piza
CEP: 86041 -100 Londrina PR
e-mail: editora.educacional@kroton.com.br
Homepage: http://www.kroton.com.br/
Sumrio
Unidade 2 | Processos e threads
21
35
49
Unidade 2
Convite ao estudo
Ol, aluno! Vamos comear a trabalhar com os conceitos e prticas
relacionados a processos e threads. Voc j notou que uma das principais
funes dos sistemas operacionais controlar o processamento de informaes
de modo que cada uma das etapas, desde a criao de um processo at o seu
encerramento, possa ser devidamente registrada e processada, alm de garantir
a sua continuidade em casos de interrupo e excees. E, ento, j percebeu
o quanto isso importante para o bom funcionamento de sua mquina ou
estao de trabalho? A partir de agora, voc convidado a compartilhar desse
momento de estudos! Para que voc possa desenvolver algumas competncias
bsicas para o uso e trabalho com os sistemas operacionais, vamos relembrar
quais so elas:
Competncia geral: o aluno dever ser capaz de identificar quais so as
principais funes de um sistema operacional, bem como ter conhecimento
sobre como se d o compartilhamento de recursos e a sua gerncia.
Competncias tcnicas: conhecer a evoluo dos sistemas operacionais
e suas respectivas especificidades; conhecer e saber identificar os principais
processos e como ocorre o compartilhamento de recursos; conhecer como se
d a gerncia de processos e de armazenamento de arquivos; conhecer e saber
gerenciar os dispositivos de entrada e sada.
Alm dessas, voc tambm precisa relembrar os objetivos especficos
desta disciplina: saber manipular as informaes do sistema operacional, ter
conhecimento sobre as principais funcionalidades e como gerenci-las, alm
de saber analisar a utilizao de recursos e promover a sua otimizao. Desse
U2
Processos e threads
U2
Seo 2.1
Introduo a processos: modelo, criao, trmino,
hierarquia, estados, implementao e threads
Dilogo aberto
Vamos iniciar esta seo de autoestudos conhecendo a estrutura de um sistema
operacional. Ele carregado todas as vezes em que o computador for ligado ou
reiniciado. Esse procedimento se chama ativao de sistema ou boot (MACHADO;
MAIA, 2013).
O sistema operacional composto basicamente por um conjunto de rotinas que
conhecemos como ncleo do sistema, tambm chamado de kernel, que tem por
funo realizar o controle e tratamento de interrupes e excees, criar e eliminar
processos e threads, sincronizar a comunicao entre eles, bem como escalonar e
control-los. Desse modo, tambm de responsabilidade desse conjunto de rotinas
gerenciar memria, sistemas de arquivos, dispositivos de E/S, permitir suporte a redes
locais de distribudas, realizar a contabilizao das aes do sistema e tambm a sua
auditoria e segurana (MACHADO; MAIA, 2013).
Para cada uma das rotinas que o sistema executar, h um mecanismo de controle
de chamadas de sistema, o system call, que pode ser explcito ou implcito. No explcito,
h uma instruo de qual chamada dever ser executada no prprio programa, atravs
da implementao de uma funo que carrega os seus respectivos parmetros. J na
implcita, h a insero de um comando da linguagem de programao. O system
call responsvel por verificar os parmetros da solicitao e enviar a sua respectiva
resposta com o estado do processo, no caso, concludo, ou se houve algum erro
e precise retornar pilha de processos. Alm disso, tambm preciso conhecer as
linguagens de comando, pois essas so importantes ferramentas para a criao de
arquivos de comandos, tambm chamados de batch ou shell scripts. Esses arquivos
tm por funo viabilizar a automatizao de algumas tarefas do sistema operacional
que fazem a gerncia do sistema. O shell responsvel por interpretar esses comandos.
A arquitetura do kernel pode ser monoltica, em camadas, mquina virtual ou, ainda,
ser do tipo microkernel. Confira no Quadro 2.1 cada uma das respectivas descries:
Processos e threads
U2
Quadro 2.1 | Tipos de arquitetura de ncleo
Tipo de arquitetura do ncleo
Descrio
Microkernel
No pode faltar
Quando estudamos o comportamento dos processos em um sistema operacional,
temos de ter em mente que este, mesmo que a mquina contenha uma nica unidade
central de processamento, poder criar vrias CPUs virtuais. Isso se d porque um nico
processo pode gerar outros processos filhos e dividir recursos de processamento.
Nesse sentido, necessrio separar o modo como tais informaes sero tratadas sob
o contexto do hardware, do software e tambm do armazenamento de informaes
(MACHADO; MAIA, 2013).
Figura 2.1 | Modos de tratamento de dados em processos
Hardware
Software
Armazenamento
Os dados do
processo ficam
armazenados
nos registradores
(status, PC e SP).
H a especificao de
recursos e suas limitaes
para que possam ser
alocados os processos.
Nome, PID, Owner (usr),
prioridade, data/ hora
de criao, tempo de
processador, quotas e
privilgios.
Refere-se rea
de memria que
ser alocado o
processo para
que possa ser
executado.
Processos e threads
U2
Como descrito, h a separao de contexto para que seja realizado o devido
processamento do sinal enviado. Desse modo, o sistema operacional se torna
responsvel por realizar esse controle. A possibilidade de recuperar o processo a partir
do ponto de interrupo essencial para que exista a concorrncia. No momento em
que cessa um deles, a UCP imediatamente ocupada por outro que ser executado,
substituindo o contexto de hardware de um processo pelo de outro.
Em contexto de hardware, os dados so tratados de acordo com o seu estado
de processamento e armazenado no respectivo registro responsvel por armazenar
aquela determinada informao.
No contexto de software, as informaes que o sistema operacional deve controlar
referem-se quantidade de arquivos que podero ser abertos concomitantemente
e quais processos detm prioridade de execuo, tamanho do buffer de E/S, por
exemplo. Considera a identificao do processo e de quem o criou (PID Process
Identification e Owner), quotas (limites de recursos alocados) e privilgios (pode alterar
desde o status do processo como o de outros, se este tiver um privilgio de controle
de processos de administrador de sistema, por exemplo). Ento, durante a criao do
processo, h a especificao dos recursos que sero necessrios.
No contexto do armazenamento, cada processo possui um endereo especfico
na memria (MACHADO; MAIA, 2013).
Reflita
A ideia principal que um processo constitui uma atividade. Ele possui
programa, entrada, sada e um estado. Um nico processador pode
ser compartilhado entre os vrios processos, com algum algoritmo de
escalonamento usado para determinar quando parar o trabalho sobre um
processo e servir outro (TANEMBAUM, 2009, p. 51).
Processos e threads
U2
Quando se fala em mudana de estado, preciso saber que essa s acontecer
se tiver algum evento que interfira na execuo do processo. Ento, um processo
pode sair do estado de pronto e entrar em execuo, bem como sair do estado de
execuo e entrar em espera, ou, ainda, do estado de espera passar para o estado de
pronto novamente, e de execuo para o estado de pronto (MACHADO; MAIA, 2013).
Alm das caractersticas estudadas at o momento, um processo tambm pode
representar apenas aes do sistema operacional e por esse motivo chama-se
processo de sistema operacional. Os servios que o sistema operacional implementa
atravs dos processos so: auditorias e segurana, servios de rede, contabilizao do
uso de recursos e de erros, gerncia de impresso, de processos em lote tipo bacth,
a temporizao de processos, a comunicao entre eventos e, ainda, a interface de
comandos (shell).
Os processos do sistema operacional que administram a comunicao entre os
eventos e a sua sincronizao ocorrem atravs do envio de sinais. Esses sinais so bits
que compem o bloco de controle de processos tambm conhecido pela sigla PCB
(Process Control Block) e que podem ficar em modo de espera at que o processo
seja escalonado. Se o processo for eliminado, ser acionado o bit correspondente ao
evento e ele ser excludo apenas quando for entrar em execuo, com isso concluise que os sinais respondem diretamente aos processos (MACHADO; MAIA, 2013).
Alm desses aspectos, quando se cria (new) um processo, preciso tambm
informar o seu trmino (exit) ou encerramento. Desse modo, a partir do momento de
sua criao, o sistema operacional comea a gerenci-lo.
Assimile
H quatro eventos principais que fazem com que processos sejam
criados:
1. Incio do sistema.
2. Execuo de uma chamada de sistema de criao de processo por um
processo em execuo.
3. Uma requisio do usurio para criar um novo processo.
4. Incio de uma tarefa em lote (batch/job) (TANEMBAUM, 2009, p. 52).
Para que o sistema operacional possa controlar todas essas informaes, h uma
estrutura de dado chamada bloco de controle de processo ou PCB (Process Control
Block), que trabalha da seguinte forma: faz a leitura dos ponteiros, que justamente tm
por funo apontar para o endereo de memria em que se encontram os registros,
10
Processos e threads
U2
l o estado do processo, identifica, verifica a prioridade, verifica a informao dos
registradores, limites de memria e cria uma lista de arquivos que ainda esto abertos
para serem executados.
Mas quando um processo pode ser encerrado? Veja, no exemplo a seguir, o modo
como acontece o trmino de um processo:
Exemplificando
Um processo pode ser encerrado quando:
a) h a sada normal ou voluntria do processo;
b) h a sada por erro, que tambm voluntria;
c) ocorreu algum erro considerado fatal para a continuidade de execuo
do processo, neste caso involuntrio;
d) quando ocorre o cancelamento de um processo por uma solicitao
de outro processo, que tambm involuntrio (MACHADO; MAIA, 2013).
Pesquise mais
Assista ao vdeo de criao de processos no SOSim. Disponvel em:
https://www.youtube.com/watch?v=_bMRr_oPBWg.
Alm disso, h dois canais para realizar a comunicao entre os processos. Eles
so chamados de foreground e background. Processos foreground (primeiro plano)
Processos e threads
11
U2
so aqueles que permitem que o usurio interaja com ele, por exemplo, os de entrada
e sada. J os background (segundo plano) so os processos que no permitem a
comunicao com o usurio durante o seu processamento (MACHADO; MAIA, 2013).
Pesquise mais
Leia o artigo e saiba mais sobre processos e threads. Disponvel em: http://
www.tecmundo.com.br/9669-o-que-sao-threads-em-um-processador-.
htm.
Os processos podem ser independentes (no h vnculo com outros processos),
subprocessos ou threads. Isso significa que h modos diferentes de implementar a
concorrncia, subdividindo o cdigo em partes. Um processo (pai) pode gerar outros,
que sero chamados de subprocessos (filhos), e esses compartilham quotas de
recursos com o processo gerador.
J o conceito de thread foi desenvolvido com o intuito de reduzir o tempo que
se leva para criar um novo processo em aplicaes concorrentes, bem como o uso
de recursos. Isso possvel em funo de um processo permitir que sejam criados ao
menos um thread, o que o torna um processo monothread (processo suporta apenas
um thread) ou multithread (um processo suporta a criao de vrios threads).
Quando falamos em thread, quer dizer que um processo, ou os seus subprocessos,
esto ocupando o mesmo endereo em memria, reduzindo o tempo de comunicao
entre processos. Compartilham os contextos de software e de armazenamento, o
que configura o contexto de hardware aplicado de maneira independente para cada
processo que, por sua vez, criado de forma que haja um thread correspondente
a cada um. Com isso, h a otimizao do processamento da informao quando
controlado por threads (MACHADO; MAIA, 2013).
Assimile
A partir do conceito de mltiplos threads (multithread), possvel projetar
e implementar aplicaes concorrentes de forma eficiente, pois um
processo pode ter partes diferentes do seu cdigo, sendo executadas
concorrentemente com um overhead menor do que utilizando mltiplos
processos. Como os threads de um processo compartilham o mesmo
espao de endereamento, a comunicao entre threads no envolve
mecanismos lentos de intercomunicao entre processos, aumentando,
consequentemente, o desempenho da aplicao (MACHADO; MAIA,
2013, p. 81).
12
Processos e threads
U2
Alm disso, quando um processo criado, preciso alocar os recursos, o que
consome muito tempo de processamento e, se o thread permite alocar no mesmo
endereo de memria um processo e os seus subprocessos, isso faz com que haja
a otimizao desse tempo que seria gasto com a criao de outros processos e
alocao de recursos para eles, que trabalharo de forma concorrente.
H outros fatores que podem ser mencionados para se distinguir um processo
de um thread e evidenciar a importncia desses para os sistemas operacionais e o
gerenciamento de processos. Dentre eles est o fato de que, para cada processo
criado, alm da alocao de recursos, a comunicao entre os processos essencial
para a otimizao do tempo. Logo, h os seguintes mecanismos que servem para
realizar o envio de sinais:
a) pipe: permite o trfego unidirecional de informaes entre processos e utiliza
a estrutura de dados array com apenas duas posies, que indicam 0 para leitura e 1
para gravao;
b) semforos: servem para testar e incrementar a sincronizao de processos;
c) troca de mensagens: este tambm pode ser descrito como uma forma de
sincronizao e comunicao entre processos, uma vez que esses podem estar
localizados em outro endereo na memria e, por esse motivo, ser mais demorada
a comunicao. Com isso, possvel dizer que um thread uma subrotina de
um programa que executado de forma concorrente e assncrona, portanto, aos
processos em execuo.
Essas definies de aes de threads devem ser estabelecidas no momento
do planejamento da arquitetura do sistema operacional e so implementadas por
desenvolvedores que associaro cada ao de um thread ao respectivo tipo de
processo ou comportamento que o sistema deve ter.
Em funo dessas caractersticas, threads tambm passam pelas mesmas
mudanas de estados que os processos. Da mesma forma que h o bloco de controle
de processos, h um bloco de controle de threads conhecido como TCB (Thread
Control Block). O TCB responsvel por controlar a prioridade e o estado de execuo,
alm de conter os bits de estado do thread.
Reflita
A independncia entre os conceitos de processo e thread permite separar
a unidade de alocao de recursos da unidade de escalonamento, que em
ambientes monothread esto fortemente relacionadas. Em um ambiente
multithread, a unidade de alocao de recursos o processo onde todos
os seus threads compartilham o espao de endereamento, descritores
de arquivos e dispositivos de E/S (MACHADO; MAIA, 2013, p. 86).
Processos e threads
13
U2
Quando se implementa um thread, preciso saber para qual arquitetura est
sendo desenvolvido e como se dar a sua implementao. Nesse sentido, deve ser
considerado que um thread influencia em desempenho de mquina, processos
e concorrncia. Desse modo, threads podem ser implementados em bibliotecas
externas ao kernel, ou seja, no modo usurio, ou ainda, pelo prprio ncleo do sistema
(modo kernel) e, tambm, por ambos os modos, chamado de modo hbrido.
Reflita
Talvez um dos maiores problemas na implementao de TMU (threads
em modo usurio) seja o tratamento individual de sinais. Como o sistema
reconhece apenas processos e no threads, os sinais enviados para um
processo devem ser reconhecidos e encaminhados a cada thread para
tratamento. No caso de recebimento de interrupes de clock, fundamental
para a implementao do tempo compartilhado, esta limitao crtica
(MACHADO; MAIA, 2013, p. 90).
Lembre-se de que o sistema operacional, justamente por ser um software, precisa
que todas as rotinas que executar sejam especificadas detalhadamente, pois interfere
no funcionamento da mquina e at mesmo nos sistemas que interagem com ele. Nesse
sentido, quando se fala de bibliotecas de rotinas externas ao ncleo, estamos falando
de rotinas que devero ser executadas quando um thread for criado ou mesmo um
processo. Logo, tamanha a sua complexidade, a proporo de sistemas operacionais
disponveis no mercado, com relao quantidade de aplicaes e programas, sempre
ser muito distinta, pois um programa gerencia funes especficas de um processo
de negcios. Um aplicativo tambm oferece funcionalidades para facilitar tarefas do
cotidiano profissional. J os sistemas operacionais precisam gerenciar os recursos e
as chamadas de sistema necessrias ao bom funcionamento da mquina, softwares e
dispositivos de entrada e sada.
Vocabulrio
Overhead: excesso em tempo de processamento ou armazenamento.
Escalonador: um servio do sistema operacional que tem a funo de
determinar qual processo ser liberado para execuo de acordo com o
seu nvel de prioridade.
14
Processos e threads
U2
rotina de trabalho, a sugesto fica em:
a) identificar o software de gesto integrada e quais so as suas configuraes
bsicas ou padro;
b) verificar quais so as especificaes e se so compatveis com as estaes de
trabalho;
c) levantar dados de cache, clock e ncleos/threads;
d) identificar quais so as chamadas de sistema para o gerenciamento de um dos
sistemas operacionais identificados.
Tabela 2.1 | Configuraes servidor e estaes de trabalho
Recursos
Servidor
Estaes de trabalho
Processador
Sistema Operacional
Cache
24 MB
4MB
Velocidade do Clock
2.13 GHz
900 MHz
Ncleos/ Threads
8/16
2/4
Tendo em vista que voc agora precisa listar as chamadas de sistema, escolhemos
o Linux para a sua apresentao. Observe no quadro a seguir como acontece o
gerenciamento de processos neste sistema.
Quadro 2.2 | Tipos de chamadas de sistema em Linux
Processos e threads
15
U2
Ateno!
Acesse o site e veja mais especificaes de processadores: http://ark.intel.
com/pt-br/products/53677/Intel-Xeon-Processor-E7-8830-24M-Cache2_13-GHz-6_40-GTs-Intel-QPI.
Lembre-se
Em um ambiente multithread, ou seja, com mltiplos threads, no existe
a ideia de programas associados a processos, mas, sim, a threads. O
processo neste modo tem pelo menos um thread de execuo, mas
pode compartilhar o seu espao de endereamento com inmeros
outros threads (MACHADO; MAIA, 2013, p. 84).
Avanando na prtica
Pratique mais
Instruo
Desafiamos voc a praticar o que aprendeu, transferindo seus conhecimentos para novas situaes
que pode encontrar no ambiente de trabalho. Realize as atividades e depois compare-as com as de
seus colegas.
Introduo a processos: o modelo, criao, trmino, hierarquia, estados,
implementao e threads
16
1. Competncia de fundamentos
de rea
2. Objetivos de aprendizagem
3. Contedos relacionados
4. Descrio da SP
Processos e threads
U2
Veja qual foi a soluo apresentada pelos autores Machado e
Maia para resolver o problema. Com isso, entenda e explique
o procedimento de implantao de um thread.
5. Resoluo da SP
Lembre-se
A utilizao de processos independentes e subprocessos permite dividir
uma aplicao em partes que podem trabalhar de forma concorrente.
Um exemplo do uso de concorrncia pode ser encontrado nas aplicaes
com interface grfica, como em um software de gerenciamento de
e-mails. Neste ambiente um usurio pode estar lendo suas mensagens
antigas, ao mesmo tempo que pode enviar e receber novas mensagens
(MACHADO; MAIA, 2013, p. 83).
Processos e threads
17
U2
thread. Diferencie Job, Processo e Thread. Em uma atividade em equipes,
discutam sobre o objeto implantado, o programa CriaThreads e tente
compreender esse processo que considera tantos aspectos fundamentais
de eficincia de sua mquina.
18
Processos e threads
U2
controlar referem-se quantidade de arquivos que podero ser abertos
concomitantemente, quais processos detm prioridade de execuo,
tamanho do buffer de E/S, por exemplo.
a) Contexto de hardware.
b) Contexto de armazenamento.
c) Contexto de software.
d) Modo kernel.
e) Modo hbrido.
Arquitetura
Processos e threads
19
U2
a) Modo usurio, modo kernel, modo hbrido.
b) Modo kernel, modo hbrido, modo usurio.
c) Modo hbrido, modo usurio, modo kernel.
d) Modo usurio, modo hbrido, modo kernel.
e) Modo hbrido, modo kernel, modo usurio.
20
Processos e threads
U2
Seo 2.2
Comunicao entre processos e problemas
clssicos de comunicao entre processos
Dilogo aberto
O sistema operacional se comunica com o usurio de trs formas: atravs de
procedimentos prprios do sistema, por meio da interao com os aplicativos ou, ainda,
atravs das linguagens de comando. Cada um deles tem o seu respectivo acesso e
armazenamento de dados reservado em memria e, se um arquivo for compartilhado,
por exemplo, ser preciso garantir a veracidade e preciso dessas informaes.
Por esse motivo, o acesso s informaes deve estabelecer qual o tipo de
comunicao que est acontecendo e se em modo usurio ou em modo kernel. Para
identificar qual deles dever ser acionado, o SO recebe o status daquela situao que
definido por uma sequncia de bits de identificao (ID) no registrador responsvel
por essa operao. Quando falamos que um processo est acontecendo em modo
usurio, isso quer dizer que apenas instrues chamadas no privilegiadas podero ser
executadas e, por isso, uma quantidade menor de instrues a executar. J quando
se trata de um processo que ser executado no modo kernel, o sistema operacional
tem acesso irrestrito s instrues do processador. Entenda que informaes no
privilegiadas so aquelas que no oferecem risco ao sistema e, privilegiadas, refere-se s
instrues que podem interferir no funcionamento do kernel (MACHADO; MAIA, 2013).
Uma das funcionalidades do sistema de gesto integrada que ser implementado
para a clnica mdica mencionada na seo de autoestudos 2.1 dever trabalhar com
um princpio muito comum em sincronizao de processos, que fundamentado no
algoritmo de Dijkstra, que estudaremos a seguir.
Desse modo, a comunicao que ser estabelecida com o sistema operacional
ser por meio da aplicao. Nesse caso, voc precisa considerar que a sincronizao
dos processos baseada no princpio proposto por Dijkstra, e explic-lo, passo a passo.
Com isso, o seu cliente poder identificar de que forma o sistema poder alternar
entre as mais variadas tarefas que dever gerenciar. Para facilitar a compreenso,
usado o problema do filsofo, e faremos a respectiva associao aos processos e
sua sincronizao.
Processos e threads
21
U2
Pensando nessa possibilidade, uma das funcionalidades do software de gesto
integrada ser a de identificar, a partir da localizao do cliente final, um consultrio
mais prximo de acordo com a especialidade que ele deseja e o horrio mais prximo
para que realize uma ligao direta com o consultrio, facilitando a busca e otimizando
o tempo gasto pelo cliente, que, nesse caso, o paciente. Agora, vamos compreender
como esse processo realizado. Ento, bons estudos, pesquisas e prticas!
No pode faltar
Em ambientes computacionais, os sistemas operacionais classificados como
multiprogramveis trouxeram a possibilidade de se estabelecer a concorrncia
durante o processamento de dados. Por esse motivo, voc precisa compreender
como acontece a comunicao e sincronizao entre os processos que precisam
ser executados. De que forma, afinal, pode ser feita? Nesse sentido, voc precisa,
primeiramente, compreender o que se entende por sincronizao de processos
e por que isso pode configurar a comunicao entre eles. O exemplo a seguir ilustra
essas afirmaes. Confira a seguir na Figura 2.2.
Assimile
A Figura 2.2 indica como acontece a troca de informaes para
operaes de gravao e leitura entre processos concorrentes, em que
h o compartilhamento do buffer, que armazenar temporariamente
as informaes para que sejam acessadas de forma mais rpida para
processamento. A gravao ocorre apenas se o buffer estiver vazio, e,
assim tambm, a leitura dos dados acontece apenas se houver dados
para leitura. Nesse sentido, observe como ocorre a sincronizao de
leitura e gravao:
Figura 2.2 | Sincronizao de leitura e gravao de processos
Sincronizao
Processo de
gravao
Processo de
leitura
Buffer
Fonte: Adaptado de Machado e Maia (2013, p. 94).
22
Processos e threads
U2
Para realizar a sincronizao entre os processos, so acionados o que chamamos
de mecanismos de sincronizao. Esses visam garantir a integridade e confiabilidade
das aes de sistema.
As primeiras especificaes de concorrncia, ou seja, as precursoras desse modelo
de controle de comunicao entre processos foram desenvolvidas por Conway
(1963), Dennis e Van Horn (1966). Trazem a notao dos comandos FORK e JOIN.
O comando FORK tem por funo realizar uma chamada do processo que est no
buffer para ser executado e, a partir da sua identificao, o associa ao seu subprocesso,
ou seja, ao processo filho. FORK tambm assume a funo de acompanhamento de
execuo desse processo (MACHADO; MAIA, 2013).
Assim como FORK tem a finalidade de criar processos, o comando JOIN tem o
objetivo de sincronizar os processos criados pelo FORK. Isso significa que, enquanto
h um processo.
X em execuo, por exemplo, e o seu respectivo subprocesso, possvel que
pelo comando FORK tenha sido criado ainda um novo processo Z e a alocao
de recursos precisa ser gerenciada e os respectivos status dos processos tambm.
Porm, quando isso acontece, o comando JOIN permitir a execuo de X apenas
aps o encerramento da execuo do processo Z (MACHADO; MAIA, 2013).
Assim como FORK e JOIN, outro exemplo de notao de controle de concorrncia
e comunicao entre processos so os comandos PARBEGIN (antes chamado de
COBEGIN, que tem por funo criar um processo de forma aleatria) e PAREND
(antes chamado de COEND, cria um novo processo apenas aps o encerramento
das execues dos processos anteriores), que seguem o modelo introduzido pelo
algoritmo de Dijkstra. Podem ser implementados por comandos simples de chamada
a procedimentos ou ainda de atribuio.
Exemplificando
Machado e Maia (2013) trazem o exemplo de implementao dos
comandos COBEGIN E COEND para calcular uma expresso aritmtica.
Ento, observe que o exemplo traz a execuo de todas as prioridades
matemticas da expresso e em seguida, faz o clculo da expresso
completa com os respectivos resultados obtidos na execuo de cada
uma das instrues. Suponha que a expresso aritmtica seja X:= SQRT
(1024) + (35.4 * 0.23) (302/7). O exemplo deixa claro como ocorre a
sincronizao de processos com uso de especificao de concorrncia
com PARBEGIN e PAREND.
De acordo com as regras matemticas e de execuo, consideradas
pelos sistemas operacionais, as prioridades matemticas so preservadas,
Processos e threads
23
U2
ento a lgica a seguinte: acompanhe no algoritmo os comandos
mencionados:
PROGRAM Expressao;
VAR X, Temp1, Tem2, Temp3: REAL;
BEGIN
PARBEGIN
Temp1:= SQRT (1024);
Temp2:= 35.4 * 0.23;
Temp3:= 302 / 7;
PAREND
X:= SQRT (1024) + (35.4 * 0.23) (302/7)
WRITELN (x = , X);
END.
Fonte: Machado e Maia (2013, p. 95).
Com os sistemas operacionais multiprogramveis, trabalhar com processos
concorrentes pode apresentar alguns problemas quando se trata do
compartilhamento de recursos. Os principais mencionados por Machado e Maia
(2013) esto correlacionados com o compartilhamento de um arquivo em disco e o
compartilhamento de uma varivel na memria principal entre dois processos. Para
corrigir esses erros, so inseridos mecanismos de controle que possibilitam minimizar
problemas de execuo de processos concorrentes, estabelecendo condies de
corrida, tambm conhecidas como race conditions.
Para tratar os erros, so propostos alguns algoritmos que reduzem a sua
probabilidade de ocorrncia. Dentre eles, podem ser citados:
a) Excluso mtua (mutual exclusion): esse mecanismo impede que dois ou mais
processos sejam executados compartilhando o mesmo recurso simultaneamente.
Sendo assim, os processos precisam esperar o encerramento da execuo para
que possam utiliz- lo. Esse mtodo evita que outro processo acesse a regio crtica
do programa; com isso, protocolos de entrada e sada so implementados para
garantir que essa verificao seja realizada. A comunicao deve acontecer de forma
sincronizada para que envie o status de encerramento de um processo e informe
quando o outro se inicia, no entanto, isso ocorrer apenas aps a confirmao de
encerramento do processo anterior.
24
Processos e threads
U2
Quando se trata de excluso mtua, essa pode ser implementada com mecanismos
de comunicao com o hardware ou com o software. Em solues de hardware,
podemos citar as de desabilitao de interrupes, em que todas so impedidas de
entrar em execuo ao solicitar a entrada na regio crtica do programa e o testand-ser. No entanto, um problema que pode ser elencado quanto desabilitao
de interrupes o risco de no acontecer a habilitao da instruo de interrupo
aps a mudana de status do processo (MACHADO; MAIA, 2013) e ele permanecer
em espera ou no sair do modo de execuo.
Reflita
Em sistemas com mltiplos processadores, essa soluo torna-se
ineficiente devido ao tempo de programao quando um processador
sinaliza aos demais que as interrupes devem ser habilitadas ou
desabilitadas. Outra considerao que o mecanismo de clock do
sistema implementado atravs de interrupes, devendo esta soluo
ser utilizada com bastante critrio (MACHADO; MAIA, 2013, p. 99).
Alm dessa, a outra soluo para o erro oriundo da excluso mtua a implantao
da instruo test-and-set, que basicamente uma instruo de mquina que trata uma
exceo. Ela faz a leitura da varivel, armazena o seu contedo em outra rea e atribui
um novo valor varivel ento vazia. No h interrupo durante a execuo.
Sob o ponto de vista de comunicao com o software, so apresentados como
soluo quatro algoritmos de controle para os problemas relacionados aos processos
de excluso mtua (MACHADO; MAIA, 2013). So eles:
a) primeiro algoritmo: os processos alternam a execuo na regio crtica do
programa atravs de uma repetio infinita, ou seja, acessa o recurso diversas vezes
a fim de verificar e, se houver solicitao de execuo, altera o status e termina o
processo alternado de forma independente. Os dois processos utilizam a mesma
varivel global que indicam se este poder acessar a regio crtica ou no (MACHADO;
MAIA, 2013);
b) segundo algoritmo: vem corrigir o problema do primeiro algoritmo que utiliza a
mesma varivel global e insere uma varivel para cada processo criado. Cada varivel
responsvel por informar se o processo est ou no na regio crtica. Um ponto de
ateno nesse algoritmo que ele no trabalha exclusivamente com a alternao
dos processos, mas pode bloque-lo por tempo indeterminado, o que no garante a
excluso mtua e acarreta outro erro;
c) terceiro algoritmo: vem corrigir o problema apresentado no segundo algoritmo
inserindo as instrues de atribuio de valores s variveis antes do bloco de repetio
Processos e threads
25
U2
de verificao de disponibilidade de alocao de recurso, o que, ento, permite garantir
a excluso mtua. No entanto, se dois processos em execuo alteram o contedo
das variveis que foram criadas (segundo algoritmo), antes de iniciar execuo, correse o risco de no acontecer o acesso regio crtica do programa, pois o kernel
pode interpretar que o recurso j foi alocado e no h a execuo dos processos. Os
processos so executados de forma independente (MACHADO; MAIA, 2013);
d) quarto algoritmo: vem sanar o problema de comunicao de estados entre os
processos, alterando o status da varivel antes de acessar a regio crtica, ento existe
tambm a possibilidade de o status das variveis alterar para falso e os processos no
entrarem em execuo.
Para que voc possa visualizar exemplos desses algoritmos, acesse o material
disponvel em: http://www.inf.ufrgs.br/~johann/sisop2/aula04.algorithms.2.pdf.
Observe que, mesmo com os algoritmos de correo que foram apresentados, ainda
existe a possibilidade de ocorrer um erro de comunicao, ou seja, de identificao
do status, seja em funo do tipo de varivel envolvida ou pela desabilitao das
interrupes. Ento, alguns outros cientistas e pesquisadores desenvolveram algoritmos
para sanar essas lacunas e garantir que acontea a excluso mtua de processos
sem gerar os erros mencionados. Dentre eles, podem ser citados o algoritmo de
Dekker, em 1990, e Peterson G. L. (que definiram um algoritmo para tratar da excluso
mtua entre dois processos), que apresenta a possibilidade de excluso mtua entre
N processos. O algoritmo de Peterson resolve o problema da quantidade de vezes
que o comando ter de repetir (indefinidamente ou busy wait, espera ocupada), pois
insere a verificao antes de iniciar efetivamente a alternncia dos processos de forma
a garantir que no acontea o bloqueio indefinido do processo (MACHADO; MAIA,
2013).
Mas, alm da excluso mtua, existem outros mecanismos. Confira a seguir os
demais e suas respectivas descries:
a) sincronizao condicional: como o prprio nome diz, implementa a
sincronizao de execuo dos processos associada a uma verificao condicional
de acesso regio crtica. O exemplo mencionado de leitura e gravao de dados no
buffer ilustra bem esse processo, pois um somente ser executado quando o outro
estiver com status de encerrado, para, ento, mesmo que compartilhem recursos de
forma concorrente, sincroniz-los, evitando perdas de dados e atribuio de status de
alocao indevido, como j mencionado em excluso mtua;
b) semforos: este mecanismo foi implementado por Dijkstra em 1965, permite a
prtica da excluso mtua com a insero de condio para acesso regio crtica e
execuo dos processos. Utiliza as instrues DOWN, originalmente P de proeberen
ou teste; UP, originalmente V de verhogen, que significa incremento. DOWN e UP
so instrues que no permitem interrupo. UP realiza o incremento ao valor do
26
Processos e threads
U2
semforo e DOWN tem por funo deixar o processo em estado de espera quando o
semforo estiver com o valor 0. H dois tipos de semforos: contadores que recebem
valor positivo inclusive zero (0) e excluso mtua com semforos, que permitem
apenas valores binrios, ou seja, 0 ou 1 para indicar o status do processo (MACHADO;
MAIA, 2013).
c) monitores: propostos por Brinch Hansen em 1972. So implementados
pelo compilador e, por esse motivo, so considerados estruturados. Realiza um
procedimento com variveis encapsuladas e aplica a excluso mtua, porm, apenas
um processo pode executar as instrues de um monitor por vez. Os monitores
trabalham com a estrutura de fila para gerenciar as solicitaes de acesso ao recurso.
Pode ser chamada a execuo apenas a partir do programa em que foi declarado
(comportamento prprio do encapsulamento). H um algoritmo de excluso mtua
com o uso de monitores.
d) troca de mensagens: no necessita de variveis compartilhadas, mas estabelece
um canal de comunicao em que seja possvel enviar (SEND) e receber (RECEIVE)
mensagens para a sincronizao de execuo dos processos. H a direta e a indireta.
A primeira estabelece um endereo explcito para o processo receptor ou emissor. Na
indireta, as mensagens podem ser alocadas pelo processo transmissor e retiradas pelo
receptor; vrios processos podem estar associados.
e) deadlock: ocorre essa situao quando um processo est aguardando por
tempo indeterminado a alocao de um recurso ou um evento que no ocorrer
em funo da alocao dinmica de recursos que trabalham com concorrncia. Mas
como identificar essa situao e no prever? Para que no haja deadlock, preciso
que acontea simultaneamente a excluso mtua, a espera por recursos, a no
liberao de um processo que aguarda um recurso de forma concorrente com outros
processos, ou seja, no preempo e, ainda, precisa ocorrer o que se chama espera
circular, em que um processo deve esperar a execuo de um processo terminar
para que utilize aquele determinado recurso (MACHADO; MAIA, 2013). Deve haver a
preveno, a deteco e a correo do deadlock.
Faa voc mesmo
a) investigue como so os algoritmos das solues de hardware:
desabilitao de interrupes e instruo test-and-set;
b) teste os quatro algoritmos de excluso mtua;
c) em grupos de pesquisa, organizem-se para simular os algoritmos de
sincronizao condicional;
d) d preferncia para as referncias bibliogrficas da disciplina, conforme
indicado no material.
Processos e threads
27
U2
Pesquise mais
O vdeo uma animao sobre o funcionamento do computador e de
como ocorre a comunicao entre dispositivos e, tambm, ilustra um
pouco a importncia dessa, e, ainda, a necessidade de eficincia de
processamento e da organizao de arquivos nesse processo. Disponvel
em: https://www.youtube.com/watch?v=jH5gOJvvCSQ.
Veja tambm material explicativo dos processos FORK e JOIN sobre
concorrncia de processos. Disponvel em: http://slideplayer.com.br/
slide/47099/.
28
Processos e threads
U2
Considere as seguintes regras: apenas quatro filsofos podem sentar-se mesa
simultaneamente (haver uma determinao de quantidade de usurios e o sistema
deve prever esse cenrio e tratar de acordo com a demanda, ser desenvolvido o
procedimento considerando este critrio). Um filsofo s pode usar um garfo se ele
estiver disponvel. Ou seja, a solicitao do usurio ser executada apenas se houver
recurso para alocar que esteja de fato com o status de disponvel. Um filsofo s pode
usar primeiro o garfo da direita e depois o da esquerda ( estabelecida uma regra para
priorizar o acesso regio crtica do programa para que acontea a execuo do
processo). Veja como o seu algoritmo:
PROGRAM Filosofo_2;
Comendo;
VAR
UP (Garfos [I]);
Lugares : Semaforo := 4;
UP (Lugares);
I : INTEGER;
UNTIL false;
END;
BEGIN
BEGIN
REPEAT
PARBEGIN
Pensando;
FOR I:= 0 TO 4 DO
DOWN (Lugares);
Filosofo (I);
PAREND;
END.
Ateno!
Assista ao vdeo que explica a lgica do algoritmo de Dijkstra e compreenda
o mecanismo envolvido nesse tipo de sincronizao de processos.
Disponvel em: https://www.youtube.com/watch?v=J4TZgD1As0Q.
Lembre-se
O conceito de semforos foi proposto por E. W. Dijkstra em 1965, sendo
apresentado como um mecanismo de sincronizao que permitia
implementar, de forma simples, a excluso mtua e a sincronizao
condicional entre processos. De fato, o uso de semforos tornou-se um
dos principais mecanismos utilizados em projetos de sistemas operacionais
e em aplicaes concorrentews (MACHADO; MAIA, 2013, p. 107).
Processos e threads
29
U2
Avanando na prtica
Pratique mais
Instruo
Desafiamos voc a praticar o que aprendeu, transferindo seus conhecimentos para novas situaes
que pode encontrar no ambiente de trabalho. Realize as atividades e depois compare-as com as de
seus colegas.
Comunicao entre processos e problemas clssicos de comunicao entre processos
30
1. Competncia de fundamentos
de rea
2. Objetivos de aprendizagem
3. Contedos relacionados
4. Descrio da SP
5. Resoluo da SP
Processos e threads
U2
REPEAT
RECEIVE (Msg);
Consome_Mensagem (Msg);
UNTIL false;
END;
BEGIN
PARBEGIN
Produtor;
Consumidor;
PAREND;
END.
Fonte: Machado e Maia (2013, p. 119).
Lembre-se
Troca de mensagens um mecanismo de comunicao e sincronizao
entre processos. O sistema operacional possui um subsistema de
mensagem que suporta esse mecanismo sem que haja necessidade do
uso de variveis compartilhadas. Para que haja a comunicao entre os
processos deve existir um canal de comunicao, podendo esse meio ser
um buffer ou um link de uma rede de computadores (MACHADO; MAIA,
2013, p. 117).
Processos e threads
31
U2
c) DOWN e UP so instrues que no permitem interrupo.
d) Impede que dois ou mais processos sejam executados compartilhando
o mesmo recurso.
e) Implementa a sincronizao de execuo dos processos associada a
uma verificao condicional de acesso regio crtica.
4. Assinale V ou F:
I Monitores: so considerados estruturados. Trabalha com a estrutura
de fila para gerenciar as solicitaes de acesso ao recurso.
II Deadlock: ocorre essa situao quando um processo est aguardando
por tempo indeterminado a alocao de um recurso ou um evento que
no ocorrer em funo da alocao dinmica de recursos.
III Semforo: UP realiza o incremento ao valor do semforo e DOWN
tem por funo deixar o processo em estado de espera quando o
semforo estiver com o valor 0.
a) V-F-F.
b) F-V-F.
c) F-F-F.
d) V-V-V.
e) V-F-F.
32
Processos e threads
U2
REPEAT
Pensando;
DOWN (Lugares);
DOWN (Garfos [I]);
DOWN (Garfos [(I +1) MOD 5]);
Comendo;
UP (Garfos [I]);
UP (Garfos [(I +1) MOD 5]);
UP (Lugares);
UNTIL false;
Processos e threads
33
U2
34
Processos e threads
U2
Seo 2.3
Introduo ao escalonamento: conceitos, tipos e
escalonamento de threads
Dilogo aberto
Ol, aluno! Vamos iniciar os estudos em escalonamento de processos. Afinal,
estamos estudando o gerenciamento de processos e threads e aprendemos, na seo
anterior, quais so os mecanismos de comunicao e sincronizao de processos
que os sistemas operacionais utilizam. Agora, precisamos compreender de que forma
o sistema operacional seleciona esses processos e a partir de quais critrios.
Ento, nesse sentido que vamos aprender quais so as funes bsicas quando
o assunto escalonamento, ou seja, a seleo do processo que ser executado a
partir do momento em que ele entra em estado de pronto e precisa efetivamente ser
executado.
Com isso, algumas caractersticas podem ser elencadas, pois so consideradas
para realizar a gerncia do processador de forma a mant-lo em exerccio, ou seja,
trabalhando, a maior parte do tempo possvel, enquanto a mquina est em uso.
Sendo assim, sua tarefa comprovar a eficincia do sistema operacional para
realizar o gerenciamento dos processos do sistema de gesto integrado da aplicao
da clnica mdica de forma a otimizar, atravs das configuraes de escalonamento, a
execuo dos processos solicitados pelo sistema. Fica a recomendao de que voc
utilize o simulador SOsim para que consiga realizar essa atividade.
Alm dessas especificaes, voc tambm poder verificar como acontece
a definio da poltica de escalonamento em sistemas de tempo compartilhado,
por exemplo, alm de como acontecem os escalonamentos preemptivos e no
preemptivos (MACHADO; MAIA, 2013).
Outras formas de escalonar tambm sero evidenciadas aqui em seu livro didtico,
tais como: escalonamento por filas, ou seja, em que o primeiro processo que entra
na fila ser tambm o primeiro alocado para processamento, o conhecido FIFO (first
in first out).
Processos e threads
35
U2
Para tal, fica a sugesto de leitura e estudos de seu material didtico, que lhe
proporcionar o contato necessrio para que desenvolver as competncias e
habilidades necessrias e aplicar em sua rotina profissional quando necessrio! Estude,
investigue e pratique!
Desde j desejamos a voc bons estudos e prticas!
No pode faltar
Vamos iniciar retomando quais so os estados que um processo pode assumir.
Voc se recorda? Pois bem, temos basicamente trs tipos de estados de processos: de
execuo, de pronto e de espera. Um processo fica em espera a partir de sua criao
e permanece nesse estado at que esteja com todos os recursos dimensionados
e devidamente alocados. Com isso, passa, ento, ao estado de pronto. Com isso,
ele poder ser chamado para processamento e, at o trmino dessa operao,
permanecer no estado de execuo. Observe a Figura 2.3, que traz os trs estados
que um processo pode assumir. Considere o estado bloqueado com o mesmo
mecanismo e funo do estado de espera, pois precisa que acontea um evento que
determine a mudana de estado para que possa entrar em execuo. Essa definio
de bloqueado foi mencionada por Andrew Tanembaum (2010):
Figura 2.3 | Estados de um processo
36
Processos e threads
U2
elencar a anlise de eficincia e utilizao do processador. Nesse caso, o recomendado
que o nvel de capacidade esteja ocupando, em mdia, 90% para ser considerado
alto, ou seja, com bom potencial de aproveitamento do recurso. Outro elemento que
estabelece critrio para a definio do escalonamento o throughput. Esse um
indicador que mostra quantos processos foram executados dentro de um intervalo
de tempo. uma medida diretamente proporcional, pois, quanto maior o throughput,
maior ser tambm a quantidade de tarefas realizadas naquele determinado perodo
(MACHADO; MAIA, 2013).
Tempo de processador outro critrio relevante para a escolha ou determinao
do tipo de escalonamento aplicado. Tambm descrito como Tempo de UCP, esse
evidencia justamente o tempo que um processo leva para ser executado e finalizado.
Alm desse, h o tempo de espera que define o tempo em que um processo fica
na fila dos processos em estado de pronto. Outro tempo importante a considerar
o de turnaround, que tem a funo de apresentar o tempo total que um processo
ocupa, desde a sua criao at o seu encerramento, e, por fim, o tempo de resposta
(MACHADO; MAIA, 2013). Esse ltimo apresenta o tempo que leva a partir da
criao do processo para que este seja atendido pelo sistema e depende muito da
velocidade atrelada aos dispositivos de entrada e sada, principalmente quando se
trata de aplicaes web. Imagine se o tempo de resposta for longo? O acesso com
certeza ficar comprometido. O tempo de resposta tambm importante e deve ser
considerado ao estabelecer a poltica de escalonamento.
Quanto aos tipos de escalonamento vamos estudar:
a) no preemptivos e preemptivos;
d) cooperativo;
e) circular;
f) por prioridades;
Processos e threads
37
U2
J o escalonamento preemptivo permite que interrupes do sistema operacional
alterem o estado de execuo de um processo para o de pronto, pois pode, em
funo de uma determinao por prioridade, alocar outro processo para execuo.
Isso tambm pode acontecer em sistemas de tempo real e em sistemas em que h
o compartilhamento de processadores, balanceando os recursos da CPU entre os
processos existentes.
O escalonamento do tipo FIFO (first in first out) ou fila, considera o primeiro
processo que entra em estado de pronto para ser o primeiro a entrar em estado de
execuo. Tambm conhecido como FIFO scheduling ou FCFS scheduling, agrupa os
processos por ordem de chegada em estado de pronto e faz o escalonamento assim
que chamados execuo, no caso, quando chegam a ser o primeiro processo da
fila, e, com isso, o estado que estava em espera passa ao estado de pronto, e assim por
diante. O tempo mdio de execuo no importa muito neste tipo de escalonamento
em funo da organizao por fila (MACHADO; MAIA, 2013).
Mas, para melhorar as opes e utilizar um tipo de escalonamento que considera o
tempo de execuo de um processo e no a ordem de chegada na fila, temos a opo
do SJF (escalonamento por shortest job first). Esse algoritmo seleciona o processo
com o menor tempo de execuo e este tem a prioridade, saindo do estado de
pronto e passando ao de execuo, e, ento, o escalonamento realiza tal conferncia
novamente e ordena os processos de acordo com o seu tempo de processamento.
Foi muito utilizado para os sistemas do tipo batch, pois o tempo de processamento
era mensurado com base em anlises estatsticas e da, ento, aplicado o algoritmo de
escalonamento SJF. Mas ele tambm aplicado a sistemas interativos, com a parada
de processamento para a realizao de algumas operaes de entrada e sada e, com
isso, repete essas operaes at que o processo em execuo se encerre efetivamente.
No entanto, quando isso acontece, o sistema operacional j no calcula mais o
tempo que o processo levar para finalizar, ou seja, quanto tempo ainda de utilizao
da CPU precisar. Trabalha apenas com uma previso de tempo de processamento
com base no tempo da ltima operao de execuo (MACHADO; MAIA, 2013).
considerado no preemptivo e uma das vantagens com relao a FIFO que reduz o
tempo total de processamento, o turnaround.
Pesquise mais
Assista ao vdeo que faz a demonstrao do mecanismo de escalonamento
SJF (Shortwst-Job-Firts). Disponvel em: https://www.youtube.com/
watch?v=OVWc4wDX1u4.
Baixe o simulador SOsim no link: http://www.training.com.br/sosim/.
38
Processos e threads
U2
Alm desses escalonamentos, temos o conhecido como cooperativo. Esse
escalonamento basicamente considera que um processo em execuo, de forma
voluntria, pode ceder o recurso para outro processo de forma cooperativa, atravs da
verificao de uma fila de status dos processos em estado de pronto.
Outro importante que precisamos estudar o escalonamento circular. Ele trabalha
com fila (FIFO), e isso significa que o primeiro processo em estado de pronto ser
tambm o primeiro a ser enviado execuo, de forma a permanecer neste estado
at que finde o seu processamento.
Assimile
Vamos, agora, compreender como o mecanismo de escalonamento
circular. Observe a Figura 2.4 e como acontece a alocao do processo
para execuo a partir do momento em que entra em estado de pronto.
Figura 2.4 | Escalonamento circular
UC
Estado de
trmino
Estado de
espera
Fonte: Adaptado de Machado e Maia (2013, p. 133).
Processos e threads
39
U2
escolhido para ser executado ser aquele que tem maior prioridade enquanto estiver
no estado de pronto. Conhea alguns dos critrios utilizados para essa verificao:
a) se os valores das prioridades dos processos so iguais, ento esses sero
ordenados em fila (FIFO). Esse tipo de processo no pode ser preemptivo, ocorrendo
por uma interrupo de tempo, ou de clock, de forma que o sistema identifique
novamente os estados dos processos e quais esto em pronto;
b) se nessa verificao for identificado um processo que contenha um nvel de
prioridade maior, o processo em execuo entra voluntariamente em estado de
espera at que o sistema encontre outro processo com maior prioridade;
c) pode ocorrer a mudana voluntria do estado execuo para o de espera, caso
haja perda em eficincia do processador.
Exemplificando
Observe qual a lgica do mecanismo de escalonamento por prioridades
ilustrado na Figura 2.5:
Figura 2.5 | Escalonamento por prioridade
Estado de
trmino
Estado de
criao
Estado de
espera
Fonte: Adaptado de Machado e Maia (2013, p. 135).
40
Processos e threads
U2
operaes de entrada e sada, com valores maiores do que os processos provenientes
de operaes de CPU (MACHADO; MAIA, 2013).
Nesse sentido, existem dois tipos de escalonamento circular: o dinmico e o esttico.
As prioridades de processos no escalonamento esttico so definidas no contexto
de software e no so alteradas enquanto existir esse procedimento estabelecido no
sistema. J no escalonamento circular com prioridades dinmicas, o administrador do
sistema pode interferir manualmente nas configuraes das prioridades e alter-las
de acordo com a poltica de escalonamento que foi estabelecida. No escalonamento
dinmico, o prprio sistema operacional pode intervir no nvel de prioridade do
processo para que este no demore muito tempo em execuo, no caso, quando se
tratam dos processos de E/S e, com isso, h um ganho em escalonamento que pode
compensar a espera sem prejudicar os processos do tipo CPU-bound.
Mas existem outros escalonamentos que visam otimizar ainda mais a organizao
dos processos e o seu tempo de execuo. Podemos citar o escalonamento por
mltiplas filas, que, como o prprio nome diz, trabalha com a formao de vrias filas
que so tratadas de acordo com a importncia da aplicao para o sistema operacional
ou mesmo a quantidade e a rea da memria que ser alocada, ou seja, a prioridade
no est associada ao processo e sim fila de processos.
Reflita
Como processos possuem caractersticas de processamento distintas,
difcil que um nico mecanismo de escalonamento seja adequado a todos.
A principal vantagem de mltiplas filas a possibilidade da convivncia
de mecanismos de escalonamento distintos em um mesmo sistema
operacional. Cada fila possui um mecanismo prprio, permitindo que
alguns processos sejam escalonados pelo mecanismo FIFO, enquanto
outros pelo circular (MACHADO; MAIA, 2013, p. 137).
Alm desse, ainda h um com o mesmo princpio, mas que implementa o
escalonamento por mltiplas filas com realimentao, o que infere em um processo
ser alternado de fila de acordo com a prioridade da fila. Esse um controle que o
prprio sistema operacional realiza para conseguir dinamizar o processamento, com
base no comportamento do processo. Para que isso acontea de forma ordenada,
esse escalonamento utiliza o mecanismo de FIFO com a caracterstica de controle por
fatia de tempo, sendo assim, quanto maior a prioridade da fila, menor a fatia de tempo
que o processo levar para ser encerrado, inversamente proporcional.
Alm dos tipos de escalonamento existentes nos sistemas operacionais, preciso
que se estabelea uma poltica de escalonamento que pode ser para sistemas de tempo
compartilhado ou de tempo real. Vamos falar agora da poltica de escalonamento
Processos e threads
41
U2
em sistemas de tempo compartilhado, que trabalham de modo mais interativo. Isso
ocorre porque os usurios podem, atravs das aplicaes, manipular informaes
do sistema, o que pode alterar o comportamento do sistema de modo geral, em
funo do nvel de compartilhamento de recursos exigido no ambiente. Em polticas
de escalonamento de sistemas de tempo real, o controle de tempo de execuo
do processo mais rigoroso, pois no permitido comprometer o processamento
de modo geral, pois a atualizao precisa ser constante. Um bom exemplo so os
sistemas industriais voltados produo e tambm de controle de trfego areo
(MACHADO; MAIA, 2013).
Faa voc mesmo
Elabore uma tabela com uma sequncia de processos; recomendo trs.
Defina o tempo de processamento para cada um e o seu respectivo nvel
de prioridade.
Desenvolva o diagrama de escalonamento dos processos por:
prioridades;
mltiplas filas com realimentao;
circular.
cooperativo.
Compreenda o mecanismo de escalonamento de todos eles e siga em
frente!
42
Processos e threads
U2
d) altere, tambm, a fatia de tempo que um processo pode levar, ou seja, configure
esse parmetro;
e) compare os tempos antes da alterao e depois, para poder dimensionar as
respectivas mudanas de estados;
f) observe quais foram as variaes em processamento, estados e tempo.
Tome nota dos parmetros utilizados e tambm dos resultados obtidos nesse
processo. Associe essa atividade s tarefas que o sistema operacional dever controlar,
com a implantao do sistema de gesto integrada de monitoramento e controle de
agendamentos de consultas e exames para a rede da clnica mdica.
O SOsim um simulador de comportamento de um sistema operacional, no
que tange ao gerenciamento e alocao de recursos necessrios para a realizao
das tarefas necessrias. Desenvolvido pelo professor Luiz Paulo Maia, no Ncleo de
Computao Eletrnica da Universidade Federal do Rio de Janeiro, com esse simulador
possvel visualizar como ocorre e quais so os mecanismos de funcionamento de um
sistema operacional multiprogramvel. Aproveite e conhea mais sobre essa importante
ferramenta em: http://www.training.com.br/sosim/.
Ateno!
Faa um relatrio com as observaes da simulao e compare os
tempos de processamento quando voc altera os parmetros no SOsim.
Veja como funcionam os mecanismos de escalonamento e aprenda
mais. Pratique!
Assista, tambm, a um um vdeo que mostra de uma forma bastante
simples de como voc pode criar um minissistema operacional.
uma oportunidade de conhecer e ter contato com uma linguagem
de programao (Visual Basic) e tambm de compreender como o
contexto de software de sistemas. Disponvel em: https://www.youtube.
com/watch?v=f6arCgdUDwc.
Lembre-se
A principal vantagem deste escalonamento permitir o melhor
balanceamento no uso do processador em sistema de tempo
compartilhado. Processos com o perfil I/O-bound devem receber do
administrador do sistema prioridades com valores maiores que as dos
processos CPU-bound. Isso permite ao sistema operacional praticar uma
poltica compensatria entre processos de perfis distintos, compartilhando
o processador de forma mais igualitria. Esse tipo de escalonamento
Processos e threads
43
U2
amplamente utilizado em sistemas de tempo compartilhado, como o
Windows e o Unix (MACHADO; MAIA, 2013, p. 136).
Avanando na prtica
Pratique mais
Instruo
Desafiamos voc a praticar o que aprendeu, transferindo seus conhecimentos para novas situaes
que pode encontrar no ambiente de trabalho. Realize as atividades e depois compare-as com as de
seus colegas.
Introduo ao escalonamento: conceitos, tipos, e escalonamento de threads
44
1. Competncia de fundamentos
de rea
2. Objetivos de aprendizagem
3. Contedos relacionados
Introduo ao escalonamento:
escalonamento de threads.
4. Descrio da SP
5. Resoluo da SP
Processos e threads
conceitos,
tipos
U2
Figura 2.6 Escalonamento por mltiplas filas com
realimentao
Processos e threads
45
U2
a) espera/pronto/execuo.
b) estado/execuo/pronto.
c) espera/tempo/pronto.
d) pronto/estado/execuo.
e) pronto/espera/criao.
Descrio
( ) Permite que o sistema operacional interrompa o
processamento de acordo com a prioridade.
II Escalonamento no preemptivo
46
Processos e threads
U2
sero ordenados em fila (FIFO).
III Pode ocorrer a mudana voluntria do estado execuo para o de
espera, caso haja perda em eficincia do processador.
So caractersticas do escalonamento:
a) Cooperativo.
b) Preemptivo.
c) Por prioridades.
d) Por mltiplas filas.
e) FIFO.
Processos e threads
47
U2
UCP
Criao
Espera
a) Circular.
b) Cooperativo.
c) Mltiplas filas.
d) Por prioridade.
e) FIFO.
48
Processos e threads
Trmino
U2
Seo 2.4
Algoritmos de escalonamento: caractersticas,
polticas, tipos e exemplos
Dilogo aberto
Ol, aluno! Bem-vindo a mais uma seo de autoestudos! Vamos conhecer
outros algoritmos de escalonamento, identificar as suas principais caractersticas, bem
como sintetizar a ideia de poltica de nveis de escalonamento, objetivos e critrios
que precisam ser considerados quando se trata da otimizao do processamento.
Alm disso, vamos conhecer tambm como tratado pelo sistema operacional o
escalonamento por threads.
Estudamos at aqui algumas especificidades quanto definio e conceitos
envolvidos em processos e threads. Nesse contexto, conseguimos conhecer como
acontece a comunicao entre processos e de que forma o sistema operacional
controla esse tipo de operao. Alm desses, vimos tambm as definies de
escalonamentos e quais deles so mais utilizados em sistemas multiprogramveis.
No caso desta seo, como estudaremos outros algoritmos de escalonamento,
temos de apresentar uma forma de selecionar ou avaliar um algoritmo de
escalonamento que atenda s necessidades de desempenho de software e hardware
que a empresa precisa, para que sejam otimizadas as rotinas do ERP e acontea a
efetiva implantao do sistema.
Mas voc se recorda da realidade profissional que estamos trabalhando?
Ento, vamos relembrar: devemos implantar um sistema de gesto integrada em
uma clnica mdica de forma a conseguir utilizar todo o potencial de seu parque
tecnolgico, incluindo servidores e os sistemas j instalados. Dessa forma, saber
gerenciar as rotinas e entender as atividades controladas pelo sistema operacional e
como ocorrem as aes que ele responsvel de extrema importncia.
Quanto mais associar os conceitos s variadas prticas e necessidades do mercado
de trabalho, maiores sero as possibilidades de voc aproveitar esse contato para
aprender, analisar, construir e desenvolver novas formas de solucionar os possveis
problemas do cotidiano organizacional, quando se trata de ambientes computacionais.
Processos e threads
49
U2
Nesse sentido, voc agora convidado a participar de mais uma etapa desse
processo de ensino-aprendizagem, associando sempre o contedo a uma possvel
situao de mercado.
Aproveite todo o potencial de estudos advindos das leituras, pesquisas, aulas e
interaes que o seu material didtico e ambiente educacional oferecem! Desde j,
bons estudos e prticas a voc!
No pode faltar
J estudamos os algoritmos de escalonamento FIFO (First in first out), como sugerido
por Machado e Maia (2013), ou ainda FCFS (first come first served) como mencionado
por Silberschatz et al. (2004). O algoritmo de escalonamento FCFS considera que o
primeiro processo a chegar na fila ser o primeiro a entrar em execuo, no entanto
este procedimento pode fazer com que processos pequenos e de custo baixo em
termos de processamento esperem por processos mais longos. Ambos so de baixa
complexidade.
Vimos tambm o escalonamento por prioridade em que o processo que tiver o
maior nvel ser executado primeiro. Ento, nesse sentido, visando reduzir o tempo de
espera mesmo com nveis distintos de prioridade, foi implementado o algoritmo SJF
(shortest job first). Alm desses, vimos tambm o algoritmo de escalonamento circular
ou RR (round robin), que considera a diviso do processo por fatias de tempo, tambm
chamadas de quantum (SILBERSCHATZ et al., 2004).
Ao estudar os algoritmos utilizados para realizar o escalonamento de processos,
temos de considerar fatores como nveis da poltica de escalonamento, bem como os
objetivos e os critrios que so utilizados para essa ao. Sendo assim, as polticas de
definio dos nveis de escalonamento podem ser (DEITEL, 2005):
a) de alto nvel: que determina quais grupos de processos podero trabalhar de
forma concorrente, e, ainda, controla o nmero de processos em um espao de
tempo, ou seja, o seu grau de multiprogramao, procurando evitar o uso de todos os
recursos do sistema para processamento. Com isso, alguns processos podem ter de
esperar a concluso de outros para que sejam executados;
b) de nvel intermedirio: em que so definidos os processos que competiro por
recursos do processador. possvel interromper um processo e retom-lo em seguida
com o seu processamento para que possa garantir o bom desempenho da mquina;
c) de baixo nvel: nessa poltica de escalonamento, normalmente h a atribuio de
prioridade para o processo, com isso aumenta a probabilidade dele ser escolhido para
processamento. Em uma poltica de escalonamento de baixo nvel, h a determinao
50
Processos e threads
U2
de processos que esto ativos para que o sistema possa designar um processador
quando estiver disponvel.
Mas, afinal, qual o objetivo de se estabelecer uma poltica de escalonamento?
Bem, de modo geral, o objetivo potencializar o uso de recursos da mquina, porm
vamos especificar essa informao. Com a realizao de escalonamento, possvel
maximizar o uso de recursos de forma a atender uma quantidade maior de processos
e em menor tempo de execuo. Minimizar os tempos de resposta tambm um
dos objetivos do escalonamento. Outro fator importante trabalhar com memria
e processador de forma a evitar que acontea a interrupo por tempo indefinido
de um determinado processo. Alm disso, importante que, com o escalonador,
sejam impostas prioridades na escolha de processos e alocao de recursos. Reduzir
a probabilidade de ocorrncia de sobrecarga e, ainda, melhorar a previso de durao
do processo, ou seja, a sua previsibilidade. Este ltimo um conceito que determina o
tempo mnimo de resposta, de espera e de execuo de um processo.
Assimile
Sobrecarga frequentemente resulta em desperdcio de recursos, mas
uma certa poro dos recursos do sistema se investida efetivamente
como sobrecarga pode melhorar muito o desempenho geral do sistema
(DEITEL, 2005, p. 213).
Como mencionado, alguns critrios para se estabelecer a poltica de escalonamento
adotada precisam ser considerados. Dentre eles, podemos elencar os critrios que
consideram se o processo orientado ao processador, orientado a operaes de
entrada e sada, em lote, ou se um processo interativo. Veja a seguir as breves
descries de cada um deles segundo os critrios de comportamento de processos
(DEITEL, 2005):
a) orientado a processador: critrio que determina que um processo tende a utilizar
todos os recursos do processador que lhe foi atribudo;
b) operaes de E/S: utiliza o processador apenas para atender as requisies das
operaes de entrada e sada de dados e, em seguida, libera o recurso;
c) processo em lote: h a alocao de recursos de processamento sem a interao
com o usurio para executar um determinado processo ou grupo de processos.
d) processo interativo: nesse critrio, o usurio precisa participar com as entradas
de dados. Os tempos de resposta do processo precisam ser mais rpidos.
Porm, no basta que se estabelea a poltica de escalonamento de acordo com os
respectivos nveis de priorizao de processamento e alocao de recursos, nem que
Processos e threads
51
U2
se saiba os critrios que norteiam as aes do escalonamento se no forem de seu
conhecimento os algoritmos que realizam essas tarefas, que so to importantes para
a anlise de desempenho de um sistema computacional. A partir de agora, conhea
tambm outros algoritmos de escalonamento. Siga em frente! Veja no Quadro 2.3
uma breve descrio de alguns deles:
Quadro 2.3 | Algoritmos de escalonamento
Algoritmo de escalonamento
Descrio
Esse
tipo
de
algoritmo
necessita
da
disponibilizao exata de recursos necessrios de
processamento para que o sistema operacional
possa distribuir sem prejudicar as rotinas comuns
e desempenho. Dessa forma, o objetivo que
se cumpra o prazo predeterminado para o
processamento do conjunto descrito.
52
Processos e threads
U2
h a alocao do processo para execuo, esta ao acontecer at o encerramento
das instrues, de forma ininterrupta e, por esse motivo, ele no preemptivo. H
uma frmula que utilizada para o clculo da prioridade inerente a cada processo. A
frmula a seguinte (DEITEL, 2005):
Prioridade = (tempo de espera + tempo de servio) / tempo de servio
Nesse algoritmo de escalonamento, os processos menores tm preferncia e h o
favorecimento aos processos mais longos em funo da identificao do seu tempo
de espera.
O SRT, atravs de uma ao preemptiva, pode interromper um processamento
em funo da alocao temporria do recurso para que um processo menor seja
eliminado da fila. Lembre-se que essa determinao e ao do SRT so fundamentadas
na estimativa de tempo de execuo de um processo e a escolha se d pelo que
apresentar uma estimativa menor.
Reflita
O algoritmo SRT teoricamente oferece tempos de espera mnimos, mas,
em certas ocasies, devido sobrecarga de preempo, o SPF pode se
sair melhor. Por exemplo, considere um sistema no qual um processo em
execuo esteja quase no final e chegue um novo processo, cujo tempo
estimado de servio seja pequeno. O processo em execuo pode se sair
melhor? A disciplina do SRT faria a preempo, mas essa pode no ser a
alternativa tima. Uma soluo garantir que um processo em execuo
no possa mais sofrer preempo quando o tempo de execuo restante
atingir um determinado nvel baixo (DEITEL, 2005, p. 219).
Processos e threads
53
U2
esse algoritmo necessita da requisio prvia de recursos do sistema, com a insero
exata que ser necessria para que se cumpra o prazo previsto de processamento de
um conjunto de processos.
Uma desvantagem desse tipo de escalonamento que pode haver sobrecarga do
uso de recursos, o que pode impactar no desempenho da mquina, principalmente no
que tange dedicao de servios e recursos para outros processos. No entanto, esse
importante para o escalonamento de processos em tempo real. Uma das formas de
trabalho deste algoritmo alocar os processos que necessitam de menor quantidade
de recursos para que tenham prioridade de execuo.
Como mencionado, os algoritmos de escalonamento de processos em tempo
real permitem a alocao de algoritmos distintos de acordo com a solicitao que foi
realizada. Dessa forma, h algumas classificaes para eles. Vejamos:
a) escalonamento de tempo real no crtico: visa garantir que processos em tempo
real sejam executados, porm sem a garantia de que cumprir alguma restrio de
tempo;
b) escalonamento de tempo real crtico: ao contrrio do anterior, garante o
processamento antes do prazo estabelecido;
c) escalonamento de tempo real esttico: nesse, as prioridades dos processos so
determinadas uma nica vez;
d) escalonamento de tempo real dinmico: estes realizam o escalonamento
por prioridades e isso acontece durante a execuo dos processos. Pode haver a
interrupo preemptiva, de acordo com as necessidades de alocao identificadas,
de forma a preencher, inclusive, os espaos considerados de folga entre a seleo de
processos ou de execuo. Essa folga refere-se ao tempo restante ao processo para
que seja finalizada a sua execuo.
Por fim, vamos falar um pouco sobre o escalonamento de thread Java. No Quadro
2.3, evidenciamos que o modo de tratamento de um escalonamento de thread de
usurio (escalonamento por timeslicing ou espao de tempo) e de ncleo so distintos
no sistema operacional. Outras consideraes, como a quantidade de threads,
sua ordem, bem como a prioridade estabelecida, devem ser definidas em nvel de
software, ou seja, no desenvolvimento, pelo responsvel pela implementao. Nesse
caso, pode ser aplicado, por exemplo, o algoritmo de escalonamento por frao justa,
ou ainda, de acordo com a quantidade de threads alternncia circular ou mesmo o
algoritmo de escalonamento por intervalo de tempo. Tudo depender do tipo de
thread e a quantidade de recursos necessrios de forma a buscar sempre garantir um
bom desempenho da mquina.
54
Processos e threads
U2
Exemplificando
Ao mencionar threads, precisamos considerar que na linguagem Java
todo tipo de aplicao multithread. Os threads Java recebem nveis de
prioridade entre 0 e 1 (Thread.MIN_PRIORITY e Thread.MAX_PRIORITY,
que so, respectivamente, comandos que definem valores constantes da
prioridade, no caso, 1 no mnimo e 10 no mximo.)
Figura 2.7 | Escalonamento de
threads Java
Threads Prontos
1. Um thread pode ser executado
at
o
encerramento
das
instrues.
2. Pode sair de execuo e
entrar em espera, para que outro
processo de maior prioridade
seja escalonado.
3. Pode sofrer preempo para
que outro thread de maior
prioridade seja executado.
Pesquise mais
Leia e estude com ateno o material sobre escalonamento que est
disponvel em: http://www.ece.ufrgs.br/~fetter/eng04008/sched.pdf.
Processos e threads
55
U2
Leia mais sobre escalonamento no artigo Poltica de Escalonamento de
Processos em Linux. Disponvel em: http://revista.grupointegrado.br/revista/
index.php/campodigital/article/view/344/159.
56
Processos e threads
U2
CPU10
E/S213
CPU/12
EXECUO DE DEMAIS
PROCESSOS E THREADS
Simulao FIFO
(estatsticas)
Simulao HRRN
(estatsticas)
Simulao SJF
(estatsticas)
Ateno!
Simulaes podem ser caras e exigir muito tempo de uso de recursos
do sistema computacional. Para verificar se os dados de uma simulao
de fato so coerentes, aconselhvel que se codifique e avalie o
comportamento do algoritmo diretamente no sistema operacional.
Lembre-se
O simulador possui uma varivel representando um relgio; medida
que o valor dessa varivel aumentado, o simulador modifica o estado
do sistema para refletir as atividades dos dispositivos, dos processos e
do escalonador. Enquanto a simulao executada, as estatsticas que
indicam o desempenho do algoritmo so colhidas e impressas (DEITEL,
2005, p. 146).
Avanando na prtica
Pratique mais
Instruo
Desafiamos voc a praticar o que aprendeu, transferindo seus conhecimentos para novas situaes
que pode encontrar no ambiente de trabalho. Realize as atividades e depois compare-as com as de
seus colegas.
Processos e threads
57
U2
Introduo ao escalonamento: conceitos, tipos e escalonamento de threads
1. Competncia de fundamentos
de rea
2. Objetivos de aprendizagem
3. Contedos relacionados
Introduo ao escalonamento:
escalonamento de threads
4. Descrio da SP
conceitos,
tipos
Tempo de
Burst
Processos
5. Resoluo da SP
Tempo de espera
(ms)
P1
10
P2
29
10
P3
39
P4
42
P5
12
49
P1
0
10
P3
39
P4
42
P5
49
61
58
Processos e threads
U2
Lembre-se
Esse mtodo apanha uma carga de trabalho especfica predeterminada e
define o desempenho de cada algoritmo para essa carga de trabalho. [...] A
modelagem determinstica simples e rpida. Ela nos d nmeros exatos,
permitindo que os algoritmos sejam comparados (DEITEL, 2005, p. 145).
Processos e threads
59
U2
3. Associe na tabela os conceitos s suas respectivas descries:
Critrios
Descrio
a. Baixo nvel
b. Intermedirio
c. Alto nvel
60
Processos e threads
U2
c) V-F-V.
d) F-F-V.
e) F-V-V.
Processos e threads
61
U2
62
Processos e threads
U2
Referncias
DEITEL, H. M.; DEITEL P. J.; CHOFFNES, D. R. Sistemas operacionais. 3. ed. So Paulo:
Prentice Hall, 2005.
MACHADO, Francis B.; MAIA, Luiz P. Arquitetura de Sistemas Operacionais. 5. ed. Rio
de Janeiro: LTC, 2013.
SILBERSCHATZ, Abraham; GALVIN, Peter B.; GAGME, Greg. Sistemas operacionais:
sistemas e aplicaes. 6. ed. Rio de Janeiro: Elsevier, 2004.
STUART, Brian L. Princpios de sistemas operacionais: projetos e aplicaes. So Paulo:
Cengage Learning, 2010.
TANEMBAUM, Andrew S. Sistemas operacionais modernos. 3. ed. So Paulo: Pearson
Prentice Hall, 2009.
Processos e threads
63