• Nenhum resultado encontrado

4-Aula-Operações-sobre-Processos

N/A
N/A
Protected

Academic year: 2021

Share "4-Aula-Operações-sobre-Processos"

Copied!
48
0
0

Texto

(1)

Sistemas Operacionais

Operações sobre Processos

(2)

Sistemas Operacionais

• Os processos na maioria dos SOs podem ser executados de forma concorrente e ser

criados e removidos dinamicamente.

• Papel do SO é gerar mecanismos para criação e término destes processos.

(3)

Sistemas Operacionais

(4)

Sistemas Operacionais

• Um processo pode gerar diversos novos processos por meio de uma chamada de sistema (system call ou syscall) ”criar

processo” durante sua execução.

• O processo que criou os novos processos é chamado de processo pai, e os novos

processos são considerados filhos desse processo.

(5)

Sistemas Operacionais

• Cada novo processos (filho) pode criar outros processos formando uma árvore de processos. • A maioria dos SOs identifica o processo com

um pid que é o identificador do processo. • Exemplo de uma árvore de processos no

Solaris.

(6)

Sistemas Operacionais

Criação de processos

(7)

Sistemas Operacionais

• pageout e fsflush gerenciam memória e sistemas de arquivos.

• init raiz dos processos de usuário. – inetd serviços de rede

– dtlogin tela de login do usuário – csh representa o usuário logado

(8)

Sistemas Operacionais

• Listando processos no Linux:

– ps –el: mostra todos os processos com detalhes dos mesmos

– pstree: monta uma árvore de processos

(9)

Sistemas Operacionais

• Um processo precisa de recursos (Tempo de CPU, memória, arquivos, dispositivos de E/S) para realizar sua tarefa.

• Quando um subprocesso é criado ele pode ser capaz de obter recursos diretamente do SO

ou então pode ficar restrito a um subconjunto dos recursos do processo pai.

(10)

Sistemas Operacionais

• O pai por sua vez pode repartir ou compartilhar seus recursos.

• Esse tipo de restrição serve para que um

processo não sobrecarregue o sistema criando processos sem controle.

• Além de recursos físicos o pai pode passar

para o filho dados de inicialização (entrada).

(11)

Sistemas Operacionais

• Após a criação de um novo processo (filho) o pai tem duas opções de execução:

– O pai continua a ser executado simultaneamente com seus filhos

– O pai espera até que algum ou todos os seus filhos tenham terminado

(12)

Sistemas Operacionais

• Também existem duas possibilidades em termos do espaço de endereços do novo processo:

– O processo filho é uma duplicata do processo pai (mesmo programa e dados)

– O processo filho tem um novo programa carregado nele

(13)

Sistemas Operacionais

(14)

Sistemas Operacionais

• Um processo termina quando acaba de

executar sua instrução final e pede ao SO para removê-lo usando a chamada de sistema exit() • Ele pode ainda retornar um status ao seu

processo pai (se for o caso).

• O SO se encarrega de desalocar os recursos

como memória, arquivos abertos, dispositivos E/S, etc.

(15)

Sistemas Operacionais

• O término de um processo pode acontecer

também em outras circunstâncias, ou seja, um processo pode causar o término de outro.

• Normalmente só o processo pai pode solicitar o termino de um processo filho. Caso

contrário os usuários poderia terminar tarefas uns dos outros de forma arbitrária.

(16)

Sistemas Operacionais

• Quando um processo filho é criado o SO informa o pai o pid do filho.

• Isto é feito para que o pai tenha controle

sobre os seus filhos, monitorando-os dentro do sistema.

(17)

Sistemas Operacionais

• Um processo pai pode terminar a execução de um processo filho por várias razões:

– O filho ultrapassou o uso de recursos alocados a ele.

– A tarefa atribuída ao filho não é mais necessária – O pai está saindo, e o sistema não permite que um

filho fique sem pai.

(18)

Sistemas Operacionais

• Em alguns SOs quando o pai é terminado seus filhos podem ser passados ao processo

superior ao pai (como o init por exemplo), assim eles continuarão sua execução.

• Em outros se o pai terminar todos os filhos precisam terminar, esse fato é conhecido como término em cascata (cascading

termination). Exemplo Explorer.

(19)

Sistemas Operacionais

(20)

Sistemas Operacionais

• Os processos executando dentro do SO podem ter duas posturas, eles podem ser

independentes ou cooperativos.

• Um processo é independente se não puder afetar ou ser afetado pelos outros processos em execução no sistema.

• Um processo é cooperativo na situação inversa.

(21)

Sistemas Operacionais

• Processos que compartilham dados são naturalmente cooperativos.

• Existem vários motivos para que os processos seja cooperativos:

– Compartilhamento de informações – Agilidade na Computação

– Modularidade – Conveniência

(22)

Sistemas Operacionais

• Compartilhamento de informações

Como é comum que vários usuários precisar de um mesmo recurso (um arquivo compartilhado por exemplo) há a necessidade de prover um ambiente que permita o acesso concorrente a essa informação.

(23)

Sistemas Operacionais

• Agilidade na computação

Se queremos que uma tarefa seja executada mais rapidamente precisamos utilizar a

estratégia “dividir e conquistar”, ou seja, nos computadores modernos com várias CPUs é preciso dividir a tarefa em subtarefas que

podem ser executadas em paralelo.

(24)

Sistemas Operacionais

• Modularidade

Para ganhar ainda mais eficiência podemos

construir o sistema de forma modular (threads) sendo que essas threads executem uma tarefa (menor unidade de processamento) mais

rapidamente.

(25)

Sistemas Operacionais

• Conveniência

Permitir que o usuário execute várias tarefas relacionadas simultaneamente. Por exemplo digitar um texto, salvá-lo no disco e imprimir.

(26)

Sistemas Operacionais

• Os processos cooperativos precisam de

mecanismos de comunicação entre processos

(interprocess communication – IPC) que lhes

permita a troca de dados e informações.

• Existem dois modelos de comunicação entre processos:

– Memória compartilhada – Troca de mensagens

(27)

Sistemas Operacionais

(28)

Sistemas Operacionais

• Os dois modelos são comuns nos SOs e em alguns casos a implementação dos dois

também é feita.

• A troca de mensagens é útil para quantidades menores de dados, pois nenhum conflito

precisa ser evitado e é mais fácil de implementar.

(29)

Sistemas Operacionais

• A memória compartilhada é mais rápida, pois a troca de mensagens usa chamadas de

sistema (intervenção do kernel), já a memória compartilhada o kernel precisa apenas

estabelecer as regiões da mem. compartilhada e após isso os processos controlam o acesso a mem.

(30)

Sistemas Operacionais

• Sistemas de memória compartilhada

A comunicação nesse sistema é feita por meio da escrita e leitura de dados de uma área de memória.

(31)

Sistemas Operacionais

• Lembrando que o SO é responsável por

garantir que os processos tenham uma área independente de memória, os processo que desejam se comunicar com esse mecanismo precisam “concordar” em remover essa

restrição, sendo que são eles próprios são responsáveis por garantir que não estarão escrevendo simultaneamente num mesmo

(32)

Sistemas Operacionais

• Problema do produtor/consumidor, um

processo produtor produz informações que são consumidas pelo consumidor. Exemplo Servidor Web e o navegador.

• Um produtor pode produzir um item

enquanto o consumidor está consumindo

outro ao mesmo tempo, para isso funcionar é necessário sincronismo.

(33)

Sistemas Operacionais

• Dois tipos de buffers (área onde ficam os itens produzidos/consumidos) podem ser adotados:

– Buffer ilimitado (unbounded buffer): não há limitem o consumidor pode ter de esperar a

produção de novos itens, mas o produtor sempre pode produzir itens.

– Buffer limitado (bounded buffer): tamanho do buffer fixo, nesse caso o consumidor precisa

esperar o buffer ficar cheio e o produtor precisa

(34)

Sistemas Operacionais

• Sistemas de troca de mensagens

A comunicação é feita por meio de troca de

mensagens entre os processos sob controle do SO. Esse mecanismo permite que processos que não compartilham o mesmo espaço de

endereços (aplicação distribuída) se

comuniquem e sincronizem suas ações.

(35)

Sistemas Operacionais

• Exemplo: programa de bate-papo.

• Comunicação baseada em duas operações send e receive.

• Mensagens com tamanho fixo (fácil para o SO, complicado para o programador) ou tamanho variável (fácil para o programador, complicado para o SO)

(36)

Sistemas Operacionais

• A troca de mensagens tem algumas

problemáticas que precisam ser entendidas: – Comunicação direta ou indireta

– Comunicação síncrona ou assíncrona – Buffer automático ou explícito

(37)

Sistemas Operacionais

• Comunicação direta ou indireta

Para a comunicação ser possível os processos precisam de um modo de se referir uns aos outros, eles podem usar nomes (pid).

send(processo, mensagem) receive(processo, mensagem)

(38)

Sistemas Operacionais

• Na comunicação direta, cada processo que deseja se comunicar precisa nomear o

destinatário (para enviar) ou o emissor (para receber)

• Exemplo:

– send(P, mensagem) – envia uma mensagem ao processo P

– receive(Q, mensagem) – recebe uma mensagem

(39)

Sistemas Operacionais

• Processos precisam saber apenas a identidade uns dos outros para se comunicarem

• Um enlace é estabelecido entre apenas dois processos por vez.

• Ele é feito de forma automática entre processos que desejam se comunicar

(40)

Sistemas Operacionais

• Na comunicação indireta, as mensagens são enviadas e recebidas por meio de uma “caixa

de correio”

• Exemplo:

– send(A, mensagem) – envia uma mensagem à caixa de correio A

– receive(A, mensagem) – recebe uma mensagem da caixa de correio A

(41)

Sistemas Operacionais

• Um enlace é estabelecido entre um par de processos somente se algum deles tiver um caixa de correio compartilhada.

• Um enlace pode ser associado a mais de dois processos.

(42)

Sistemas Operacionais

• Sincronismo

A troca de mensagens (send e receive) pode

acontecer de forma síncrona (com bloqueio) ou

assíncrona (sem bloqueio)

(43)

Sistemas Operacionais

• Envio com bloqueio: o processo que envia é bloqueado até que a mensagem seja recebida pelo destinatário ou pela caixa de correio.

• Envio sem bloqueio: o processo envia a mensagem e continua sua operação.

• Recebimento com bloqueio: o receptor é bloqueado até que a última mensagem seja recebida ou esteja disponível.

• Recebimento sem bloqueio: o receptor recebe

(44)

Sistemas Operacionais

• Quando o método send e receive forem com bloqueio temos um encontro.

• Dispositivos de E/S frequentemente se utilizam de bloqueio

(45)

Sistemas Operacionais

• Buffers

Seja na comunicação direta ou indireta as

mensagens tem de ser armazenadas em algum local temporário, são as filas. Essas filas podem ser implementadas de três maneiras:

– Capacidade zero

– Capacidade limitada

(46)

Sistemas Operacionais

• Capacidade zero

A fila tem tamanho máximo de zero, isto é, não pode haver mais que uma mensagem

aguardando nela. Caso isso aconteça o emissor tem de ser bloqueado até o destinatário receber a mensagem.

(47)

Sistemas Operacionais

• Capacidade limitada

A fila possui um tamanho finito n. Se ela estiver cheia quando um processo tentar enviar uma mensagem o emissor será bloqueado até que ela tenha espaço para a mensagem, caso

contrário a mensagem é posta na fila e o emissor continua sua operação.

(48)

Sistemas Operacionais

• Capacidade ilimitada

A fila possui tamanho infinito, assim qualquer quantidade de mensagens pode residir nela e o emissor nunca é bloqueado.

Referências

Documentos relacionados

Assim, espera-se que o planejamento e implementação dos cuidados propostos pelo fluxograma de atendimento aos pacientes oncológicos no serviço de Pronto Atendimento da

A partir de sua obra, cada artista expressa elementos sobre o ambiente e o período em que ele viveu e esses elementos se transformam através de sua criação, produzindo algo novo

apelidada de usucapião familiar, introduzida no ordenamento jurídico brasileiro a partir de uma lei de incentivo à habitação para famílias de classes baixa e

na separação da apresentação do conteúdo, deixando clara a delimitação dos papéis e responsabilidades dos programadores e dos projetistas das páginas (KHIN, 2009).

Dos indivíduos que já fizeram uso de alguma droga ilícita na vida, houve uso na vida de pelo menos 3 drogas (lícitas ou ilícitas) subindo a média inicial para 6,00

• Apresentar quais as possíveis melhorias ao desempenho do modelo de gestão aplicado. 36) nas últimas décadas foram desenvolvidas para as indústrias gráficas

O objetivo geral deste projeto é o desenvolvimento em PHP de um sistema de busca que, após o usuário fornecer uma lista de compras, retorne a lista dos mercados cujos

A dificuldade de se trabalhar com a experimentação vem do fato, dos alunos não levarem a sério, não relacionando a teoria já vista com o que está para ser trabalhado,