Bitstream - Bitstream
En bitstrøm (eller bitstrøm ), også kendt som binær sekvens , er en sekvens af bits .
En bytestream er en sekvens af bytes . Typisk er hver byte en 8-bit mængde , og derfor bruges udtrykket oktetstrøm undertiden om hverandre. En oktet kan kodes som en sekvens på 8 bits på flere forskellige måder (se bit nummerering ), så der er ingen entydig og direkte oversættelse mellem bytestreams og bitstrømme.
Bitstreams og bytestreams bruges i vid udstrækning til telekommunikation og computing . F.eks. Bæres synkrone bitstrømme af SONET , og Transmission Control Protocol transporterer en asynkron bytestream.
Forholdet mellem bitstreams og bytestreams
I praksis bruges bitstrømme ikke direkte til at kode bytestreams; en kommunikationskanal kan bruge en signalmetode, der ikke direkte oversættes til bits (for eksempel ved transmission af signaler med flere frekvenser) og typisk også koder for anden information såsom indramning og fejlkorrektion sammen med dens data.
Eksempler
Udtrykket bitstream bruges ofte til at beskrive de konfigurationsdata, der skal indlæses i et feltprogrammerbart gate array (FPGA). Selvom de fleste FPGA'er også understøtter en byte-parallel-indlæsningsmetode, kan denne anvendelse muligvis stamme baseret på den almindelige metode til konfiguration af FPGA fra en seriel bitstrøm, typisk fra en seriel PROM- eller flash-hukommelseschip . Det detaljerede format for bitstrømmen for en bestemt FPGA er typisk proprietær for FPGA-leverandøren.
I matematik er flere specifikke uendelige sekvenser af bits blevet undersøgt for deres matematiske egenskaber; disse inkluderer Baum – Sweet-sekvensen , Ehrenfeucht – Mycielski-sekvensen , Fibonacci-ordet , Kolakoski-sekvensen , regelmæssig papirfoldesekvens , Rudin – Shapiro-sekvensen og Thue – Morse-sekvensen .
På de fleste operativsystemer , herunder Unix-lignende og Windows , konverterer standard I / O-biblioteker sidet eller pufret filadgang på lavere niveau til et bytestream-paradigme. Især i Unix-lignende operativsystemer har hver proces tre standardstrømme , der er eksempler på envejs bytestreams. Den Unix rør mekanisme giver bytestream meddelelser mellem forskellige processer.
Kompressionsalgoritmer koder ofte i bitstrømme, da de 8 bits, der tilbydes af en byte (den mindste adresserbare hukommelsesenhed), kan være spild. Selvom de typisk implementeres på sprog på lavt niveau , tilbyder nogle sprog på højt niveau som Python og Java native grænseflader til bitstream I / O.
Et velkendt eksempel på en kommunikationsprotokol, der leverer en byte-stream-service til sine klienter, er Transmission Control Protocol (TCP) i Internetprotokol-pakken , som giver en tovejs bytestream.
Den Internettet medietype for et vilkårligt bytestream er application / octet-stream . Andre medietyper er defineret for bytestreams i velkendte formater.
Flow kontrol
Ofte oprettes indholdet i en bytest dynamisk, såsom data fra tastaturet og andet perifert udstyr (/ dev / tty), data fra pseudorandom-talgeneratoren ( / dev / urandom ) osv.
I de tilfælde, hvor destinationen for en bytestream (forbrugeren) benytter bytes hurtigere, end de kan genereres, bruger systemet behandler synkronisering til at gøre destinationen vente indtil næste byte er tilgængelig.
Når bytes genereres hurtigere end destinationen kan bruge dem, er der flere teknikker til at håndtere situationen:
- Når producenten er en softwarealgoritme, holder systemet producenten på pause med de samme processynkroniseringsteknikker.
- Når producenten understøtter flowkontrol , sender systemet kun klar signal, når forbrugeren er klar til den næste byte.
- Når producenten ikke kan sættes på pause - det er et tastatur eller anden hardware, der ikke understøtter flowkontrol - forsøger systemet typisk at gemme data midlertidigt, indtil forbrugeren er klar til det, typisk ved hjælp af en kø . Ofte kan modtageren tømme bufferen, før den bliver helt fuld. En producent, der fortsætter med at producere data hurtigere, end den kan forbruges, selv efter at bufferen er fuld, fører til uønsket bufferoverløb , pakketab , netværksbelastning og tjenestenekt .