MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS



Documentos relacionados
Processos. Adão de Melo Neto


Processos em Unix. Conteúdo: Definição de Processos em Unix Estrutura, tipo e escalonamento de processos em Unix Processos, Pai, Filho e Zumbi.

Comandos Básicos do Linux/Unix

Introdução à Programação de Computadores

Programação com Posix Threads

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)

Trabalhando com Processos e Threads em Ambiente LINUX

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads

2 Um Primeiro Programa em C

Tutorial: Programando no Linux

Roteiro 3: Sistemas Linux arquivos e diretórios

PROCESSOS. Prof. Maicon A. Sartin

Manipulação de processos

Sistemas Operacionais

Sistemas Operacionais de Rede Linux - Gerenciamento de Arquivos

DCC 003 Algoritmos e Estruturas de Dados I Tutorial de instalação do GCC e do TextPad

Objetivos: Entender o funcionamento dos programas Java via linha de comando

Aula 4 Comandos Básicos Linux. Prof.: Roberto Franciscatto

Sistemas Operacionais INF Prof. José Gonçalves

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Primeira Aula Prática

Bem-vindo ao Guia de Introdução - Utilitários

LINGUAGEM C UMA INTRODUÇÃO

Simulador de Sistemas de Arquivos

17 - Funções e Procedimentos em C Programação Modular

SISTEMAS OPERACIONAIS LIVRES. Professor Carlos Muniz

Banco de Dados Oracle 10g

Ambiente Online de Programação em C.

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 03. Prof. Gabriel Silva

MANUAL DE INSTALAÇÃO LUZ DO SABER

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

Sistema Operacional Unidade 5 - Iniciando o modo texto. QI ESCOLAS E FACULDADES Curso Técnico em Informática

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux

Manual do Sistema "Vida Controle de Contatos" Editorial Brazil Informatica

Arquitetura de Sistemas Operacionais

Compartilhando arquivos com o samba

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

7. Estrutura de Decisão

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

Treinamento para Manutenção dos Telecentros

Trabalho de Sistema de Informações. Instalação e configuração aplicativo Ocomon

Guia de instalação para ambiente de Desenvolvimento LINUX

- Computador Servidor: É o computador que armazenará o banco de dados do programa. Não necessariamente precisa rodar o Hábil Enterprise.

INF 1005 Programação I

Microsoft Access XP Módulo Um

1) Verifique se o Microsoft.Net Framework 3.5 está instalado, para isto, abrir o Painel de Controle e verificar:

Comandos Básicos Sistema Operacional GNU Linux

Introdução ao Linux. Instituto Federal de Educação, Ciência e Tecnologia do Sul de Minas Gerais Campus Pouso Alegre

Manual de Comando Linux

Linguagem C Funções definidas pelo usuário. Lógica de Programação

1) Verifique se o Microsoft.Net Framework 3.5 está instalado, para isto, abrir o Painel de Controle e verificar:

Lazarus pelo SVN Linux/Windows

SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros

Se não existisse uma variável de ambiente chamada PATH você teria que digitar todo o caminho do comando para listar por exemplo:

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

MULTIACERVO - VERSÃO 17.*

Organização de Computadores

Procedimento para Adequações às Mudanças Tecnológicas do Módulo Autorizador

NIVEL LOCAL 1º Passo: Acessar o sinasc_local. No menu Ferramentas, selecionar Atualização de Dados e clicar em Auditoria (ver tela abaixo).

MC-102 Aula 01. Instituto de Computação Unicamp

Instalação do serviço de FTP com o Proftpd

Manual Captura S_Line

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

O presente documento apresenta um passo a passo para os seguintes processos:

LINX POSTOS AUTOSYSTEM

Manual de Administração DPS Printer 2.1 NDDigital S/A - Software

Curso de Linguagem C

Eclipse com c++11 e boost Etapa 1- Download da IDE Eclipse c++ e configuração do MinGW

INSTALANDO SOFTWARE Ifox irestaurantes

Como usar o bluej. Laboratório I Prof.ª Vera Alves

Sistema Operacional LINUX

ROTINA DE GERAÇÃO DE ARQUIVO PARA SIAPE

LABORATÓRIO SISTEMAS OPERACIONAIS

5 Apresentando a linguagem C

Arquivos e Pastas. Instrutor Antonio F. de Oliveira. Núcleo de Computação Eletrônica Universidade Federal do Rio de Janeiro

SECRETARIA DE ESTADO DA FAZENDA. Documento de Arrecadação Estadual DAE. Manual do Usuário. Versão SECRETARIA DE ESTADO DA FAZENDA

Instalação de Impressora

1. PROLOGO ==========

Comunicação entre pai e filho

Instalação rápida do Expresso

CURSO BÁSICO DE PROGRAMAÇÃO AULA 8. Introdução ao Linux Introdução a linguagem C

Transcrição:

MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS 1. ATIVIDADE 01 Verificar a criação de um processo filho (que imprime de 51 a 100) que rodará concorrentemente com o processo pai (que imprime de 1 a 50) que o criou (o processo filho) usando a rotina fork(). O processo pai deve-se ao programa processo2.c (todo programa está associado a um processo). O processo filho surgiu da rotina fork() chamada pelo processo pai. Um processo criado pelo comando fork() (processo filho) é uma cópia do processo que o criou (processo pai) Conteúdo do programa processo2.c #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) int i,j; pid_t filho; filho = fork(); if (filho == 0) //O código aqui dentro será executado no processo filho for (i=0;i<=50;i++) printf("(%d) sou o processo filho\n",i); else //O código neste trecho será executado no processo pai for (j=51;j<100;j++) printf("(%d) sou o processo pai\n",j); exit(0); 01. Faça o download do arquivo processo2.c no site (www.ime.usp.br/~adao) 02. Abra um terminal digitando ctrl + alt + T. 03. Digite o comando pwd para ver em que diretório você está. 04. Vá para pasta download do usuário (cd /home/aluno/downloads).

05. Digite ls para visualizar os arquivos 06. Digite o comando pwd para visualizar em que diretório você está 07. Digite gedit processo2.c para visualizar o código fonte 08. Saia digitando no terminal ctrl+c 09. Execute o comando cp processo2.c <seunome>processo2.c 10. Compile o programa <seunome>processo2.c ( gcc <seunome>processo2.c -o <seunome>processo2 ) 11. Rode o executável <seunome>processo2 que foi gerado (./<seunome>processo2 ). 12. Abra outro terminal (digitando ctrl + alt + T ) e neste outro terminal digite ps -la e verifique no terminal que dois processos foram criados com o nome <seunome>processo2. 2. ATIVIDADE 02 Verificar a criação de 02 threads (uma imprime de 1 a 50 e a outra de 51 a 100) que rodarão concorrentemente. As duas threads pertencem ao processo thread2 que foi criado pelo programa thread2.c (todo programa está associado a um processo) Conteúdo do arquivo thread2.c #include <time.h> #include <pthread.h> void *espera1(void *tmp) for(i=0;i<=50;i++)printf("(%d) - Oi eu sou a thread %d \n",i,v); void *espera2(void *tmp) for(i=51;i<=100;i++)printf("(%d) - Oi eu sou a thread %d \n",i,v); int main() pthread_t linhas[2]; int execute,i; int v; srand(time(null)); i=0; execute = pthread_create(&linhas[i],null,espera1,(void*) i); i=1; execute = pthread_create(&linhas[i],null,espera2,(void*) i); pthread_exit(null);

01. Faça o download do arquivo thread2.c no site (www.ime.usp.br/~adao) 02. Abra um terminal digitando ctrl + alt + T 03. Digite o comando ls 04. Vá para pasta download do usuário (cd /home/aluno/downloads) 05. Digite ls para visualizar os arquivos 06. Digite o comando pwd para visualizar em que diretório você está. 07. Digite gedit thread2.c para visualizar o código fonte 08. Saia digitando no terminal ctrl+c. 09. Execute o comando cp thread2.c <seunome>thread2.c 10. Compile o programa <seunome>thread2.c ( gcc <seunome>thread2.c -lpthread -o <seunome>thread2 ) 11.Rode o executável <seunome>thread2 que foi gerado (./<seunome>thread2 ) 12. Abra outro termina digitando ctrl + alt + T e neste outro terminal digite ps -lam. Você verificará um apenas um processo sendo executado. Isto ocorre pois as threads compartilham o mesmo contexto de software e espaço de endereçamento do processo) e possuem apenas contexto de hardware distintos. ATIVIDADE 03 Verificar a criação de um processo neto (que imprime de 100 a 151) que rodará concorrentemente com o processo filho (que imprime de 51 a 100) e com o processo pai (que imprime de 0 a 50). O processo pai deve-se ao programa processo3.c (todo programa está associado a um processo). O processo filho surgiu da rotina fork() chamada pelo processo pai. O processo neto surgiu da rotina fork() chamada pelo processo filho. Um processo criado pelo comando fork() (processo filho) é uma cópia do processo que o criou (processo pai). Conteúdo do arquivo processo3.c #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) int i,j; pid_t filho,neto; filho = fork(); if (filho == 0) neto=fork(); if (neto==0) //O código aqui dentro será executado no processo neto for (i=0;i<=50;i++) printf("(%d) sou o processo neto\n",i); else //O código aqui dentro será executado no processo filho for (i=101;i<=150;i++) printf("(%d) sou o processo filho\n",i);

else //O código neste trecho será executado no processo pai for (j=51;j<100;j++) printf("(%d) sou o processo pai\n",j); exit(0); 01. Faça o download do arquivo processo2.c no site (www.ime.usp.br/~adao) 02. Abra um terminal digitando ctrl + alt + T. 03. Digite o comando pwd para ver em que diretório você está. 04. Vá para pasta download do usuário (cd /home/aluno/downloads). 05. Digite ls para visualizar os arquivos 06. Digite o comando pwd para visualizar em que diretório você está 07. Digite gedit processo3.c para visualizar o código fonte 08. Saia digitando no terminal ctrl+c 09. Execute o comando cp processo3.c <seunome>processo3.c 10. Compile o programa <seunome>processo3.c ( gcc <seunome>processo3.c -o <seunome>processo3 ). 10. Rode o executável <seunome>processo3 que foi gerado (./<seunome>processo3 ). 11. Abra outro terminal (digitando ctrl + alt + T ) e neste outro terminal digite ps -la e verifique que três processos foram criados com o nome <seunome>processo3. ATIVIDADE 04 Verificar a criação de 03 threads (uma imprime de 1 a 50,outra de 51 a 100 e a terceira de 101 a 150) que rodarão concorrentemente. As duas threads pertencem ao processo thread3 que foi criado pelo programa thread3.c (todo programa está associado a um processo) Conteúdo do arquivo thread3.c #include <stdio.h> #include <time.h> #include <pthread.h> void *espera1(void *tmp) for(i=0;i<=50;i++)printf("(%d) - Oi eu sou a thread %d \n",i,v); void *espera2(void *tmp)

for(i=51;i<=100;i++)printf("(%d) - Oi eu sou a thread %d \n",i,v); void *espera3(void *tmp) for(i=151;i<=150;i++)printf("(%d) - Oi eu sou a thread %d \n",i,v); int main() pthread_t linhas[2]; int execute,i; int v; srand(time(null)); i=0; execute = pthread_create(&linhas[i],null,espera1,(void*) i); i=1; execute = pthread_create(&linhas[i],null,espera2,(void*) i); i=2; execute = pthread_create(&linhas[i],null,espera3,(void*) i); pthread_exit(null); 01. Faça o download do arquivo thread3.c no site (www.ime.usp.br/~adao) 02. Abra um terminal digitando ctrl + alt + T 03. Digite o comando ls 04. Vá para pasta download do usuário (cd /home/aluno/downloads) 05. Digite ls para visualizar os arquivos 06. Digite o comando pwd para visualizar em que diretório você está. 07. Digite gedit thread3.c para visualizar o código fonte 08. Saia digitando no terminal ctrl+c. 09. Execute o comando cp thread3.c <seunome>thread3.c 10. Compile o programa <seunome>thread3.c ( gcc <seunome>thread3.c -lpthread -o <seunome>thread3 ) 11.Rode o executável <seunome>thread3 que foi gerado (./<seunome>thread3 ) 12. Abra outro termina digitando ctrl + alt + T e neste outro terminal digite ps -lam. Você verificará um apenas um processo sendo executado. Isto ocorre pois as threads compartilham o mesmo contexto de software e espaço de endereçamento do processo) e possuem apenas contexto de hardware distintos. ATIVIDADE 05 Verificação do significado de comandos associados a processos 01. Digite o comando man ps e verifique o significado das colunas abaixo quando executamos o comando ps -la: UID:

PID: PRI: 02. Abra um terminal com ctr+alt+t e execute o comando./<seunome>processo3. Abra outro terminal e execute o comando ps -la e identifique o PID de um dos processos gerados pelo programa <seunome>processo3. Saia (digite q ) e então efetue então o comando kill -9 PID (PID é o que você identificou). O que ocorreu?