Você está na página 1de 51

Aula 2

Sistemas Operacionais

1
50

Prof. André Roberto Guerra


Conversa Inicial

2
50
Estrutura e objetivos

Após a apresentação das principais


atividades de gestão, iniciamos o estudo da
gestão avançada do sistema, em que os
processos (tarefas) de gestão serão
3
individualmente apresentados e descritos
50

Nessa aula serão definidos os conceitos e


técnicas das gerências de processos e do
processador em cinco temas
Organização da aula

Gerência de processos e do processador


Princípios de gestão de processos
(concorrência)
Tarefas (conceitos, gerência e ciclo)
Processos (contextos e definições)
4
50

Threads (definição e modelos/tipos)


Gerência do processador (escalonamento)
Princípios de gestão de processos
(concorrência)

5
50
Stallings (2017) define o SO como um
programa que gerencia os recursos do
computador, fornece serviços para os
programadores e estabelece uma ordem de
execução de outros programas
6
50
É o software que controla a execução de
programas em um processador e gerencia os
recursos do computador
Uma das funções mais relevantes
desempenhadas pelo SO é o escalonamento
de processos
Quase todas as CPUs dispõem do suporte a
esse recurso, incluindo hardware de
gerenciamento de processos
SO descrito como um conjunto de rotinas
executadas de forma concorrente e ordenada
7
50

Concorrência é o princípio básico para o


projeto e a implementação dos sistemas
multiprogramáveis
Para permitir a concorrência entre
programas, o SO implementa mecanismos de
software e hardware
Um sistema de computação quase sempre
tem mais atividades a executar que o número
de processadores disponíveis
8
50 Solução é multiplexar – compartilhar o uso
do processador entre as várias tarefas, de
forma a atendê-las da melhor maneira
possível
Tarefas

9
50
Conceitos de tarefas

Tarefa, ou atividade (task), é definida como a


execução de um fluxo sequencial de
instruções, construído para atender uma
10
finalidade específica
50

Importante ressaltar as diferenças entre


tarefa e programa
Programa é um conjunto de uma ou mais
sequências de instruções para resolver um
problema específico (aplicação ou utilitário)
Conceito estático, sem um estado interno
definido e sem interações com outras
entidades
Tarefa é a execução sequencial, pela CPU, das
11 instruções definidas em um programa
50

Conceito dinâmico, com estado interno bem


definido a cada instante e que interage com
outras entidades (usuário, dispositivos E/S
e/ou outras tarefas)
Tarefas podem ser implementadas de várias
formas, como processos ou threads, que
serão apresentados nos temas seguintes
As tarefas definem as atividades a serem
realizadas e, como geralmente há muito mais
tarefas a realizar do que processadores
12
50
disponíveis e as tarefas não têm todas a
mesma importância, a gerência de tarefas
ganha destaque
Os sistemas monotarefa (os primeiros
sistemas de computação – anos 1940)
executavam apenas uma tarefa de cada vez
Cada programa binário era carregado do
disco para a memória e executado até sua
13 conclusão
50

Todas essas operações eram coordenadas


por um operador humano (sem o SO)
Os sistemas multitarefas surgiram logo em
seguida
A velocidade de processamento era muito
maior que a de comunicação com os
dispositivos de E/S, deixando a CPU ociosa
durante as transferências entre disco e
14 memória
50

O custo dos computadores e seu consumo


de energia eram elevados demais para
deixá-los ociosos por tanto tempo
A solução para esse problema foi permitir ao
monitor suspender a execução da tarefa que
espera dados externos e passar a executar outra
Posteriormente, quando os dados de que a
tarefa suspensa necessita estiverem
disponíveis, ela pode ser retomada no ponto
onde parou
15
50
Para tal, é necessário ter mais memória (para
poder carregar mais de um programa ao
mesmo tempo) e criar mecanismos no monitor
para suspender uma tarefa e retomá-la mais
tarde
Essa evolução levou a sistemas mais produtivos
(e complexos), várias tarefas simultaneamente
Ativa (executando), prontas (esperando pelo
processador) ou suspensas (esperando
dados/eventos externos)
Diagrama de estados das tarefas

Nova Pronta Executando


16
50

Aguardando algum
evento ou dado externo

Suspensa
Ciclo de vida das tarefas
A estrutura do diagrama de ciclo de vida das
tarefas pode variar com a interpretação dos
autores
A forma apresentada neste texto condiz com
Silberschatz (2018)
O de Tanenbaum (2016) divide o estado
17
50 suspenso em dois subestados separados:
bloqueado e suspenso
Nos SO atuais (memória paginada), tal distinção
de estados não faz mais sentido, os processos
podem executar mesmo parcialmente carregados
Diagrama de ciclo de vida das tarefas

Fim do quantum (tempo disponível


para execução da tarefa)

Recebe o
processador
Nova Pronta Executando Terminada
Carregou Término
na memória da execução
18
50

Suspensa
O evento foi recebido ou Aguardando algum
o dado ficou disponível evento ou dado externo
Contextos

Tarefa tem estado interno bem definido, que


representa sua situação atual
A posição de código que está em execução,
os valores de variáveis e os recursos que
utiliza
Esse estado se modifica conforme a execução
19
50

da tarefa evolui
O estado de uma tarefa em determinado
instante é denominado contexto
Parte importante do contexto da tarefa é o
estado interno do processador durante sua
execução
Contador de programa (PC – Program
Counter), apontador de pilha (SP – Stack
Pointer) e demais registradores e recursos
usados (arquivos abertos, conexões de rede e
semáforos)
20 Um descritor é associado a cada tarefa, uma
estrutura de dados no núcleo que a representa,
50

em que são armazenadas as informações


relativas ao contexto e os demais dados
necessários à sua gerência, como prioridades,
estado etc.
Contextos de processo ou tarefa
Estrutura de um processo
Nome Registradores gerais
PID
Dono (UID) Registrador PC

Prioridade de execução
Contexto Contexto
Data/hora de criação de de Registrador SP
software hardware
21
50
Tempo de processador

Privilégios Registrador de status


Espaço de
endereçamento

Endereços de memória principal alocados


Processos

22
50
Definições de processo

Um processo pode ser entendido inicialmente


como um programa em execução, mas seu
conceito é mais abrangente
A forma como os sistemas multiprogramáveis
23
50 (multitarefa) atendem os diversos usuários e
tarefas e mantêm informações sobre vários
programas em execução concorrente (Machado,
1997)
Processo é definido por autores clássicos (Silberschatz,
2018; Tanenbaum, 2016) como equivalentes a tarefas, com

seus recursos (arquivos abertos, conexões de


rede) em uma área de memória delimitada e
isolada das demais; uma espécie de “cápsula”
isolada de execução, contendo uma tarefa e seus
recursos

24
Essa visão é mantida
50

Os SO mais antigos (até os anos 1980),


suportavam somente um fluxo de execução em
cada processo. Assim, as unidades de execução
(tarefa) e de recursos (processo) se confundiam
Os SO atuais suportam mais de uma tarefa
em cada processo
Atualmente o processo é uma unidade de
contexto, um contêiner de recursos
utilizados por uma ou mais tarefas, com
áreas de memória (código, dados, pilha),
informações de contexto e descritores de
25
50 recursos do núcleo (arquivos abertos,
conexões de rede etc.)
Um processo pode conter várias tarefas,
que compartilham esses recursos
Semelhante às tarefas, o processo possui
informações dos contextos de hardware, de
software e de endereçamento de memória
26
50
Os processos são executados de forma
cíclica, alternando seu estado, como ilustra a
figura a seguir

Estados do processo

Ready Running
(pronto) (execução)
27
50

Wait
(espera)
Problemas de comunicação entre processos

Tarefas associadas ao mesmo processo


podem trocar informações facilmente, pois
compartilham as mesmas áreas de memória
Mas isso não é possível entre tarefas
associadas a processos distintos
28
50
Para resolver esse problema, o núcleo deve
prover as aplicações chamadas de sistema
que permitam a comunicação interprocessos
(IPC – Inter-Process Communication)
Processos podem solicitar recursos, mesmo
que já possuam recursos anteriores
Caso já estejam alocados a outros
29
50
processos, devem aguardar
Essa é a condição natural do sistema de alocação
de recursos, porém, alguns problemas de
comunicação entre processos ou threads podem
ocorrer
Condição de Corrida, Starvation e Deadlock
Situação de impasse – deadlock

Ilya kovshik/Shutterstock
30
50
Threads

31
50
Definição

Devido à necessidade de suportar mais de uma


tarefa operando sobre os mesmos recursos, no
mesmo processo, a thread é definida como um
fluxo de execução independente
Um processo pode conter uma ou mais threads,
32
cada uma executando seu próprio código e
50
compartilhando recursos com as demais threads
localizadas no mesmo processo
Também denominada processo leve (lightweigth
process)
Muitas threads podem existir dentro de um
único contexto de processo, cooperando
entre si a fim de realizar determinado cálculo
e compartilhando o espaço de
endereçamento e o restante do contexto
desse processo (multithread)
Multithread utiliza os mesmos mecanismos
33
50
de concorrência entre processos,
interrupções, exceções e a comunicação
entre processos (Inter Process Comunication
– IPC), essenciais para permitir acesso
concorrente a um recurso compartilhado
Modelos de threads
As threads contidas nos processos, definidas no
espaço de usuário, devem ser gerenciadas pelo
núcleo do sistema operacional
Essa gerência pode ser feita de diversas formas,
conforme os seguintes modelos de
implementação de threads
34
50 Modelo de Threads N:1 – N threads dentro de
um processo são mapeadas em uma única
thread no núcleo
Esse modelo também é denominado fibers ou
ainda green threads
Modelo de threads 1:1
Cada thread de usuário tem associada uma
thread correspondente no núcleo, eliminando a
necessidade de bibliotecas de threads
O modelo N:M
Um modelo híbrido para resolver o problema
de escalabilidade da abordagem 1:1, que
35
50
agrega características dos modelos anteriores
Nesse novo modelo, uma biblioteca gerencia
um conjunto de N threads de usuário (dentro
do processo), que é mapeado em M < N
threads no núcleo
Ferramentas para processos e threads

Tarefas específicas auxiliam o sistema


operacional no controle e na gestão dos
processos e threads
Região crítica
36
50 Exclusão mútua
Sinais
Trap
Gerência do processador

37
50
Escalonamento de processos

Função básica do SO, a política de


escalonamento tem diversas funções
essenciais: manter o processador ocupado,
auxiliando o hardware a minimizar a
ociosidade, balancear o uso da CPU entre
38
50 processos, privilegiar a execução de
aplicações críticas, maximizar o throughput
do sistema e oferecer tempos de resposta
razoáveis para usuários interativos
Escalonador é o termo originário da tradução de
escalonador de tarefas (task scheduler),
referindo-se a um dos componentes mais
importantes da gerência de tarefa, que decide a
ordem de execução das tarefas prontas
O algoritmo utilizado define o comportamento do
SO para tratar de forma mais eficiente e rápida
39
50 as tarefas a executar
Mas, antes de se definir o algoritmo, é
necessário saber as tarefas que o sistema irá
executar
Classificação quanto ao comportamento
temporal
Tarefas de tempo real
Tarefas interativas
Tarefas em lote (batch)
Quanto ao comportamento no uso do
40
50
processador
Tarefas orientadas a processamento (CPU-
bound tasks)
Tarefas orientadas a E/S (I/O-bound tasks)
Critérios de escalonamento

Os objetivos de cada SO determinam quais


são os principais aspectos para a
implementação de uma política de
escalonamento adequada

41
Os principais critérios são:
50

Utilização do processador: fim da


ociosidade
Throughput: representa o desempenho
Tempo de Processador/Tempo de CPU: tempo
de execução (running) do processo
Tempo de Espera: tempo na fila de pronto
Tempo de Turnaround: tempo gasto desde a
criação até o término (não confundir com o
tempo de processamento)
42
50

Tempo de Resposta: tempo decorrido entre


uma requisição ao sistema ou à aplicação e o
instante em que a resposta é exibida
Tipos de escalonamento
As políticas de escalonamento de um SO são
classificadas em preemptivo ou não preemptivo
Preemptivo
O SO pode interromper um processo em
execução e substituí-lo por outro
43

A cada interrupção, exceção ou chamada de


50

sistema, o escalonador reavalia todas as


tarefas da fila de prontas e decide se mantém
ou substitui a tarefa atualmente em execução
Os sistemas mais sofisticados implementam a
preempção de tarefas também no modo núcleo
Não preemptivo (sem interrupção ou
cooperativos)
O primeiro tipo de escalonamento
implementado nos sistemas
multiprogramáveis, em que predominava
44 tipicamente o processamento batch
50

Esses sistemas são chamados de cooperativos


por exigirem a cooperação das tarefas entre si
na gestão do processador, para que todas
possam ser executadas
First In, FirstOut (FIFO)
O primeiro processo que chegar ao estado
de pronto é selecionado
First Come, First Served (FCFS)
Semelhante ao FIFO, atende às tarefas em
45
50

sequência
Round-Robin (RR)
Algoritmo de escalonamento por
revezamento, resultado da adição da
preempção por tempo ao escalonamento
FCFS
46
50 Algoritmos FIFO, FCFS e RR não consideram a
importância nem o comportamento das
tarefas em relação ao uso dos recursos
Shortest Job First (SJF)
Seleciona o processo com menor tempo de
processador (mais curto)
Shortest Remaining Time First (SRTF)
Duração prevista de nova tarefa versus
47
tempo de processamento restante das
demais
50

Caso tenha um tempo restante menor,


recebe o processador
Escalonamento Cooperativo
Não preemptivo voluntariamente libera o
processador para outro
Escalonamento Circular
48 Tempo-limite de uso contínuo do
50

processador por tarefa em execução – fatia


de tempo (time slice) ou quantum
Escalonamento por prioridades
O escolhido é a maior prioridade, valores
iguais seguem o FIFO
Circular com prioridades
49
50

Adiciona prioridade
Escalonamento por Múltiplas Filas
Diversas filas de processos no estado de
pronto, cada qual com uma prioridade
específica
Escalonamento por Múltiplas Filas com
50
50
Realimentação
Reorganizar – trocar de filas durante seu
processamento
51
50

Você também pode gostar