PROCESSOS. Prof. Maicon A. Sartin mapsartin@gmail.com



Documentos relacionados
Sistemas Operacionais

Sistemas Operacionais Conceitos Básicos

Arquitetura de Sistemas Operacionais

SISTEMAS OPERACIONAIS

SO: Gerenciamento de Processos

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

7 Processos. 7.1 Introdução

Fundamentos de Sistemas Operacionais

Threads Aula 04 2 Quadrimestre

Processos. Adão de Melo Neto

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

(Aula 15) Threads e Threads em Java

Programação Concorrente Processos e Threads

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Sistemas Operacionais Processos e Threads

Sistemas Operacionais

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo.

Sistemas Operacionais

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Arquitetura e Organização de Computadores

Processos. Paulo Sérgio Almeida 2005/2006. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho

Capítulo 4 Gerência do Processador. O que sabemos é uma gota, o que ignoramos é um oceano. Isaac Newton

8 Threads. 8.1 Introdução

Sistemas Operacionais

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

É a associação de mais de um fluxo de execução em um único processo.

Máquina de estados UNIX O

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

Sistemas Operacionais

Sistemas Operacionais I

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

Arquitetura dos Sistemas Operacionais

Implementando uma Classe e Criando Objetos a partir dela

Sistemas Operacionais

Programação com Posix Threads

Introdução à Computação: Sistemas de Computação

GERENCIAMENTO DO PROCESSADOR. Prof. Maicon A. Sartin

Threads e Concorrência em Java (Material de Apoio)

Infra-Estrutura de Software. Introdução. (cont.)

Processos e Threads (partes I e II)

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS. 2º TRIMESTRE Patrícia Lucas

Gerência do Processador

Java Threads. Introdução

TI Básico. Sistemas Operacionais. Professor: Ricardo Quintão Site:

Algoritmos e Programação II. Sobrecarga

Slide. ! Multiprocessamento! Modelo de processo. Dep. Ciência da Computação. Slide. ! Alternância de processos. ! Relação Programa x Processo

Todos os microprocessadores hoje disponíveis em micros compatíveis com PC utilizam o funcionamento do como ponto de partida.

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

Universidade Federal da Paraíba

Introdução à Sistemas Operacionais. Glauber Magalhães Pires

Sistemas Operacionais. Roteiro. Tipos de Tarefas (temporal) Marcos Laureano

Gerenciamento de Processos

Nível do Sistema Operacional

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Manual do Usuário. Protocolo

Capítulo 4 Gerenciamento de Memória

Sumário. Deadlock. Definição. Recursos. M. Sc. Luiz Alberto

Processos. Estruturas de Controle

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

Capítulo 4 Gerência de Processador

Gerência de Processador

Arquitetura de Sistemas Operacionais

Desenvolvimento OO com Java Orientação a objetos básica

Gerenciamento de memória

Sistemas Operacionais. Professor Leslier Soares Corrêa

Gerência de processos Requisitos fundamentais

Conceitos Básicos sobre Sistemas Operacionais

(Aula 17) Threads em Java

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Escalonamento de CPU 2 Quadrimestre

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

Arquitetura de Computadores II

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura Exemplo

Escalonamento no Linux e no Windows NT/2000/XP

APÓS A INSTALAÇÃO, MÃOS À OBRA. E AO TECLADO. MANUAL DE INSTALAÇÃO

2 Modelos de Implementação

Estrutura Condicional em Java

Transcrição:

PROCESSOS Prof. Maicon A. Sartin mapsartin@gmail.com

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 t e x t o d e S o f t w a r e C o n t e x t o d e H a r d w a r e P r o g r a m a E s p a ç o d e E n d e r e ç a m e n t o

Estrutura dos Processos Contexto de hardware Conteúdo de registradores P r o c e s s o A S i s t e m a O p e r a c i o n a l P r o c e s s o B e x e c u t a n d o Fundamental na implementação de sistemas time-sharing O processo em execução na CPU pode ser interrompido e restaurado Posteriormente Quando isso ocorre há a necessidade de mudança de contexto C C S a l v a r e g i s t r a d o r e s d o P r o c e s s o A a r r e g a r e g i s t r a d o r e s d o P r o c e s s o B S a l v a r e g i s t r a d o r e s d o P r o c e s s o B a r r e g a r e g i s t r a d o r e s d o P r o c e s s o A e x e c u t a n d o e x e c u t a n d o

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 Ex.: Se ultrapassado o limite o processo fica lento ou não executa 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 o w n e r ( U I D ) P I D n o m e r e g i s t r a d o r e s g e r a i s p r i o r i d a d e d e e x e c u ç ã o r e g i s t r a d o r P C d a t a / h o r a d e c r i a ç ã o C o n t e x t o d e S o f t w a r e C o n t e x t o d e H a r d w a r e t e m p o d e p r o c e s s a d o r r e g i s t r a d o r S P q u o t a s p r i v i l é g i o s P r o g r a m E s p a ç o d e E n d e r e ç a m e n t o a r e g i s t r a d o r d e s t a t u s e n d e r e ç o s d e m e m ó r i a p r i n c i p a l a l o c a d o 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óprio 1 ou pelo SO 2 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 t a d o d e E x e c u ç ã o b d a c E s t a d o d e E s p e r a E s t a d o d e P r o n t o

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 t e i r o s E s t a d o d o p r o c e s s o N o m e d o p r o c e s s o P r i o r i d a d e d o p r o c e s s o R e g i s t r a d o r e s L i m i t e s d e m e m ó r i a L i s t a d e a r q u i v o s a b e r t o 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 i s t a d e p r o c e s s o s e m e s t a d o d e p r o n t o P C B # 5.. P C B # 1 L i s t a d e p r o c e s s o s e m e s t a d o d e e s p e r a P C B # 9... P C B # 2 P C B # 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 P r o c e s s o A processos O Windows não tem esse conceito, ficam no mesmo nível P r o c e s s o B P r o c e s s o C P r o c e s s o D P r o c e s s o 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 C P U C P ( a ) C P U - b o u n d t e m p o t e m p o ( b ) I / O - b o u n d

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

C o n t e x t o d e s o f t w a r e Threads Processo Multithread Monothread e Multithread C o n t e x t o d e h a r d w a r e C o n t e x t o d e h a r d w a r e C o n t e x t o d e h a r d w a r e T h r e a d 1 T h r e a d 2 E s p a ç o d e e n d e r e ç a m e n t o T h r e a d 3

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. Curitiba: Universidade Federal Paraná, 2009. GUALEVE, J. A. F. Sistemas Operacionais. Brasília: Universidade Católica de Brasília, 2006.