Informatieprocessen
Inleiding - informatieprocessen
In de Informatica hebben we te maken met statische informatie-elementen, bijvoorbeeld programma's, gegevens, machines. En we hebben te maken met processen - dynamische elementen. Dit kunnen informatieprocessen zijn, waarbij het alleen gaat om informatie. Het kan ook om fysische processen gaan, die we vanuit een informatieproces observeren en/of besturen. In het onderstaande bedoelen we met proces: informatieproces. Als het om een fysisch proces gaat, geven we dit expliciet aan.
Een proces speelt zich af in de tijd. Een proces wordt uitgevoerd door een actor (machine), volgens een script (programma). Bij een proces kan invoer verwerkt worden. Daarnaast levert een proces altijd een resultaat.
In de ICT wordt een proces uitgevoerd door een fysieke machine; voor het uitvoeren van een proces zijn dan resources nodig, zoals "ruimte", tijd, en energie.
Een proces kan een puur informatieproces zijn: externe fysische processen spelen dan geen rol. Een proces kan ook gekoppeld zijn aan een extern fysisch proces. Vanuit het informatieproces kunnen we een fysisch proces waarnemen en eventueel besturen.
Een programma beschrijft een proces, of liever gezegd: een verzameling processen. Deze verzameling is vaak zeer groot: zo groot dat het volstrekt onmogelijk is om deze uitputtend te testen, in een black-box situatie. Dit betekent dat we andere middelen moeten gebruiken als we universele uitspraken over de processen van een programma willen doen.
Voorbeelden uit het dagelijks leven
- een boek is een statisch element. Het lezen van een boek is een proces. Het resultaat hiervan is een verandering in je hersenen.
- je kunt een boek opslaan in een boekenkast.
- je kunt een boek terughalen uit een boekenkast. Dit gaat handiger als het op een systematische manier opgeslagen is - bijvoorbeeld op alfabet.
- opslaan en terughalen zijn verschillende processen. De organisatie die nodig is voor het snel terughalen kun je ook tussentijds uitvoeren.
- er zijn verschillende manieren van organiseren mogelijk: als je het direct terug kunt vinden, zonder te zoeken, spreek je over adressering; in andere gevallen moet je zoeken. Zoals gezegd gaat zoeken handiger als de elementen gesorteerd zijn.
Vorm of betekenis?
Bij sommige processen speelt de betekenis geen rol: het gaat alleen om de vorm (de bits, in digitale systemen). Dit is het geval bij: dupliceren, transporteren, opslaan en terughalen, coderen/decoderen. Bij deze processen wordt de vorm zo goed mogelijk bewaard, meestal exact (bit voor bit). Er treedt geen verlies van informatie op.
- de componenten die deze processen ondersteunen zijn universeel: geheugen, harde schijf, lokaal netwerk of internetverbinding: alle informatie wordt betrouwbaar opgeslagen of getransporteerd. Dit betekent ook dat de markt voor deze componenten erg groot is: ze zijn overal te gebruiken, onafhankelijk van de toepassing.
Bij andere processen speelt de betekenis wel een rol.
Snelheid van een proces
Bij de snelheid van een proces - met betrekking tot de uitvoer in relatie tot de invoer - hebben we altijd te maken met twee aspecten:
- throughput (doorvoer): de capaciteit, in bits/seconde, waarmee de resultaten geproduceerd worden.
- latency (vertraging; ook wel: delay): de tijd, in seconde, die het kost tussen het verschijnen van de invoer en het verschijnen van de bijbehorende uitvoer.
Je kunt dit vergelijken met een weg met auto's:
- de doorvoer is de capaciteit van de weg, in auto's/seconde; deze kun je vergroten door de weg breder te maken, en door een hogere maximumsnelheid toe te staan (als je afstand tussen de auto's gelijk blijft);
- de vertraging is de tijd die een enkele auto nodig heeft om de hele weg af te leggen. Deze wordt kleiner als je de weg korter maakt, en als je een hogere maximumsnelheid toestaat.
De maximumsnelheid in dit geval kun je vergelijken met de kloksnelheid van een processor: het heeft zin om deze groter te maken, maar op een bepaald moment zitten fysische verschijnselen je in de weg. (De lichtsnelheid, of de warmte-ontwikkeling.)
Elementaire informatieprocessen
- dupliceren
- bewaren (opslaan) en terughalen
- transporteren
- coderen (en decoderen)
- representeren
- interpreteren
- rekenen
- besturen (van fysisch proces; van informatieproces)
- invoer (verwerven van informatie)
- uitvoer
- interactie
Deze processen kom je in alle lagen tegen.
- dupliceren: van gekoppelde draden tot het kopiëren van bestanden
- opslaan en terughalen: van flipflop tot database
- transporteren: van draad tot internet
- rekenen: van en-poort tot mainframe
Een proces in een hogere laag maakt vaak gebruik van vrijwel alle andere elementaire processen in lagere lagen.
Opbouw van een computer:
- rekeneenheid: ALU
- besturing: program counter, instructiedecodering
- bewaren en terughalen: registers, geheugen
- transporteren: draden
- in- en uitvoer
Het proces van dupliceren gebeurt vaak impliciet, bijvoorbeeld bij het uitlezen van een geheugen. (Vroegere geheugens waren soms destructief: na het uitlezen moest je de inhoud weer herstellen.)
Dupliceren
Het eenvoudigste informatieproces is het dupliceren van informatie. Een voorbeeld uit de natuur is het dupliceren van DNA, zoals dat bij celdeling gebeurt. In de ICT vinden we dit van de onderste lagen, bijvoorbeeld in de hardware, tot het kopieëren van een bestand door een gebruiker. (Bij het lezen van een boek maak je eigenlijk ook een kopie in je hoofd - zij het meestal een minder getrouwe kopie dan bij het drukken van een boek.)
Je kunt (digitale) informatie zeer betrouwbaar kopiëren: je ziet het verschil niet tussen het origineel en de kopie.
Voorbeelden:
- impliciete kopie - bij uitlezen van geheugen
- impliciete kopie - bij transporteren van pakketten over internet
- kopiëren van een bestand
- kopiëren van DNA bij celdeling
- drukken van een boek; lezen van een boek
Transporteren
Op het laagste niveau transporteren we informatie door deze over een draad te sturen. Op een veel hoger niveau transporteren we pakketten over het internet.
Opslaan en terughalen
Opslaan en terughalen zijn twee verschillende processen, die wel een direct verband hebben. Je kunt, na het opslaan van de informatie, deze op allerlei manieren organiseren, om het terughalen efficiënter te maken. Denk bijvoorbeeld aan sorteren, het gebruik van hashing, of het gebruik van speciale boomstructuren.
De organisatie bij het opslaan kan afwijken van het terughalen. Je kunt informatie langs verschillende manieren terughalen, bijvoorbeeld door gebruik te maken van verschillende “keys”.
Adresseren
Een adres stelt ons in staat om een gegeven (vorm) op te slaan en terug te halen zonder te zoeken. De toegangstijd (vertraging) is constant (O(1)), en niet afhankelijk van het aantal gegevens in het geheugen, of van het gegeven dat we opslaan of terughalen. We spreken dan ook wel over Random Access.
- geheugen-ic
- primair geheugen
- secondair geheugen (harde schijf, SSD)
- programma: array; pointer
- file systeem (filenaam, padnaam)
- database: index
Opmerking: op het fysische niveau speelt de omvang van het geheugen (of van de schijf) wel een rol: hoe groter het geheugen, des te groter de vertraging. Dit heeft te maken met twee effecten: voor een groter geheugen heb je te maken met langere verbindingen; en, snelle geheugens zijn veel duurder (chip-oppervlak, energie-verbruik). In de praktijk heb je daarom te maken met een geheugen-hiërarchie: een reeks stappen van zeer snelle registers naar bulk-geheugen. Bij moderne processoren hebben we een aantal niveau's van caching. Een dergelijke caching werkt alleen als we het geheugen op een bepaalde manier gebruiken: locality of reference is essentieel voor het voordeel van caching.
Ook bij het transporteren hebben we te maken met adressen. Deze worden gebruikt bij routering. Ook hier geldt dat we dankzij een adres niet hoeven te zoeken. De vertraging is wel afhankelijk van de omvang van het netwerk.
Absolute adressen
Een absoluut adres is onafhankelijk van de context.
Relatieve adressen
Een relatief adres is afhankelijk van de context.
Indirectie
Een adres kan verwijzen naar een adres, in plaats van naar het eigenlijke gegeven dat we zoeken. In zo'n geval is er sprake van indirectie.
Zoeken
Zoeken in een gesloten verzameling
Een voorbeeld van een gesloten verzameling is het filesysteem op je harde schijf: je weet precies welke bestanden hierin horen, en welke niet. Als je een bestand zoekt op je harde schijf, en je vindt het niet, dan weet je zeker dat het bestand er niet is.
Zoeken in een open verzameling
Een voorbeeld van een open verzameling is het web: je weet niet precies welke bestanden hiertoe behoren, en je weet vrijwel zeker dat je het niet volledig kunt doorzoeken. (Google loopt altijd wat achter bij het indiceren van het web.)
Als je in het web zoekt naar bepaalde informatie, en je vindt deze niet, dan betekent dat niet dat deze informatie er niet is.
Coderen (en decoderen)
Bij coderen en decoderen gaat er geen informatie verloren: de vorm wordt aangepast, bijvoorbeeld om deze te beschermen tegen verlies van informatie (kanaalcodering); of, om deze te beschermen tegen afluisteren (versleuteling).
Deze transformatie is reversibel: decode(encode(M)) = M, voor alle berichten M. Met andere woorden: de originele vorm wordt hersteld.
Compressie
Er zijn twee vormen van compressie:
- de reversibele vorm, ook wel broncodering genoemd: decomp(comp(M)) = M.
- irreversibele compressie; deze zou je doelcodering kunnen noemen. Omdat je weet waarvoor het bericht bedoeld is, kun je de nodige "irrelevante" informatie weglaten. Je maakt hierbij bijvoorbeeld gebruik van eigenschappen (beperkingen) van de menselijke sensoren en signaalverwerking (ogen, oren).
Representeren
Interpreteren
Rekenen
Bij rekenen gaat informatie verloren.
Vorm of betekenis?
Bij sommige processen speelt alleen de vorm (de bits) een rol; de betekenis is niet van belang. Bij andere processen hebben we wel te maken met de betekenis, eventueel in een vorm op een hoger niveau.
Alleen vorm | Vorm en betekenis |
---|---|
dupliceren | representeren |
transporteren | interpreteren |
opslaan & terughalen | rekenen |
coderen | |
broncodering | doelcodering |
Complexe processen, hoog niveau
- leren
- programmeren(?)
- innoveren(?)
- evolutie
- denken(?)