Processos Volnys B. Bernal Versão de 20/03/2015. Agenda. Processos. Programa x Processo. Programa x Processo. Programa.

Documentos relacionados
Processos. (c) 2005 Volnys B. Bernal Versão de 15/3/2006. Agenda. Processos. Introdução aos Processos. Introdução aos Processos

Processos. Volnys Borges Bernal. Edson Toshimi Midorikawa

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP

Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

Processos. Conceitos Básicos

Sistemas Operacionais I

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

Prof. Kleber R. Rovai

Processos. Conceitos Básicos

Sistemas Operacionais I

Comandos TOP, PS e PSTREE

SISTEMAS OPERACIONAIS

Processo. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Sistemas Operacionais. Capítulo 5 Processos

Sistemas Operacionais

Concorrência em Processos

SSC0640 Sistemas Operacionais I

Processos. Adão de Melo Neto

Sistemas Operacionais

Na Aula Anterior... Interrupções por software e hardware; Temporizadores; RTC; Temporizadores via software. Relação Processos Multiprogramação

SOP - TADS Processos. Revisão Ultima aula

Sistemas Operacionais

Sistemas de Informação. Sistemas Operacionais

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Processos. Prof. Gustavo Leitão

Davidson Rodrigo Boccardo

Sistemas Operacionais. Rodrigo Rubira Branco

LABORATÓRIO SISTEMAS OPERACIONAIS

Introdução. Introdução aos Sistemas Operacionais Volnys Bernal. Sumário. Introdução aos Sistemas Operacionais. Sobre esta apresentação

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema

LABORATÓRIO SISTEMAS DE TEMPO REAL

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios. Aula 06.

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

Fundamentos de Sistemas Operacionais

Arquitetura de Computadores. Revisão Volnys Bernal. Agenda. Revisão: Arquitetura de Computadores. Sobre esta apresentação

Sistemas Operacionais

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Programação Estruturada

Introdução aos Sistemas Operacionais

Sistemas Operacionais. Conceito de Processos

Sistemas Operacionais

Condições de Disputa

Administração de sistemas Linux. Administração de processos.

EEL770 - Sistemas Operacionais Notas de Aula

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Estrutura dos Sistemas Operacionais. Sérgio Portari Júnior

SISTEMAS OPERACIONAIS

Sistemas Operacionais. Pilha de Execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

16. Compilação no Linux

Processos e Threads. Ciclo 2 AT3. Prof. Hermes Senger

Unix Processos. Geraldo Braz Junior

Conceitos. Pedro Cruz. EEL770 Sistemas Operacionais

MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS

Notas da Aula 2 - Fundamentos de Sistemas Operacionais

Notas da Aula 7 - Fundamentos de Sistemas Operacionais

Sistemas Distribuídos

Sistemas de Computação O Sistema Operacional Unix

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 08. Conceitos sobre processos. Modelos de processos, BCP, contextos, estados de processos.

Técnicas Avançadas de Programação

TAREFAS IMPLEMENTAÇÃO DE TAREFAS AULA 06 Sistemas Operacionais Gil Eduardo de Andrade

Sistemas Operacionais. BSI / UAB 2013 Hélio Crestana Guardia

Procedimentos. Sistemas de Computação

Chamadas de Sistema (SYSCALL)

Técnicas Avançadas de Programação

Noções de Processos. Plano da aula. Serviços oferecidos. Definição & Objetivos. Definição & Objetivos. Sistemas Operacionais : introdução

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

SSC0640 Sistemas Operacionais I

LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE

Introdução à Ciência da Computação ICC0001 Prof. Diego Buchinger

TE091 Programação Orientada a Objetos Engenharia Elétrica

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 2. Gerência de Processos

Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Primeira Lista de Exercícios

INFORMÁTICA: Informação automática

Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:

Sistemas Operacionais João Bosco T. Junior. Sistemas Operacionais João Bosco Junior - V1.3

Sistemas Operacionais II. Linux 2: Threads, Escalonamento, Gerenciamento de Memória e Sistemas de Arquivos

Universidade Federal do ABC MCTA Sistemas Operacionais 2019.Q1

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Prática 01: Conceitos Iniciais

Sistemas Operacionais

Introdução e Conceitos Básicos

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 1 0 SEM/05 Teste 1 Unidade I DURAÇÃO: 50 MINUTOS


Processos Concorrentes

Figura 01 Programa e Processo

Introdução à Lógica de Programação

Trabalhando com Processos e Threads em Ambiente LINUX

Sistemas Operacionais

Criação de Processos Fork( ) Exec( )

Conceitos Básicos de C

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Transcrição:

1 2000-2015 - Volnys Bernal 1 2000-2015 - Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP x Concorrência x Paralelismo Áreas de memória de um processo Exemplo: processos no ambiente UNIX Troca de contexto Ciclo de vida dos processos no ambiente UNIX Hierarquia de ativação de processos 2000-2015 - Volnys Bernal 3 2000-2015 - Volnys Bernal 4 x x Seqüência de comandos e dados definidos para realizar uma tarefa Execução do programa 2000-2015 - Volnys Bernal 5 2000-2015 - Volnys Bernal 6 Seqüência de instruções e dados que podem ser executados para realizar uma determinada tarefa Fonte Codificação que contém comandos e dados Sintaxe da codificação é realizada em uma linguagem de baixo nível (assembler) ou alto nível (C, Pascal, Fortran, Java,...) Executável Codificação que contém as intruções de máquina e dados Sintaxe da codificação é a linguagem de máquina (linguagem do processador).

2 2000-2015 - Volnys Bernal 7 2000-2015 - Volnys Bernal 8 (1) Quais são as principais informações que um programa fonte contém? Fonte Compilador executável Armazenado em arquivo Contém uma de dados e comandos em linguagem de alto nível representados como uma seqüência de caracteres ASCII. Armazenado em arquivo Contém uma seqüência de instruções e dados codificados em linguagem de máquina (2) Quais são as principais informações que um programa executável contém? 2000-2015 - Volnys Bernal 9 2000-2015 - Volnys Bernal 10 Seções de um arquivo de programa executável Área de código Contém as instruções em linguagem de máquina Área de dados iniciados o Contém as variáveis e estruturas globais que possuem valores definidos inicialmente o Constantes não iniciados o Variáveis e estruturas não inicializadas Tabela de símbolos Tabela que contém o símbolo (nome de função, nome de variável, nome de estrutura, nome de label, nome de constante, etc) e o endereço de memória virtual de cada símbolo. Arquivo de programa executável Denominação geralmente atribuída ao arquivo que armazena um programa executável O formato do arquivo executável varia de acordo com o sistema operacional. De forma geral possui a seguinte estrutura: Cabeçalho Área de Área de iniciados e constantes Tabela de Símbolos Estrutura geral de um arquivo executável 2000-2015 - Volnys Bernal 11 Arquivo de programa executável Cabeçalho Estrutura localizada no início do arquivo Informa: o Para a área de código Tamanho da área de código Início da área de código no arquivo Endereço inicial de memória virtual na qual esta área deve ser carregada o Para a área de dados iniciados Tamanho da área de dados iniciados Início da área de dados iniciados no arquivo Endereço inicial de memória virtual a partir da qual a área de dados iniciados deve ser carregada o Para a área de dados não iniciados Tamanho da área de dados não iniciados Endereço inicial de memória virtual a partir da qual a área de dados não iniciados deve ser alocada. o Para a área da pilha de execução: Endereço inicial de memória virtual a partir da qual a pilha de execução será alocada o EntryPoint Endereço da primeira instrução a ser executada. Arquivo de programa executável 2000-2015 - Volnys Bernal 12 Área de código Contém a seqüência de instruções em linguagem de máquina a serem executadas Área de dados iniciados Contém o Variáveis e estruturas globais que possuem valores definidos inicialmente o Constantes Tabela de símbolos Tabela que contém o símbolo (nome de função, nome de variável, nome de estrutura, nome de label, nome de constante, etc) e o endereço de memória virtual de cada símbolo.

3 2000-2015 - Volnys Bernal 13 2000-2015 - Volnys Bernal 14 (3) Compile e execute o programa fatorial: mkdir <dir> cd <dir> cp ~volnys/public/so/fatorial.c. ls l cat fatorial.c cc o fatorial fatorial.c./fatorial (4) Em relação ao programa fatorial.c, identifique as variáveis ou estruturas relacionadas a: Dado global inicializado Variável Constante Dado global não inicializado Dado local (5) Utilize o programa nm (nm na fatorial) e relacione as informações relativas às Áreas do programa/processo Entry point (instrução inicial a ser executada) Símbolos e seus endereços de memória virtual #include <stdio.h> char versao[] = "2.1"; int n; int resultado; int fatorial (int x) { int y; if (x <= 1) y = 1; else y = x * fatorial(x-1); return(y); int main(int argc, char **argv) { printf(" fatorial, versao %s \n", versao); printf("entre com o valor: " ); scanf("%d",&n); resultado = fatorial(n); printf("resultado: %d \n",resultado); 2000-2015 - Volnys Bernal 15 2000-2015 - Volnys Bernal 16 Compilação Exemplo de programas no UNIX Para compilar: Para executar: cc o fatorial fatorial.c Compilador C output Nome do fonte./fatorial O diretório /bin contém vários utilitários do sistema. Listando este diretório (ls -l /bin) é possivel identificar os arquivos executáveis de alguns programas utilitários: utilitário ls é armazenado no arquivo /bin/ls utilitário cat é armazenado no arquivo /bin/cat utilitário csh é armazenado no arquivo /bin/tcsh 2000-2015 - Volnys Bernal 17 2000-2015 - Volnys Bernal 18 Um programa sendo executado Possui um contexto (informações) como: Informações de controle o Geralmente armazenadas na tabela de processos o Informações: identificação única (pid - process identification) Registradores Estado do processo Identificação do usuário Terminal do qual foi disparado Áreas de memória o Área de código o Área de dados o Área da pilha de execução o Outras áreas de memória

4 2000-2015 - Volnys Bernal 19 Um programa sendo executado Possui um contexto (informações) como: Contexto de software o Espaço de endereçamento Área de código Área de dados Área da pilha de execução o Informações de controle mantidas pelo S.O Identificação do processo (pid) Identificação do usuário dono do processo Estado do processo... Contexto de hardware (valores dos registradores) PC (program counter - contador de programa) SP (stack pointer ponteiro para a pilha de execução) ST (status estado) Registradores de números inteiros e ponto flutuante Exemplo: Tabela de processos do UNIX Identificação do processo (PID) Valores de registradores PC, SP, Status, Estado do processo Data/hora de disparo Tempo de CPU ocupado Tempo de CPU ocupado pelos filhos Hora do próximo alarme Sinais pendenetes Localização das áreas de memória: Área de código (text) Área de dados Área de dados dinâmica Área da pilha de execução 2000-2015 - Volnys Bernal 20 Estado de retorno Estado do sinal pai Identificação do process group Identificação do usuário (UID) Identificação do grupo do usuário (GID) Effective UID Effective GID Umask Diretório raíz Diretório de trabalho Descritores de arquivos abertos 2000-2015 - Volnys Bernal 21 2000-2015 - Volnys Bernal 22 (6) Uma das áreas criadas alocadas quando um processo é disparado é a pilha de execução. A pilha de execução possibilita realizar o controle de ativação das subrotinas. A cada ativação de uma subrotina é criado um quadro (relacionado à esta instância da execução da subrotina) na pilha de execução do processo. Neste quadro ficam localizadas, dentre outras, as seguintes informações : arqumentos da subrotina; endereço de retorno da subrotina; variáveis locais da subrotina; Visão geral dos processos é uma abstração criada pelo Sistema Operacional O sistema operacional é o responsável pelo gerenciamento dos processos no sistema. Simule a execução do programa fatorial com o valor 3, mostrando a evolução dos valores das variáveis globais e da pilha da execução. 2000-2015 - Volnys Bernal 23 2000-2015 - Volnys Bernal 24 Visão geral dos procesos Sistemas de computação modernos criam a ilusão de que vários processos (aplicações) executam ao mesmo tempo no sistema. Concorrência x Paralelismo Na realidade, em sistemas monoprocessadores, em um determinado instante existe somente um programa sendo executado pela CPU. O sistema operacional gerencia o uso da CPU de forma que seja executado um pouco de cada processo por vez. Este chaveamento entre os processos é tão rápido que cria a ilusão de que os processos executam simultaneamente.

5 2000-2015 - Volnys Bernal 25 2000-2015 - Volnys Bernal 26 Concorrência x Paralelismo Concorrência Pseudo paralelismo Ilusão de execução simultânea de processos devido ao rápido chaveamento entre suas execuções em uma única CPU Paralelismo Paralelismo real Em sistemas com mais que uma CPU cada uma pode estar executando um processo efetivamente em paralelo. Áreas de memória de um processo Sistema Multiprogramado Concorrência (1 CPU) Paralelismo (várias CPUs) 2000-2015 - Volnys Bernal 27 Áreas de memória de um processo 2000-2015 - Volnys Bernal 28 Áreas de memória de um processo: Exemplo UNIX Seção do arquivo executável Cabeçalho Segmento do sistema operacional Espaço de endereçamento virtual do processo 0 Espaço de endereçamento Linha de execução Pilha iniciados Tabela de símbolos Segmento de código Segmento de dados Data BSS Heap Seqüência de instruções globais iniciados globais não iniciados Alocação dinâmica (thread) Segmento da pilha de execução N Pilha de execução Controle de execução de subrotinas: variáveis locais, endereços de retorno, parâmetros das funções 2000-2015 - Volnys Bernal 29 2000-2015 - Volnys Bernal 30 Exemplo: no ambiente UNIX Utilitário ps Exemplo: no ambiente UNIX Descrição Process Status Permite mostrar informações dos processos Sintaxe ps [fuxa] Opções x a f u x, inclui processos que não possuem terminal de controle all, mostra todos processo, inclusive de outros usuários mostra relação pai-filho user oriented output : mostra campos USER, %CPU, %MEM, SZ, RSS and START

6 2000-2015 - Volnys Bernal 31 Exemplo: no ambiente UNIX Exemplos 2000-2015 - Volnys Bernal 32 Exemplo: no ambiente UNIX Informações apresentadas {terra jose ps x {terra jose ps xa {terra jose ps xau PID TTY STAT TIME COMMAND 1? S 0:03 init 2? SW 0:00 (kflushd) 3? SW< 0:00 (kswapd) 4? SW 0:00 (md_thread) 221? S 0:00 crond 232? S 0:00 portmap 210? S 0:00 /usr/sbin/atd 446 2 S 0:00 /bin/login -- aluno1 464 2 S 0:00 -csh 486 2 R 0:00 ps xa {terra jose USER PID %CPU %MEM SIZE RSS TT STAT START TIME COMMAND usuário dono do processo process identification - identificação do processo porcentagem de tempo de CPU consumido recentemente porcent. da memória real (páginas) consumida recentemente size - tamanho dos segmentos de dados e pilha (Kbytes) resident set size - memória efetivamente alocada (kbytes) tty - terminal de controle, terminal do qual foi disparado state - estado do processo horário de disparo tempo (em seg.) consumido pelo processo desde seu início linha de comando 2000-2015 - Volnys Bernal 33 2000-2015 - Volnys Bernal 34 Troca de Contexto Troca de Contexto Contexto de um processo: É o conjunto de informações relevantes à execução do processo: Contexto de Hardware: Registradores da CPU Contexto de Software: Área de código Área de dados Área da pilha de execução Identificação do processo (pid process identification) Estado Prioridade Conjunto de arquivos abertos... Troca de contexto 2000-2015 - Volnys Bernal 35 Contexto de um processo: É o conjunto de informações relevantes à execução do processo: Contexto de software o Espaço de endereçamento Área de código Área de dados Área da pilha de execução o Informações de controle mantidas pelo S.O Identificação do processo (pid) Identificação do usuário dono do processo Identificação do terminal do qual foi disparado Estado do processo... Contexto de hardware (valores dos registradores da CPU) PC (program counter - contador de programa) SP (stack pointer ponteiro para a pilha de execução) ST (status estado) Registradores de números inteiros e ponto flutuante Troca de Contexto Troca de contexto 2000-2015 - Volnys Bernal 36 Atividade de mudança de contexto de processos em um ambiente de computação Atividade realizada pelo Sistema Operacional Envolve a troca de contexto de hardware e software de um processo: Salvamento do contexto do processo corrente Retomada do contexto do outro processo

7 2000-2015 - Volnys Bernal 37 2000-2015 - Volnys Bernal 38 Ciclo de Vida dos Ciclo de Vida dos Os processos, assim como qualquer entidade viva, possui um ciclo de vida: Nasce, vive e morre Estados de um processo Diagrama simplificado de transição de estados: pronto bloqueado executando zumbi parado terminado 2000-2015 - Volnys Bernal 39 2000-2015 - Volnys Bernal 40 Ciclo de Vida dos Estados dos Pronto O processo está pronto para executar. Não está executando porque a CPU está sendo utilizada por outro processo. Executando O processo está utilizando a CPU no momento Bloqueado O processo não pode continuar sua execução enquanto não ocorrer o evento pelo qual espera (ex, leitura de disco,...) Parado O processo foi momentaneamente parado pelo usuário ou operador Zumbi O processo já terminou mas não foram liberadas suas informações de controle Terminado já terminou e toda informação de controle foi liberada Hierarquia de ativação de processos 2000-2015 - Volnys Bernal 41 Hierarquia de ativação de processos pai e filho Seja um processo A que cria um processo B O processo A é chamado processo pai do processo B O processo B é chamado processo filho do processo A 2000-2015 - Volnys Bernal 42 (7) Utilize o comando ps xa do sistema Linux e relacione os processos ativos em sua máquina. filho pai filho (8) Utilize o comando ps fxa e descreva a hierarquia de ativação dos processos ativos em sua máquina. neto neto

8 2000-2015 - Volnys Bernal 43 2000-2015 - Volnys Bernal 44 (9) Seja o programa fork1.c mostrado no slide a seguir. Execute este programa e explique o que o programa realiza. Para compilar: cc o fork1 fork1.c Para executar: Compilador output C./fork1 Nome do fonte ##include <stdio.h> #include <sys/types.h> #include <unistd.h> int i = 1; int main() { pid_t status; printf(" de disparo de processos filho. \n"); status = fork(); printf("apos a chamada fork(). \n"); while (1) { printf(" Status = %5d, i = %d \n",status,i); i++; sleep(2); 2000-2015 - Volnys Bernal 45 Memória Virtual P1 2000-2015 - Volnys Bernal 46 Duplicação de processos Memória Virtual P1 Duplicação de processos pai Pilha fork() Memória Virtual P2 Pilha filho Pilha 2000-2015 - Volnys Bernal 47 2000-2015 - Volnys Bernal 48 (10) Seja o programa fork2.c mostrado no slide a seguir. Execute este programa e explique o que o programa realiza. Para compilar: cc o fork2 fork2.c Para executar: Compilador C./fork2 output Nome do executável #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { pid_t pid; printf(" de disparo de processos filho. \n"); pid = fork(); if (pid == 0) { printf(" filho executando. \n"); while (1) { printf("filho. \n"); sleep(2); else { printf(" pai executando: pid do filho = %d\n",pid); while (1) { printf("pai. \n"); sleep(2);

9 2000-2015 - Volnys Bernal 49 2000-2015 - Volnys Bernal 50 Bibliografia Sistemas Operacionais Modernos Andrews Tanenbaum Bibliografia Bibliografia complementar: The Design of the UNIX Operating System Maurice J. Bach Prentice-Hall Software Series, 1986