|
|
|
- Thiago Covalski Gameiro
- 10 Há anos
- Visualizações:
Transcrição
1 FORK() SYSTEM CALL * UTILIZADO PARA CRIAR SUBPROCESSO * PROCESSO QUE CRIA É PAI * PROCESSO CRIADO É O FILHO * APÓS A CRIAÇÃO AMBOS OS PROCESSO EXECUTAM A PRÓXIMA INSTRUÇÃO APÓS A SYSTEM CALL FORK() * FORK RETORNA UM VALOR NEGATIVO QUANDO OCORRE UM ERRO * FORK RETORNA ZERO NO PROCESSO FILHO * FORK RETORNA UM VALOR DIFERENTE DE ZERO NO PROCESSO PAI #include <stdio.h> #include <string.h> #include <sys/types.h> #define MAX_COUNT 200 #define BUF_SIZE 100 void main(void) pid_t pid; int i; char buf[buf_size]; fork(); pid = getpid(); for (i = 1; i <= MAX_COUNT; i++) sprintf(buf, "This line is from pid %d, value = %d\n", pid, i); write(1, buf, strlen(buf));
2 * APÓS A CHAMADA DA SYSTEM CALL FORK, EXISTE UMA CÓPIA EXATA DO ESPAÇO DE ENDEREÇAMENTO DO PROCESSO PAI E FILHO * AMBOS OS PROCESSOS EXECUTAM A PRÓXIMA INSTRUÇÃO APÓS O FORK
3 A função fork é chamada uma única vez (no pai) e retorna duas vezes (uma no processo pai e outra no processo filho). O processo filho herda informações do processo pai: * Usuários (user id) Real, efetivo. * Grupos (group id) Real, efetivo. * Variáveis de ambiente. * Descritores de arquivos. * Prioridade * Todos os segmentos de memória compartilhada assinalados. * Diretório corrente de trabalho. * Diretório Raiz. * Máscara de criação de arquivos.
4 O processo filho possui as seguinte informações diferente do processo pai: * PID único dentro do sistema. * Um PPID diferente. (O PPID do processo filho é o PID do processo pai que inicialmente ativou a função fork). * O conjunto de sinais pendentes para o processo é inicializado como estando vazio. * Locks de processo, código e dados não são herdados pelo processo filho. * Os valores da contabilização do processo obtida pela função time são inicializados com zero. * Todos os sinais de tempo são desligados.
5 RESULTADO DA EXECUÇÃO PAI = 6198 FILHO = 6199 This line is from pid 6199, value = 1 This line is from pid 6199, value = 2 This line is from pid 6199, value = 3 This line is from pid 6199, value = 4 This line is from pid 6199, value = 5 This line is from pid 6199, value = 6 This line is from pid 6199, value = 7 This line is from pid 6199, value = 8 This line is from pid 6199, value = 9 This line is from pid 6199, value = 10 This line is from pid 6198, value = 1 This line is from pid 6198, value = 2 This line is from pid 6198, value = 3 This line is from pid 6198, value = 4 This line is from pid 6198, value = 5 This line is from pid 6198, value = 6 This line is from pid 6198, value = 7 This line is from pid 6198, value = 8 This line is from pid 6198, value = 9 This line is from pid 6198, value = 10
6 #include <stdio.h> #include <sys/types.h> #define MAX_COUNT 200 void ChildProcess(void); /* child process prototype */ void ParentProcess(void); /* parent process prototype */ void main(void) pid_t pid; pid = fork(); if (pid == 0) ChildProcess(); else ParentProcess(); void ChildProcess(void) int i; for (i = 1; i <= MAX_COUNT; i++) printf(" This line is from child(%d), value = %d\n", getpid(), i); sleep(1); printf(" *** Child process is done ***\n"); void ParentProcess(void) int i; //wait(); for (i = 1; i <= MAX_COUNT; i++) printf("this line is from parent(%d), value = %d\n", getpid(), i); sleep(1); printf("*** Parent is done ***\n");
7 NO EXEMPLO ANTERIOR, A SYSTEM CALL FORK() RETORNA O PID DO PROCESSO FILHO NA VARIÁVEL PID DO PAI, E ZERO NA VARIAVEL PID DO PROCESSO FILHO. APÓS A EXECUÇÃO DA SYSTEM CALL FORK(), PAI E FILHO ESTÃO NO MESMO PONTO DE EXECUÇÃO DE CÓDIGO
8 PAI E FILHO INICIAM A EXECUTAÇÃO NA MESMA INSTRUÇÃO APÓS A SYSTEM CALL FORK()
9 PROCESSO PAI EXECUTA A FUNÇÃO PARENTPROCESS E PROCESSO FILHO EXECUTA A FUNÇÃO CHILDPROCESS
10 RESULTADO DA EXECUÇÃO SEM A SYSTEM CALL WAIT() This line is from parent(6605), value = 1 This line is from child(6606), value = 1 This line is from parent(6605), value = 2 This line is from child(6606), value = 2 This line is from parent(6605), value = 3 This line is from child(6606), value = 3 This line is from parent(6605), value = 4 This line is from child(6606), value = 4 This line is from parent(6605), value = 5 This line is from child(6606), value = 5 This line is from child(6606), value = 6 This line is from parent(6605), value = 6 This line is from child(6606), value = 7 This line is from parent(6605), value = 7 This line is from child(6606), value = 8 This line is from parent(6605), value = 8 This line is from child(6606), value = 9 This line is from parent(6605), value = 9 This line is from child(6606), value = 10 This line is from parent(6605), value = 10 *** Child process is done *** *** Parent is done ***
11 RESULTADO DA EXECUÇÃO COM A SYSTEM CALL WAIT() This line is from child(6664), value = 1 This line is from child(6664), value = 2 This line is from child(6664), value = 3 This line is from child(6664), value = 4 This line is from child(6664), value = 5 This line is from child(6664), value = 6 This line is from child(6664), value = 7 This line is from child(6664), value = 8 This line is from child(6664), value = 9 This line is from child(6664), value = 10 *** Child process is done *** This line is from parent(6663), value = 1 This line is from parent(6663), value = 2 This line is from parent(6663), value = 3 This line is from parent(6663), value = 4 This line is from parent(6663), value = 5 This line is from parent(6663), value = 6 This line is from parent(6663), value = 7 This line is from parent(6663), value = 8 This line is from parent(6663), value = 9 This line is from parent(6663), value = 10 *** Parent is done ***
Processos em Unix. Conteúdo: Definição de Processos em Unix Estrutura, tipo e escalonamento de processos em Unix Processos, Pai, Filho e Zumbi.
Processos em Unix Conteúdo: Definição de Processos em Unix Estrutura, tipo e escalonamento de processos em Unix Processos, Pai, Filho e Zumbi. O que é um Processo em Unix? É um espaço de endereçamento
Manipulação de processos
Manipulação de processos Luiz Affonso Guedes 1 Ivanovitch Silva 1 [email protected] [email protected] 1 Universidade Federal do Rio Grande do Norte 17 de setembro de 2009 Processos DCA0109 1 / 18 Sumário
MÓDULO 02 PROCESSOS E THREADS PROCESSOS e THREADS
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)
Um processo sob UNIX ocupa uma área de memória formada basicamente por 3 partes:
Processos O UNIX é um sistema operacional multitarefa (suporta multiprogramação). Isso significa que ele é capaz de gerenciar a execução simultânea de vários programas. O termo processo é usado para caracterizar
E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux
E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro Programação Concorrente em Linux O Conceito de Processo no Linux O conceito de processo é fundamental para qualquer sistema operacional
LABORATÓRIO SISTEMAS OPERACIONAIS
FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: SISTEMAS OPERACIONAIS CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2016/02 PROFESSOR: EDUARDO FERREIRA DOS SANTOS HORÁRIOS:
SVCs para Controle de Processos no Unix. Sistemas Operacionais
SVCs para Controle de Processos no Unix Criação de Processos A maioria dos sistemas operacionais usa um mecanismo de spawn para criar um novo processo a partir de um outro executável. LPRM/DI/UFES 2 Criação
Sistemas Operacionais
Sistemas Operacionais Prof. Jó Ueyama Apresentação baseada nos slides da Profa. Kalinka Castelo Branco, do Prof. Dr. Antônio Carlos Sementille e da Profa. Dra. Luciana A. F. Martimiano e nas transparências
SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais
SVCs para Controle de Processos no Unix (cont.) Primitivas exec..() As primitivas exec constituem, na verdade, uma família de funções que permitem a um processo executar o código de outro programa. Não
Sistemas Operacionais INF 09344 Prof. José Gonçalves
Sistemas Operacionais INF 09344 Prof. José Gonçalves 1 o Trabalho de Programação Período: 2014/1 Data de Entrega: 2/6/2014 Parte I. Usando Fork e Wait Você deve criar um programa C partei.c. Durante a
Processos. Programas e Processos. Aula 1 - Chamadas ao sistema. José Pedro Oliveira fork exit getpid, getppid wait, waitpid
Conteúdo Programas e Aula 1-1 Programas e ([email protected]) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 006-007 3 Referências
Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo. http://www.dei.isep.ipp.pt/~orlando/so2/processos.
Página 1 de 5 Processos Consiste num método de descrição das actividades de um sistema operativo; Todo o software incluído no sistema operativo é organizado num grupo de programas executáveis. Cada um
Comunicação entre pai e filho
Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que o resultado de um processo possa ser recebido pelo outro? Exemplos: Processo
INF 1005 Programação I
INF 1005 Programação I Aula 12 Cadeia de Caracteres (Strings) Edirlei Soares de Lima Caracteres Até o momento nós somente utilizamos variáveis que armazenam números (int, float ou
INF 1620 P1-10/04/02 Questão 1 Nome:
INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,
Trabalhando com Processos e Threads em Ambiente LINUX
Objetivo Universidade Federal do ABC Disciplina: BC 1518 Sistemas Operacionais (SO) Prática: Processo/Threads Atividade 3 Trabalhando com Processos e Threads em Ambiente LINUX 1.Trabalhar com comandos
6. Comunicação entre processos - Pipes
6. Comunicação entre s - Pipes 6.1 O que são pipes Os pipes em UNIX constituem um canal de comunicação unidirecional entre s com um ascendente comum (entre um pai e um seu descendente). Uma vez estabelecido
Comunicação entre Processos Memória Compartilhada
Comunicação entre Processos Memória Compartilhada 3/23/17 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite
Sistemas Operacionais e Introdução à Programação. Programação com linguagem C
Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Variáveis na linguagem C: tipo char O tipo char representa um caractere ASCII (ocupa só 1 byte) int main(int argc, char **
Projeto: Camada Independente de Dispositivo
Projeto: Camada Independente de Dispositivo Introdução Esse documento tem como finalidade demonstrar como será implementada a Camada Independente de Software. Estrutura A camada independente de software
TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão
TROCA DE MENSAGENS SOCKETS Comunicando processos através de SOCKETS SOCKETS com conexão SOCKETS sem conexão SOCKETS Princípios dos sockets: 2. Fornecer uma interface geral permitindo a construção de aplicações
Conceitos de Sistemas Operacionais: Chamadas de Sistema. Prof Rafael J. Sandim
Conceitos de Sistemas Operacionais: Chamadas de Sistema Prof Rafael J. Sandim Conceitos de Sistema Operacional Interface entre o SO e os Programas de usuário é definida pelo conjunto de instruções estendidas
Analise o código abaixo:
Recursão - introdução Analise o código abaixo: 1 # include 2 # include 3 int Fatorial ( int x) 4 int k, s =1; for (k =0;k
Comunicação entre Processos
Comunicação entre Processos Pipes Redirecionamento de entrada e saída 4/19/18 1 O Pipe: Características (1) Canal de comunicação entre processos parentes, usando a politica First-In-First-Out (FIFO) Tipicamente,
3. Criação e terminação de processos
3. Criação e terminação de processos Um processo é uma instância em execução de um programa. No sistema operativo Unix a única forma de se criar um novo processo (processo-filho) é através da invocação,
ponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo [email protected] ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
Criação de Processos Fork( ) Exec( )
Criação de Processos Fork( ) Exec( ) 8/23/18 1 Chamadas de Sistema: Process Management 2 Chamada fork( ) / exec( ) 3 Esboço de uma shell while (TRUE) { /* repeat forever */ type_prompt( ); /* display prompt
Processos. Adão de Melo Neto
Processos Adão de Melo Neto 1 EXECUTE O SEGUINTE Baixa a aula dos dias 20 MAR 15 e 08 MAI 15 e salve no computador. Feche o browser Inicialize o vmware player e inicialize a máquina virtual ubuntu Inicialize
Linguagem de Programação II
Linguagem de Programação II Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB [email protected] Introdução à Programação Concorrente / Processos Desafios da programação concorrente Processos Estados, ações,
PROCESSOS. Prof. Maicon A. Sartin [email protected]
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
PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C
PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C 1 2 Condicional 1 Se 'C' é verdadeira Então?; 3 Condicional 1 Se 'C' é verdadeira Então? if (C)?; 4 Condicional 2 Se 'C' é verdadeira Então? Senão?? 5 Condicional
Inter-process Communication (IPC) Comunicação entre processos (1) Introdução Tubos (Pipes)
Inter-process Communication (IPC) Comunicação entre processos (1) Introdução Tubos (Pipes) Comunicação entre Processos (1) Os sistemas operacionais implementam mecanismos que asseguram a independência
Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação
Comunicação entre Processos Canal de comunicação Arquitetura da comunicação Modelos de comunicação Sistemas Operativos 2015-2016 O que construímos até agora... A abstração de processo 2 A possibilidade
SSC0640 Sistemas Operacionais I
SSC0640 Sistemas Operacionais I 2ª Aula Conceitos Básicos Profa. Sarita Mazzini Bruschi [email protected] Slides adaptados de Marcos José Santana / Regina H. C. Santana / Luciana A. F. Martimiano baseados
Estruturas de entrada e saída
capa Estruturas de entrada e saída - A linguagem C utiliza de algumas funções para tratamento de entrada e saída de dados. - A maioria dessas funções estão presentes na biblioteca . - As funções
PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C
PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C 1 2 Repetição 1 Enquanto 'C' é verdadeira Fazer? 3 Repetição 1 Enquanto 'C' é verdadeira Fazer? while (C)?; 4 Enunciado: Construa um algoritmo para mostrar os 100
Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1
Curso de C Procedimentos e Funções 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1 Funções Roteiro: Funções Declaração e chamada Funções importantes Exemplos de funções Variáveis Globais,
Estrutura de um programa em linguagem C
Estrutura de um programa em linguagem C Estrutura de um programa em linguagem C Exemplo de um programa em linguagem C Directivas de Pré-Processamento #include Declarações Globais Declarações
Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos
Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Processos. Conceitos Básicos
Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Sistemas de Arquivos. Gerenciamento de Espaço em Disco
Sistemas de Arquivos Diretórios Gerenciamento de Espaço em Disco Implementação de Diretórios (1) Contém informações que permitem acessar os arquivos As entradas do diretório fornecem informações para encontrar
Tubos ou Pipes de Comunicação
1 Tubos ou Pipes de Comunicação 1. Introdução Os tubos (ou pipes) constituem um mecanismo fundamental de comunicação unidirecional entre processos. Eles são um mecanismo de I/O com duas extremidades, ou
Comunicação entre Processos Memória Compartilhada
Comunicação entre Processos Memória Compartilhada 8/30/18 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite
Infra-Estrutura de Software. Introdução. (cont.)
Infra-Estrutura de Software Introdução (cont.) O que vimos Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como
PROCESSOS COMPONENTES DE UM PROCESSO. A execução de um processo possui vários componentes. PID e PPID
PROCESSOS Um processo é um canal de comunicação entre os programas que estão sendo executados no sistema operacional e o usuário, ou seja um processo é um programa que está sendo executado. No Linux /
Resumo da Matéria de Linguagem de Programação. Linguagem C
Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis
Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo [email protected]
Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo [email protected] Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,
INF 1007 Programação II
INF 1007 Programação II Aula 06 Tipos Estruturados Edirlei Soares de Lima Dados Compostos Até agora somente utilizamos tipos de dados simples: char, int, float, double. Muitas vezes
Linguagem C Funções definidas pelo usuário. Lógica de Programação
Linguagem C Funções definidas pelo usuário Lógica de Programação Caro(a) aluno(a), Trabalharemos agora com as funções criadas por vocês na Linguagem C. Bom trabalho!!! Funções C permite que o programador
Introdução a Computação
Introdução a Computação Aula 02 Introdução a Linguagem C Edirlei Soares de Lima Lógica de Programação Lógica de Programação é a técnica de criar sequências lógicas de ações para
SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais
SVCs para Controle de Processos no Unix (cont.) Término de Processos no Unix Um processo pode terminar normalmente ou anormalmente nas seguintes condições: Normal: Executa return na função main(), o que
Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas
Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany [email protected] ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include
Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Operações com Strings Introdução a Ponteiros e Funções Profa Rosana Braga 1 Strings Strings são seqüências de caracteres
Programação de Sistemas
Programação de Sistemas FIFOs Programação de Sistemas FIFOs : 1/13 Introdução APUE 15.5 Os tubos só podem ser usados por processos que tenham um antecessor comum. Para resolver a limitação dos tubos, o
INSTITUTO SUPERIOR DE CIÊNCIAS DO TRABALHO E DA EMPRESA. Filas de mensagem
Página 1 de 5 INSTITUTO SUPERIOR DE CIÊNCIAS DO TRABALHO E DA EMPRESA Sistemas Operativos ETI - IGE Filas de mensagem 2º Semestre 2003/2004 Aula 04 1. Criar uma fila de mensagens. Mandar uma mensagem.
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
INF 1007 Programação II
INF 1007 Programação II Aula 05 Cadeias de Caracteres Edirlei Soares de Lima Caracteres Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência
Introdução a POO. Introdução a Linguagem C++ e POO
Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes
Registros. Técnicas de Programação. Rafael Silva Guimarães :p://:p.ci.ifes.edu.br/informa@ca/rafael_guimaraes
Rafael Silva Guimarães :p://:p.ci.ifes.edu.br/informa@ca/rafael_guimaraes Registros Técnicas de Programação Baseado no material do Prof. Rafael Vargas Mesquita Conceito de Registro (Struct) Vetores e Matrizes
INF 1005 Programação I
INF 1005 Programação I Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição de constantes:
ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória
ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos
Pesquisa em Memória Primária. Prof. Jonas Potros
Pesquisa em Memória Primária Prof. Jonas Potros Pesquisa em Memoria Primária Estudo de como recuperar informação a partir de uma grande massa de informação previamente armazenada. A informação é dividida
Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração: 1945-1955
O que vimos Infraestrutura de Software Introdução (cont.) Complexidade do computador moderno, do ponto de vista do hardware Necessidade de abstrações software Sistema computacional em camadas SO como uma
