Вы находитесь на странице: 1из 64

LIVRO

UNIDADE 1
2

Fundamentos de
Sistemas Operacionais

Processos e threads

Juliana Schiavetto Dauricio

2015 por Editora e Distribuidora Educacional S.A


Todos os direitos reservados. Nenhuma parte desta publicao poder ser reproduzida
ou transmitida de qualquer modo ou por qualquer outro meio, eletrnico ou mecnico,
incluindo fotocpia, gravao ou qualquer outro tipo de sistema de armazenamento e
transmisso de informao, sem prvia autorizao, por escrito, da Editora e
Distribuidora Educacional S.A.

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

Seo 2.1 - Introduo a processos: modelo, criao, trmino, hierarquia,


estados, implementao e threads

Seo 2.2 - Comunicao entre processos e problemas clssicos de


comunicao entre processos

21

Seo 2.3 - Introduo ao escalonamento: conceitos, tipos e


escalonamento de threads

35

Seo 2.4 - Algoritmos de escalonamento: caractersticas, polticas,


tipos e exemplos

49

Unidade 2

INTRODUO AOS SISTEMAS


OPERACIONAIS

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

modo, fica a recomendao de estudos e leituras frequentes de seu livro didtico,


resoluo dos exerccios propostos e o acompanhamento da webaula.
O seu desafio nesta unidade de ensino gerenciar rotinas e processos,
criar, excluir e executar comandos para o processamento de dados de forma
a otimizar o sistema operacional que interage com o ERP. Se voc tivesse que
realizar esse servio em uma clnica mdica que acabou de adquirir um mdulo
de sistema integrado de gesto, como realizaria essa tarefa sem afetar as
mltiplas operaes em andamento? Desde j bons estudos e prticas a voc!

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

Monoltica (MS- DOS e Unix)

Mdulos executados separadamente mas que compem um


nico executvel.

Camadas (MULTICS e OpenVMS)

Devido complexidade do sistema, ele dividido em nveis e


suas funes s podem ser utilizadas por camadas superiores
(usurio, supervisor,executivo e kernel).

Mquina Virtual (VM)

Faz o intermdio entre o hardware e o sistema operacional.


Oferece todos os servios do SO. Pode haver vrias mquinas
virtuais em uma nica mquina.

Microkernel

Menor e mais simples. Trata servios por processos que


oferece funes especficas.

Fonte: Adaptado de Machado e Maia (2013, p. 53- 58).

Tendo em mente que voc precisa definir quais so as configuraes necessrias


para se implementar um sistema de gesto integrado em uma clnica mdica,
identifique tais caractersticas e descreva como acontece essa gesto de processos no
sistema operacional indicado. Dessa forma, considere as configuraes tcnicas do
servidor e das estaes de trabalho. Boas prticas!

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.

Fonte: Adaptado de Machado e Maia (2013).

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).

Nos sistemas operacionais multiprogramveis, os processos no devem receber de


forma dedicada todos os recursos da mquina. Com isso, os processos so divididos
em estados: execuo (running), pronto (ready) e espera (wait). O processo est em
execuo enquanto processado pela UCP, sendo que os processos revezam o
tempo de processamento controlado pelo sistema operacional. Quando o processo
se encontra no estado de pronto, quer dizer que o processo est aguardando para
ser processado, enquanto o estado de espera acontece quando o processo aguarda
um recurso para continuar o processamento ou, ainda, aguarda o tratamento de um
evento para que possa prosseguir. Os processos em espera so organizados no sistema
em listas encadeadas e de acordo com o tipo de evento ocorrido. Quando recebem
os recursos necessrios, mudam para o estado de pronto (MACHADO; MAIA, 2013).

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).

Faa voc mesmo


Assista videoaula sobre processos e threads e compreenda como
ocorre esse passo a passo. Disponvel em: https://www.youtube.com/
watch?v=BBoo8frWvrc.
Os processos so classificados em dois tipos:
CPU-bound: ocupa mais recursos da unidade central de processamento (UCP), ou
seja, passa mais tempo em execuo e pronto. Facilmente encontrado em aplicaes
com maior quantidade de operaes de clculo;
I/O-bound: este processo passa a maior parte do tempo em estado de espera.
Encontrado em aplicaes comerciais em que necessrio realizar muitas tarefas de
leitura, gravao e processamento.

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.

Sem medo de errar


Para que voc possa levantar os dados de configuraes que a clnica mdica deve
ter em seu servidor e estaes de trabalho para instalar e implementar o ERP em sua

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

Intel Xeon Processor E78830

Intel CoreTM M vProTM

Sistema Operacional

Linux CentOS 6.5

Windows XP SP3, Seven, 8 e 8.1.

Cache

24 MB

4MB

Velocidade do Clock

2.13 GHz

900 MHz

Ncleos/ Threads

8/16

2/4

Fonte: Elaborada pelo autor (2015).

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

Fonte: Tanembaum (2009).

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

O aluno dever ser capaz de identificar quais so as


principais funes de um sistema operacional, bem como
ter conhecimento sobre a sua gerncia e como se d o
compartilhamento de recursos.

2. Objetivos de aprendizagem

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.

3. Contedos relacionados

Introduo a processos: o modelo, criao, trmino,


hierarquia, estados, implementao e threads.

4. Descrio da SP

Considere que voc precise implementar threads em um


processo de carga automtica no sistema de lanamento de
notas, a fim de otimiz-lo. No entanto, alm do procedimento
implementado, voc precisa desenvolver um programa que
exibe uma mensagem de confirmao de criao do threads.
Nesse caso, a recomendao que voc consulte o material
de referncia bibliogrfica bsica da disciplina e compreenda
o processo relacionado, pois esse programa que cria threads
ser desenvolvido em uma linguagem de programao.

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

O programa a seguir cria trs threads a partir de uma classe


denominada Loop. Veja no exemplo em Java como seria essa
implementao.
import java.util.*;
public class CriaThreads{
public static void main (String [] args) {
int i, n = 3;
for (i =1; i <= n; i++){
Loop loop = new Loop (i);
Thread t = new Thread (loop) ;
t.start ();
System.out.println(Thread + i + criado);
}
}
}
Class Loop implemente Runnable {
int j;
public Loop (int i) {
j = i;
}
public void run (){
Random random = new Random();
while (true) {
System.out.printl(Thread + j + executado);
try {
Thread.sleep (random.nextInt (5000));
}
catch ( InterruptedException iex){}
}
}
}
(MACHADO; MAIA, 2013, p. 88)

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).

Faa voc mesmo


Elabore um relatrio com o que compreendeu do mecanismo de um

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.

Faa valer a pena!


1. Leias as afirmaes e assinale a alternativa correspondente:
I O system call, que pode ser explcito ou implcito.
II No explcito, h uma instruo de qual chamada dever ser executada
no prprio programa.
III No implcito, a instruo da chamada que dever ser executada est
apenas no kernel.
a) V-V-V.
b) F-F-F.
c) V-V-F.
d) V-F-V.
e) F-V-V.

2. Assinale a alternativa que contm a definio de arquitetura de Kernel


Monoltica (MS- DOS e Unix):
a) So processos independentes e subprocessos.
b) Serve para ler mensagens antigas dos processos.
c) Realiza carga automtica no sistema.
d) Refere-se a mdulos executados separadamente, mas que compem
um nico executvel.
e) um servio de comunicao do sistema operacional com o usurio
diretamente.

3. Complete as lacunas da frase com as palavras disponveis na alternativa


correspondente:
No _____________, as informaes que o sistema operacional deve

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.

4. Cite e descreva os estados de processos:

5. Descreva ambiente monothread e multithread:

6. De acordo com as afirmaes a seguir, assinale a alternativa que


representa os respectivos conceitos de threads:
I Threads podem ser implementados em bibliotecas externas ao kernel.
II Threads podem ser implementados pelo prprio ncleo do sistema.
III Threads podem ser implementados por ambos modos.
a) Modo usurio, modo kernel, modo hbrido.
b) Modo kernel, modo usurio, modo hbrido.
c) Modo kernel, modo hbrido, modo usurio.
d) Modo hbrido, modo kernel, modo usurio.
e) Modo hbrido, modo usurio, modo kernel.

7. Dada a tabela a seguir de arquitetura de threads, assinale a alternativa


que contm os seus respectivos modelos (modos de threads), de forma
a completar a lacuna da tabela:
Ambientes

Arquitetura

Distributed Computing Environment (DCE)


Microsoft Windows 2000
Sun Solaris verso 2

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/.

Sem medo de errar


Agora, considerando que a aplicao (software de gesto integrada) trabalha de
forma concorrente e esse o tipo de comunicao que se estabelece, explique
de que forma o algoritmo de Dijkstra pode auxiliar na alocao de recursos para a
comunicao e sincronizao de processos, oriundos da aplicao.
Dessa forma, lembre-se de que a tarefa agora localizar o endereo de solicitao
de informaes on-line do sistema de gesto da clnica mdica e informar, a partir disso,
os consultrios e clnicas mais prximos do usurio, de acordo com o seu plano de
sade, alm de oferecer o servio de discagem direta para a realizao do agendamento.
Pensando nisso, explique o mecanismo de funcionamento do algoritmo proposto.
Apresente o mecanismo e materiais de apoio com as suas possibilidades de aplicao.
Sendo assim, possvel associar a necessidade de processamento das solicitaes
dos usurios de forma concorrente. Com isso, vamos estudar o processo de Dijkstra
que implanta o uso do conceito de semforo para a sincronizao dos processos.
Nesse sentido, o exemplo que se enquadra nessas condies o do problema dos
filsofos. Ns consideraremos cada ao que eles precisam tomar como sendo os
processos que o sistema dever executar, implementando uma soluo que previna a
ocorrncia de deadlocks. O problema: h uma mesa com cinco pratos e cinco garfos
(os recursos), em que os filsofos podem sentar, comer e pensar (processos). Quando
um filsofo para de pensar e deseja comer (mudana de estado do processo), ele
precisa usar mais recursos: dois garfos direita e esquerda. Associando s aes
do programa, vamos considerar que os recursos so aqueles que podero ser
compartilhados no servidor da aplicao e gerenciados pelo sistema operacional.
As solicitaes de clnicas e consultrios prximos ao cliente (paciente ou usurio)
representam os processos. Para cada solicitao, ser preciso alocar os recursos e
com isso verificar, de acordo com o algoritmo proposto, a sua disponibilidade. Vamos
ver como fica a soluo proposta por Dijkstra em Machado e Maia (2013, p. 111):

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]);

Garfos: ARRAY [0..4] of Semaforo:= 1;

UP (Garfos [(I +1) MOD 5]);

Lugares : Semaforo := 4;

UP (Lugares);

I : INTEGER;

UNTIL false;

PROCEDURE Filosofo (I: INTEGER);

END;

BEGIN

BEGIN

REPEAT

PARBEGIN
Pensando;

FOR I:= 0 TO 4 DO

DOWN (Lugares);

Filosofo (I);

DOWN (Garfos [I]);


DOWN (Garfos [(I +1) MOD 5]);

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

O aluno dever ser capaz de identificar quais so as principais


funes de um sistema operacional e ter conhecimento sobre
como se d o compartilhamento de recursos e a sua gerncia.

2. Objetivos de aprendizagem

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.

3. Contedos relacionados

Comunicao entre processos e problemas clssicos de


comunicao entre processos.

4. Descrio da SP

De acordo com as necessidades de execuo desse


mecanismo de comunicao, explique o seu funcionamento
e considere este procedimento como uma opo que
reduz a possibilidade de ocorrncia de erros para o bom
funcionamento do software de gesto que pode ser
implementado na clnica.

5. Resoluo da SP

H trs formas de aplicar a comunicao de processos por


troca de mensagens:
1) sincronizao de envio, recepo e leitura de processos.
O mesmo deve acontecer para o caso do recebimento de
mensagens; o processo deve aguardar at que a mensagem
esteja pronta para envio (rendevouz);
2) utiliza o tempo de espera do processo de transmisso e
permite enviar mensagens para outros destinatrios, enquanto
o processo de envio no finaliza o tratamento da mensagem;
3) trabalha de forma assncrona, ou seja, considera buffers
para armazenar as informaes e tambm outras formas de
controle de envio e recebimento de mensagens.
Considere o exemplo trazido por Machado e Maia (2013) para
realizar a transmisso de mensagens:
PROGRAM Produtor_consumidor_4;
PROCEDURE Produtor;
VAR Msg: Tipo_Msg;
BEGIN
REPEAT
Produz_ Mensagem (Msg);
SEND (Msg);
UNTIL false;
END;
PROCEDURE Consumidor;
VAR Msg: Tipo_Msg;
BEGIN

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).

Faa voc mesmo


recomendada, alm da leitura, um resumo do material indicado que
trata da comunicao entre processos por troca de mensagens e exibe as
formas de implementao com sockets com e sem conexo. Disponvel
em: <http://www.oocities.org/walterchagas/process.html>.

Faa valer a pena!


1. Descreva como o processo de comunicao de processos a notao
FORK e JOIN.
2. Assinale a alternativa que contm uma caracterstica da comunicao
e sincronizao atravs do procedimento de excluso mtua:
a) Implementa um procedimento com variveis encapsuladas e aplica a
excluso mtua.
b) Deve haver a preveno, a deteco e a correo do deadlock.

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.

3. Complete: [...] No mecanismo de comunicao entre processos


por ___________, no se necessita de variveis compartilhadas, mas
se estabelece um canal de comunicao em que seja possvel enviar
(________) e receber (______) mensagens para a sincronizao de
execuo dos processos. H a comunicao direta e a indireta.
a) parbegin/ PAREND/ RECEIVE.
b) troca de mensagens/ SEND/ RECEIVE.
c) RECEIVE/ troca de mensagens/ SEND.
d) END/ BEGIN/ deadlock.
e) deadlock/ PAREND/ BEGIN.

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.

5. Avalie o procedimento a seguir e assinale a alternativa correta:

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;

6. Refere-se a um teste do procedimento de comunicao atravs de:


a) Monitores.
b) Semforos.
c) Deadlock.
d) Excluso mtua.
e) Send.

7. Analise as afirmaes e assinale a alternativa que apresenta a sequncia


correta no que tange ao mecanismo de excluso mtua.
I Os processos alternam a execuo na regio crtica do programa
atravs de uma repetio infinita.
II Visa sanar o problema de comunicao de estados entre os processos,
alterando o status da varivel antes de acessar a regio crtica.
III Insere uma varivel global para cada processo associado.
a) Segundo algoritmo/primeiro algoritmo/terceiro algoritmo.
b) Quarto algoritmo/quinto algoritmo/terceiro algoritmo.
c) Primeiro algoritmo/quarto algoritmo/segundo algoritmo.
d) Primeiro algoritmo/terceiro algoritmo/segundo algoritmo.
e) Primeiro algoritmo/terceiro algoritmo/quarto algoritmo.

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

Fonte: Tanembaum (2010, p. 54).

O processo, quando entra em execuo, permanece com esse estado at o


trmino do processamento. Quando encerra, liberado o acesso para outro processo,
que deixar o estado de pronto e entrar em execuo, e assim por diante. Mas como
possvel controlar quais os processos que devem ter prioridade, ou, ainda, quais
processos esto na fila para processamento?
Para que isso acontea, os mecanismos de escalonamento de processos foram
desenvolvidos. Alguns critrios de escalonamento so necessrios e determinados de
acordo com as caractersticas do sistema operacional. Dentre os critrios, podemos

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;

b) first in first out (FIFO);

c) shortest job first (SJF);

d) cooperativo;

e) circular;

f) por prioridades;

g) circular por prioridades;

h) por mltiplas filas;

i) por mltiplas filas com realimentao;

j) polticas de escalonamento em sistemas de


tempo compartilhado e de tempo real.

Ento, vamos iniciar as respectivas definies. Siga em frente!


A classificao adotada para definir a poltica de escalonamento em sistemas
operacionais deve considerar se trabalhar com o modo no preemptivo ou preemptivo.
O escalonamento no preemptivo foi implementado inicialmente para os sistemas
tipo batch e foi um dos primeiros a ser utilizados em sistemas multiprogramveis.
Todos os recursos do processador ficam dedicados at que todo o processo seja
finalizado ou por erro de execuo, ou por tempo de processamento. Nesse caso,
as instrues do processo j so desenvolvidas de forma a alterar para o estado de
espera. Nesse modo no preemptivo, o sistema operacional no gera interrupes
(MACHADO; MAIA, 2013).

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

Fila de processos em estado de pronto


Estado de
criao

UC

Estado de
trmino

Estado de
espera
Fonte: Adaptado de Machado e Maia (2013, p. 133).

Alm dessa forma de escalonar e identificar a ocorrncia, podem ser elencados


alguns fatores que influenciam na mudana de estado. Por exemplo, um processo
pode passar do estado de execuo para o estado de espera quando excede o tempo
de entrada em processamento e necessita de uma entrada preemptiva para retornar a
fila. Outro fator que pode acarretar a mudana de estado no escalonamento circular
a entrada em estado de espera de forma voluntria, ou por razo no identificada
(MACHADO; MAIA, 2013).
Confira, a seguir, a apresentao dos demais tipos de escalonamento existentes.
At aqui voc estudou alguns tipos de escalonamento; conhea agora o
escalonamento por prioridades. Esse tipo de escalonamento precisa que seja
determinada qual a prioridade de execuo de um processo e, ento, o que for

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).

Na figura, h a preempo de processos, caso esse passe do estado de


execuo para o de pronto, em funo do nvel de prioridade estabelecido
para o tipo de processo. Com isso, ele dever retornar fila em estado de
espera e seguir o fluxo para, ento, ser enviado novamente execuo.
Outro tipo de escalonamento que considera a priorizao de processos o circular
com prioridades. O algoritmo desse escalonamento associa a cada processo uma
fatia de tempo e a sua ordem de prioridade com relao aos demais. Com isso, ou o
processo ser iniciado e encerrado sem interrupes, ou passar voluntariamente para
o estado de espera. Alm disso, o escalonamento circular permite que o administrador
do sistema configure as prioridades dos processos I/O- bound, ou seja, que vm de

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!

Sem medo de errar


Considere que voc precisa realizar um teste de eficincia do sistema operacional
quando o sistema de gesto integrada est em execuo, e de forma a identificar
o comportamento da gerncia de processos e como est acontecendo o
escalonamento circular por prioridades. No SOsim voc pode fazer as verificaes a
seguir, considerando que o tipo de escalonamento aplicado ser o circular:
a) configure no console do SOsim os parmetros que o sistema dever seguir;
b) a princpio, crie quatro processos que tenham o mesmo nvel de prioridade.
Defina quais sero CPU-bound e quais sero I/O- bound;
c) anote os tempos que os processos levam desde a criao at o encerramento,
turnaround, bem como as mudanas de estados;

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

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.

2. Objetivos de aprendizagem

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.

3. Contedos relacionados

Introduo ao escalonamento:
escalonamento de threads.

4. Descrio da SP

Suponha que os parmetros a utilizar so os do mecanismo


de escalonamento por mltiplas filas com realimentao.
Explique como aplicado e a lgica deste procedimento
realizado pelo sistema operacional.

5. Resoluo da SP

Para compreender o escalonamento proposto, considere:


a) no caso do escalonamento por mltiplas filas com
realimentao, apenas a fila com menor prioridade utiliza o
mecanismo de escalonamento circular. Para as demais, o
FIFO;
b) o escalonamento s acontecer em uma fila a partir do
momento em que as de maior prioridade estiverem vazias;
c) saiba tambm que, quanto maior a prioridade da fila, menor
ser a sua fatia de tempo;
d) logo que o processo criado, ele direcionado para a fila
de maior prioridade, em ltimo lugar e, de acordo com a
preempo por fatia de tempo, pode ser redirecionado a uma
fila que tenha uma prioridade menor.
Observe o esquema a seguir que representa o escalonamento
por mltiplas filas com realimentao:

Processos e threads

conceitos,

tipos

U2
Figura 2.6 Escalonamento por mltiplas filas com
realimentao

Fonte: Adaptado de Machado e Maia (2013, p. 139).

Faa voc mesmo


Simule esse tipo de escalonamento no SOsim. Crie ao menos trs
processos e defina prioridades e fatias de tempo diferentes. Aloque
em filas com prioridades distintas e verifique o comportamento desse
procedimento, as mudanas de estado e o tempo de processamento.
Lembre-se
O escalonamento por mltiplas filas com realimentao um algoritmo
de escalonamento generalista, podendo ser implementado em qualquer
tipo de sistema operacional. Um dos problemas encontrados nesta poltica
que a mudana de comportamento de um processo CPU-bound para
I/O-bound pode comprometer seu tempo de resposta. Outro aspecto a
ser considerado sua complexidade de implementao, ocasionando um
grande overhead ao sistema (MACHADO; MAIA, 2013, p. 139).

Faa valer a pena!


1. Complete as lacunas da frase com as palavras da alternativa correta:
Um processo fica em __________ a partir de sua criao e permanece
neste at que estejam os recursos dimensionados e devidamente
alocados e ele passa, ento, ao estado de_______. Com isso, ele poder
ser chamado para processamento e, at o trmino desta operao,
permanecer no estado de__________.

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.

2. Descreva o escalonamento por prioridade.

3. Explique qual a diferena dos escalonamentos por mltiplas filas e


por mltiplas filas com realimentao.
4. Associe na tabela e assinale a alternativa que contm a sequncia
obtida:
Conceito
I Escalonamento preemptivo

Descrio
( ) Permite que o sistema operacional interrompa o
processamento de acordo com a prioridade.

II Escalonamento no preemptivo

( ) O processo, de forma voluntria, interrompe a


execuo, entra em espera e libera recursos para
o processamento de outro processo que esteja no
estado de pronto, e o escalonamento faz a respectiva
verificao para a redistribuio dos processos.

III Escalonamento colaborativo

( ) O sistema operacional no gera interrupes.

A sequncia que representa os conceitos e suas respectivas definies


:
a) II, I, e III.
b) I, II e III.
c) I, III e II.
d) III, II e I.
e) III, I e II.
5. Considere as afirmaes:
I Nesse tipo de escalonamento, determinada qual a prioridade de
execuo de um processo.
II Se os valores das prioridades dos processos so iguais, ento esses

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.

6. Assinale a alternativa que apresenta a sequncia correta:


I O escalonamento circular por prioridades s acontecer em uma fila
a partir do momento em que as de maior prioridade estiverem vazias.
II Em um escalonamento por mltiplas filas com realimentao,
quanto maior a prioridade da fila, menor ser a fatia de tempo utilizada
para executar os processos.
III Em escalonamento por mltiplas filas com realimentao, logo que
o processo criado. ele direcionado para a fila de maior prioridade,
em ltimo lugar e, de acordo com a preempo por fatia de tempo, ele
pode ser redirecionado a uma fila que tenha uma prioridade menor.
a) F-F-F.
b) F-V-V.
c) V-V-V.
d) F-F-F.
e) V-F-V.

7. Analise a figura e assinale a alternativa correta quanto ao tipo de


escalonamento ilustrado:

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

Escalonamento por prxima taxa de


escalonamento mais prxima.

Conhecido como HRRN (highest response ratio


next).
Visa
corrigir
um
erro
relacionado
ao
escalonamento SJB/SPF mencionado acima, em
que h essencialmente a priorizao de processos
maiores a menores, fazendo com que esses
tenham de esperar mais tempo do que o previsto.

Escalonamento por menor tempo de


execuo- restante.

SRT (shortest remaining time), ao contrrio do SJB,


determina o processo que ter o menor tempo de
execuo, por estimativa e d prioridade a esse.

Escalonamento por frao justa

FSS (fair share scheduling) esse algoritmo permite


que, em sistemas multiusurios, os processos
relacionados a um usurio sejam agrupados
aos de outros usurios para processamento.
Tambm restringe cada grupo ao seu respectivo
subconjunto de recursos do sistema.

Escalonamento por prazo

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.

Escalonamento de tempo real

Visa utilizar os recursos de processamento de


forma potencializada. Isso quer dizer que pode
aplicar de acordo com a operao, um algoritmo
diferente para cada um dos processos solicitados.

Escalonamento de threads Java

Esse tipo de escalonamento realizado pelo


sistema operacional e considera os nveis de
suporte para threads, no entanto, no distingue se
um processo multithread ou se deve trabalhar
individualmente com os processos se este for
de usurio, e ento, necessita de uma biblioteca
padro para escalonar. Se for de ncleo, o sistema
escalona um por vez, de forma a considerar a
alocao de recursos para cada um deles.

Fonte: Adaptado de Deitel (2005, p. 218- 228).

Vamos descrever melhor cada um deles?


O algoritmo HRRN trabalha de forma a considerar a relao existente entre o tempo
que o processo leva para ser concludo e o seu tempo de espera. Com isso, quando

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).

Muito interessante tambm o algoritmo de escalonamento por frao justa,


o FSS. Esse trabalha da seguinte forma: a partir da quantidade de processos e
subprocessos, associados a um determinado indivduo, que compartilha recursos
da mquina com outros indivduos, o escalonamento procura identificar o grupo de
processos associados que mais necessita de recursos em funo de suas operaes
(1), e tambm, o grupo de processos que pode at ser maior, porm, que o tipo de
prioridade associada atividade menor em termos de consumo de recursos de
processamento (2). Ento, o sistema determinar uma quantidade de recursos para o
processamento do grupo 1 que no comprometa o processamento do grupo 2, de
forma literalmente mais justa, quanto distribuio dos recursos. A razo dessa ao
est entre a quantidade de recursos de processamento utilizado versus o tempo real
decorrido para o processamento (DEITEL, 2005).
Outro algoritmo que elencamos o escalonamento por prazo. Como enfatizado,

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.

Fonte: Adaptado de Deitel (2005, p. 227).

4. O thread de maior prioridade


pode executar todo o tempo
at o seu encerramento ou, se
for multithread, poder realizar a
alternncia circular.

Faa voc mesmo


Compreenda os mecanismos de escalonamento relacionados a
threads em: https://strongloop.com/strongblog/dica-da-semana-sobredesempenho-node-js-monitoramento-de-ciclo-de-eventos/.
Leia tambm matria de suporte sobre o Windows 8. Disponvel em:
https://technet.microsoft.com/pt-br/library/Cc771692(v=WS.10).
aspx#BKMK_Scen2. .

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.

Sem medo de errar


Para essa atividade, preciso fazer um levantamento de como avaliar um algoritmo
que seja ideal para atender s necessidades tanto do sistema operacional quanto
das aplicaes que interagem no ambiente organizacional. Para tal, a seguir esto
algumas contribuies que podem auxiliar nesse processo de seleo do algoritmo
de escalonamento. Vamos l!
A avaliao de um algoritmo de escalonamento est diretamente relacionada sua
seleo. Ele deve ser adequado s necessidades de processamento e funcionalidades
que devem ser aliadas ao sistema computacional.
Desse modo, voc precisa identificar quais so as necessidades de processamento
do sistema. Para tal, podem ser elencados alguns pontos de ateno, como:
a) selecionar os critrios de escalonamento: orientado a processador, em lote,
interativo, E/S;
b)

saber qual o tempo de resposta que a aplicao precisa (througtput);

Ex.: ser preciso potencializar e aumentar a utilizao dos recursos de processamento


da CPU com um tempo mnimo de resposta de x;
c) ou, ainda, equalizar o processamento para que no exceda os limites de tempo
de execuo total e diminui tanto o turnaround quanto o througtput;
d) para tal realiza-se uma avaliao analtica que pode ser por: modelagem
determinstica, por enfileiramento, simulaes e mesmo a implementao em nvel
de teste.
Veja um exemplo que dimensiona por simulao, as estatsticas de desempenho
que podem auxiliar na determinao de um algoritmo de escalonamento:

56

Processos e threads

U2

CPU10
E/S213
CPU/12
EXECUO DE DEMAIS
PROCESSOS E THREADS

Figura 2.8 | Simulaes para avaliao de algoritmos de escalonamento

Simulao FIFO
(estatsticas)

Simulao HRRN
(estatsticas)
Simulao SJF
(estatsticas)

Fonte: Adaptado de Deitel (2005, p. 147).

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

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.

2. Objetivos de aprendizagem

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.

3. Contedos relacionados

Introduo ao escalonamento:
escalonamento de threads

4. Descrio da SP

Para realizar a sua primeira avaliao de algoritmo atravs


da modelagem determinstica, estabelea uma quantidade
de processos que deseja testar, por exemplo, 5. Determine
qual o tempo de espera de cada um. E teste de acordo com
o algoritmo de escalonamento FIFO (FCFS). Represente
esse procedimento e calcule o tempo mdio de espera em
milissegundos (quantum = 10 ms):

conceitos,

tipos

Tempo de
Burst
Processos

5. Resoluo da SP

(tempo que a CPU


leva para inserir outro
processo da fila para
execuo e a espera
por processos de E/S)

Tempo de espera
(ms)

P1

10

P2

29

10

P3

39

P4

42

P5

12

49

Considere que os tempos so:


Representao:
P2

P1
0

10

P3
39

P4
42

P5
49

61

Tempo mdio de espera = (0 + 10 + 39+ 42+ 49)/5 = 28 ms


Fonte: Deitel (2005, p. 145).

Faa voc mesmo


Estabelea outros tempos de espera para os cinco processsos e calcule
o seu tempo mdio de espera a partir da modelagem determinstica.
Simule no soSim e tome nota dos resultados para comparar os algoritmos
de escalonamento (SJF e RR) e o seu respectivo comportamento.

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).

Faa valer a pena!


1. Analise as afirmaes. Com relao ao escalonamento de threads,
correto o que se afirma em:
I Pode sair de execuo e entrar em espera, para que outro processo
de maior prioridade seja escalonado.
II O thread de maior prioridade pode executar todo o tempo at o
seu encerramento ou, se for multithread, poder realizar a alternncia
circular.
III No pode sofrer preempo para que outro thread de maior
prioridade seja executado.
a) I e II.
b) I, II e III.
c) I e III.
d) II e III.
e) I apenas.

2. Complete as lacunas da frase com as palavras de uma das alternativas


abaixo:
O _________, atravs de uma ao___________, pode interromper
um processamento em funo da alocao temporria do recurso para
que um processo menor seja eliminado da _______.
a) SRT/no preemptiva/fila.
b) SJF/preemptiva/fila.
c) FIFO/preemptiva/pilha.
d) SRT/no preemptiva/lista.
e) SRT/preemptiva/fila.

Processos e threads

59

U2
3. Associe na tabela os conceitos s suas respectivas descries:
Critrios

Descrio

a. Baixo nvel

( ) Determina quais grupos de processos podero trabalhar e


controla o nmero de processos criados em um espao de
tempo.

b. Intermedirio

( ) possvel interromper um processo e retomar em seguida


com o seu processamento para que possa garantir o bom desempenho da mquina.

c. Alto nvel

( ) Nessa poltica de escalonamento, normalmente h a


atribuio de prioridade para o processo. Com isso, aumenta
a probabilidade de ele ser escolhido para processamento.

Assinale a alternativa que contm a ordem de associao correta:


a) a-b-c.
b) b-c-a.
c) a-c-b.
d) c-b-a.
e) b-a-c.

4. Descreva como o mecanismo de funcionamento do escalonamento


HRRN.
5. Explique como acontece a seleo de processos no algoritmo SRT.

6. As afirmaes abaixo so verdadeiras ou falsas? Assinale a alternativa


correta:
I A modelagem determinstica simples e rpida.
II 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.
III 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.
a) F-F-F.
b) V-V-V.

60

Processos e threads

U2
c) V-F-V.
d) F-F-V.
e) F-V-V.

7. Est descrito o algoritmo de escalonamento por tempo real em:


I Permitem a alocao de algoritmos distintos de acordo com a
solicitao que foi realizada.
II Escalonamento de tempo real dinmico: esses realizam o
escalonamento por prioridades e isso acontece durante a execuo dos
processos.
III A partir da quantidade de processos e subprocessos que esto
associados a um determinado indivduo, sendo que este compartilha
recursos da mquina com outros colegas, o escalonamento procura
identificar o grupo de processos associados aos usurios de forma a
identificar aquele que mais necessita de recursos em funo de suas
operaes para que possa realizar o escalonamento.
a) I e II.
b) II e III.
c) I, II e III.
d) I e III.
e) Apenas III.

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

Вам также может понравиться