BC1518 - Sistemas Operacionais Processos Aula 03 2° Quadrimestre de 2010 Prof. Marcelo Z. do Nascimento Email: [email protected] Roteiro • Conceito de processo • Bloco de controle de processo • Ciclo de vida • Escalonamento • Criação de processo • Término de processo • Cooperação entre processos • Leituras Sugeridas Introdução Um SO executa uma variedade de programas: Sistema Batch – jobs; Sistema Time-shared – programas de usuário ou tarefa. Permite que múltiplos programas sejam carregados na memória e executados de forma concorrente (SO multiprogramado). Torna Torna mais mais eficiente eficiente oo aproveitamento aproveitamento dos dos recursos recursos do do computador computador Introdução Atenção!!! Exige => SO • maior controle; • mais compartimentalização de vários programas. Processo (unidade de trabalho) Conceito - Processo • Abstração que representa um programa em execução; • É uma entidade ativa que utiliza um conjunto de recursos, como processador e registradores especiais, para executar uma função. Exemplos: cópia de arquivo ou execução de uma rotina de um programa. Processo na memória int global = 0; int main (int arg) { float local; char *ptr; ptr = malloc(100); local = 0; local += 10*5; ….. …. foo(); …. /* return addr */ …. return 0; } Variáveis locais Endereço de retorno Alocação dinâmica Variáveis globais Código do programa Conceito - Diferença • Programa: Entidade estática e permanente •Seqüência de instruções; •Passivo sobre o ponto de vista do SO. • Processo: Entidade dinâmica e transitório •Altera o estado a medida que avança em sua execução; •Composto por programa (código), dados e contexto (valores). Conceito - Analogia • Ex. Cientista fazendo uma torta para o filho. + Dados de entrada(ingredientes) Receita algoritmo CPU Processo: Atividade que possui entrada, saída e estado (Ler receita, buscar ingredientes e assar). Ciclo de vida do processo Estado do processo: Novo: o processo esta sendo criado (ex. inicialização do sistema, de um programa ou leitura de um arquivo); Execução: o processo esta utilizando um processador; Pronto: o processo está apto a utilizar o processador quando este estiver disponível; Bloqueado: o processo está esperando ou utilizando um recurso qualquer de E/S; Encerrado: processo termina sua execução (ex. normal, erro voluntário ou erro fatal involuntário). Ciclo de vida do processo Novo Encerrado Aceito tempo Saída Em execução Pronto seleção Conclusão de E/S ou evento Espera por E/S ou evento Bloqueado Ciclo de vida do processo Um processo entra no estado de bloqueado quando está esperando que um evento ocorra. Cite diversos eventos que podem fazer um processo entrar em estado bloqueado? • • Um processo pode entrar em estado bloqueado se emitir uma requisição de dados localizados em um dispositivo de latência alta. • Um processo também pode ficar bloqueado até que ocorra um evento, como a utilização de teclado ou movimentação do mouse pelo usuário. Bloco de controle de processo BCP – (process control block) é a representação de um processo num SO (repositório de informações). Contém informações necessárias para a execução do processo: Iniciada, Interrompida e Retomada. Normalmente, há uma grande estrutura no kernel: Exemplo: Linux => struct task_struct; Usado para gerenciar processos => comutação da CPU. Bloco de controle de processo Ponteiro Estado do processo Número do processo Contador do programa Registradores Limites de memória Lista de arquivos aberto . . •estado corrente do processo; •identificação do processo (PID); •ponteiro para o processo-pai (parent process); •prioridade do processo; •lista de ponteiros para as regiões alocadas de memória; •conteúdo dos registradores do processador. Essas informações são importantes para a troca de processos que ocorre na CPU Bloco de controle de processo Estado do processo: novo, pronto, em execução, parado, etc Contador de programa: endereço da próxima instrução. Registradores da CPU: variam em número e em tipo, dependendo da arquitetura de computadores. Incluem acumuladores, registradores e pilha. Quando ocorre uma interrupção, essa informação deve ser salva juntamente com o contador do programa. Bloco de controle de processo Informações de escalonamento: prioridade do processo. Informações de gerenciamento de memória: inclui os valores de registradores base e limite, tabela de páginas, etc. Informação de contabilização: inclui o montante de tempo de CPU e de tempo real utilizado, número de jobs, etc. Informação de estado de I/O: lista de dispositivos de E/S alocados a esse processo, arquivos abertos, etc. Bloco de controle de processo Comutação de Contexto Bloco de controle de processo Comutação de Contexto • O tempo de comutação de contexto pode ser puro sobrecarga; • Nenhum trabalho será realizado. • O tempo de comutação depende bastante do suporte de hardware; • Alguns sistemas com Sun UltraSPARC fornecem multiplos conjuntos de registradores -> rápida comutação. Tipos de tarefas • O processos ou tarefas podem ser descritos da seguinte forma: – Processo I/O-bound – gasta mais tempos fazendo E/S que cálculo, muito pouco tempo de ocupação de CPU; – Processo CPU-bound – gasta mais tempo fazendo cálculo, longo tempo de CPU. Schedulers • Scheduler de longo prazo (job scheduler) – seleciona qual processo deverá ser carregado da memória para execução. • Scheduler de curto prazo (or CPU scheduler) – seleciona um dos processos prontos para execução e aloca a CPU para ele. • A distinção entre estes dois é a frequência de sua execução. • Em alguns SOs, o Scheduler de longo prazo pode não existir ou ser mínimo (ex. UNIX). Filas de Scheduling • Fila de Jobs – consiste em todos os processos que estão no sistema. • Fila Pronta – conjunto de processos residente na memória principal que estão prontos e em espera para entrar em execução. Implementado na forma de lista encadeada. • Fila de Dispositivos – conjunto de processos esperando por um dispositivo de E/S • Processos migram entre as várias filas Fila Pronta e Várias Filas de Dispositivos de I/O Tempo de vida de um processo Criação • Os SOs precisam assegurar de algum modo a existência de todos os processos necessários. • Então, ocorrem eventos: • Início do sistema; • Execução de uma chamada ao sistema de criação de processo por um processo em execução; • Uma requisição do usuário para criar um novo processo; • Inicio de um job em lote. Criação • Quando o SO é carrega, em geral, vários processos são criados. • Tratado por: • primeiro plano (usuários - foreground) • segundo plano (função específica - background) • Exemplo: • Email: aceitar mensagens eletrônicas, fica inativo na maior parte do tempo, mas é ativado quando uma mensagem chega. Criação • Processos em segundo plano com a finalidade de tratar alguma atividade são chamados de daemons; • Exemplo: •Windows -> digitando CTRL-ALT-DEL mostra o que está em execução. • Um processo pode emitir chamadas ao sistema para criar um ou mais processo para ajudá-lo no trabalho. Criação • Processo Pai cria processo filho, o qual, pode criar outros processo formando uma árvore de processos • Execução: – Pai e filho executam concorrentemente; – Pai espera até que o filho termine; • Recursos compartilhados podem ser tratados: – Pai e filho compartilham todos os recursos; – Filho compartilha um sub conjunto dos recursos do pai; – Pai e filho não compartilham recursos Criação do Processo: Unix • Processo cria outro processo (filho) usando a chamada de sistema fork – Filho é uma cópia do pai; – Basicamente, o filho carrega outro programa dentro de seu espaço de endereço usando a chamada exec; – Pai espera seu filho terminar. Programa em C: Fork() int main() { pid_t pid; pid = fork(); /* fork another process */ if (pid < 0) { /* error occurred */ fprintf (stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp ("/bin/ls", "ls", NULL); } else { /* parent process */ /* parent will wait for child to complete */ wait (NULL); printf ("Child Complete"); exit(0); } } Criação • WINDOWS -> CreateProcess – biblioteca Win32 possui funções para gerenciamento do processo. • Pai cria um novo processo filho; • Requer a carga de um programa especificado no espaço de endereço do processo filho na criação do processo; • Necessidade de pelo menos 10 parâmetros para sua ativação. Término • Processo terminará em razão de: • Saída normal (voluntária) • Saída por erro (voluntária); •Ex.compilação gcc teste.c (arquivo não existe); • Erro fatal (involuntário); •Ex. Tentativa de acesso a endereço não autorizado; • Cancelamento por um outro processo (involuntário). •Ex. Comando kill do Unix. Cooperação entre processos • Um processo é cooperativo se puder afetar ou ser afetado pelos outros processos em execução no sistema; • O que motiva essa cooperação? – Compartilhamento de informações – Agilidade de computação – Modularidade – Conveniência • Mecanismo Comunicação interprocesso (IPC) – Memória compartilhada – Passagem de mensagem Modelos de Comunicação Passagem de mensagem Mensagem compartilhada IPC: Memória compartilhada • Comunicação entre processos por meio de espaço de memória compartilhada; – Um processo cria um espaço de memória; • Outros processos acessam a memória compartilhada de seu próprio endereço: – A memória compartilhada é tratada como área compartilhada; – Sincronização é necessário para garantir o acesso concorrente a essa área. • Vantagens: – Rápido (velocidade de acesso a memória) – chamadas realizadas apenas para estabelecer memória compartilhada. • Desvantagem – Precisa gerenciar conflitos IPC: Passagem de Mensagem • Se os processos A e B querem se comunicar, precisam: – Estabelece um canal de comunicação entre eles – Troca de mensagems por meio de: • send – tamanho de mensagem fixa ou variável • receive - mensagemmessage) • Vantagem: – Não há conflitos => ótimo para troca de mensagens especialmente em sistema distribuído. • Desvantagens – Sobrecarga (cabeçalho mensagem) – Kernel: ocorre vários system calls para troca de mensagem IPC: Passagem de Mensagem • O canal de comunicação pode ser – Direto: precisa nomear explicitamente o destinatário ou emissor: • send (P, messagem) – envia uma mensagem para o processo P; • receive (Q, message) – recebe uma mensagem do processo Q. – Indireto: comunicação via mailboxes (ou portas) • Messagem envida e recebida de mailboxes • Cada mailbox tem um único ID – Send (A, messagem) – envia mensagem para mailbox A – Receive (A, messagem) – recebe messagem do mailbox A IPC: Passagem de Mensagem • Sincronização: passagem de mensagem – Bloqueio (síncrono) • send ( ) o processo que envia é bloqueado até que a mensagem seja recebida • receive ( ) o receptor é bloqueado até a mensagem ser recebida – Não bloqueado (assíncrono) • send ( ) o processo envia a mensagem e continua executando • receive ( ) o receptor recebe uma mensagem válida Sistema cliente/servidor Sockets • O socket é definido com um ponto terminal para a comunicação • Um par de processos que se comunicam através de uma rede emprega um par de sockets • Um socket é identificado por um endereço IP concatenado com um número de porta – Exemplo: socket 161.25.19.8:1625 refere a porta 1625 no host 161.25.19.8 Sistema cliente/servidor Sockets Sistema cliente/servidor Sockets Sistema cliente/servidor Sockets Aula 03 - Sumário • Processo é um programa em execução – SO mantém informações do processo no BCP – Diagramas de estado do processos – Criando e finalizando um processo (fork) • Escalonamento de processosProcess scheduling – Longo, curto em termos de escalonamento – Fila de escalonamento • Comunicação interprocessos - IPC – Memória compartilhada – Passagem de mensagem • Sistema Cliente-Servidor Leituras Sugeridas • Silberschatz, A., Galvin, P. B. Gagne, G. Sistemas Operacionais com Java. 7º , edição. Editora, Campus, 2008 . • Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg. Fundamentos de sistemas operacionais. 6 ed. Rio de Janeiro: LTC, 2009. Nota de Aula Acesse o link abaixo: http://hostel.ufabc.edu.br/~marcelo.nascimento/ Obrigado!!!