Execução
Transcrição
Execução
PROCESSOS Prof. Maicon A. Sartin [email protected] Cenários em Sistemas Multitarefas Um usuário pode executar diversas atividades simultâneas Música Editoração de texto Navegar na Internet Servidor pode ter vários usuários conectados Acesso remoto Servidor de e-mails Introdução Processo Entidade Ativa, ao contrário do programa, que é uma entidade passiva Um ambiente onde se executa um programa O SO gerencia os processos por SC que podem realizar diversas operações: Criar, eliminar, sincronizar, suspender,… Um algoritmo/sistema operacional é preemptivo quando: Um processo entra e pode ser retirado da CPU, antes do término da sua execução Introdução Criar um Processo #include <stdio.h> int main() { int i, pid; printf("Processo Principal (main)!! ID = : %d \n",getpid() ); pid = fork() ; if (pid > 0) { printf("Eu sou o pai !! ID = : %d \n",getppid()) ; } else if (pid == 0) { printf("Eu sou o filho!! ID = : %d \n",getpid() ); } } Introdução Cada processo tem sua própria CPU virtual Trazendo a visão de exclusividade ao usuário A CPU física é compartilhada por vários processos Multiprogramação Tempo Compartilhado O Escalonador seleciona qual processo deve usar a CPU a cada momento e por quanto tempo Estrutura dos Processos O processo constitui-se de três elementos para manter as informações básicas à execução de um programa Contexto de hardware Contexto de software Espaço de endereçamento C o n te x t o d e S o f tw a r e C o n te x to d e H a rd w a re Pro g ra m a E sp a ço d e E n d e r e ç a m e n to Estrutura dos Processos S is te m a O p e r a c io n a l Contexto de hardware Conteúdo de registradores P ro ce sso A P ro ce sso B e x e c u ta n d o Fundamental na implementação de sistemas time-sharing O processo em execução na CPU pode ser interrompido e restaurado Posteriormente S a lv a r e g is tr a d o r e s d o Pro ce sso A C a r r e g a r e g is tr a d o r e s d o P ro ce sso B e x e c u ta n d o S a lv a r e g is tr a d o r e s d o P ro ce sso B Quando isso ocorre há a necessidade de mudança de contexto e x e c u ta n d o C a r r e g a r e g is tr a d o r e s d o Pro ce sso A Estrutura dos Processos Contexto de Software Define-se caracterísitcas na criação do processo: Nº máx. de arquivos abertos simultaneamente Possui três grupos de informações: identificação, Quotas e privilégios Identificação Processo com identificação única - PID (Process Identification) Processo com identificação do usuário (UID) Estrutura dos Processos Contexto de Software Quotas Limites de cada recurso no qual o processo pode alocar – Se ultrapassado o limite o processo fica lento ou não executa Ex.: Número máximo de arquivos abertos simultaneamente Número máximo de operações de E/S pendentes Número máximo de processos e subprocessos a serem criados Tamanho máximo do buffer para operações de E/S Tamanho máximo da memória a ser alocada Privilégios Define o que o processo pode fazer em relação ao sistema e a outros processos Estrutura dos Processos Espaço de endereçamento É a área da memória do processo onde o programa será executado e deve ser protegido dos demais processos nom e P ID o w n e r (U I D ) r e g i s tr a d o r e s g e r a is p r io r id a d e d e e xe cu çã o d a ta / h o r a d e cr ia ç ã o r e g i s tr a d o r P C C o n te x t o d e S o f tw a r e C o n te x to d e H a rd w a re r e g i s tr a d o r S P te m p o d e p ro ce ssa d o r q u o ta s Pro g ra m a p r iv ilé g io s E sp a ço d e E n d e r e ç a m e n to e n d e r e ço s d e m e m ó ria p r in c ip a l a lo ca d o s r e g i s tr a d o r d e s ta tu s Estados do Processo Em sistemas multiprogramáveis um processo não é executado todo tempo pela CPU Desde a criação do processo até o seu término ele passa por uma série de estados Existem três tipos de estados: Execução, Pronto e Espera Estados do Processo Execução (running) O processo está sendo executado pela CPU Com um processador, quantos processos em execução? E quando há vários processadores? O SO determina a utilização do processador pelas políticas de escalonamento Pronto (ready) Aguarda uma oportunidade para executar, dependendo do SO para a alocação da CPU Estados do Processo Espera (wait) Aguarda um evento externo ou algum recurso para poder prosseguir seu processamento Ex.: Término de Operação de E/S Bloqueado(Blocked) – Em alguns sistemas Espera x Bloqueado Um processo em estado de bloqueado espera ser autorizado para utilizar o recurso Um processo em estado de espera Agurada pela conclusão de uma operação em um recurso que já foi garantido Estados do Processo Um processo muda de estado diversas vezes, durante seu processamento Em função de eventos originados por ele próprio1 ou pelo SO2 1. Eventos voluntários 2. Eventos involuntários Estados do Processo Existem quatro mudanças de estado: Pronto Execução Na criação do processo ele é colocado em uma lista de processos no estado pronto, onde aguarda uma oportunidade para ser executado Execução Espera Por eventos gerados pelo próprio processo. Ex.: Operação de E/S Espera Pronto Quando a operação solicitada é atendida ou o recurso esperado é concedido Execução Pronto Por eventos gerados pelo sistema Ex. Fim da fatia de tempo que o processo possui para sua execução Mudanças de Estados do Processo E s ta d o d e E x e c u ç ã o d b a c E s ta d o d e E s p e r a E s ta d o d e P r o n to Mudanças de Estados do Processo Controle do Processo O SO materializa o processo através de uma estrutura chamada bloco de controle do processo (PCB) Através do PCB o SO mantém todas as informações sobre o processo p o n te ir o s E s ta d o d o p r o c e s s o N o m e d o p ro ce sso P r io r id a d e d o p r o c e s s o R e g i s tr a d o r e s L i m i te s d e m e m ó r i a L i s ta d e a r q u i v o s a b e r to s .. .. .. .. Controle do Processo Pode haver vários processos em estados de pronto ou de espera O SO gerencia os processos pelas listas encadeadas, onde cada PCB tem um ponteiro para seu sucessor L is ta d e p ro ce sso s e m e s ta d o d e p r o n to . .. .. .. . . .. .. .. . PCB# 5 PCB# 1 . .. .. .. . . .. .. .. . L is ta d e p ro ce sso s e m e s ta d o d e e sp e ra PCB# 9 PCB# 2 . .. .. .. . PCB# 4 Hierarquia de Processos Um processo pode criar outros processos de maneira hierárquica Um processo pai cria seu(s) processo(s) filho(s), um processo filho pode criar seus próprios processos O Unix chama esta hierarquia de “grupo de processos” O Windows não tem esse conceito, ficam no mesmo nível P ro ce sso A Pro ce sso C Pro ce sso B P ro ce sso D P ro ce sso E Hierarquia de Processos #include <stdio.h> #include <unistd.h> int main(){ int pid; pid = fork(); /* Cria outro processo */ if (pid < 0) {/* houve erro -- não foi possível criar o processo*/ fprintf(stderr, "falha na execução do Fork"); exit(-1); } else if(pid == 0) {/* processo filho foi criado*/ execlp(/bin/ls","ls",NULL); } else {/* processo pai */ wait(NULL); /* pai esperará até que o filho termine */ printf("Filho já terminou!"); exit(0); } } Hierarquia de Processos Na criação de processos existem duas possibilidades: Em termos de execução: 1. O pai continua a ser executado simultaneamente com seus filhos; 2. O pai espera até que algum ou todos os seus filhos tenham terminado. Em termos do espaço de endereços: 1. O processo filho é uma duplicata do pai (mesmo programa e dados); 2. o processo filho tem um novo programa carregado nele. Tipos de Processos Os processos podem ser classificados quanto ao tipo de processamento que realizam em: CPU-Bound Passam a maior parte do tempo no estado de execução Realiza poucas operações de E/S e muitos cálculos Ex.: Aplicações matemáticas e científicas I/O-Bound Passam a maior parte do tempo no estado de espera Realiza um elevado número de E/S Ex.: Aplicações comercias e processos interativos Tipos de Processos Processos CPU-bound x I/O-bound E/S E/S U CP U CP (a ) C P U - b o u n d te m p o (b ) I / O - b o u n d te m p o Thread (Processo leve) Unidade básica de utilização da CPU ID de Thread Um contador de programa Um conjunto de registradores Uma pilha Thread = subconjuntp das informações pertinentes a um processo É possível ter várias threads independentes dentro de um mesmo processo Thread (Processo leve) Processo agrupamento de recursos + fluxo de execução Thread fluxo de execução Thread = subconjunto das informações pertinentes a um processo É possível ter várias threads independentes dentro de um mesmo processo Threads Processo Multithread C o n te x to d e h a rd w a re C o n te x to d e h a rd w a re Th re a d 1 T h re a d 2 T h re a d 3 C o n te x t o d e s o f tw a r e C o n te x to d e h a rd w a re E sp a ço d e e n d e r e ç a m e n to Monothread e Multithread Threads (a) Três processos, cada um com a sua thread (b) Um processo com três threads Threads Uso de Threads Um processador de texto com três Threads Threads Uso de Threads Servidor Web multithread PThreads #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *message_thread1(); int main() { pthread_t tid; //identificador do fluxo pthread_attr_t attr; //conjunto de atributos p/ o fluxo pthread_attr_init(&attr);//Define os atributos pthread_create(&tid, &attr, message_thread1, NULL); //Cria Thread pthread_join(tid, NULL); //espera que a thread termine } void *message_thread1() // o fluxo começará a controlar nesta função { char *message1 = "Thread 1"; printf("%s \n", message1); pthread_exit(0); } Threads em Java class Trabalhadora extends Thread { public void run(){ System.out.println("Eu sou uma Thread Trabalhadora"); } } public class primeira { public static void main (String args[]){ Thread runner = new Trabalhadora(); runner.start(); System.out.println("Eu sou a thread principal"); } } Ciclo de vida da Thread Referências MACHADO, F. B. "Arquitetura de sistemas operacionais". LTC, 1997. LAUREANO, Marcos. ”Sistemas Operacionais”. Universidade Federal Paraná, 2009. Curitiba: GUALEVE, J. A. F. “Sistemas Operacionais”. Universidade Católica de Brasília, 2006. Brasília:
Documentos relacionados
Threads
Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula
Leia maisSlides Grupo 3 - Blog UNIFIMES
Os threads são convertidos em filamentos, mas estes podem também ser criados de modo independente dos threads. Esses filamentos não serão executados até que um filamento que já esteja sendo executa...
Leia maisLabSO Gerência de Processos Processos
Dados para gerenciamento da CPU (escalonamento) Dados para gerenciamento de memória Número do processos
Leia mais