1
Processos
Prof. Alexandre Monteiro
Recife
Contatos
Prof. Guilherme Alexandre Monteiro Reinaldo
Apelido: Alexandre Cordel
E-mail/gtalk: [email protected]
Site: http://www.alexandrecordel.com.br/fbv
Celular: (81) 9801-1878
Introdução a Processos Em um sistema multiprogramado vários programas
estão na RAM e são executados concorrentemente•A CPU permuta entre programas, executando cada um por dezenas/centenas de milisegundos.
- Uma CPU só pode executar um programa por vez.
•Mas no curso de 1’’ uma CPU pode executar diversos programas ilusão de paralelismo (pseudoparalelismo)
- Verdadeiro paralelismo = sistema multiprocessado
Introdução a Processos O conceito de processo é a base para a
implementação de um sistema multiprogramável A gerência de um ambiente multiprogramável é
função do SO, o qual controla a execução dos programas e o uso concorrente da CPU
Neste contexto um programa esta associado a um processo
OBS: Apesar de denominações como tarefa ou job ainda serem usadas com o mesmo sentido, o termo processo é atualmente o mais utilizado.
job = tarefa = processo
Introdução a Processos Vantagens da Multiprogramação:
•Aumento da taxa de utilização do processador
•Melhor utilização dos recursos em geral•Redução do tempo de execução de um conjunto de programas
•Dá a ideia ao usuário de que ele possui uma máquina só para si.
Tipos de Processo
Independentes: não podem afetar a execução dos outros processos.
Cooperativos: podem afetar ou ser afetados pela execução de outros processos.
Vantagens:• Compartilhamento de informações• Aumento da veloc. de computação (speedup)• Modularidade• Conveniência
7
ProcessosO Modelo de Processo
• Multiprogramação de 4 programas• Modelo conceitual de 4 processos sequenciais,
independentes• Somente um programa está ativo a cada momento
Introdução a Processos
4 programas na memória de um sistema multiprogramado e a abstração em processos.
Introdução a Processos
4 programas na memória de um sistema multiprogramado e a abstração em processos.
Introdução a Processos
4 programas na memória de um sistema multiprogramado e a abstração em processos.
Sequencial x Multiprogramado
Introdução a Processos
Para que a troca de programa ocorra sem problemas é necessário que todas as informações do programa interrompido sejam guardadas
Todas as informações importantes à execução de um programa são parte do processo, por exemplo:
• seu espaço de endereçamento,• seu tempo de processador e• sua área de disco
Introdução a Processos
Um processo é formado por três partes
• Contexto de Hardware• Contexto de Software• Espaço de endereçamento
Estas três partes mantêm todas as informações necessárias à execução de um programa
Quando um processador troca de processo caracteriza uma mudança de Contexto de Execução
Estrutura de um Processo
Contexto de Hardware
Armazena o conteúdo dos registradores gerais da CPU, além dos registradores de uso específico, por exemplo:
• Contador de programa (Program Counter - PC)
- Armazena o endereço de memória onde se encontra a próxima instrução a ser executada
• Apontador da pilha (Stack Poiter - SP)- A pilha contém valores que podem ser inteiros, reais ou endereços.- O SP aponta para o topo da pilha
• Status (Estado do Processo)- Contém diversos flags que auxiliam à tomar decisões após instruções
Contexto de Hardware
Quando um processo está em execução, o seu contexto de HW está armazenado nos registradores da CPU.
No momento em que o processo perde a utilização da CPU, o sistema salva as informações no contexto de HW do processo
A troca de um processo por outro na CPU é denominada mudança de contexto.
Esta consiste em salvar o conteúdo dos registradores do processo que está deixando a CPU e carregá-los com os valores referentes ao do novo processo.
(1)
(2)(3)
(4)
(5)
(6)
(7)
Contexto de Hardware
A troca de contexto resume-se em substituir o contexto de HW de um processo A pelo de outro processo B.
Contexto de Software
Especifica as características e limites dos recursos que podem ser alocados pelo processo, como:
• O número máximo de arquivos abertos simultaneamente,• A prioridade de execução e• O tamanho do buffer para E/S
Muitas informações do contexto de SW são provenientes de um arquivo do SO conhecido como arquivo de contas• Ele é gerenciado pelo Administrador do sistema
e contém os limites dos recursos que cada processo pode alocar.
Contexto de Software
É formado por 3 grupos de informações:
• Identificação•Quotas•Privilégios
Contexto de Software - Identificação Grupo Identificação
• Cada processo criado pelo sistema recebe uma identificação única
- PID – Process Identification
• Através do PID o SO e outros processos podem fazer referência a qualquer processo existente
• O processo também possui a identificação do usuário ou processo que o criou (owner).
- Cada usuário possui uma identificação no sistema- UID – User Identification
Contexto de Software - Identificação A UID permite implementar um modelo de
segurança, onde apenas os objetos (processos, arquivos, áreas de memória,...) que possuem a mesma UID do usuário (ou processo pai) podem ser acessado.
Contexto de Software - Quotas Grupo Quotas
•As quotas são os limites de cada recurso do sistema que um processo pode alocar
•Caso uma cota seja insuficiente, o processo poderá:
- Ser executado lentamente- Interrompido durante seu processamento- Ou até nem ser executado
Contexto de Software - Quotas Grupo Quotas
•Alguns exemplos de quotas:- 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
- Tamanho máximo do buffer para operações de E/S
- Número máximo de processos, subprocessos e threads que podem ser criados
Contexto de Software - Privilégios
Grupo Privilégios
•Os privilégios ou direitos definem as ações que um processo pode fazer em relação a ele mesmo, aos demais processo e ao SO.- Alterar a prioridade de execução- Modificar os limites alocados de memória- Alteração de regras de segurança- Criação de outros processos privilegiados- Modificação de parâmetros de configuração do sistema
Contexto de Software - Privilégios
Grupo Privilégios
•Privilégio que afetam o SO são os mais amplos e poderosos.
•A maioria do SO possui uma conta de acesso SUPER privilegiada- Windows = administrator- UNIX = root
Espaço de Endereçamento
É a área de memória do processo onde as instruções e os dados do programa são armazenadas para execução
Cada processo possui seu espaço de endereçamento
Processo: Estrutura Detalhada
PCB - Bloco de Controle do Processo
O processo é implementado pelo SO através de uma estrutura de dados (Lista Encadeada) chamada de Bloco de Controle do Processo (Process Control Block - PCB)
A partir do PCB, o SO mantém as informações sobre o contexto de HW, o contexto de SW e o espaço de endereçamento de cada processo.
O PCB possui todas as informações necessárias para que a execução do processo possa ser iniciada, interrompida e retomada conforme determinação do SO, sem prejuízo para o processo.
PCB - Bloco de Controle do Processo Algumas informações típicas que o PCB possui são:
• Identificador de processo (pid);• Estado atual do processo;• Cópia do conteúdo do registrador contador de programa
(PC – Program Counter);• Cópia do conteúdo dos demais registradores do
processador;• PID do processo pai (parent process);• Ponteiro para a pilha;• Tempo em que o processo iniciou;• Tempo utilizado do processador;• Informações sobre diretório raiz e de trabalho.
OBS: Os PCBs de todos os processos residem na memória principal em uma área exclusiva do SO
PCB na Memória (Lista Encadeada)
Address Windowing Extensions
Estado do Processo
Para haver o compartilhamento da CPU em um sistema multiprogramável, os processos passam por diferentes estados ao longo do seu processamento
• A troca de estado ocorre em função de eventos gerados pelo próprio processo (voluntário) ou pelo SO (involuntário)
Os estados em que um processo pode se encontrar variam de sistema para sistema mas, de uma maneira geral, pode-se citar:
• Executando (Running)• Pronto (ready)• Bloqueado (blocked) – Também conhecido com Espera
(Wait)• Terminado (exit)
Estados do Processo:Executando (running) Um processo está no estado executando quando ele
está sendo executado pelo processador.
Em ambientes com uma única CPU, somente um processo pode estar sendo executado em um certo instante.
Em ambientes com mais de uma CPU, existe a possibilidade de mais de um processo estar sendo executado ao mesmo tempo
• Neste tipo de sistema um mesmo processo também pode ser executado simultaneamente em mais de uma CPU
Estados do Processo:Pronto (ready) O processo está temporariamente parado para que
outro processo possa ser executado.
O processo encontra-se pronto para a execução, aguardando apenas a liberação do processador para que ele seja executado;
Em geral existem vários processos no sistema no estado de pronto organizados em listas encadeadas;
Os processos são encadeados pela sua importância/prioridade
Estados do Processo:Pronto (ready)
Estados do Processo:Bloqueado (blocked) – Espera (wait) Um processo está no estado bloqueado/espera
quando aguarda a ocorrência de algum evento ou recurso externo para poder prosseguir, por exemplo:
- O término de uma operação de E/S- Espera de uma data e/ou hora para continuar sua
execução
O sistema também organiza os vários processos no estado de bloqueado/espera em listas encadeadas
- Em geral, os processos são separados em listas de espera associadas a cada tipo de evento
Estados do Processo:Bloqueado (blocked) – Espera (wait)
40
Processos x Programas
• Diferença sutil mas crucial.• Um processo é um programa em execução.• CPU chaveam conjuntos de processos, o que chamamos de
multiprogramação.• Analogia da Receita de Bolo:
• A receita é o programa (algoritmos).• O cozinheiro/programador é o processador (CPU)• Os ingredientes são os dados de entrada.• O processo é a atividade desempenhada pelo cozinheiro (ler receita, buscar e misturar ingredientes, assar o bolo)
41
Processos x Programas
• Agora imagine que no meio do preparo o filho do cozinheiro chegue chorando e dizendo que uma abelha o picou:
• O cozinheiro registra de onde está (estado atual do processo é salvo).
• Pega livro de primeiros socorros e começa a seguir as instruções.
• Quando o problema da picada de abelha tiver sido tratado, o processador (cozinheiro) volta ao bolo.
• Nesse ponto vemos que o processador alternou de um processo para outro de mais alta prioridade
43
Processos
• Um processo constitui uma atividade composta de:
• Programa• Entrada• Saída• Estado.
• Um programa sendo executado duas vezes, isso conta como dois processos. Apesar do SO compartilhar o código do programa em memória.
44
Criação de Processos
Principais eventos que levam à criação de processos
1. Início do sistema
2. Execução de chamada ao sistema de criação de processos
3. Solicitação do usuário para criar um novo processo
4. Início de um job em lote
I. Processos e Foreground (primeiro plano): interagem com usuários
II. Processos e Background (segundo plano): função específica, que não se associam com o usuários (Daemons)
Criação de Processos
Sistemas Antigos: só o sistema podia criar novos processos
Sistemas Atuais: os usuários podem criar novos processos e destruir dinamicamente
SO deve fornecer chamadas para a manipulação e gerência de processos
Quando um novo processo é criado o seu PCB é preparado com as informações básicas e colocado na fila de prontos.
46
Criação de Processos
Novos processo derivam do Processo Pai, sendo criada uma cópia dos endereços de memória para Processos Filhos
•UNIX (fork: cria novo processo e execve: sobrepõe espaço de endereçamento)
•Windows (CreateProcess) Pai e Filho tem seus Endereços de Memória distintos,
principalmente para escrita.
No UNIX há pouco compartilhamento, no Windows os espaços são distintos desde o início da criação do Processo Filho.
Criação de Processos Processos Pais criam processos Filhos, que podem criar
novos processos => gerando uma árvore de processos
Compartilhamento de Recursos:1. Pais e Filhos compartilham os mesmo recursos
2. Filhos compartilham um subconjunto de recursos do Pai
3. Pais e Filhos não compartilham recurso algum
Execução
1. Pai e Filhos executam concorrentemente
2. Pai aguarda até que o filho termine
Espaço de endereçamento
1. Filho é uma cópia do Pai (Firefox)
2. Filho tem um novo programa carregado (Google Chrome)
Árvore de Processos
Windows
Criação de Processos
50
Término de Processos
Condições que levam ao término de processos
1. Saída normal (voluntária)
2. Saída por erro (voluntária)
3. Erro fatal (involuntário)
4. Cancelamento por um outro processo (involuntário)
51
Término de Processos
Término de processos
• UNIX (exit)• Windows (ExitProcess)
Todos os programas baseados em tela também suportam o término voluntário.
Término do Erro Fatal: executar arquivo inexistente.
Instrução Ilegal: divisão por zero, referência a memória inexistente.
Término por cancelamento UNIX (Kill) e Windows (TerminateProcess)
Eliminação de Processo
Quando um processo é eliminado seus recursos associados são desalocados e o SO elimina o PCB.
Além dos 3 estados de um processo, a maioria dos SO têm mais 2 estados (um para criação e outro para eliminação)
Criação (New)• O SO criou um novo PCB, porém o processo
não está na lista de prontos Terminado (Exit)
• Não pode ser mais executado, porém o SO ainda mantém seu PCB
- O SO usa o PCB para contabilizar os recursos usados. Após isto, o processo pode deixar de existir
Eliminação de Processo
Pais podem terminar a execução de processos Filhos (abort)
1. Filhos excederam os recursos alocados
2. Tarefa de incumbência do Filho não é mais necessária
3. NO caso de Pai terminando
•SO não permite que o Filho continue se seu pai terminou
•Terminação em cascata
Criação e Eliminação de Processos
55
Hierarquias de Processos
• Pai cria um processo filho, processo filho pode criar seu próprio processo
• Formam uma hierarquia
–UNIX chama isso de “grupo de processos”• Windows não possui o conceito de hierarquia de processos
–Todos os processos são criados iguais
56
Estados de Processos (1)
• Possíveis estados de processos–em execução–bloqueado–Pronto–terminado
• Mostradas as transições entre os estados
Transições Possíveis entre Estados
Estados de Processos
De forma resumida existem 4 mudanças de estado que podem ocorrer a um processo:
• (a) Pronto -> Execução
• (b) Execução -> Bloqueado/Espera
• (c) Bloqueado/Espera -> Pronto
• (d) Execução -> Pronto
Mudança de Estado de Processo(a) Pronto -> Execução Quando um processo é criado, o sistema o coloca em
uma fila de processos prontos, onde aguardará uma oportunidade para ser executado.
Cada SO tem seus próprios critérios e algoritmos para a escolha da ordem em que os processos serão executados (escalonamento).
Esta transição também ocorre quando todos os processos já tiveram o seu tempo de execução (fatia de tempo) e agora é novamente a vez do primeiro processo da fila de prontos ser executado pela CPU
Causada por eventos gerados pelo sistema. Isto é de forma involuntária ao processo.
Estados do Processo:Pronto
Mudança de Estado de Processo(b) Execução -> Bloqueado/Espera
Um processo executando pode passar para o estado bloqueado por meio de eventos gerados pelo próprio processo
•Ex: uma operação de E/S Um processo executando também pode passar para
o estado bloqueado por eventos gerados pelo sistema
•Ex: SO suspende por um período a execução de um processo.
Estados do Processo:Bloqueado (blocked) – Espera (wait)
Mudança de Estado de Processo(c) Bloqueado/Espera -> Pronto
Um processo no estado de bloqueado/espera passa para o estado de pronto quando a operação solicitada é atendida ou o recurso esperado é concedido.
Um processo no estado de bloqueado/espera sempre terá que passar pelo estado de pronto antes de poder ser novamente selecionado para execução
•Não existe mudança de estado de bloqueado/espera para o estado de execução diretamente
Mudança de Estado de Processo(d) Execução -> Pronto
Um processo em execução pode passar para o estado de pronto quando ocorrer o término da sua fatia de tempo, por exemplo.
Nesse caso, o processo volta para a fila de processos prontos, onde aguarda uma nova fatia de tempo;
Causada por eventos gerados pelo sistema. Isto é de forma involuntária ao processo.
OBS. Um processo em estado pronto ou bloqueado/espera pode não estar em RAM. Isto ocorre quando não existe espaço suficiente para todos os processo na RAM e parte do contexto do processo é levada para o HD. E isso leva mais tempo para executar.
Conceito de Escalonamento Para cada estado existe uma Fila que contém os
PCBs.
Nas transações entre estados, o PCB do processo é movido entre as filas apropriadas.
Razões para Suspender Processos Uma técnica conhecida como swapping retira
processos da RAM, liberando espaço de memória para outro processo, e os traz de volta seguindo critérios de cada SO.
Neste caso, os processos em estado bloqueado/espera e pronto podem estar residentes ou não residentes na RAM.
- SO pode suspender processos:- Em background- Utilitário
Suspeito de estar causando problemas
Solicitação de usuário interativo
Temporização: execução periódica
Solicitação do processo pai.
Mudanças de Estados do Processo
RAM
HD
68
Estados de Processos (2)
• Camada mais inferior de um SO estruturado por processos
–trata interrupções, escalonamento• Acima daquela camada estão os processos
sequenciais
Escalonamento de Processos
Quando um ou mais processos estão prontos para serem executados, o sistema operacional deve decidir qual deles vai ser executado primeiro
A parte do sistema operacional responsável por essa decisão é chamada escalonador, e o algoritmo usado para tal é chamado de algoritmo de escalonamento
Para que um processo não execute tempo demais, praticamente todos os computadores possuem um mecanismo de relógio (clock) que causa uma interrupção, periodicamente
70
Implementação de Processos (1)
Campos da entrada de uma tabela de processos
71
Implementação de Processos (2)
Esqueleto do que o nível mais baixo do SO faz quando ocorre uma interrupção
Processos Foreground e Background- Processos Foreground: Permite a comunicação direta do usuário com o
processo durante o seu processamento
• Tem como base processamento interativo (teclado, mouse e monitor)
- Processos Background: Não permite a comunicação com o usuário durante o
seu processamento
• Tem como base processamento tipo batch (arquivos de E/S)
Processos Foreground e Background
Processos Foreground e Background Processo Foreground e Background – PIPE
É possível associar a saída de um processo a entrada de um outro. Para isso usa-se um pipe ligando os processos.
Exemplo em UNIX
cat cap1 cap2 cap3 | grep linguagem
cat está sendo usado para concatenar 3 arquivos
grep mostrará as linhas da saída de cat com a palavra linguagem
Processos Foreground e Background
Processos CPU-Bound e I/O Bound Processos CPU-Bound
• Passa a maior parte do tempo no estado de execução, ou seja, utilizando a CPU
- Esse tipo de processamento realiza pouca E/S (aplicações científicas)
Processos I/O-Bound• Passa a maior parte do seu tempo no estado
de bloqueado (ou espera), pois realiza muita E/S
- Esse tipo de processamento usa pouco a CPU (aplicações comerciais)
Processos CPU-Bound e I/O Bound
Múltiplos Processos
Concorrência
São formas diferentes de implementar concorrência
Busca-se subdividir o código em partes que permitam o trabalho cooperativo entre estas partes
São elas:
• Processos Independentes• Subprocessos• Threads
Processos Independentes
O uso de processo independentes é a forma mais simples de implementar a concorrência em sistemas multiprogramáveis
Neste caso não existe vínculo do processo criado com o seu criador
A criação de um processo independente exige a alocação de um PCB.
A criação e eliminação de processos independentes e subprocessos demanda recursos do sistema (CPU, RAM,...).
Além disso, como cada processo tem seu espaço de endereçamento, a comunicação e sincronização entre processo é pouco eficiente
Subprocessos(Cooperativos)
São processos criados dentro de uma estrutura hierárquica
• Processo criador = processo pai• Novo processo = subprocesso ou processo filho
Um subprocesso pode criar outros subprocessos
Existe dependência entre o processo pai e filho
• Se o pai morre, o filho morre automaticamente
Também possuem seu próprio PCB
Subprocessos podem compartilhar quotas com seu pai Vantagens: Compartilha informações, aumenta a velocidade
computacional (speed-up), modularidade, conveniência.
Subprocessos
Referências
Sistemas Operacionais Modernos – 3ª Edição. A. Tanenbaum, 2008.
Modern Operating Systems 3 e. Prentice-Hall, 2008.
Top Related