SO-02 Processos

7,134 views

Published on

Conceitos sobre Processos (Sistemas Operacionais)

Published in: Technology, Business
1 Comment
3 Likes
Statistics
Notes
  • show de bola, estou num curso técnico e vai ser de grande ajuda. abraço e parabens.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
7,134
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
403
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

SO-02 Processos

  1. 1. Processos Introdução
  2. 2.   Conceito de Processo   Escalonamento de Processo   Operações em Processos   Threads Eduardo Nicola F. Zagari 2 Processos - Introdução
  3. 3.   Um sistema operacional executa uma variedade de programas:   Sistemas Batch – jobs   Sistemas time-sharing – programas processo de usuários ou tasks (tarefas)   Processo   programa em execução somente um programa era executado Primeiros sistemas computacionais em cada momento (dominando todos os recursos) vários programas executando Sistemas atuais concorrentemente (multiprogramação), exigindo maior controle e compartimentalização dos vários programas Eduardo Nicola F. Zagari 3 Processos - Introdução
  4. 4.   Processo é mais do que o código do programa:   contador de programa (PC),   registradores do processador,   pilha (parâmetros de subrotinas, endereço de retorno, variáveis temporárias),   variáveis globais Programa (passivo) x Processo (ativo)   Vários processos podem estar associados a um único programa Eduardo Nicola F. Zagari 4 Processos - Introdução
  5. 5.   Em um SO com multiprogramação, um processo, du- rante sua existência, passa por uma série de estados   Basicamente, os estados de um processo são:   novo: o processo é criado   em execução/rodando: se está associado a um processador que está executando suas instruções   pronto para execução: se o processo aguarda sua vez para executar (processador indisponível)   bloqueado/espera: se o processo aguarda que ocorra algum evento para continuar a executar (término de E/S, recepção de sinal)   término: o processo terminou sua execução Eduardo Nicola F. Zagari 5 Processos - Introdução
  6. 6.   Desde o instante que um processo é iniciado, o seu estado passa pelas seguintes transições: 1. uma CPU fica disponível para o processo, que passa do estado de pronto para o de execução 2. o processo necessita de algo que não está disponível para continuar a ser executado, assim, passa de em execução para bloqueado, aguardando a satisfação de sua necessidade 3. a necessidade do processo é satisfeita, podendo então passar de bloqueado/espera para pronto para execução 4. o uso da CPU exclusivamente por um só processo deve ser evitado, para isso pode existir um tempo máximo em exe-cução contínua, após o qual o processo passa de em execução para pronto, permitindo que outro processo use a CPU Eduardo Nicola F. Zagari 6 Processos - Introdução
  7. 7. novo escalonado início pronto execução interrupção E/S ou evento espera por E/ S ou evento fim bloqueado término Eduardo Nicola F. Zagari 7 Processos - Introdução
  8. 8.   BCP representa o processo no SO, mantendo a informação associada com cada um:   estado do processo: pronto, bloqueado, em execução, ...   PC: endereço da próxima instrução   registradores da CPU: variam em no e tipo dependendo da arquitetura   informação de escalonamento da CPU: prioridade, ponteiro para fila de escalonamento, etc   informação de gerência de memória: registradores base e limite de memória, tab. de páginas e/ou tab. de segmentos   informação sobre recursos: quantidade de CPU usada, limite de tempo de uso, no processo, no do job   informação de estado de E/S: lista de dispositivos alocados, lista de arquivos abertos, ... Eduardo Nicola F. Zagari 8 Processos - Introdução
  9. 9. PID Estado do processo PC Registradores Limites de memória Lista de arquivos abertos . . . Eduardo Nicola F. Zagari 9 Processos - Introdução
  10. 10. P0 SO P1 executando interrupção ou chamada de sistema salva contexto em BCP0 . ocioso . . carrega contexto de BCP1 ocioso interrupção ou chamada de sistema executando salva contexto em BCP1 . ocioso . . carrega contexto de BCP0 executando Eduardo Nicola F. Zagari 10 Processos - Introdução
  11. 11.   Objetivo da multiprogramação: maximizar utilização da CPU   Filas de escalonamento:   fila de pronto: lista ligada com todos os processos no estado de pronto (organizada segundo uma política de seleção)   filas de dispositivos: listas dos processos que fizeram requisição de E/S e aguardam a liberação do dispositivo   Em seu ciclo de vida, o processo migra de uma fila para outra (ação do escalonador) Eduardo Nicola F. Zagari 11 Processos - Introdução
  12. 12. BCP7 BCP2 início PID PID Fila de pronto registradores registradores fim . . . . . . Fita início magnética fim BCP3 BCP14 BCP6 início PID PID PID Unidade de disco 0 registradores registradores registradores fim . . . . . . . . . BCP5 PID Unidade início registradores terminal 0 fim . . . Eduardo Nicola F. Zagari 12 Processos - Introdução
  13. 13. fila de pronto CPU E/S fila de E/S requisição de E/S time slice expirado filho executa termina filho fork ocorre aguarda uma interrupção interrupção Eduardo Nicola F. Zagari 13 Processos - Introdução
  14. 14.   Escalonador age sobre a fila de processos prontos de maneira a escolher qual é o próximo a ser executado   Escalonador de CPU (ou escalonador de curto prazo): seleciona qual processo deve ser o próximo a ser executado e aloca a CPU para ele.   Executado freqüentemente (milisegundos)   Deve ser rápido   Escalonador de job (ou escalonador de médio prazo): seleciona qual processo deve ser trazido para a fila de pronto.   Executado pouco freqüentemente (segundos, minutos)   Pode ser lento   Controla o grau de multiprogramação Eduardo Nicola F. Zagari 14 Processos - Introdução
  15. 15.   Processos podem ser descrito de acordo com o tipo de processamento que executam:   CPU-bound (ligado à CPU): passa a maior parte do tempo no estado fazendo cálculos (em execução) e realiza poucas operações de E/S (aplicações matemáticas e científicas)  Poucas e longas ʻrajadasʼ de uso de CPU   I/O-bound (ligado à E/S): passa a maior parte do tempo no estado bloqueado, pois realiza muitas operações de E/S (aplicações comerciais e interativas)  Muitas e curtas ʻrajadasʼ de uso de CPU I/O I/O CPU CPU tempo tempo Eduardo Nicola F. Zagari 15 Processos - Introdução
  16. 16.   Quando a posse da CPU é atribuída a outro processo, o sistema deve salvar o estado do processo antigo e carregar o estado do processo novo   O tempo de troca de contexto é uma sobrecarga   O sistema não realiza trabalho útil enquanto realiza o chaveamento   O tempo depende do hardware Eduardo Nicola F. Zagari 16 Processos - Introdução
  17. 17.   Um processo (dito Processo Pai) pode criar novos processos (ditos Processos Filhos) via chamada de sistema   Um processo filho, por sua vez, pode criar outros processos, formando uma árvore de processos   usuário pode solicitar a criação a um shell, que entende o pedido do usuário através de uma linguagem dita de controle (textual, gráfica, por eventos)   Compartilhamento de Recursos (memória, arquivos, dispositivos de E/S)   Pai e filho compartilham todos os recursos   Filho compartilha um subconjunto dos recursos do pai   Pai e filho não compartilham recursos   Execução   Pai e filho executam concorrentemente   Pai espera até o término do filho Eduardo Nicola F. Zagari 17 Processos - Introdução
  18. 18.   Espaço de endereçamento do novo processo   Processo filho é uma cópia do processo pai   Processo filho tem um programa carregado nele   Exemplo de chamadas de sistema do UNIX   fork(): cria um novo processo   exec(): usado depois de um fork() para substituir o espaço de memória do processo por um novo programa main() { int pid; pid = fork(); if (pid < 0) { /* fork failure */ } else if (pid > 0) { /* parent code */ } else { /* child code */ } Eduardo Nicola F. Zagari 18 Processos - Introdução
  19. 19. #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int pid; /* fork another process */ pid = fork(); 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 the child to complete */ wait(NULL); printf("Child Complete"); exit(0); } Eduardo Nicola F. Zagari } 19 Processos - Introdução
  20. 20. Eduardo Nicola F. Zagari 20 Processos - Introdução
  21. 21.   Processo executa sua última instrução e pede ao SO para terminá-lo (exit)   Dados de saída do filho para o pai (via wait)   exit(): todos os recursos do processo são liberados pelo SO   Um processo pai pode terminar a execução de um processo filho via chamada de sistema   Filho excedeu os recursos alocados   A tarefa atribuída ao filho não é mais necessária   Se o pai está terminando  Alguns sistemas operacionais não permitem que o filho continue se o pai terminou –  Todos os filhos terminam – terminação em cascata Eduardo Nicola F. Zagari 21 Processos - Introdução
  22. 22.   Uma thread (ou lightweight process, isto é, um processo leve) é a unidade básica de utilização da CPU. Ela consiste de:   Contador de programa (PC)   Conjunto de registradores   Espaço de pilha   Uma thread compartilha com suas threads parceiras suas:   Seção de código   Seção de dados   Recursos do sistema operacional Coletivamente conhecidas como uma tarefa (processo).   Um processo tradicional (ou heavyweight process) é igual a uma tarefa com uma única thread   As threads operam como processos: estado/criam outras threads, etc Eduardo Nicola F. Zagari 22 Processos - Introdução
  23. 23.   Em um processo multithread, enquanto uma thread servidora está bloqueada e esperando, uma segunda thread do mesmo processo pode executar.   A cooperação de múltiplas threads de um mesmo processo confere a ele melhor desempenho (redução do tempo de troca de contexto).   Aplicações que requerem o compartilhamento de um buffer comum (i.e., produtor-consumidor) se beneficiam da utilização de threads.   Threads provêem um mecanismo que permite a processos seqüenciais fazerem chamadas de sistema bloqueantes enquanto também alcançam paralelismo. Eduardo Nicola F. Zagari 23 Processos - Introdução
  24. 24.   Threads podem ser:   Suportadas pelo Kernel (Mach, OS/2, WinXP/200, Linux 2.6).   Nível de usuário, suportadas acima do kernel, via uma biblioteca de funções (Project Andrew da CMU, POSIX (Linux 2.4), Java, Win32).   Abordagem híbrida, que implementa ambas (Solaris 2). Eduardo Nicola F. Zagari 24 Processos - Introdução
  25. 25. Eduardo Nicola F. Zagari 25 Processos - Introdução

×