0% acharam este documento útil (0 voto)
147 visualizações60 páginas

Aula 3

O documento discute os conceitos de processo, mudança de contexto e criação de processos no sistema operacional. Processo é definido como um programa em execução que possui informações necessárias para implementar a concorrência entre programas. Mudança de contexto envolve salvar e carregar os contextos de hardware e software quando o processador alterna entre processos. Processos podem ser criados durante a inicialização do sistema, por chamadas ao sistema ou requisições de usuário.

Enviado por

Carlos Augusto
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
147 visualizações60 páginas

Aula 3

O documento discute os conceitos de processo, mudança de contexto e criação de processos no sistema operacional. Processo é definido como um programa em execução que possui informações necessárias para implementar a concorrência entre programas. Mudança de contexto envolve salvar e carregar os contextos de hardware e software quando o processador alterna entre processos. Processos podem ser criados durante a inicialização do sistema, por chamadas ao sistema ou requisições de usuário.

Enviado por

Carlos Augusto
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 60

UFPA - PPGEE – LPRAD - LINC

Universidade Federal do Pará

Sistemas Operacionais
Gerenciamento de Processos/Processador

Diego Lisboa Cardoso


[email protected]
UFPA - PPGEE – LPRAD - LINC

Roteiro

 Processo:
 Estados de um processo
 Mudanças de Estados
 Subprocessos e Threads
 Tipos de processos
UFPA - PPGEE – LPRAD - LINC

Processo
 SO  Implementar a concorrência entre programas
gerenciando a alternância da execução de instruções na
UCP de maneira controlada e segura;
 Processador  Executa instruções sem distinguir qual o
programa encontra-se em processamento
 Processo = Programa em execução;
 Multiprogramável/Multitarefa
 Pseudoparalelismo  Alternância da CPU entre
programas  Concorrência;
UFPA - PPGEE – LPRAD - LINC

Processo

 Multiprogramação de quatro programas


 Modelo conceitual de 4 processos sequenciais,
independentes
 Somente um programa está ativo a cada momento
UFPA - PPGEE – LPRAD - LINC

Processo
 Para implementar a concorrência, é necessário que
todas as informações do programa interrompido sejam
guardadas para que, quando ele voltar, não falte
nenhuma informação para continuar processando;
 Processo suspenso deve reiniciar do estado onde
estava;
 Então:
 Processo = Conjunto necessário de informações para
que o SO implemente a concorrência de programas;
UFPA - PPGEE – LPRAD - LINC

Processo
 A imagem ilustra a concorrência entre os processos
 Troca de um processo para outro pelo processador 
Mudança de Contexto;
UFPA - PPGEE – LPRAD - LINC

Monitor de Processos
UFPA - PPGEE – LPRAD - LINC

Mudança de Contexto
 Ambiente onde um programa é
executado. Este ambiente, além das
informações sobre a execução, possui
também a quantidade de recursos do
sistema que cada programa pode utilizar,
como espaço de endereçamento da
memória principal, tempo de processador
e área de disco;
UFPA - PPGEE – LPRAD - LINC

Mudança de Contexto
 Estruturo do
Processo:
Mantêm
informações
necessárias à
execução de
um programa.
Mudança de Contexto:
UFPA - PPGEE – LPRAD - LINC

Contexto de Hardware
 Salvar o conteúdo dos registradores do processo que
está deixando a CPU e carregá-lo com os valores
referentes ao do novo processo que será executado.
Mudança de Contexto:
UFPA - PPGEE – LPRAD - LINC

Contexto de Software
 São especificados limites e características dos recursos
que podem ser alocados pelo processo, como:
 Número máximo de arquivos abertos
simultaneamente;
 Prioridade de execução;

 Tamanho do Buffer para operações de E/S;

 Muitas destas características são determinadas no


momento da criação do processo, enquanto outras
podem ser alteradas durante sua existência;
Mudança de Contexto:
UFPA - PPGEE – LPRAD - LINC

Contexto de Software
 O contexto de Software é composto por três grupos de
informações sobre o processo: Identificação, Quotas e
Privilégios;
 Identificação:
 Processo criado pelo SO recebe uma identificação única

PID – Process Identification, representada por um número.


Sendo que alguns sistemas, além do PID identificam o
processo através de um nome;
 Processo também possui a identificação do usuário ou

processo que o criou (owner). Portanto cada usuário


também possuirá uma identificação única (UID – User
Identification), atribuída ao processo no momento da
criação ;
Mudança de Contexto:
UFPA - PPGEE – LPRAD - LINC

Contexto de Software
 Quotas: As quotas são os limites de cada recurso do
sistema que um processo pode alocar .
 Exemplos de quotas presentes na maioria dos sistemas
operacionais são:
 Número máximo de arquivos abertos simultaneamente;
 Tamanho máximo de memória principal e secundária
que o processo pode alocar;
 Número máximo de Operações de E/S pendentes;
 Número máximo de processos, subprocessos e threads
que podem ser criados;
Mudança de Contexto:
UFPA - PPGEE – LPRAD - LINC

Contexto de Software
 Privilégios: Ou direitos, definem as ações que um
processo pode fazer em relação a ele mesmo, aos
demais processos e ao sistema operacional.
 A maioria dos sistemas operacionais disponibiliza uma
conta de acesso com todos estes privilégios
disponíveis, com o propósito de o administrador
gerenciar o SO.
 Nos sistemas Unix existe a conta “root”, no MS
Windows a conta “administrador” e no OpenVMS
existe a conta “system” com este mesmo perfil.
Mudança de Contexto:
UFPA - PPGEE – LPRAD - LINC

Espaço de Endereçamento
 É a área de memória pertencente ao processo
onde instruções e dados do programa são
armazenados para a execução.

 Cada processo  Seu espaço de


endereçamento, que deve ser devidamente
protegido do acesso dos demais processos.
UFPA - PPGEE – LPRAD - LINC

Estrutura de um Processo
UFPA - PPGEE – LPRAD - LINC

Criando Processos
 Processos precisam ser criados e finalizados a
todo o momento:
 Inicialização do sistema;

 Execução de uma chamada ao sistema

realizada por algum processo em execução;


 Requisição de usuário para criar um novo

processo;
UFPA - PPGEE – LPRAD - LINC

Criando Processos
 Processos com funções específicas que
independem de usuários – chamados de
daemons:

 Recebimento e envio de emails;


 Servidor de Impressão;
UFPA - PPGEE – LPRAD - LINC

Criando Processos
 System Call: interface entre o Sistema
Operacional e os programas do usuário;
 Chamadas diferem de SO para SO;
 Conceitos relacionados às chamadas são similares
independentemente do SO;
 Trap: instrução utilizada para realizar chamadas ao
Sistema Operacional
UFPA - PPGEE – LPRAD - LINC

Criando Processos
 Unix: Fork( );

 Windows: Create_Process( );
UFPA - PPGEE – LPRAD - LINC

Finalizando Processos
 Condições:
 Término normal (voluntário):
 A tarefa a ser executada é finalizada;

 Chamadas: Exit (Unix) e ExitProcess (Windows)

 Término com erro (voluntário):


 O processo sendo executado não pode ser

finalizado:
 gcc filename.c, o arquivo filename.c não existe;
UFPA - PPGEE – LPRAD - LINC

Finalizando Processos
 Término com erro fatal (involuntário):
 Erro causado por algum bug no programa;

 Ex: Divisão por 0 (zero);

 Término causado por algum outro processo


(involuntário):
 Kill (Unix) e TerminateProcess (Windows);

 Kill <pid_do_processo>
UFPA - PPGEE – LPRAD - LINC

Hierarquia de Processos
UFPA - PPGEE – LPRAD - LINC

Suspendendo Processos
UFPA - PPGEE – LPRAD - LINC

Suspendendo Processos
UFPA - PPGEE – LPRAD - LINC

Sinais
 Um sinal é uma notificação enviada para um processo
com o objetivo de notificar a ocorrência de um evento
no SO.
 Quando um sinal é enviado a um processo, o sistema
operacional interrompe o seu fluxo normal de
execução, para atender a sua solicitação.
UFPA - PPGEE – LPRAD - LINC

Sinais
 Enviando Sinais:
 Determinadas combinações de teclas, ao serem
pressionadas no terminal de controle de um processo
em execução, fazem com que o sistema envie
determinados sinais a este processo:
 Ctrl-C (DEL em versões antigas do Unix) envia um sinal,
normalmente causa o término do processo  SIGINT;
 Ctrl-Z envia um sinal, normalmente causa a suspensão da
execução do processo  SIGTSTP;
 O comando kill do Unix permite que um "usuário" envie
sinais a um processo.
UFPA - PPGEE – LPRAD - LINC

Sinais
 Tratamento de Sinais:
 Um processo não responde instantaneamente a um
sinal. Os sinais ficam pendentes até que o processo seja
escalonado, quando então serão tratados.
 Tratamento de sinais = Tratamento de Interrupções;
 Quando um sinal é tratado, o contexto do processo é
salvo e a execução é desviada para um código de
tratamento de sinal. Após tratamento do sinal, o
programa pode voltar a ser processado do ponto onde
foi interrompido.
UFPA - PPGEE – LPRAD - LINC

Sinais
UFPA - PPGEE – LPRAD - LINC

Processo
 Ambiente onde se executa um programa.
 O SO operacional materializa o processo através de
uma tabela, chamada tabela de processos.
 Cada entrada da tabela é chamada de bloco de
controle do processo (Process Control Block -
PCB).
 Um PCB é responsável por manter todas as
informações referentes a um determinado processo.
UFPA - PPGEE – LPRAD - LINC

Processo
 Informações necessárias:
 Ponteiros.
 Estado do processo.
 Prioridade do processo.
 Limites de memória.
 Registradores
 Arquivos abertos.
 Contabilidade do processo no uso de recursos.
 Outras informações relevantes ao processo.
UFPA - PPGEE – LPRAD - LINC

Processo - Estados
 Estados do Processo
 Em um sistema multiprogramável, um processo passa
por uma série de estados, durante a sua existência.
 Existem três estados em que um processo pode se
encontrar no sistema:
 Pronto: um processo já se encontra pronto para
executar, entretanto o processador está sendo ocupado
por outro processo.
 Execução: um processo está efetivamente ocupando o
processador para seu processamento.
UFPA - PPGEE – LPRAD - LINC

Processo - Estados
 Estados do Processo
 Bloqueado/Espera: um processo está no estado de
bloqueio/espera quando aguarda a ocorrência de
determinado evento para continuar sua execução.
UFPA - PPGEE – LPRAD - LINC

Processo
 Um processo pode estar bloqueado por dois
motivos:
 O processo está pronto para executar, porém não há
ainda alguma entrada disponível para permitir essa
execução.
 Exemplo: Um comando está pronto para ser
executado, mas precisa de parâmetros de entrada
para sua execução.
 O processo estava processando, necessitou realizar
alguma operação de E/S, desocupou o processador, e
está aguardando a retomada do processador.
UFPA - PPGEE – LPRAD - LINC

Processo – Mudança de Estados


 Mudanças de Estados
 Um processo muda de estado diversas vezes,
durante o seu processamento, em função de
eventos gerados por ele próprio (eventos
voluntários) ou pelo sistema operacional (eventos
involuntários).

 Basicamente, existem quatro mudanças de estado


que podem ocorrer a um processo:
Processo – Mudança de Estados
UFPA - PPGEE – LPRAD - LINC

 Mudanças de Estados

Execução
2
1

4
Bloqueado Pronto
Processo – Mudança de Estados
UFPA - PPGEE – LPRAD - LINC

1. Execução  Bloqueado/Espera:
 Um processo em execução passa para o estado
bloqueado ou de espera por eventos gerados pelo
próprio processo.
 Exemplo: Espera por uma operação de E/S.
2. Execução  Pronto:
 Um processo em execução passa para o estado de
pronto por eventos gerados pelo sistema.
 Exemplo: Fim da fatia de tempo (time-slice) que o
processo possui para sua execução.
Processo – Mudança de Estados
UFPA - PPGEE – LPRAD - LINC

3. Pronto  Execução:
 Processo que estava na lista de processos pronto
passa a ser executado pelo processador.
 Quando um processo é criado, o sistema o coloca
em uma lista de processos no estado pronto, onde
aguarda uma oportunidade para ser executado, a
partir do momento que “ganha” a CPU passa para
o estado de execução.
UFPA - PPGEE – LPRAD - LINC

Processo – Mudança de Estados


4. Bloqueado/Espera  Pronto:
 Um processo no estado de espera passa para o
estado de pronto quando a operação solicitada ou o
recurso é atendido.
 Um processo no estado de espera sempre terá que
passar pelo estado de pronto antes de ser executado
novamente. Não existe a mudança do estado
bloqueado para o estado de execução diretamente.
UFPA - PPGEE – LPRAD - LINC

Processo: Subprocesso e Thread


 Subprocesso e Thread
 Um processo pode criar outros processos de maneira
hierárquica.
 Quando um processo (processo pai) cria um outro, o
processo criado é chamado de subprocesso ou
processo-filho.
 A utilização de subprocessos permite dividir uma
aplicação em partes que podem trabalhar de forma
concorrente.
UFPA - PPGEE – LPRAD - LINC

Subprocesso e Thread
 Sempre que um novo processo é criado, o sistema
deve alocar recursos para esse processo, além de
consumir tempo de CPU neste trabalho.
UFPA - PPGEE – LPRAD - LINC

Subprocesso e Thread

 No término do processo, o sistema dispensa tempo


para desalocar os recursos previamente alocados.
 Na tentativa de diminuir o tempo gasto na
criação/eliminação de processos, assim como
economizar recursos do sistema, foi criado o conceito
de thread.
UFPA - PPGEE – LPRAD - LINC

Subprocesso e Thread
 Em um sistema com múltiplos threads (multithread),
não é necessário haver vários processos para se
implementar aplicações concorrentes.
 No ambiente multithread, cada processo pode
responder a várias solicitações concorrentemente ou
simultaneamente, se houver mais de um processador.
UFPA - PPGEE – LPRAD - LINC

Subprocesso e Thread
 Threads compartilham o processador da mesma
maneira que um processo.
 Cada thread possui seu próprio conjunto de
registradores, porém compartilha o mesmo espaço de
endereçamento com os demais threads do processo.
 As threads passam pelos mesmos estados que um
processo (execução, bloqueado/ espera e pronto).
UFPA - PPGEE – LPRAD - LINC

Subprocesso e Thread

 A grande diferença entre subprocessos e threads é em


relação ao espaço de endereçamento.
 Como compartilham o mesmo espaço de
endereçamento de um processo, não há proteção, o
que permite que um thread altere dados de outros
threads.
UFPA - PPGEE – LPRAD - LINC

Subprocesso e Thread
UFPA - PPGEE – LPRAD - LINC

Subprocesso e Thread
 Considere um navegador WEB:
 Muitas páginas WEB contêm muitas figuras que
devemser mostradas assim que a página é
carregada;
 Para cada figura, o navegador deve estabelecer
uma conexão separada com o servidor da página e
requisitar a figura  tempo;
 Múltiplas threads, muitas imagens podem ser
requisitadas ao mesmo tempo melhorando o
desempenho;
UFPA - PPGEE – LPRAD - LINC

Thread - Tipos
 De usuário: implementadas por bibliotecas no nível do
usuário; (Linux, Solaris, Mach)
 Criação e escalonamento são realizados sem o
conhecimento do kernel;
 Sistema Supervisor (run-time system);
 Tabela de threads para cada processo;
 Processo inteiro é bloqueado se uma thread realizar
uma chamada bloqueante ao sistema;
 Mais rápido que implementação no núcleo;
 Implementado em qualquer SO que não suporta
Threads
UFPA - PPGEE – LPRAD - LINC

Thread - Tipos
UFPA - PPGEE – LPRAD - LINC

Thread - Tipos
 De Kernel: suportadas diretamente pelo SO; (Solaris,
WinNT, UNIX, Linux)
 Criação, escalonamento e gerenciamento são feitos
pelo kernel;
 Tabela de threads e tabela de processos separadas;
 Processo inteiro não é bloqueado se uma thread realizar
uma chamada bloqueante ao sistema;
UFPA - PPGEE – LPRAD - LINC

Thread - Tipos
UFPA - PPGEE – LPRAD - LINC

Processo - Tipos
 Tipos de Processos
 Os processos podem ser classificados de acordo com o
tipo de processamento que realizam.
 Acerca desse aspecto, são definidos dois tipos de
processos:
 CPU-bound: processo que passa a maior parte do tempo
no estado de execução, ou seja, utilizando o processador.
 Esse tipo de processo realiza poucas operações de E/S.

 Geralmente encontrado em aplicações matemáticas ou


científicas.
UFPA - PPGEE – LPRAD - LINC

Processo - Tipos
 Tipos de Processos
 I/O-bound: processo que passa a maior parte do tempo
no estado de espera, pois realiza um elevado número de
operações de E/S.
 Esse tipo de processo é encontrado em aplicações
comerciais, que se baseiam em leitura, processamento e
gravação.
 Os processos interativos também são processos I/O-
bound.
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
UFPA - PPGEE – LPRAD - LINC

int main ()
{
// declaração de variaveis
pid_t pid; // definindo um identificador de processo - inteiro longo
char *mensagem; // string que contem a mensagem
int n; // contador

printf("Comecando o programa fork1 ... \n");


pid = fork(); // dividindo o processo em dois
switch(pid)
{
case -1: // erro na abertura do processo filho
exit(1);
case 0: // retorno de fork para processo filho
mensagem = " Processo filho...";
n = 5;
break;
default:
mensagem = "Processo pai ...";
n = 3;
break;
}
for(;n>0;n--) {
puts(mensagem);
sleep(1);
}
printf("Terminando o programa fork1 ... \n");
system("ps -f");
exit (0);

}
//gcc arq.c -o arq
UFPA - PPGEE – LPRAD - LINC

Trabalho 4

 Implementar código para criar threads e


não processos-filho.
 Apresentar as diferenças fundamentais
entre as duas abordagens.
 Data da apresentação: A definir
Trabalho 5
#include <time.h>
UFPA - PPGEE – LPRAD - LINC

int main(void)
{
clock_t iniciar, parar;
unsigned long t,z;
float soma=0.0, media=0.0;
int m =10; // Número de execuções da tarefa

FILE *fp;
fp = fopen("arq1.txt","w+");

for(z=0;z<m;z++) // o número de iterações que eu vou fazer é igual a 10


{
iniciar = clock(); // pego o tempo antes de iniciar a tarefa
for(t=0; t<10000000; t++);
parar = clock(); // pego o tempo ao final da tarefa
soma = soma + ((parar - iniciar) / CLK_TCK);

fprintf(fp,"\n O laco precisou de %f segundos",(parar - iniciar) / CLK_TCK);

}
media = soma / m;
fprintf(fp, "\n A media eh %f segundos", media);
fclose(fp);
return 0;
}
UFPA - PPGEE – LPRAD - LINC

Maratona de Trabalhos

 Trabalhos 5: Entrega a definir...


UFPA - PPGEE – LPRAD - LINC

Trabalho Processos e Threads


 O trabalho denota a implementação de concorrência e sincronismo
através da criação de processos via comando fork e com o uso de
threads.
 Como fora apresentado em laboratório, as tarefas de
implementação são as que seguem:
 Criação de processos, de acordo com os requisitos e níveis de
hierarquia abaixo, via comando fork:
 1 - Escreva um programa com 1 Avô, 1 Pai e 1 Filho

 2 - Escreva um programa com 1 Pai e 2 Filhos

 3 - Escreva um programa com 1 Avô, 1 Pai e 1 Filho, "elimine" o

processo 'Pai' e veja quem será o novo pai do processo 'Filho’


UFPA - PPGEE – LPRAD - LINC

Trabalho Processos e Threads


 Utilizando Threads:
 4 - Crie um programa que cria 3 threads. A primeira escreve na

tela “A”, a segunda “B” e a terceira “C”. Faça que seja sempre
escrito na tela “ABC”
 5 – Implemente um algoritmo para ordenação de vetores (em

processos e threads), buscando explorar as vantagens da


computação concorrente, atentando-se para o sincronismo
entre as tarefas
 6 - Crie um programa (ou altere um dos anteriores) de modo a

lhe permitir comparar o desempenho para a realização da(s)


tarefa(s) do programa através do uso de primitivas fork e
através de threads (calcule a média de tempo de 20 simulações)
UFPA - PPGEE – LPRAD - LINC

Universidade Federal do Pará

Sistemas Operacionais
Gerenciamento de Processos/Processador

Diego Lisboa Cardoso


[email protected]

Você também pode gostar