Execução

Transcrição

Execução
PROCESSOS
Prof. Maicon A. Sartin
[email protected]
Cenários em Sistemas
Multitarefas
Um usuário pode executar diversas
atividades simultâneas
 Música
 Editoração de texto
 Navegar na Internet
Servidor pode ter vários usuários
conectados
 Acesso remoto
 Servidor de e-mails
Introdução
 Processo
 Entidade Ativa, ao contrário do programa, que é
uma entidade passiva
 Um ambiente onde se executa um programa
 O SO gerencia os processos por SC que podem
realizar diversas operações:
 Criar, eliminar, sincronizar, suspender,…
 Um algoritmo/sistema operacional é preemptivo
quando:
 Um processo entra e pode ser retirado da CPU, antes
do término da sua execução
Introdução
 Criar um Processo
#include <stdio.h>
int main()
{
int i, pid;
printf("Processo Principal (main)!! ID = : %d \n",getpid() );
pid = fork() ;
if (pid > 0)
{
printf("Eu sou o pai !! ID = : %d \n",getppid()) ;
}
else if (pid == 0)
{
printf("Eu sou o filho!! ID = : %d \n",getpid() );
}
}
Introdução
 Cada processo tem sua própria CPU virtual
 Trazendo a visão de exclusividade ao usuário
 A CPU física é compartilhada por vários processos
 Multiprogramação
 Tempo Compartilhado
 O Escalonador seleciona qual processo deve usar
a CPU a cada momento e por quanto tempo
Estrutura dos Processos
 O processo constitui-se de três elementos para
manter as informações básicas à execução de um
programa
 Contexto de hardware
 Contexto de software
 Espaço de endereçamento
C o n te x t o d e
S o f tw a r e
C o n te x to d e
H a rd w a re
Pro g ra m a
E sp a ço d e
E n d e r e ç a m e n to
Estrutura dos Processos
S is te m a O p e r a c io n a l
 Contexto de hardware
 Conteúdo de registradores
P ro ce sso A
P ro ce sso B
e x e c u ta n d o
 Fundamental na implementação
de sistemas time-sharing
 O processo em execução na CPU
pode ser interrompido e restaurado
Posteriormente
S a lv a r e g is tr a d o r e s d o
Pro ce sso A
C a r r e g a r e g is tr a d o r e s d o
P ro ce sso B
e x e c u ta n d o
S a lv a r e g is tr a d o r e s d o
P ro ce sso B
 Quando isso ocorre há a necessidade
de mudança de contexto
e x e c u ta n d o
C a r r e g a r e g is tr a d o r e s d o
Pro ce sso A
Estrutura dos Processos
 Contexto de Software
 Define-se caracterísitcas na criação do processo:
 Nº máx. de arquivos abertos simultaneamente
 Possui três grupos de informações: identificação,
Quotas e privilégios
 Identificação
 Processo com identificação única - PID (Process Identification)
 Processo com identificação do usuário (UID)
Estrutura dos Processos
 Contexto de Software
 Quotas
 Limites de cada recurso no qual o processo pode alocar
– Se ultrapassado o limite o processo fica lento ou não
executa
 Ex.:





Número máximo de arquivos abertos simultaneamente
Número máximo de operações de E/S pendentes
Número máximo de processos e subprocessos a serem criados
Tamanho máximo do buffer para operações de E/S
Tamanho máximo da memória a ser alocada
 Privilégios
 Define o que o processo pode fazer em relação ao sistema e
a outros processos
Estrutura dos Processos
 Espaço de endereçamento
 É a área da memória do processo onde o programa será executado e
deve ser protegido dos demais processos
nom e
P ID
o w n e r (U I D )
r e g i s tr a d o r e s
g e r a is
p r io r id a d e d e
e xe cu çã o
d a ta / h o r a
d e cr ia ç ã o
r e g i s tr a d o r P C
C o n te x t o d e
S o f tw a r e
C o n te x to d e
H a rd w a re
r e g i s tr a d o r S P
te m p o d e
p ro ce ssa d o r
q u o ta s
Pro g ra m a
p r iv ilé g io s
E sp a ço d e
E n d e r e ç a m e n to
e n d e r e ço s d e m e m ó ria
p r in c ip a l a lo ca d o s
r e g i s tr a d o r
d e s ta tu s
Estados do Processo
 Em sistemas multiprogramáveis um processo não
é executado todo tempo pela CPU
 Desde a criação do processo até o seu término
ele passa por uma série de estados
 Existem três tipos de estados: Execução, Pronto e
Espera
Estados do Processo
 Execução (running)
 O processo está sendo executado pela CPU
 Com um processador, quantos processos em execução?
 E quando há vários processadores?
 O SO determina a utilização do processador pelas
políticas de escalonamento
 Pronto (ready)
 Aguarda uma oportunidade para executar, dependendo
do SO para a alocação da CPU
Estados do Processo
 Espera (wait)
 Aguarda um evento externo ou algum recurso para poder
prosseguir seu processamento
 Ex.: Término de Operação de E/S
 Bloqueado(Blocked) – Em alguns sistemas
 Espera x Bloqueado
 Um processo em estado de bloqueado
 espera ser autorizado para utilizar o recurso
 Um processo em estado de espera
 Agurada pela conclusão de uma operação em um recurso que já foi
garantido
Estados do Processo
 Um processo muda de estado diversas vezes,
durante seu processamento
 Em função de eventos originados por ele
próprio1 ou pelo SO2
1. Eventos voluntários
2. Eventos involuntários
Estados do Processo
 Existem quatro mudanças de estado:
 Pronto  Execução
 Na criação do processo ele é colocado em uma lista de processos no
estado pronto, onde aguarda uma oportunidade para ser executado
 Execução  Espera
 Por eventos gerados pelo próprio processo.
 Ex.: Operação de E/S
 Espera  Pronto
 Quando a operação solicitada é atendida ou o recurso esperado é
concedido
 Execução  Pronto
 Por eventos gerados pelo sistema
 Ex. Fim da fatia de tempo que o processo possui para sua execução
Mudanças de Estados do
Processo
E s ta d o d e E x e c u ç ã o
d
b
a
c
E s ta d o d e E s p e r a
E s ta d o d e P r o n to
Mudanças de Estados do
Processo
Controle do Processo
 O SO materializa o processo através de uma
estrutura chamada bloco de controle do processo
(PCB)
 Através do PCB o SO mantém todas as
informações sobre o processo
p o n te ir o s
E s ta d o d o p r o c e s s o
N o m e d o p ro ce sso
P r io r id a d e d o p r o c e s s o
R e g i s tr a d o r e s
L i m i te s d e m e m ó r i a
L i s ta d e a r q u i v o s a b e r to s
..
..
..
..
Controle do Processo
 Pode haver vários processos em estados de
pronto ou de espera
 O SO gerencia os processos pelas listas
encadeadas, onde cada PCB tem um ponteiro
para seu sucessor
L is ta d e
p ro ce sso s
e m e s ta d o
d e p r o n to
.
..
..
..
.
.
..
..
..
.
PCB# 5
PCB# 1
.
..
..
..
.
.
..
..
..
.
L is ta d e
p ro ce sso s
e m e s ta d o
d e e sp e ra
PCB# 9
PCB# 2
.
..
..
..
.
PCB# 4
Hierarquia de Processos
 Um processo pode criar outros processos de
maneira hierárquica
 Um processo pai cria seu(s) processo(s) filho(s),
um processo filho pode criar seus próprios
processos
 O Unix chama esta hierarquia de “grupo de
processos”
 O Windows não tem esse conceito,
ficam no mesmo nível
P ro ce sso A
Pro ce sso C
Pro ce sso B
P ro ce sso D
P ro ce sso E
Hierarquia de Processos
#include <stdio.h>
#include <unistd.h>
int main(){
int pid;
pid = fork(); /* Cria outro processo */
if (pid < 0)
{/* houve erro -- não foi possível criar o processo*/
fprintf(stderr, "falha na execução do Fork");
exit(-1);
}
else if(pid == 0)
{/* processo filho foi criado*/
execlp(/bin/ls","ls",NULL);
}
else
{/* processo pai */
wait(NULL); /* pai esperará até que o filho termine */
printf("Filho já terminou!");
exit(0);
}
}
Hierarquia de Processos
 Na criação de processos existem duas
possibilidades:
 Em termos de execução:
1. O pai continua a ser executado simultaneamente com seus
filhos;
2. O pai espera até que algum ou todos os seus filhos tenham
terminado.
 Em termos do espaço de endereços:
1. O processo filho é uma duplicata do pai (mesmo programa
e dados);
2. o processo filho tem um novo programa carregado nele.
Tipos de Processos
 Os processos podem ser classificados quanto ao
tipo de processamento que realizam em:
 CPU-Bound
 Passam a maior parte do tempo no estado de
execução
 Realiza poucas operações de E/S e muitos cálculos
 Ex.: Aplicações matemáticas e científicas
 I/O-Bound
 Passam a maior parte do tempo no estado de espera
 Realiza um elevado número de E/S
 Ex.: Aplicações comercias e processos interativos
Tipos de Processos
 Processos CPU-bound x I/O-bound
E/S
E/S
U CP
U CP
(a ) C P U - b o u n d
te m p o
(b ) I / O - b o u n d
te m p o
Thread (Processo leve)
 Unidade básica de utilização da CPU




ID de Thread
Um contador de programa
Um conjunto de registradores
Uma pilha
 Thread = subconjuntp das informações
pertinentes a um processo
 É possível ter várias threads independentes
dentro de um mesmo processo
Thread (Processo leve)
 Processo
 agrupamento de recursos + fluxo de execução
 Thread
 fluxo de execução
 Thread = subconjunto das informações
pertinentes a um processo
 É possível ter várias threads independentes
dentro de um mesmo processo
Threads
 Processo Multithread
C o n te x to
d e h a rd w a re
C o n te x to
d e h a rd w a re
Th re a d 1
T h re a d 2
T h re a d 3
C o n te x t o d e
s o f tw a r e
C o n te x to
d e h a rd w a re
E sp a ço d e
e n d e r e ç a m e n to
 Monothread e Multithread
Threads
 (a) Três processos, cada um com a sua thread
 (b) Um processo com três threads
Threads
 Uso de Threads
 Um processador de texto com três Threads
Threads
 Uso de Threads
 Servidor Web multithread
PThreads
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *message_thread1();
int main()
{
pthread_t tid;
//identificador do fluxo
pthread_attr_t attr;
//conjunto de atributos p/ o fluxo
pthread_attr_init(&attr);//Define os atributos
pthread_create(&tid, &attr, message_thread1, NULL); //Cria Thread
pthread_join(tid, NULL); //espera que a thread termine
}
void *message_thread1() // o fluxo começará a controlar nesta função
{
char *message1 = "Thread 1";
printf("%s \n", message1);
pthread_exit(0);
}
Threads em Java
class Trabalhadora extends Thread
{
public void run(){
System.out.println("Eu sou uma Thread Trabalhadora");
}
}
public class primeira
{
public static void main (String args[]){
Thread runner = new Trabalhadora();
runner.start();
System.out.println("Eu sou a thread principal");
}
}
Ciclo de vida da Thread
Referências
MACHADO, F. B. "Arquitetura de sistemas operacionais".
LTC, 1997.
LAUREANO, Marcos. ”Sistemas Operacionais”.
Universidade Federal Paraná, 2009.
Curitiba:
GUALEVE, J. A. F. “Sistemas Operacionais”.
Universidade Católica de Brasília, 2006.
Brasília:

Documentos relacionados

Threads

Threads Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

Leia mais

Slides Grupo 3 - Blog UNIFIMES

Slides Grupo 3 - Blog UNIFIMES Os threads são convertidos em filamentos, mas estes podem também ser criados de modo independente dos threads. Esses filamentos não serão executados até que um filamento que já esteja sendo executa...

Leia mais

LabSO Gerência de Processos Processos

LabSO Gerência de Processos Processos Dados para gerenciamento da CPU (escalonamento) Dados para gerenciamento de memória Número do processos

Leia mais