Comunicação entre pai e filho
|
|
|
- Maria Fernanda Castel-Branco Antunes
- 10 Há anos
- Visualizações:
Transcrição
1 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 pai distribui dados para os processos filho, que devolvem resultados que são consolidados pelo pai. 1 Pipes como mecanismo de comunicação entre processos Na shell, em cmd1 cmd2 estamos direcionando o STDOUT de cmd1 para o STDIN de cmd2 Exemplos: > ps aml sort r k 7 less // lista os processos com maior uso de memória > ps axl grep zombie // lista todos os processos zombie (*) Isso é um pipe (ou pipeline), ou seja, um canal, que é uma estrutura de dados do kernel Processos pai e filho podem se comunicar através de pipes. Usa-se a a função de sistema pipe() Obs: (*) processo zombie já terminou a sua execução mais ainda tem sua entrada na tabela de processos, que é necessária para o pai ler o status de exit do filho. 2 1!
2 Função pipe() Cria um canal de comunicação entre processos Definido em <unistd.h> int pipe(int fd[2]); Cria dois canais de comunicação (visíveis pelo pai e filho) fd[0] é aberto para leitura fd[1] é aberto para escrita Retorna: 0 (zero) em caso de sucesso -1 em caso de erro Função pipe() Pipes abertos pela função pipe() devem ser fechados pela função close() Dados escritos no descritor de arquivo fd[1] podem ser lidos do fd[0] Dois processos podem se comunicar através de um pipe se eles lêem e escrevem em fd[0] e fd[1] respectivamente Os dados são transmitidos e recebidos através de write() e read() 2!
3 Função pipe() processo pipe() processo fd[0] fd[1] fork() pai fd[0] fd[1] fd[1] fd[0] filho Esquema de comunicação via pipe pipe(fd)! fork()! Para um pipe do pai para o filho, o pai fecha fd[0] e o filho fecha o fd[1].! Para um pipe do filho para o pai, ocorre o contrário.! close(fd[1])! close(fd[0])! read(fd[0])! write(fd[1])! close(fd[0])! close(fd[1])! Processo pai! Processo filho! 3!
4 Criando os canais com pipe() int fd[2]; // descritor dos pipes if (pipe(fd) < 0) puts ("Erro ao abrir os pipes"); exit (-1); Em caso de sucesso, a chamada à pipe() retorna 0 e fd[0] conterá o descritor de leitura e fd[1] o de escrita Em caso de falha, a função retorna -1 Função write() Utilizada para escrever dados em um arquivo ou qualquer outro objeto identificado por um descritor de arquivo (file descriptor) Definido em <unistd.h> ssize_t write(int fildes, const void *buf, size_t nbyte); Onde fildes : é o descritor do arquivo (ou do pipe) buf : endereço da área de memória onde estão os dados que serão escritos nbytes : número de bytes que serão escritos Valor retornado: Em caso de sucesso, a função retorna a quantidade de dados escritas Em caso de falha, o valor retornado difere da quantidade de bytes enviados 4!
5 Função read() Lê dados de um arquivo ou de qualquer outro objeto identificado por um descritor de arquivo Definido em <unistd.h> ssize_t read(int fildes,void *buf, size_t nbyte); Onde: fildes : descritor do arquivo buf : endereço de memória onde os dados serão armazenados depois de lidos nbyte : quantidade máxima de bytes que podem ser transferidos Retorna: Quantidade de dados lidos Exemplo do uso de pipe #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> int main (int argc, char *argv[]) int ndadostx, ndadosrx; // quantidade de dados transmitidos/recebidos int fd[2]; // descritor dos pipes const char textotx[] = "uma mensagem"; char textorx[sizeof textotx]; if (pipe(fd) < 0) puts ("Erro ao abrir os pipes"); exit (-1); ndadostx = write(fd[1], textotx, strlen(textotx)+1); printf("%d dados escritos\n", ndadostx); ndadosrx = read(fd[0], textorx, sizeof textorx); printf("%d dados lidos: %s\n", ndadosrx, textorx); close(fd[0]); close(fd[1]); return 0; 5!
6 Exemplo: pai escreve para o filho #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> void main () int fd[2]; pipe(fd); if (fork() == 0) /* filho */ close(fd[1]); /* fd[1] desnecessario */ read(fd[0],...); /* lê do pai */... else close(fd[0]); /* fd[1] desnecessario */ write(fd[1],...); /* escreve para o filho */... Outras formas de comunicação entre processos Named pipes (FIFO) usa o Sistema de Arquivos (mas não cria um arquivo de fato) Usa-se mkfifo() ou mknod()! Exemplo: mkfifo my_pipe! gzip -9 c < my_pipe > out.gz &! cat file > my_pipe!! rm my_pipe Anonymous pipe = apenas em uma direcão 12 6!
Comunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes
Comunicação Inter-Processo em Unix Pipes FIFO (Named Pipes) 1 Pipes 2 1! 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
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,
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
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
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
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
PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS
PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS Disciplina de Nivelamento - 2000/1: ALGORITMOS & ESTRUTURAS DE DADOS Professor Responsável: Prof. Fernando Santos
Inter-process Communication (IPC)
Inter-process Communication (IPC) Comunicação entre processos (1) Introdução Tubos (Pipes) Filas (FIFOs, Named Pipes) Comunicação entre Processos (1) Os sistemas operacionais implementam mecanismos que
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
Manipulação de Arquivos
Manipulação de Arquivos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Tipo
Inter-process Communication (IPC)
Inter-process Communication (IPC) Comunicação entre processos (1) Introdução Tubos (Pipes) Filas (FIFOs, Named Pipes) Comunicação entre Processos (1) Os sistemas operacionais implementam mecanismos que
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
Sistemas Operacionais II
Sistemas Operacionais II Aula 1 Autor: Renê de Souza Pinto Orientação: Prof. Dr. Francisco José Monaco [email protected], [email protected] Universidade de São Paulo Instituto de Ciências Matemáticas
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
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
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
Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza
Introdução Manipulação de arquivos em C Estrutura de Dados II Prof Jairo Francisco de Souza Manipulação de Arquivo em C Existem dois tipos possíveis de acesso a arquivos na linguagem C : sequencial (lendo
1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000
#include #include #include #define maxdiscos 1000 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 1ª versão int main() { DISCO listadiscos[maxdiscos];
http://www.csl.mtu.edu/cs4411/www/notes/process/fork/create.html
http://www.csl.mtu.edu/cs4411/www/notes/process/fork/create.html FORK() SYSTEM CALL * UTILIZADO PARA CRIAR SUBPROCESSO * PROCESSO QUE CRIA É PAI * PROCESSO CRIADO É O FILHO * APÓS A CRIAÇÃO AMBOS OS PROCESSO
Exercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento
1/5 Exercício 1 Um sistema de segurança militar, usado num submarino nuclear, controla o acesso de usuários a três subsistemas (armamento, navegação e comunicações) através da digitação do login do usuário
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
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
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
Persistência de Dados
Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD
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,
Construa a função insere_lista para inserir um elemento na lista ordenada, duplamente encadeada, descrita acima.
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO Disciplina: Sistemas Operacionais Teste de verificação de pré-requisitos Considere as definições de tipos abaixo: type Aponta_Nodo = ^Nodo; NODO Nodo = record Info
Computação 2. Aula 8. Profª. Fabiany Arquivos
Computação 2 Aula 8 Arquivos Profª. Fabiany [email protected] E/S com Arquivos A linguagem C não possui nenhum comando de E/S. Todas as operações de E/S ocorrem mediante chamadas a funções de biblioteca
Arquivos. Estruturas de Dados II Vanessa Braganholo
Arquivos Estruturas de Dados II Vanessa Braganholo Entidades } Aplicações precisam armazenar dados sobre as mais diversas entidades, que podem ser concretas ou abstratas } Funcionário de uma empresa (concreto)
Sistema de Entrada/Saída
Conteúdo Ficheiros ([email protected]) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos 2006-2007 2 Descritores de ficheiros Descritores
Algoritmos e Programação _ Departamento de Informática
16 ARQUIVOS Um arquivo corresponde a um conjunto de informações (exemplo: uma estrutura de dados-registro), que pode ser armazenado em um dispositivo de memória permanente, exemplo disco rígido. As operações
Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas
Apoio à Programação Distribuída bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas flexibilidade de programação disponibilidade da ferramenta facilidade de desenvolvimento e reuso
14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1
14. Arquivos W. Celes e J. L. Rangel Neste capítulo, apresentaremos alguns conceitos básicos sobre arquivos, e alguns detalhes da forma de tratamento de arquivos em disco na linguagem C. A finalidade desta
Manipulação de Arquivos
1 Manipulação de Arquivos Para realizar E/S em arquivo, você precisa incluir o arquivo-cabeçalho fstream.h nos programas. Esse arquivo define muitas classes e valores importantes. Abrindo e fechando um
Algoritmos de Busca em Tabelas
Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados
I/O de baixo-nível em ficheiros
7 I/O de baixo-nível em ficheiros Sumário: Introdução Funções de entrada/saída de baixo-nível Referência bibliográfica: W. Stevens. Advanced Programming in the UNIX Environment. Addison-Wesley, 1992 (cap.3,
Comunicação entre Processos Named Pipes (FIFO)
Comunicação entre Processos Named Pipes (FIFO) 5/17/18 1 Named pipe (FIFO) FIFO permite que dois processos quaisquer se comuniquem É um tipo especial de arquivo visível no sistema de arquivos Na troca
Estruturas de Dados. Profa. Juliana Pinheiro Campos
Estruturas de Dados Profa. Juliana Pinheiro Campos Arquivos ESTRUTURAS DE DADOS Técnicas para que possamos salvar e recuperar informações em arquivos de maneira estruturada. Assim será possível implementar
Experimentos com a memória cache do CPU
Experimentos com a memória cache do CPU Alberto Bueno Júnior & Andre Henrique Serafim Casimiro Setembro de 2010 1 Contents 1 Introdução 3 2 Desvendando o cache 3 2.1 Para que serve o cache?.....................
Firewalls de Aplicação WEB, Idiomas e Expressões Regulares. Condições de Bypass
Firewalls de Aplicação WEB, Idiomas e Expressões Regulares Condições de Bypass Glaudson Ocampos 18 de Novembro de 2009 SUMÁRIO 1 - INTRODUÇÃO... 03 2 - DESCRIÇÃO DO PROBLEMA...
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 **
Vetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos
Vetores Nos capítulos anteriores estudamos as opções disponíveis na linguagem C para representar: Números inteiros em diversos intervalos. Números fracionários com várias alternativas de precisão e magnitude.
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
Algoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
3 Introdução às chamadas ao sistema
3 Introdução às chamadas ao sistema 3.1 Chamadas ao sistema e à BIOS As chamadas ao sistema ou System Calls consistem nos serviços disponibilizados pelo núcleo do sistema operativo. O principio é semelhante
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)
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
Memória partilhada em Unix SysV
Memória partilhada em Unix SysV A forma mais geral de comunicação entre processos é através de memória partilhada. segmento de memoria partilhada Processo A Processo B p q Criação de um segmento de memória
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
17 - Funções e Procedimentos em C Programação Modular
17 - Funções e Procedimentos em C Programação Modular Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 17
Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior
Armazenamento de Dados Prof. Antonio Almeida de Barros Junior 1 Armazenamento de Dados Todos os dados que utilizamos até o momento, ficavam armazenados apenas na memória. Ao final da execução dos programas,
Sistemas de Operação Sockets
Sistemas de Operação Sockets O que é um socket? Uma interface de comunicação entre processos que podem ou não residir na mesma máquina, mas que não precisam estar relacionados. É usado normalmente para
PROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor
Fundamentos de Arquivos. SCC203 Algoritmos e Estruturas de Dados II
Fundamentos de Arquivos SCC203 Algoritmos e Estruturas de Dados II Arquivos Informação mantida em memória secundária HD Disquetes Fitas magnéticas CD DVD 2 Discos X Memória Principal Tempo de acesso HD:
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
Ciclo de Vida de um Processo
Nas aulas anteriores Ciclo de Vida de um Processo Marcelo Johann Conceito de Processo Mecanismo de Programação em C/UNIX Continuando Interrupções TRAP Chaveamento de Contexto Chamadas de Sistema INF01142
CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:
CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta
sockets interprocess communication Taisy Weber
sockets interprocess communication Taisy Weber Comunicação entre processos Mecanismos Pipes, FIFO (named pipes), semáforos, message queues. Memória compartilhada. Sockets Definição, chamadas de sistemas,
Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br
Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a
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
Conceitos e Chamadas de Sistema
Sistemas Operativos Conceitos e Chamadas de Sistema 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes ([email protected]) Chamadas de Sistema Conjunto de chamadas ao sistema pode
Trabalho 3: Agenda de Tarefas
INF 1620 Estruturas de Dados Semestre 08.2 Trabalho 3: Agenda de Tarefas O objetivo deste trabalho é a implementação de um conjunto de funções para a manipulação de uma agenda de tarefas diárias, de forma
Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão
Programação com Sockets TCP e UDP - Cliente Gustavo Leitão 5/24/2010 INTRODUÇÃO Objetivo da Aula OBJETIVO DA AULA Apresentar ao aluno conceitos e prática em sockets INTRODUÇÃO O que é um socket? INTRODUÇÃO
UFSM Introdução ao Dev-C++ Profa. Patrícia Pitthan. Introdução ao Dev-C++
Introdução ao Dev-C++ O Dev-C++ oferece um ambiente que integra um editor de textos a um compilador para linguagem C. O compilador usado pelo Dev-C++ é o gcc (Gnu C Compiler). 1) Primeiro programa Para
Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica
Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros
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
Manual do Desenvolvedor Criptografia de Arquivos do WebTA
Manual do Desenvolvedor Criptografia de Arquivos do WebTA Versão 1.4 Índice 1. Objetivo..3 2. Processo..3 3. API de Criptografia - Biblioteca Java..4 3.1 WEBTACryptoUtil..4 3.1.1 decodekeyfile..4 3.1.2
GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios
CURSO - TADS TURMA 2008.1 2 PERÍODO 3 MÓDULO AVALIAÇÃO MP2 DATA 02/10/2008 SISTEMAS OPERACIONAIS 2008/2 GABARITO COMENTADO SISTEMAS OPERACIONAIS PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida,
Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria
USP - ICMC - SSC SSC 0501-1o. Semestre 2015 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] icmc. usp. br, gmail. com Página Pessoal: http://www.icmc.usp.br/~fosorio/
