Gå til innhold

Anbefalte innlegg

Hei

 

Jeg har tidligere kodet nettverksapplikasjoner i Java og der er det en mulighet for å kunne overføre fra fil til nettverk direkte uten å gå gjennom maskinens minne og prosessoren. Jeg har i det siste begynt å kode C under Linux og lurte derfor på om det finnes noe tilsvarende da jeg ikke har behov for å hente filen jeg skal overføre sitt innhold til minnet først. Noen tanker om dette? Eventuelt da også fra fil til fil uten å gå gjennom minnet/prosessoren.

Endret av invictus
Lenke til kommentar
Videoannonse
Annonse

Takker. Tror jeg fant det jeg var ute etter på

http://www.ecst.csuchico.edu/~beej/guide/ipc/mmap.html

 

Det den gjør er altså å si at fra nå av skal man late som følgende peker er en vanlig peker mot minnet mens den i realiteten er i en fil? :)

 

Ser også at på første hit på zero-copy saken så brukes noe som heter sendfile(). Skal også ta en nærmere titt på den. Takk skal du ha.

Endret av invictus
Lenke til kommentar
  • 3 uker senere...
Hei

 

Jeg har tidligere kodet nettverksapplikasjoner i Java og der er det en mulighet for å kunne overføre fra fil til nettverk direkte uten å gå gjennom maskinens minne og prosessoren.

5983275[/snapback]

Uh. Styre bilen med rattet frakoblet? Det der går selvfølgelig ikke an. Du får ikke tak i ting på harddisken uten at det går igjennom prosessoren. Det du ser etter er en funksjon som leser inn fila bak kulissene og bare leser inn små biter som den sender or deretter leser inn nye biter til samme sted i minne.

Lenke til kommentar
Hei

 

Jeg har tidligere kodet nettverksapplikasjoner i Java og der er det en mulighet for å kunne overføre fra fil til nettverk direkte uten å gå gjennom maskinens minne og prosessoren.

5983275[/snapback]

Uh. Styre bilen med rattet frakoblet? Det der går selvfølgelig ikke an. Du får ikke tak i ting på harddisken uten at det går igjennom prosessoren. Det du ser etter er en funksjon som leser inn fila bak kulissene og bare leser inn små biter som den sender or deretter leser inn nye biter til samme sted i minne.

6135543[/snapback]

 

DMA f.eks. tillater jo overføring mellom minne og IO-enheter uten at det går gjennom CPU så det er definitivt mulig. Da eksisterer det egne kontroller som har en egen liten CPU for å ta seg av dette.

Endret av invictus
Lenke til kommentar
DMA f.eks. tillater jo overføring mellom minne og IO-enheter uten at det går gjennom CPU så det er definitivt mulig. Da eksisterer det egne kontroller som har en egen liten CPU for å ta seg av dette.

6140514[/snapback]

Nå var det snakk om å hverken benytte CPU eller minne på maskinen.

Lenke til kommentar
  • 2 måneder senere...

DMA står for Direct Memory Access. Det er generelt at man kan ha IO mot minnet, uten at prosesseron gjør mer enn å starte prosessen.

 

SCSI tror jeg også støtter direkte overføring mellom to SCSi-enheter på samme måte.

 

Muligheten for å direkte overføre fra filer generelt (f.x harddisk) til nettverk, det har jeg aldri hørt om. Og det tviler jeg på at finnes noen muligheter for å gjøre...

 

Edit:

Some hardware can bypass the main memory altogether and transmit data directly to another device. This feature eliminates a copy in the system memory and is a nice thing to have, but not all hardware supports it. There is also the issue of the data from the disk having to be repackaged for the network, which introduces some complications.

Mulig i teorien, men sjelden i praksis. Og neppe å finne i noe generelt OS per idag.

Endret av JBlack
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...