36
Sistemas Operativos Cap. III Gestão de Processos Prof. José Rogado [email protected] Universidade Lusófona

Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

Sistemas Operativos

Cap. III

Gestão de Processos

Prof. José Rogado

[email protected]

Universidade Lusófona

Page 2: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.2 Lições de Sistemas Operativos

Processos

Conceito de Processo

Escalonamento de Processos

Operações em Processos

Cooperação entre Processos

Comunicação entre Processos

Comunicação em Sistemas Cliente-Servidor

Page 3: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.3 Lições de Sistemas Operativos

Conceito de Processo

Um Sistema Operativo executa uma variedade de programas

Sistemas batch - jobs

Sistemas em tempo repartido – processos

Processo – um programa em execução de forma sequencial

Utilizaremos task ou process de forma indiferente

A um processo estão associados:

Espaço de Endereçamento

Código Executável

Secção de Dados

Pilha (Stack)

Contexto

Intruction Pointer

Etc...

Page 4: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.4 Lições de Sistemas Operativos

Processo em Memoria

Espaço de Endereçamento

code

Page 5: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.5 Lições de Sistemas Operativos

Bloco de Controle de Processo

Toda a informação associada a cada

processo está contida no Process

Control Block (PCB):

Estado do Processo

Instruction Pointer (Program Counter)

Cópias dos Registos do CPU

Informação sobre o escalonamento

do CPU

Informação sobre o seu Espaço de

Endereçamento Memória

Informação sobre todas as operações

de I/O do processo

Informação sobre a sua actividade

Page 6: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.6 Lições de Sistemas Operativos

Características Dinâmicas

Os Processos podem ter dois tipos extremos de comportamentos:

I/O-bound process – gasta mais tempo a fazer I/O do que

computação

muitas e curtas utilizações do CPU

CPU-bound process – gasta mais tempo a fazer computação

do que I/O;

Poucas mas longas utilizações CPU

Este tipo de diferenças favorece o escalonamento de processos

Tira partido do facto que os processos não utilizam o CPU de

forma contínua

Page 7: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.7 Lições de Sistemas Operativos

Estados de um Processo

À medida da sua execução, um processo muda de estado

new: O processo está a ser criado

ready: O processo está à espera de ser posto em execução

running: O processo está a ser executado

waiting: O processo está à espera de que ocorra um evento

terminated: O processo acabou a sua execução

Page 8: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.8 Lições de Sistemas Operativos

Escalonamento de Processos

Os Processos transitam entre estas filas durante as várias fases

da sua execução por acção do scheduler

Process queues – conjunto de todos os processos no sistema.

Ready queue – conjunto de todos os processos residentes em

memoria, em estado ready e à espera de serem executados

Device queues – conjunto de todos os processos que estão à

espera de um periférico de I/O

Page 9: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.9 Lições de Sistemas Operativos

Ready Queue e I/O Queues

Page 10: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.10 Lições de Sistemas Operativos

Comutação de Processos

Comutação de Processos

Quando o scheduler retira um processo do estado running e o substitui

por outro

Mudança de Contexto

Quando o há comutação entre dois processos, o sistema deve

salvaguardar o estado do antigo processo e carregar o estado do novo

processo

Esta operação é fundamental para que os processos possam voltar a

passar para o estado running sem perder o contexto de execução

O tempo de mudança de contexto é overhead: o sistema não está a

fazer nada de útil para o utilizador durante a comutação

Depende do suporte fornecido pelo hardware

MMU, hyperthreading, etc…

Page 11: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.11 Lições de Sistemas Operativos

Passos da Comutação de Processos

Page 12: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.12 Lições de Sistemas Operativos

Criação de Processos

O processo pai cria um processo filho que por seu turno pode criar

outros processos, formando uma árvore de processos

Analogia com uma árvore genealógica

Partilha de Recursos: diferentes possibilidades

Os recursos do filho são um subconjunto dos do pai

O pai e o filho não partilham recursos

O pai e filho partilham todos os recursos

Execução

O pai espera que o filho termine

O pai e o filho executam-se concorrentemente

Page 13: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.13 Lições de Sistemas Operativos

Criação de Processos (Cont.)

Espaço de endereçamento

O filho duplica o do pai

O filho carrega outro programa no seu próprio espaço

Exemplos UNIX

O system call fork cria um novo processo

O system call exec é utilizado depois do fork para carregar

outro programa no espaço de endereçamento do filho

Page 14: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.14 Lições de Sistemas Operativos

Árvore de Processos

Page 15: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.15 Lições de Sistemas Operativos

Árvore de Processos Linux (root)

Page 16: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.16 Lições de Sistemas Operativos

Árvore de Processos Linux (user)

Page 17: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.17 Lições de Sistemas Operativos

Árvore de Processos Windows

Page 18: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.18 Lições de Sistemas Operativos

Programa para a Criação de um Processo int main()

{

pid_t pid;

int status;

/* fork another process */

pid = fork();

if (pid < 0) { /* error occurred */

fprintf(stderr, "Fork Failed");

exit(-1);

} else if (pid == 0) { /* child process */

/* Child executes another command */

execl("/bin/ls", "/bin/ls", "-l", NULL);

} else { /* parent process */

/* parent waits for the child to complete */

wait (&status); // Retrieve child exit value

printf ("Child Complete");

exit(0);

}

}

Criação de novo processo

Código executado só no filho

Código executado só no pai

Page 19: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.19 Lições de Sistemas Operativos

Terminação de Processos

Depois de executar a última instrução o processo pede ao SO para

o destruir (via exit)

Pode retornar valores para o pai que os recebe via wait

Os recursos do filho são libertados pelo SO

O pai pode terminar a execução de um processo filho (via abort)

por vários motivos

O filho excedeu a sua quota de recursos

O processo já não é necessário

Se o pai termina

Alguns SOs não deixam que o(s) filho(s) continuem a

execução

Todos os filhos são terminados – terminação em cascata

Page 20: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.20 Lições de Sistemas Operativos

Criação de Processos em Windows No Windows a criação de processos é feita através do system call

CreateProcess BOOL WINAPI CreateProcess(

__in_opt LPCTSTR lpApplicationName,

__inout_opt LPTSTR lpCommandLine,

__in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes,

__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,

__in BOOL bInheritHandles,

__in DWORD dwCreationFlags,

__in_opt LPVOID lpEnvironment,

__in_opt LPCTSTR lpCurrentDirectory,

__in LPSTARTUPINFO lpStartupInfo,

__out LPPROCESS_INFORMATION lpProcessInformation );

Não existe uma noção de filiação tão forte como em Unix

O processo pai recebe um handle para o filho, mas este não é automaticamente terminado se o pai finalizar

Ver definição em:

https://msdn.microsoft.com/en-us/library/ms682425(v=vs.85).aspx

Page 21: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.21 Lições de Sistemas Operativos

Programa para Criação de Processo (Windows) #include <stdio.h>

#include <tchar.h>

void _tmain( int argc, TCHAR *argv[] ) {

STARTUPINFO si;

PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );

si.cb = sizeof(si);

ZeroMemory( &pi, sizeof(pi) );

if( argc != 2 ) {

printf("Usage: %s [cmdline]\n", argv[0]);

ExitProcess(1);

}

// Start the child process.

if ( !CreateProcess ( NULL, // No module name (use command line)

argv[1], // Command line

NULL, // Process handle not inheritable

NULL, // Thread handle not inheritable

FALSE, // Set handle inheritance to FALSE

0, // No creation flags

NULL, // Use parent's environment block

NULL, // Use parent's starting directory

&si, // Pointer to STARTUPINFO structure

&pi )) // Pointer to PROCESS_INFORMATION structure )

{

printf( "CreateProcess failed (%d).\n", GetLastError() );

ExitProcess(2);

}

// Wait until child process exits.

WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.

CloseHandle( pi.hProcess );

CloseHandle( pi.hThread );

}

https://msdn.microsoft.com/en-us/library/ms682512(VS.85).aspx

Page 22: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.22 Lições de Sistemas Operativos

Cooperação entre Processos

Processos independentes não podem ser afectados pela

execução uns dos outros

processos cooperantes podem afectar ou ser afectados pela

execução uns dos outros

Vantagens da cooperação entre processos

Partilha de informação

Redundância

Aumento de performance de computação

Modularidade

Conveniência

Page 23: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.24 Lições de Sistemas Operativos

Inter Process Communication (IPC)

Mecanismos que permitem aos processos comunicar e sincronizar

as suas interacções

Se dois processos desejam comunicar, precisam de:

Estabelecer um canal de comunicação entre eles

Trocar informação através das primitivas fornecidas pelo canal

A Implementação do canal de comunicação depende do tipo de

mecanismos IPC utilizados:

Sistema de Mensagens – os processos comunicam sem recurso a

espaços comuns aos dois processos, fornecendo duas operações:

send(message) – tamanho da mensagem fixo ou variável

receive(message)

Sistema de Memória Partilhada - os processos pedem ao sistema

para criar uma zona de memória comum e trocam informação

escrevendo e lendo na memória partilhada

Necessidades de sincronização

Page 24: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.25 Lições de Sistemas Operativos

Modelos de Comunicação

(a) Mensagens (b) Memória Partilhada

Page 25: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.26 Lições de Sistemas Operativos

Memória Partilhada

Dois processos pedem ao kernel para criar uma zona de memória

comum visível nos seus respectivos espaços de endereçamento

Os dois processos podem ler e escrever dados nessa zona

Pode ser criada em modo leitura ou escrita para cada um dos

processos

Para estabelecer comunicação bidireccional ambos os

processos devem poder ler e escrever

No caso de escritas concorrentes, os processos devem observar

regras de sincronização para evitar incoerência de dados

Ver capítulo sobre sincronização de processos

POSIX Shared Memory

Exemplo de API que permite realizar este tipo de comunicação

Implementada em todos os sistemas Unix

Page 26: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.27 Lições de Sistemas Operativos

Comunicação por Mensagens

As mensagens são dirigidas e recebidas em mailboxes (também

designadas por portos)

Cada mailbox tem um único endereço

Os processos podem comunicar se partilharem uma mailbox

Propriedades do canal de comunicações indirecto

O canal só é estabelecido se os processos partilharem uma

mailbox comum

Um canal pode ser associado com vários processos

Cada par de processos pode partilhar vários canais

Os canais podem ser mono ou bi-direccionais

Operações

Criar ou apagar uma mailbox

Enviar e receber mensagens através da mailbox

Page 27: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.29 Lições de Sistemas Operativos

Sincronização

O envio de mensagens pode ser bloqueante ou não

Quando há bloqueio, o envio é síncrono

Envio síncrono: o emissor espera até que a mensagem seja

recebida

Recepção síncrona: o receptor espera até receber uma

mensagem

Quando não há bloqueio, o envio é assíncrono

Envio assíncrono: o emissor envia uma mensagem e

continua a execução

Recepção assíncrona: o receptor é prevenido de que recebeu

uma mensagem através de um evento externo (ex:

interrupção)

Page 28: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.30 Lições de Sistemas Operativos

Buffering

O Buffering designa a possibilidade de criação de filas de espera

de mensagens associadas a um canal

Pode haver três tipos de buffering, associados ao tamanho da fila

1. Capacidade nula – 0 mensagens

Sender must wait for receiver (rendezvous)

2. Capacidade limitada – tamanho finito de n mensagens

Sender must wait if link full

3. Capacidade ilimitada – tamanho infinito

Sender never waits

Page 29: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.31 Lições de Sistemas Operativos

Pipes Unix

Um pipe é um canal de comunicação criado através do sistem call pipe()

São criados dois file descriptors que permitem enviar e receber

mensagens entre dois processos pai e filho

Um pipe é um canal half-duplex

fd[1] fd[0]

So

urc

e: O

pe

ratin

g S

ys

tem

s, G

ary

Nu

tt

Co

pyrig

ht ©

20

04

Pe

ars

on

Ed

uc

atio

n, In

c.

Page 30: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.32 Lições de Sistemas Operativos

Programa para a Criação de um Pipe int main()

{

pid_t pid;

int pipeID[2];

char buffer[64];

char message = “Hello: Message from parent process”;

/* open a pipe */

if (pipe(pipeID) < 0){

perror(“pipe”);

exit(-1);

}

pid = fork(); /* fork another process */

if (pid < 0) { /* error occurred */

fprintf(stderr, "Fork Failed");

exit(-1);

} else if (pid == 0) { /* child process */

/* Child reads from pipe */

read(pipeID[0], buffer, sizeof(buffer));

printf(“Received: %s\n”, buffer);

exit(0);

} else { /* parent process */

/* parent writes message to pipe */

write(pipeID[1], message, sizeof(message));

exit(0);

}

}

Criação do pipe de comunicação

Filho lê do pipe e imprime

Pai escreve no pipe

Page 31: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.33 Lições de Sistemas Operativos

Named Pipes ou FIFOS

Os FIFOs são pipes que podem ser utilizados entre quaisquer

processos independentemente da filiação

O FIFO é conhecido pelo seu nome, tal como um ficheiro

Um FIFO é criado numa pasta do SGF utilizando um comando

específico

mkfifo nome_fifo

Cada processo que pretende utilizar o FIFO tem de realizar a sua

abertura como se tratasse de um ficheiro

open nome_fifo

Depois podem ler ou escrever no FIFO

O FIFO é mono direccional (half-duplex)

Ver exemplo no slide seguinte com o programa cat

Page 32: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.34 Lições de Sistemas Operativos

Exemplo de Utilização

Processo que escreve no FIFO:

Processo que lê do FIFO:

Page 33: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.35 Lições de Sistemas Operativos

Redirecção dos canais de E/S

Uma das utilizações dos pipes é permitir o estabelecimento de

canais de comunicação temporários entre processos

Neste caso, o stdout do comando ls -l é redirigido para o

stdin do comando grep, sem qualquer alteração do código

Este resultado é obtido através da utilização do system call

dup2 que permite duplicar um file descriptor já existente

int dup2(int srcfd, int destfd);

Page 34: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.36 Lições de Sistemas Operativos

Efeito do dup2

O system call dup2 copia o file descriptor passado no 1º

argumento para o file descriptor passado no 2º argumento

Neste caso, pipe[0] é copiado para o stdin, ou seja, o processo

passa a receber todos os dados do pipe como se viessem do teclado

Uma redirecção semelhante pode ser feita com pipe[1] e o stdout

dup2(pipe[0], 0);

stdin

stdout

stderr

pipe[0]

pipe[1]

0

1

2

3

4

pipe[0]

stdout

stderr

pipe[0]

pipe[1]

0

1

2

3

4

File Descriptor Table

Page 35: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.37 Lições de Sistemas Operativos

POSIX Shared Memory

Interface standard suportada por todas as plataformas UNIX

(Linux, iOS, BSD,…)

Obriga a utilizar sincronização (semáforos)

Baseia-se essencialmente em 3 funções:

shmopen: acede ou cria um objecto de memória partilhada,

designado por um nome (pathname)

mmap: mapeia um objecto no espaço memória do processo

shm_unlink: retira a referência para o objecto partilhado do

processo. Quando todos os processos tiverem invocado esta

função, o objecto é destruído.

Há outras funções equivalentes, provenientes do UNIX System V:

shmget

shmat

shmdt

Exemplos nas aulas práticas

Page 36: Sistemas Operativos Cap. III Gestão de ProcessosLições de Sistemas Operativos 3.3 Conceito de Processo Um Sistema Operativo executa uma variedade de programas Sistemas batch - jobs

3.38 Lições de Sistemas Operativos

Fim da 3ª Parte