Informatieprocessen: verschil tussen versies
Regel 104: | Regel 104: | ||
Ook de betrouwbaarheid neemt sterk af als je buiten het computersysteem komt, of buiten het lokale netwerk. Je moet bij een gedistribueerd systeem er altijd rekening mee houden dat een verbinding, of een verbonden systeem uit kan vallen. | Ook de betrouwbaarheid neemt sterk af als je buiten het computersysteem komt, of buiten het lokale netwerk. Je moet bij een gedistribueerd systeem er altijd rekening mee houden dat een verbinding, of een verbonden systeem uit kan vallen. | ||
==== Broadcast ==== | |||
Je kunt informatie ook alle kanten uitzenden (broadcast). Dit is het model van radio - zowel van de oude analoge radio, als van WiFi en GSM. Je laat het dan aan de ontvanger(s) over om de relevante berichten eruit te halen. | |||
In de natuur komen we een broadcast van informatie tegen in de vorm van feromonen en hormonen. | |||
=== Opslaan en terughalen === | === Opslaan en terughalen === |
Versie van 30 nov 2014 21:58
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.
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
- interactie
- transformeren (bijv. coderen en decoderen)
- representeren
- interpreteren
- rekenen
- besturen (van fysisch proces; van informatieproces)
- invoer (verwerven van informatie)
- uitvoer
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.
Je kunt (digitale) informatie zeer betrouwbaar kopiëren: je ziet het verschil niet tussen het origineel en de kopie.
Dupliceren gebeurt vaak impliciet
Veel informatieprocessen hebben impliciet het dupliceren van informatie tot gevolg. Denk bijvoorbeeld aan het uitlezen van een geheugen: het geheugen houdt de oorspronkelijke waarde, hoe vaak dit ook uitgelezen wordt. Het verspreiden van informatie betekent ook dat er kopieën gemaakt worden. Bij een broadcast is dat direct duidelijk. Maar ook als er via het internet een bestand verstuurd wordt, zijn er in alle tussenliggende systemen kopieën van het origineel aanwezig. Meestal zijn deze tijdelijk - maar daar heb je geen zicht op.
In een programma kom je deze impliciete duplicatie tegen als je een waarde van een variabele op verschillende plaatsen gebruikt.
Geen verlies van informatie
Bij dupliceren van informatie vindt er geen verlies plaats: het origineel en de kopie kunnen precies gelijk zijn. (Bij een analoge kopie is dit niet het geval, maar een digitale kopie kun je heel betrouwbaar maken. Ook in het geval van celdeling wordt er een zeer betrouwbare kopie van het origineel gemaakt - met een zeer kleine kans op fouten.)
Reversibel?
Als je een kopie maakt van een origineel, tast dit het origineel niet aan. Dit betekent dat je nooit kunt nagaan of er een kopie gemaakt is, van het origineel, of van een kopie van een kopie... Met andere woorden: als je informatie verspreidt, heb je de verspreiding daarvan niet echt meer in de hand. Als je een kopie gemaakt hebt, kun je dat eigenlijk niet meer ongedaan maken.
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.
Adresseren en routeren (unicast)
In de meeste gevallen transporteren we informatie van punt naar punt. Ook in het internet is dit de gebruikelijke manier: een pakket wordt verstuurd naar een computer met een bepaald IP-adres.
Een onderdeel van transporteren is de adressering en routering: je moet de informatie op de juiste plaats bezorgen (en liefst ook nog op het juiste moment).
In een programmeertaal kom je het transporteren van informatie, net als het dupliceren, alleen impliciet tegen. Expliciet transport vind je bijvoorbeeld bij verkeer tussen client en server. (In het geval van JavaScript in de browser: AJAX verzoeken.)
Transporteren: afstand speelt een grote rol
Transporteren van informatie gaat meestal met de lichtsnelheid, of met een snelheid die daarbij in de buurt komt (ca. 50-70% van de lichtsnelheid). Dit lijkt snel, maar is ten opzichte van snelheid waarmee computers rekenen al gauw niet meer te verwaarlozen. (De lichtsnelheid is ongeveer een voet (30cm) per nanoseconde: dat is één klokpuld van 1 GHz.)
Ook de betrouwbaarheid neemt sterk af als je buiten het computersysteem komt, of buiten het lokale netwerk. Je moet bij een gedistribueerd systeem er altijd rekening mee houden dat een verbinding, of een verbonden systeem uit kan vallen.
Broadcast
Je kunt informatie ook alle kanten uitzenden (broadcast). Dit is het model van radio - zowel van de oude analoge radio, als van WiFi en GSM. Je laat het dan aan de ontvanger(s) over om de relevante berichten eruit te halen.
In de natuur komen we een broadcast van informatie tegen in de vorm van feromonen en hormonen.
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”.
Complexe processen, hoog niveau
- leren
- programmeren(?)
- innoveren(?)
- evolutie
- denken(?)