Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. Ola pessoal,

    Alguem sabe se named pipes (mknod(2)) bufferizam as informacoes entre o processo A (write()) para o processo B (read()) em disco ou em RAM??

    O arquivo-pipe eh criado em disco (para q 'qualquer' processo possa fazer open()). MAS, reparei q o tamanho do arquivo nao muda, eh sempre 0 (mesmo com dados 'armazenados').

    Preciso trocar dados da maneira mais rapida possivel entre 2 processos (sem nenhum parentesco: fork(), exec(), etc).

    Shared memo. seria outra saida, mas complicaria em 10 a implementacao e, deve ser muito mais lerdas do q named pipes SE essas forem em RAM (IMHO).

    (sockets nem pensar )

    Valeu! Brigado!

    -------------------------------------
    a2gs
    C/C++ POSIX code 4 Sex, Money & Fun!! Eh claro!

  2. sem parentesco??? threads num resolve teu problema?



  3. shared memory e semaphores e interessante para voce acessar uma regiao em comum de memoria que voce queira... mas como fosse disse complicaria um pouco o codigo.

    jah que voce nao tem como fazer childs voce vai ter que usar essa saida de shared memory ou entao como fez diz ae usando named pipes, eu nunca trabalhei com nenhum dos dois, afinal eu nao sou programador, mas eu desconfio que ambos sao trabalhados na memoria RAM.

    Duvido muito que seja em disco, acho que voce vai ter que ler o man pages ou uma documentacao mais detalhada para tirar a duvida de fato, mas o meu piteco vai para RAM

  4. #4
    hez4el
    Também acredito q seja seja processado em ram.
    O kernel do linux tem como caracteristica escrever em ultimo caso na partição de disco, primeiro ele vai utilizar /dev/ram depois a swap e por ultimo o disco para evitar fragmentação. ele guarda em arquivo de paginação em memória, isso desde o 0.6.* .
    Talvez vc tenha q utilizar semaforos mesmo... que são uma boa pratica
    ou os ja citados named pipes.

    Abraços.



  5. humm... certo.

    eh, na verdade verdadeira eu nao falei, mas a comunicacao seria entre threads: o processo A ira criar (por exemplo) 5 threads e o processo B, 5 threads (por isso q nao eh uma boa usar sockets). Eles devem se comunicar numa relacao de 1 pra 1.
    (Se eu fosse usar apenas 2 ou 3 pipes, poderia remanejar STDIN_FILENO/STDOUT_FILENO/STDERR_FILENO via um processo X, que carregaria A e B, +/- (mais pra menos) como o qMail... mas, no way)

    Estava vendo o fonte do mknod(), passei pela sys_mknod(), vfs_mknod() e dai em diante nao consegui mais acompanhar (meu kong-fu precisa melhora muuuuito ainda (fs/namei.c))

    Procurei na inet, achei 1001 textos explicando como usar mknod(), mas nenhum explicando a sua implementacao. Precisava de alguma literatura como 'Linux Kernel Internal' ou algo assim... e nao tenho.
    Tentei intepretar o man da forma mais detalhada possivel, mas ele nao da nenhuma pista de como o write()/read() funcionam sobre pipes. Apenas diz sobre a criacao do arquivo-pipe em disco e do acesso ao pipe via credenciais (como qualquer arquivo, mas ate ai, eh coisa do open(), nao tanto do write()/read()).

    Bem... farei assim, a primeira versao usarei named pipes pra nao ficar complicando muito (melhor do q threads acessando shared memo) e entregar o projeto mais rapido possivel. Depois, com mais tempo, implemento uma versao com shared memo. Faco um benchmark das 2 versoes e descrevo o resultado aqui pra futuras pesquisas/curiosidades

    (Li por cima algo sobre 'Handle Passing' no livro UNP1 do Richard Stevens (esse eh "O Cara" ): a ideia eh passar descriptors entre processos (como se fossem simples dados)! Mas terei q ver melhor... parece q pra essa ideia terei tambem q ter o tal processo X)

    Valeu galera!! Brigado mesmo! Qualquer ideia eh bem vinda, e o q eu conseguir fazer/descobrir, descrevo aqui.

    -------------------------------------
    a2gs
    C/C++ POSIX code 4 Sex, Money & Fun!! Eh claro!






Tópicos Similares

  1. Como gravar fitas VHS em HD ou CD ou DVD?
    Por Edilmar no fórum Sistemas Operacionais
    Respostas: 2
    Último Post: 20-02-2006, 09:40
  2. Respostas: 3
    Último Post: 22-06-2005, 08:47
  3. Espaço em hd!!!
    Por no fórum Servidores de Rede
    Respostas: 2
    Último Post: 09-08-2003, 16:00
  4. ISO em hd ..
    Por no fórum Servidores de Rede
    Respostas: 4
    Último Post: 15-01-2003, 00:38
  5. Banco de dados em Access
    Por Mr_Dexter no fórum Servidores de Rede
    Respostas: 4
    Último Post: 16-12-2002, 21:28

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L