Operativsystemer

I artiklene om datateknologi beskrives datamaskinens hardvare, det vil si hvilke deler en datamaskin består av, og hvordan de fungerer. Men hardvare er ikke nok. For å få nytte av maskinen, må vi også ha programvare til å kjøre på den. Hvilke programmer vi legger inn på maskinen vil variere, eksempler på populære programmer er tekstbehandlingsprogrammet Microsoft Word, og nettleseren Google Chrome.

På alle datamaskiner kjører imidlertid et hovedprogram, operativsystemet, ofte forkortet OS. Operativsystemet samordner og administrerer maskinens mange deler. Det gjør det også mulig for mennesker å kommunisere med maskinen og å kjøre programmer, slik som Word og Chrome. Et velkjent eksempel på et operativsystem er Windows, som er dominerende på hjemme-PC-er. Andre eksempler er Linux, Unix, og Mac OS.

Operativsystemets oppgaver
Operativsystemet administrerer datamaskinen

Operativsystemets hoveddeler

Operativsystemet består av to hoveddeler, kjernen og skallet. Kjernen ligger innerst og kommuniserer med maskinvaren. Skallet ligger ytterst og kommuniserer med brukerne.

Kjerne og skall
Operativsystemets to hoveddeler, kjernen og skallet

Kjernen

Kjernens hovedoppgaver er å

    • Administrere ressursene på maskinen, det vil si å sørge for at brukere og programmer deler ressursene rettferdig, uten å komme i konflikt med hverandre. De viktigste ressursene er:
      • Prosessortid.
      • Internminne (RAM).
      • Filsystem.
      • Utføre basisoperasjoner:
    • Registrere inndata fra brukerne, slik som tastetrykk, museklikk, og musebevegelser.
    • Sende utdata til skjerm og skrivere.
    • Kommunisere med nettverket.
    • Få operativsystemet i gang når maskinen slås på. Dette kalles gjerne booting, eller bootstrapping.

Administrering av prosessortid

At et program kjører på en datamaskin, betyr at det behandles av datamaskinens hjerne, prosessoren (CPU). På en datamaskin kjører gjerne en mengde programmer, som igjen kan bestå av en mengde enkeltprosesser. Mange datamaskiner har også ofte mange samtidige brukere. Men selv på en datamaskin med bare én prosessor, får tilsynelatende alle brukerne kjørt sine programmer samtidig. Dette er takket være operativsystemet, som sørger for at alle prosesser får sin rettmessige del av prosessorens arbeidskraft. Vi snakker om

Fleroppgavekjøring (Multitasking). Flere programmer kjører samtidig.

Flertrådet kjøring (Multithreading). Et program deles opp i flere prosesser (tråder), som kan kjøre samtidig.

Flerbrukerkjøring (Multi-user). Flere brukere kan kjøre samtidig.

Mange brukere kan altså kjøre mange programmer, som igjen kan bestå av mange prosesser. Operativsystemet selv eier også en mengde prosesser. Ved å la prosessoren bytte lynraskt mellom prosessene, skapes en illusjon av at alt kjører samtidig.

Skjematisk kan vi tenke oss at alle prosessene står i kø for å få kjøretid, og når de har fått sin tid, stiller de seg bakerst igjen – inntil de er ferdige og går ut av køen. En slik strategi heter round robin, og er den enkleste formen for prosessprioritering (scheduling). I praksis brukes imidlertid ofte mer innfløkte prioriteringsstrategier.

En annen sak er at en prosess ofte ikke er klar til å kjøre fordi den venter på noe, for eksempel data fra en I/O-enhet, så som et tastetrykk. I løpet av tiden mellom to tastetrykk kan en prosessor utføre millioner av operasjoner, så det ville være meningsløst å beholde en slik ventende prosess i køen. Den plasseres i stedet i ei liste med suspenderte prosesser, inntil den igjen er klar. Dette er illustrert under:

Livsløpet til en prosess
Livsløpet til en prosess

Administrering av internminne

Programmer som kjører, så vel som data de arbeider på, ligger i internminnet (RAM). Operativsystemet sørger for at alle programmer får tildelt sitt eget område i minnet, og holder kontroll på at ikke noe program får tilgang til andre programmers data. Prosesser (tråder) som tilhører samme program, kan imidlertid dele data.

Internminnet er ofte ikke stort nok til å holde på all informasjon samtidig. Operativsystemet håndterer dette ved en prosess som heter sideveksling, der deler av minnet som for øyeblikket ikke er i bruk, dumpes til harddisken, og kopieres inn igjen ved behov. En teknikk som heter virtuelt minne gjør at alt allikevel, sett fra prosessorens synsvinkel, tilsynelatende ligger i internminnet. Det finnes en mengde teknikker for å avgjøre hvilke deler av internminnet som skal dumpes til disk, en vanlig metode er LRU, «Least Recently Used», som velger de delene av internminnet som har vært minst brukt den siste tiden.

Jo mindre internminne en maskin har, jo oftere må operativsystemet kopiere inn og ut fra disk. Siden lesing og skriving på disk er mye langsommere enn lesing og skriving i internminne, vil for lite internminne føre til en treg maskin. Det finnes en kritisk grense, der maskinen brått går over fra å fungere tilfredsstillende til å bli uakseptabelt treg.

Filsystem

Data som skal beholdes når datamaskinen slås av, lagres i filer på et medium der informasjonen beholdes når strømmen blir borte. (Ikke volatilt) Dette er gjerne maskinens harddisk, men kan også være en nettverksdisk, flash-minne, eller et hvilken som helst ikke-volatilt medium. Operativsystemet holder rede på disse dataene ved hjelp av et filsystem.

I tidlige filsystemer lå alle filene på en lang rekke etter hverandre, men i dag brukes hierarkiske systemer. Det vil si at filene organiseres i mapper (kataloger), som også kan inneholde andre mapper. Øverst ligger en spesiell mappe som kalles rotmappa. Når vi tegner opp et slikt filsystem, får det form som et tre med rota i været. Dette er illustrert i figuren under, som viser et filhierarki med fire nivåer. På øverste nivå finner vi rotmappa, som inneholder mappene «Privat», «Fag» og «Sport». «Privat» inneholder fila «Brevmal.doc» og mappa «Velforening». «Velforening» inneholder igjen fila «Navneliste.doc» og mappa «Referater», etc. I praksis inneholder et filsystem mange flere nivåer, og mange flere mapper og filer på hvert nivå.

Filehierarki
Hierarkisk filstruktur

Mens vi i internminnet kan lese og skrive én og én enhet (byte), kan vi i filsystemet bare lese grupper av enheter. Den teoretisk minste gruppen er en sektor, men sektorene er i praksis gruppert i klynger, (clusters) som den minste enheten som kan lese og skrives. En typisk harddisk-klynge på en PC inneholder fire kilobytes. Vi kan imidlertid selv justere dette, ved å endre på hvor mange sektorer en klynge skal inneholde. En klynge kalles også en tildelingsenhet.

Siden en klynge er den minste lagringsenheten, vil en fil alltid oppta minst like mange lagringsenheter som det er i en klynge. Selv en fil med et innhold på bare 1 byte vil altså legge beslag på 4 kilobytes i et filsystem med en klyngestørrelse på 4 kilobytes. Filer som er for store til å få plass i en enkelt klynge, fordeles på flere klynger. Disse kan gjerne være spredd utover lagringsmediet.

Ved hjelp av tabeller holder operativsystemet rede på den hierarkiske strukturen i filsystemet, og hvilke klynger filene befinner seg i. Tabellen inneholder også informasjon om ledige klynger, og eventuelt ødelagte klynger.

Når vi sletter en fil, gjør ofte operativsystemet bare en oppdatering av filtabellen ved å markere filens klynger som ledige. Selve fildataene forblir urørt. Det vil derfor ofte være mulig å hente fram igjen en slettet fil, så lenge ikke det er lagt inn noe nytt som har overskrevet klyngene.

Administrasjon av brukere og rettigheter

Vi ønsker ofte å begrense hvem som får bruke en datamaskin, og det er operativsystemets oppgave å sørge for tilgangskontroll. Den som vil inn, må logge på med brukernavn og passord, som operativsystemet så kontrollerer mot sine lister.

Etter innlogging sørger operativsystemet for å begrense brukerens aktiviteter til det vedkommende har rettigheter til. Rettigheter tildeles gjerne på forskjellige nivåer. På laveste nivå finnes gjestebrukere – med svært begrensede privilegier, på høyeste nivå superbrukere / administratorer med alle rettigheter.

Når mange brukere har tilgang til samme datamaskin, må operativsystemet sørge for at de ikke går i beina på hverandre. Det vil si sørge for at hver bruker får sin private plass i internminnet, at alle brukernes prosesser får kjøre, og at de enkelte brukernes filer og mapper holdes fra hverandre.

Filer og mapper har rettigheter som administreres av operativsystemet. Typiske rettigheter er «lese», «skrive», «opprette», «endre» og «kjøre». Rettighetene til eieren av ei fil eller mappe, vil kunne være forskjellig fra andres rettigheter. Operativsystemene har avanserte mekanismer for å styre fil- og mappetilganger.

Bootstrapping

For at vi skal kunne bruke en datamaskin, må den ha et operativsystem på plass. Når maskinen starter opp, må det derfor finnes en mekanisme som sørger for at operativsystemet kommer i gang. At denne mekanismen er operativsystemets oppgave, later til å være en cactch 22: Vi må ha lastet inn et operativsystem for å få lastet inn operativsystemet. Dette har gitt opphav til navnet bootstrapping, som visstnok kommer fra en historie der Baron von Münchhausen unnslapp drukningsdøden ved å hale seg selv opp etter skolissene.

I praksis løses problemet ved å la prosessen gå i flere trinn. En liten del av operativsystemet ligger hardkodet i datamaskinen, og begynner automatisk å kjøre når maskinen skrues på. Denne delen sørger så for at en større del av operativsystemet lastes inn fra disk, og denne kan igjen brukes til å laste inn enda mer, etc.

På en PC lokaliseres de første delene i et ROM-minne som heter BIOS. BIOS er et akronym for Basic Input Output System, men betyr også «liv» på gresk. En del av innholdet i BIOS kan endres av brukeren, vi kan for eksempel velge om den videre oppstarten skal skje fra harddisk, CD-ROM eller nettverk.

BIOS sørger for at det kjøres POST, Power On Self Test, der det sjekkes hva slags hardvare som er til stede, for eksempel hvor mye internminne maskinen har, og at hardvaren fungerer.

Deretter overføres kontrollen til en oppstartsenhet, det vil si harddisk eller nettverk, alt etter hva brukeren har satt i BIOS. Fra oppstartsenheten leses først hovedpartisjonssektor (Master Boot Record), deretter lastes resten av systemet.

Skallet

Skallets oppgave er å gjøre brukeren i stand til å kommunisere med kjernen. I tidlige datamaskiner foregikk dette ved hjelp av et tekstskall, der brukeren skrev kommandoer på tastaturet, og fikk svar i form av tekst. Moderne datamaskiner har imidlertid ofte grafiske skall (GUI). Her kommuniserer brukeren ved å peke, klikke og dra. Et slikt skall er for eksempel det som møter oss når vi starter Windows.

Selv om grafiske skall er brukervennlige, har tekstskall også sine fordeler. De er lite ressurskrevende, og mye mer fleksible enn grafiske skall. Har vi for eksempel hundre filer der vi vil bytte ut «.txt» i filnavnet med «.py», gjøres det enkelt med noen få kodelinjer, i stedet for å hundre ganger måtte klikke på en fil, velge «bytt navn» fra en meny, og skrive inn navneendringen.

Figuren under bruker et tekstskall og et grafisk skall fra Windows til å vise innholdet i ei mappe som heter «Privat», og inneholder fila «Brevmal.doc» og mappa «Velforening».

Grafisk skall
Grafisk skall
Tekstskall
Tekstskall. («<DIR>» betyr «directory», altså «mappe».)

Kjernemodus og brukermodus

Det kan virke underlig at det er kjernen som tar imot tastetrykk fra brukerne, siden brukerkommunikasjon er skallets oppgave. Imidlertid er det kjernens oppgave å kommunisere med alle enheter som er tilkoplet datamaskinen. Det som skjer er at skallet ved hjelp av systemkall ber kjernen om å utføre oppgaver for seg, for eksempel å få data fra tastaturet. Når dette skjer, går prosessoren over fra å kjøre i brukermodus til å kjøre i kjernemodus, og det er kun i kjernemodus at det gis tilgang til vitale deler av maskinen. På den måten sikrer en seg mot at brukere tilsiktet eller utilsiktet ødelegger for seg selv eller andre.

I praksis brukes ofte mange lag av sikkerhetsringer i stedet for bare to modi.

Noen gamle operativsystemer, slik som MS-DOS, hadde ingen slike sikkerhetssystemer, slik at brukeren enkelt kunne krasje maskinen fullstendig.

Kilder

    • Forelesningsnotater av Marit Fagernes
    • Bård Kjos: Informasjonsteknologi. Tapir Akademisk forlag, 2004

Informasjonskoding

Artikkelen om logiske porter og artikkelen om tallsystemer beskriver hvordan en datamaskin bruker totallsystemet (det binære tallsystemet) til å behandle informasjon, for eksempel kodes tallet 4210 som 1010102. Men også alt annet som lagres i en datamaskin, dokumenter, programmer, bilder, musikk, film, etc., kodes i totallsystemet, det vil si som sekvenser av 1 og 0. Ved hjelp av bare to ulike symboler er det altså mulig å representere all informasjon i hele verden!

Koding av tekst

Å kode tekst er rimelig liketil, vi tilordner bare et tall til hvert enkelt tekstsymbol. Til å begynne med ble slik tilordning gjort ganske tilfeldig, slik at metoden varierte fra system til system og gjorde det vanskelig å flytte informasjon fra en datamaskin til en annen. For å bøte på problemet ble ASCII-systemet innført.

ASCII

ASCII står for «American Standard Code for Information Interchange», og var det første standardiserte systemet for oversetting mellom tekst og tall.

Et utvalg ASCII-koder er vist under. Som vi ser, kodes f.eks. «A» som 6510 = 4116 = 10000012, «a» som 9710 = 6116 = 11000012, etc.

Tegn Desimal kode Heksadesimal kode Binær kode   Tegn Desimal kode Heksadesimal kode Binær kode
6 54 36 110110 Z 90 5A 1011010
7 55 37 110111 [ 91 5B 1011011
8 56 38 111000 \ 92 5C 1011100
9 57 39 111001 ] 93 5D 1011101
: 58 3A 111010 ^ 94 5E 1011110
; 59 3B 111011 _ 95 5F 1011111
< 60 3C 111100 ` 96 60 1100000
= 61 3D 111101 a 97 61 1100001
> 62 3E 111110 b 98 62 1100010
? 63 3F 111111 c 99 63 1100011
@ 64 40 1000000 d 100 64 1100100
A 65 41 1000001 e 101 65 1100101
B 66 42 1000010 f 102 66 1100110
C 67 43 1000011 g 103 67 1100111
D 68 44 1000100 h 104 68 1101000
E 69 45 1000101 i 105 69 1101001
Utdrag av ASCII-tabellen

Den første ASCII-tabellen inneholdt bare 95 tegn, og den tok ikke hensyn til at det ville bli behov for å kode bokstaver som ikke ble brukt i engelsk, for eksempel «Æ», «Ø» og «Å». For å kunne representere nasjonale bokstaver, ble det laget en del klatteløsninger, der kodene varierte fra system til system. Det kunne f.eks. medføre at mens vi på skjermen så bokstavene «Æ», «Ø» og «Å», ble de forvandlet til «[«, «\» og «]» på utskrifter.

Det ble derfor laget en utvidet tabell med ytterligere 96 koder, extended ASCII (ISO 8859).

Unicode

De 191 kodene i extended ASCII blir allikevel for lite hvis vi skal representere all verdens skriftsymboler. Det er derfor utviklet et nytt kodesystem, Unicode som inneholder over 50.000 symboler, tegn fra alfabetene i alle levende, og enkelte utdødde språk. Det er til og med foreslått å innarbeide Tolkiens alvespråk Tengwar, og Star Trek språket Klingon i Unicode. Unicode utvides ved behov, noe som f.eks. skjedde da Euro-symbolet «€» ble introdusert.

Koding av sammensatt informasjon

Koding av bilder, film, musikk, etc. er mer komplisert enn koding av tekst, men prinsippet er det samme, vi følger et sett gitte regler for å oversette informasjon til tall.

Regelen for å oversette farger baserer seg på at alle farger kan bygges opp av de tre grunnfargene rød, grønn og blå. Ved å variere styrken på disse, kan en mengde fargenyanser representeres. Intensiteten på hver av grunnfargene angis ved hjelp av en styrkeskala som går fra 0 til 255 (FF16), noe som gir i alt 256 * 256 * 256 = 16 777 216 = 1 000 00016 kombinasjonsmuligheter, langt flere varianter enn øyet kan skjelne.

Fargestyrken angis med to heksadesimale sifre for hver farge (åtte binære), i rekkefølgen rød – grønn – blå. For eksempel betyr 473F8A16 = 0100011100111111100010102 en fargenyanse med en styrke på 4716 rødt, F816 grønt og 8A16 blått.

I bildet under kan du variere styrken på fargekomponentene, og se både hvordan den resulterende fargen blir, og hvilken heksadesimal kode som brukes til å representere den.

 

Rød

Grønn

Blå

Fargekode: 000000

Men et bilde består sjelden av en enkelt farge, slik som her. Da deler vi bildet opp i enkeltelementer, piksler, og angir fargen piksel for piksel. Bildet over inneholder 125 * 125 = 15625 piksler.

Informasjonsmengden som trengs for å kode et bilde, kan bli svært stor, og for å spare plass, kan vi utføre en billedkompresjon. I bildet over for eksempel, trenger vi ikke gjenta fargekoden 15625 ganger. Siden bildet bare har én farge, er det nok å angi fargekoden én gang, samt informere om hvor stort bildet er.

Når vi skal lagre et bilde vi har arbeidet med i et billedbehandlingsprogram, må vi velge hva slags format vi vil bruke. Eksempel på billedlagringsformater er JPEG, TIFF, GIF, PNG og BMP. Hver av disse har sin egen måte å kode billedinformasjonen på.

Dekoding

Når vi skal hente ut informasjon fra datamaskinen og presentere den på skjerm eller skriver, må den dekodes. Det vil si at sekvensene av 1 og 0 må oversettes tilbake til det som var utgangspunktet, en tekst, et bilde, etc. For at dette skal være mulig, må vi vite hvordan kodingen er gjort. Kjenner vi ikke koden, er det umulig å reprodusere noe korrekt. Det er for eksempel ikke mulig å avgjøre om tallsekvensen 42524116 er en ASCII-kode som representerer ordet «BRA», om det er en fargenyanse med Rød = 4216, Grønn = 5216 og Blå = 4116, eller noe helt annet.

Opplysning om hvilken koding som er brukt, lagres i navnet som referer til et sett informasjon, filnavnet. Slutter et filnavn på «txt», har vi med bokstaver og tegn å gjøre. «jpg» er en type billedformat, «mp3» er et komprimert musikkformat, etc. Blir navnet feil, blir informasjonen mistolket. Et eksempel er vist under, der et bilde i jpg-format, «mandrill.jpg» har fått endret navn til «mandrill.txt». Datamaskinen tror da det dreier seg om tekst, og åpner bildet i teksteditoren Notisblokk. Den binære informasjonen som egentlig beskriver et bilde, blir tolket som meningsløse sekvenser av bokstaver og tegn.

Mandrill
mandrill.jpg
Feiltolkning av bildefil
mandrill.txt

Med nye generasjoner programvare kommer nye formater, gamle forsvinner, og generasjonene går fort i dataverdenen. Vi risikerer derfor at informasjon som lagres i dag, er uleselig om få år, fordi vi ikke lenger har nøkkelen til å dekode den. Dette problemet er spesielt stort ved såkalte proprietære formater, der en bedrift har patent på et format, og innholdet ikke er offentlig kjent, slik det er i åpne standarder. For å kunne dekode informasjon lagret vha. en bedrifts programvare, er vi helt avhengige av at bedriften fortsetter å eksistere, og fortsetter å levere programvare til bruk på nyere generasjoners maskiner.

Kilder

    • Gisle Hannemyr: Hva er Internett. Universitetsforlaget 2005

Tidlige datamaskiner

Babbages differanse- og analysemaskiner

For å kunne beskrive naturvitenskaplige fenomener, for eksempel forutsi når tidevannet var på sitt høyeste og laveste, var vitenskapsmenn avhengige av store tabellverk over vanlige matematiske funksjoner, som logaritmer, potenser, kvadratrøtter, etc. Slike tabeller ble beregnet for hånd av mennesker, kalt «computers». Til tross for at disse var utvalgt på grunn av sin store flid, nøyaktighet og regneevne, inneholdt tabellene deres mengder av feil. Derfor begynte Charles Babbage (1791-1871) å leke med tanken på at slike tabeller burde kunne beregnes mer nøyaktig av en maskin.

I 1822 startet han arbeidet med differansemaskinen, et mekanisk monstrum bestående av tannhjul, tapper og sveiver. Teknologien for å produsere tannhjulene var imidlertid ikke presis nok, og maskinen ble aldri ferdig. Han designet senere en ny utgave, men den ble heller ikke ferdig. I 1991 bygde imidlertid Science Museum i London denne maskinen, basert på Babbages originale tegninger. Maskinen virket perfekt, og produserte resultater med 31 siffer, langt mer enn dagens lommekalkulatorer gjør.

Basert på erfaringene med differansemaskinen ga Babbage seg i kast med en ny, mer generell maskin, analysemaskinen. Han hadde da klare ideer om maskinens generelle virkemåte. Maskinen skulle ha:

  • Egne formålstjenlige inngangsenheter.
  • Spesialisert aritmetisk enhet.
  • Sentral kontroll- og styreenhet.
  • Separate datalagre.
  • Egne utskriftsenheter.

En annen revolusjonerende idé var at Babbage så for seg at analysemaskinen skulle kunne programmeres. Dette mente han kunne gjøres ved hjelp av hullkort, etter modell av Jaquards vevstol.

Ada Lovelace (1815-1852) utviklet programmer til analysemaskinen, og sies derfor å være verdens første programmerer. I 1979 fikk hun programmeringsspråket Ada oppkalt etter seg.

På grunn av tekniske vanskeligheter og finansieringsproblemer, ble analysemaskinen heller aldri ferdig.

Charles Babbage
Charles Babbage
Differansemaskinen
Differansemaskinen i Science Museum, London

Holleriths hullkortmaskiner

Databehandlingen etter 1880-folketellingen i USA tok 7½ år, og kongressen utlyste derfor en konkurranse hvor de etterlyste bedre måter å tabulere resultatene på. Herman Hollerith (1860-1929) vant konkurransen overlegent med sin hullkortmaskin, basert på ideene fra Babbage og Jacquard. Maskinen talte opp data ved å føle etter hull i gitte posisjoner i pappbiter. Hollerith startet et firma for produksjon og salg av hullkortmaskiner. Dette firmaet ble senere til «International Business Machines», IBM. Hullkortmaskiner fikk stor praktisk anvendelse, og var enerådende fram til slutten av femtitallet.

Nordmannen Fredrik Rosing Bull (1882-1925) utviklet forbedrede utgave av hullkortmaskinene. Bulls oppfinnelser dannet grunnlaget for firmaet Bull.

Konrad Zuse og relé-maskinene

Tyskeren Konrad Zuse (1910-1995) var en sivilingeniør i konstruksjonsteknikk som på fritiden bygde datamaskiner hjemme i stua, sammen med sin gode venn Helmut Schreyer. Zuse introduserte det revolusjonerende konseptet å basere maskinen på det binære tallsystemet i stedet for det desimale. Den første maskinen, Z1, sto ferdig i 1937. Maskinen var rent mekanisk, men etterfølgeren, Z2, var delvis elektrisk, basert på telefonreleer.

Z3 som ble demonstrert i 1941, regnes som verdens første, fullt operative og programstyrte datamaskin. Z3 ble ødelagt under krigen, men en kopi er bygd, og befinner seg i Deutches Museum i München.

På grunn av det politiske klimaet var Zuses arbeid lite kjent blant samtidige forskere i England og USA.

Reproduksjon av Z3
Reproduksjon av Z3 i Deutches Museum, München

COLOSSUS

COLOSSUS var en hel-elektronisk digital maskin basert på radiorør, bygget under andre verdenskrig med det formål å knekke krypteringskodene i tyske meldinger som ble snappet opp. COLOSSUS ble kjørt første gang i desember 1944, og brøt krypteringskoden den var matet med i løpet av 10 minutter.

Colossus
Engelske kvinnelige militære kjører COLOSSUS

Atanasoff-Berry maskinen

Med det formål å løse ligninger, utviklet John Vincent Atanasoff (1903-1995) og hans hovedfagsstudent Clifford E. Berry (1918-1963) en maskin de kalte ABC, Atanasoff-Berry Computer. Maskinen som sto ferdig i 1942 var digital, og introduserte en ny form for datalagring ved hjelp av kondensatorer.

Mange av Atanasoffs konsepter ble videreført i ENIAC. Men Atanasoff fikk i 1971 etter mange rettssaker slått fast at han bygde den første elektroniske, digitale datamaskin.

Atanasoff-Berry maskinen
Skisse av Atanasoff-Berry maskinen

ENIAC

Basert på ideene til Atanasoff ble ENIAC, «Electronic Numerical Integrator And Computer», bygget. Maskinen sto ferdig i 1946, og var den første fullskala, generelle elektroniske digitale datamaskin. I motsetning var Atanasoff-Berry maskinen og COLOSSUS ikke generelle, og Z3 var ikke elektronisk, men elektro-mekanisk, fordi den inneholdt releer.

ENIAC besto av 17.468 radiorør, 1500 releer og 87.200 andre elektroniske komponenter. Den inneholdt 5 millioner håndloddede koplingspunkter, veide 27 tonn, okkuperte 167 m2 gulvplass, og hadde et effektforbruk på 150 kW. Med 2004-teknologi ville en tilsvarende maskin fått plass på en 0,5 mm2 stor brikke.

Data ble lest inn ved hjelp av en IBM-hullkortleser, og skrevet ut ved hjelp av en IBM-hullkort-puncher.

Målet med ENIAC var å raskt kunne beregne baner for ballistiske prosjektiler, men maskinen sto ikke ferdig før i 1946 da krigen var over.

ENIAC var ikke binær, men arbeidet i desimalsystemet.

ENIAC ble etterfulgt av maskinene EDVAC og UNIVAC, den første kommersielle datamaskin.

Eniac
ENIAC

Analoge datamaskiner

Det er verd å merke seg at digitale maskiner ikke alltid har vært enerådende. I naturvitenskap og teknikk finnes en lang rekke problemer som best løses ved hjelp av partielle differensialligninger, det vil si en kombinasjon av integraler. Slike problemer kan simuleres ved hjelp av analoge datamaskiner, der et problem løses ved hjelp av egenskapene til mekaniske eller elektroniske komponenter. De første analoge maskinene var rent mekaniske, bestående av skiver, kuler og hjul, men mekanikken ble etter hvert erstattet av elektronikk basert på såkalte operasjonsforsterkere.

Analoge datamaskiner ble blant annet benyttet til å beregne tidevannsbølger og prosjektilbaner.

Analoge datamaskiner er ikke lenger i særlig bruk.

Gonnellas integrator
Gonnellas hjul-på-skive integrator.

Kilder

    • Per A. Holst: Datateknologiens utvikling. Tapir Akademisk forlag, Trondheim 2001

PC-arkitektur

Von Neumann-arkitekturen

En datamaskin styres av programmer, det vil si sekvenser av instruksjoner som forteller hva den skal foreta seg. Det kan for eksempel være å addere to tall, flytte tall fra én plass til en annen, eller hoppe til en instruksjon på et annet sted.

De første datamaskinene inneholdt ikke programmer, men ble styrt av en mengde koplinger som måtte endres hver gang maskinen skulle utføre en ny oppgave, noe som kunne ta dagevis. Det var derfor en revolusjon da John von Neumann i 1946 foreslo at en datamaskin kunne styres av programmer som lagres i maskinen på samme måte som andre data. Dette ga opphav til den så kalte von Neumann-arkitekturen, som er det vanligste prinsippet i moderne datamaskiner, og enerådende i PC-er. Instruksjonene er lagret i internminnet, og behandles én for én av en prosessor.

Von neumann-arkitekturen
Von Neumann-arkitekturen. Programmene lagres på samme måte som data. 

Hovedkomponenter

Grovt sett kan en si at en PC består av komponentene prosessor (CPU), internminne (RAM), inn/ut-enheter (I/O), og en systembuss. Databehandlingen foregår i prosessoren. Den henter sine instruksjoner fra primærlageret, og data skyfles fram og tilbake mellom prosessoren, primærlageret og inn/ut-enhetene, alt via systembussen. Dette er illustrert i figuren under.

PC-arkitektur
Overordnet PC-arkitektur, med eksempler på vanlige I/O-enheter

Prosessoren

Prosessoren er datamaskinens hjerne. I en PC består prosessoren av en enkelt integrert krets og kalles en mikroprosessor. Verdens første mikroprosessor ble lansert av Intel i 1971, og Intel har siden da forsynt markedet med stadig nye generasjoner mikroprosessorer.

Fra 1971 til 2025 har antallet transistorer i en mikroprosessor økt fra ca. 2300 til ca. 184 milliarder, det vil si at antallet er fordoblet om lag 26,25 ganger. Dette stemmer bra ifølge Moores lov, som sier at antall transistorer i en mikroprosessor vil fordobles annethvert år, altså (2025 – 1971) / 2 = 27 ganger i denne perioden.

Prosessorens hovedkomponenter

Figuren under viser et forenklet, skjematisk diagram av en mikroprosessor.

Mikroprosessorens arkitektur
De viktigste komponentene i en mikroprosessor
ALU

ALU står for ′Arithmetic/Logic Unit′. Ved hjelp av logiske porter utfører ALU elementær aritmetikk, eller avgjør om en logisk betingelse er sann eller usann.

Registre

Registrene er små, lynraske minneceller. Verdiene som ALU opererer på ligger i registre, dit legges resultatene som ALU produserer, og ALU bruker dem til mellomlagringer. Instruksjonsregistret inneholder den instruksjonen som ALU for øyeblikket arbeider med, og instruksjonspekeren er et register som forteller hvor i internminnet neste instruksjon skal hentes.

Bussgrensesnitt

Bussgrensesnittet håndterer prosessorens kommunikasjon med omverdenen.

Instruksjonshenter

Instruksjonshenteren sørger for å, via bussgrensesnittet, hente neste instruksjon som skal utføres, og overlate den til instruksjonsdekoderen.

Instruksjonsdekoder

Instruksjonsdekoderen dekoder instruksjonen som ALU skal utføre, og plasserer resultatet i registre.

Prosessorens arbeidssyklus

I prinsippet gjennomføres en prosessors arbeidssyklus slik:

  1. Instruksjonshenteren sjekker instruksjonspekeren (programtelleren) for å finne ut hvilken adresse i internminnet neste instruksjon skal hentes fra, og kontakter bussgrensesnittet med denne informasjonen.
     
  2. Instruksjonen kommer inn via bussgrensesnittet.
     
  3. Instruksjonspekeren settes til å peke på neste instruksjon.
     
  4. Instruksjonen dekodes av instruksjonsdekoderen og resultatet lagres i registre.
     
  5. ALU utfører instruksjonen, og resulterende verdier plasseres i registre. Dersom instruksjonen er en hopp-instruksjon, oppdateres registret som inneholder instruksjonspekeren. (En hopp-instruksjon er en instruksjon som forteller at programutførelsen skal fortsette en ny plass)

I praksis er det hele mer komplekst, moderne prosessorer inneholder blant annet komponenter som hele tiden prøver å hente instruksjoner og data før det faktisk blir behov for dem.

Prosessorens arbeidssyklus styres av ei klokke. Selv om det kan variere hvor mange klokketikk en prosessor trenger for å utføre en oppgave, gir klokkehastigheten allikevel en pekepinn på prosessorens arbeidskapasitet. 

Moderne prosessorer har flere kjerner, noe som gjør det mulig å behandle flere instruksjoner i parallell.

Innpakning

Moderne prosessorer leveres i flate, keramiske pakninger med tilkoplingspunktene i form av en benmatrise på undersiden. Dagens prosessorer produserer svært mye varme som må ledes bort, og er derfor påmontert kjølevifte. Tidligere utgaver arbeidet med lavere klokkefrekvens, og gikk ikke så varme. En kan derfor i eldre PC-er finne prosessorer med kjøleribber, eller uten noe kjølesystem i det hele tatt.

Overside av prosessor Underside av prosessor Prosessor med påmontert kjølevifte
Mikroprosessor sett fra oversiden og undersiden, samt kjølevifte

Internminnet

Internminnet er en lagringsplass for data og programmer, som prosessoren hyppig refererer til når den arbeider. Internminne kalles også gjerne primærminne eller RAM. RAM beskrives nærmere i artikkelen om datalagring

Systembuss

Systembussen er PC-ens nervesystem, og frakter informasjon rundt mellom de forskjellige enhetene. Den består av tre hoveddeler: Databuss, adressebuss og kontrollbuss. Databussen frakter selve dataene. Adressebussen brukes for å fortelle hvor data skal skrives eller leses. Dette kan enten være et sted i RAM, eller på en I/O-enhet. Kontrollbussen brukes til å overføre forskjellige kontrollsignaler mellom enhetene.

I/O-enheter

Moderne PC-er er utstyrt med USB-porter, der en kan kople til eksterne enheter. USB står for ′Universal Serial Bus′, og er egentlig en egen buss som er koplet til PC-ens PCI-buss. Det meste av moderne utstyr beregnet på PC-tilknytning, kan koples til en USB-port. Minnepinner, digitalkameraer, skannere, skrivere, mus, tastatur, etc. De første USB-portene hadde begrenset kapasitet, med en overføringshastighet på 1,5 Mbits/s, altså 1,5 millioner informasjonsenheter (bits) per sekund. Senere kom en ny standard, USB 2, med en overføringshastighet på 480 Mbits/s, og denne er igjen blitt fulgt av USB 3, med en hastighet på opptil 20 Gbits/s.

Symbolet for en USB-tilkopling ser slik ut:
USB-symbol

I en periode var busstandarden FireWire (IEEE 1394) et raskere alternativ enn USB, og PC-er ble levert med FireWire-kontakter. FireWire ble typisk brukt til utstyr som skulle overføre store mengder data, slik som digitale videokameraer. Men med nye superraske USB-standarder, er ikke FireWire lenger så mye i bruk.

Moderne datamaskiner kan også kommunisere med nettverk, enten trådløst eller via en nettverkskabel.

Cache

Sett i forhold til hastigheten en mikroprosessor arbeider med, kan det ta svært lang tid å hente data fra internminnet. En PC er derfor utstyrt med cache, som er et hurtig minne knyttet til prosessoren via en lynrask buss. Cache inneholder utdrag av det som finnes i internminnet, og egne styringskretser prøver å sørge for at utdraget til enhver tid er det som prosessoren skal arbeide med.

I tillegg til cache i form av en separat minnebrikke, har en moderne mikroprosessor også en egen cache plassert direkte på selve prosessorbrikken. Denne har svært liten lagringskapasitet, men er til gjengjeld ekstremt rask.

Kilder

    • Jarle Aase, Clemet Thærie Bjorbæk: Maskinvare og operativsystemer. Fagbokforlaget 2004
    • Deborah Morley, Charles S. Parker: Understanding Computers: Today and Tomorrow. Thomson Course Technology 2006
    • Bård Kjos: Innføring i informasjonsteknologi. Tapir Akademisk forlag, Trondheim 2005
    • Per A. Holst: Datateknologiens utvikling. Tapir Akademisk forlag, Trondheim 2001
    • Cornelia Brodahl. Materiale fra INF 104, HiA 2005

Datalagring

En datamaskin vil alltid ha behov for å lagre data, enten midlertidig eller permanent. Siden en datamaskin arbeider i totallsystemet, gjør den vanligvis dette ved å la «tilstedeværelse» bety 1, og «ikke tilstedeværelse» bety 0, slik det beskrives i artikkelen om tallsystemer. Det kan være tilstedeværelse av en elektrisk ladning, magnetisme, hull i ei papplate, mikroskopiske merker i en optisk disk, etc.

Et lagringsmedium er enten volatilt (flyktig) eller ikke-volatilt. Et volatilt medium mister sin informasjon når kraftforsyningen (strømmen) forsvinner, mens et ikke-volatilt beholder den.

Denne siden gir en oversikt over teknologier som har vært brukt gjennom tidene. Elektronisk datalagring har imidlertid etter hvert blitt fullstendig dominerende.

Mekaniske media

De første datamaskinene som ble bygget, var rent mekaniske, og baserte datalageret på posisjonen til tannhjul, stag eller pinner. Også hullkortet var opprinnelig en rent mekanisk innretning, der følere registrerte hvor det var stanset hull i ei papplate. Senere ble følerne erstattet med optiske lesere, og hullkort var i bruk helt opp til 1980-årene.

Hullkort
Hullkort med del av et Fortran-program

Mekaniske media er ikke-volatile.

Magnetiske media

Magnetiske media baserer seg på materiale som kan magnetiseres. Styrken eller retningen på magnetfeltet i et gitt punkt avgjør om punktet representerer 0 eller 1.

Magnetiske media er ikke-volatile.

Kjerneminne

Kjerneminne består av en matrise med små magnetiserbare ringer. Kjerneminne er for lengst historie, og i moderne datamaskiner erstattet av elektroniske komponenter. Det er allikevel verdt å nevne fordi det engelske navnet, «core memory», av og til dukker opp som betegnelse på en maskins internminne.

Kjerneminne
Kjerneminne

Magnetbånd

På samme måte som magnetbånd kan benyttes til å spille inn lyd og bilde, kan det også brukes til å lagre data. Et magnetbånd er en lang plaststrimmel med et magnetiserbart belegg. Fra begynnelsen av femtitallet til ut på åttitallet var magnetbåndet en viktig lagringsenhet. I stormaskiner i form av store båndspoler, og i hjemmedatamaskiner i form av kassetter.

En klar ulempe med magnetbånd er at de er et sekvensielle. Hvis datamaskinen for eksempel befinner seg i begynnelsen av båndet og skal ha tak i noe på slutten, må den spole dit, noe som tar lang tid og gir mye slitasje. Harddisker har derfor overtatt det meste av båndet rolle.

Magnetbånd brukes imidlertid fremdeles til sikkerhetskopiering, der data leses og skrives sekvensielt. Men i stedet for store spoler brukes små, kompakte kassetter.

10,5 tommers båndspole
10,5 tommers båndspole
Stormaskin
CDC-6600 stormaskin fra 1970-årene med en rekke båndspoler
Kassetter
1/4 tommers kassetter til sikkerhetskopiering

Harddisker

En harddisk består av et antall plater som roterer med høy hastighet. Platene har et tynt, magnetiserbart belegg på begge sider, der dataene er lagret i konsentriske spor, som igjen er delt opp i sektorer, slik det er vist i skissen under. En sektor er den minste enheten som kan leses eller skrives til disken.

Prinsippskisse av harddisk
Prinsippskisse av en harddisk

Data hentes fra og lagres på platene ved hjelp av lese/skrivehoder. Disse hodene er ikke i berøring med platen, men svever på luftstrømmen mindre enn en hundre tusendels millimeter fra overflaten, noe som tilsvarer om lag en ti­tusendedel av tykkelsen på et menneskehår. Hodene kan bevege seg på tvers av platene, og derved nå all informasjon rimelig kjapt.

På grunn av at hodene beveger seg så nærme den magnetiske overflaten at de vil kollidere med noe så lite som en røykpartikkel, er lufta inne i en harddisk 100 % ren. På fabrikken monteres og forsegles harddiskene i absolutt støvfrie rom. Tar man lokket av en harddisk i et vanlig rom, er den ødelagt.

Harddisk
Harddisk med lokket fjernet

Magnetiske harddisker er imidlertid i stor grad erstattet av det elektroniske lagringsmediet SSD.

Disketter

For å flytte data fra en maskin til en annen var disketter lenge enerådende. Ny programvare ble gjerne også levert på diskett. En diskett minnet i prinsippet om en harddisk, men besto bare av ei enkelt plate. Som det engelske navnet «floppy disk» antyder, var den laget av tynn, bøyelig plast. Lese/skrivehodene ble klemt inn mot plata i stedet for å sveve over, og levetiden var derfor begrenset.

Tidlige disketter hadde en diameter på 8, senere 5 1/4 tommer, og den magnetiserbare skiva lå i noe som nærmest var en konvolutt av papp. Deretter kom 3 1/2 toms disketter med konvolutten erstattet av et hardt plasthylster.

Lagringskapasiteten på disketter utviklet seg imidlertid lite, og ble i mange år liggende på 1,44 MB. Den lave kapasiteten og dårlige driftssikkerheten gjorde at diskettens æra tok slutt.

Diskett
Komponentene i en diskett:
1: Tagg for skrivebeskyttelse
2: Nav
3: Beskyttelseslokk
4: Plasteske
5: Papir
6: Magnetiserbar disk med spor og sektorer tegnet inn.
7: Eksempel på en sektor.

Elektroniske media

Elektroniske media lagrer informasjon ved hjelp av elektroniske komponenter og kretser.

Elektroniske media finnes i både volatile og ikke-volatile former.

RAM

Navnet RAM står egentlig for «Random Access Memory», og henspiller på at skriving og lesing kan gjøres hvor som helst i mediet, i motsetning til for eksempel bånd som må skrives/leses i sekvens, og disker som må skrives/leses sektorvis. Det finnes imidlertid lagringsmedia som er «Random Access», selv om de ikke har RAM i navnet, så begrepet er litt misvisende.

I dagligtale brukes begrepet RAM om en datamaskins internminne, slik det beskrives i artikkelen om PC-arkitektur.

RAM er volatilt, og finnes i to hovedtyper: Dynamisk, DRAM, og statisk, SRAM.

DRAM bruker ladningen i en kondensator til å representere 0 eller 1. Teknikken krever få komponenter pr. minnecelle (bit), noe som betyr at integrerte kretser med denne teknikken får høy kapasitet. Ulempen er at ladningen i en kondensator lekker ut, slik at den må oppfriskes med jevne mellomrom. Mens oppfriskning pågår, kan data ikke leses eller skrives på brikken, noe som nedsetter hurtigheten. Det finnes et utall undervarianter av DRAM, blant annet den raskere, mye brukte SDRAM.

SRAM bruker ikke kondensatorer, men logiske porter til å representere 0 eller 1. I artikkelen om logiske porter, vises det hvordan dette kan gjøres. SRAM trenger ikke oppfriskes, og blir derved mer effektivt enn DRAM. Ulempen er at SRAM krever mange flere komponenter pr. minnecelle, og derfor blir dyrere.

NB! Selv om SRAM ikke trenger å oppfriskes, er det allikevel volatilt. All informasjon forsvinner når strømmen skrus av.

Bildet under viser RAM-brikker i forskjellig montasje. Lengst til venstre er en enkelt RAM-brikke i «Dual In Line Package», DIP. Så følger et kretskort med RAM-brikker i «Single In-line Pin Package», SIPP. Deretter to varianter av «Single In-line Memory Module», SIMM. Så to varianter av «Dual In-line Memory Module», DIMM, og en «Direct Rambus DRAM», RDRAM. Lengst til høyre vises en «Small Outline DIMM», SO-DIMM.

RAM
RAM-brikker i forskjellig montasje

ROM

ROM står for «Read Only Memory», og er minne som er beregnet på i hovedsak å leses.

ROM er ikke-volatilt.

Data i ROM kan være skrevet inn én gang for alle på en fabrikk, men det finnes varianter som lar brukeren lagre data selv, én eller flere ganger:

I PROM, «Programmable ROM», brenner brukeren inn sine data ved hjelp av en PROM-brenner. Den fungerer ved å brenne av små sikringstråder der en skal lagre 0, og ikke brenne trådene der en skal lagre 1. PROM kan bare brennes én gang.

I en EPROM, «Erasable Programmable ROM», lagres data på en mindre drastisk måte enn i en PROM. Ved hjelp av floating gate transistorer representeres 1 og 0 ved hjelp av små, elektriske ladninger. Ladningene lekker svært langsomt ut, slik at en EPROM vil kunne beholde sitt innhold i ti – tjue år. I motsetning til PROM kan en EPROM programmeres flere ganger, men før den programmeres på nytt, må den tømmes for gammelt innhold. Dette gjøres ved å utsette brikken for ultrafiolett lys. En EPROM kan derfor kjennes igjen på at den har et vindu. Vinduet er imidlertid vanligvis dekket med en etikett for å unngå utilsiktet sletting.

EPROM
EPROM med blottlagt vindu

I EEPROM, «Electronically Erasable Programmable» ROM kan innholdet slettes elektronisk. Sletting kan gjøres minnecelle for minnecelle, det er ikke nødvendig å slette alt på en gang, slik som i EPROM. Sletting av en minnecelle tar imidlertid lang tid, flere millisekunder.

Hver sletting av en ROM-brikke sliter på den, men moderne brikker tåler ti tusenvis av slettinger.

Flash

Flash er en variant av EEPROM, men innholdet trenger ikke slettes celle for celle, men kan nullstilles blokkvis – i en «flash». Det betyr at flash er raskt nok til å være et praktisk medium for både for lagring og lesing. Det er ikke-volatilt, slik at lagrede data vil bli liggende selv om strømmen koples fra.

Flash memorysticks, såkalte minnepinner, ble svært populære på begynnelsen av 2000-tallet, og kom i mange fancy innpakninger.

USB-flash i Swiss Army-modell USB-flash i sushi-modell
USB-flash i Lego-modell USB-flash i standard-modell
Diverse utgaver av flash minnepinner

Lagringskapasiteten på minnepinner kan være flere TB.

SSD

Solid-state drive, SSD, er et elektronisk lagringsmedium som nesten fullstendig har erstattet vanlige harddisker. SSD inneholder ingen bevegelige deler, og er derfor mer robust og fullstendig stillegående. Lav vekt er også en fordel, spesielt i bærbare PC-er. SSD er nesten utelukkende basert på flash.

Per 2025 finnes SSD-disker med kapasitet på 36 TB.

Optiske media

Optiske media er basert på refleksjon av lys. 1 og 0 representeres ved reflekterende eller ikke-reflekterende punkter i en roterende overflate.

Optiske media er ikke-volatile.

CD

CD står for «Compact Disc», og er en plastskive med et sjikt reflekterende materiale. Data er organisert i spor og sektorer, mye på samme måte som på en diskett eller harddisk. En liten forskjell er imidlertid at mens en harddisk inneholder et antall konsentriske spor, består en CD av ett langt, spiralformet spor som leses innenfra og utover. Et lese/skrivehode kan bevege seg på tvers av plata, og derved nå all informasjon rimelig kjapt.

Lagringskapasitet på en CD er opp til 870 MB.

En CD leses av ved hjelp av en svak laserstråle. CD-plata roterer under strålen, og det måles punkt for punkt om strålen reflekteres eller ikke.

CD-ROM står for «Compact Disc Read Only Memory», og betegner CD-er som leveres ferdig med innhold. På fabrikken er en kraftig laser brukt til å brenne merker i det reflekterende materialet.

En periode ble nesten all programvare levert på CD-rom eller DVD-rom, men etter hvert er det blitt mer og mer vanlig å laste ned programvare direkte fra internett.

Til å spille av en CD-ROM brukes en CD-ROM spiller. Avlesningshastigheten for CD-ROM var i utgangspunktet den samme som for en musikk-CD, men økte snart. Det er imidlertid en grense for hvor raskt en CD tåler å spinne, så hastigheten har stabilisert seg på rundt 52 ganger, noe som betegnes med 52X. Lesehastigheten kan imidlertid økes ytterligere ved andre teknikker, f.eks. å benytte flere lasere.

CD-R står for «Compact Disc Recordable», og betegner en CD brukerne kan lagre data på selv. En CD-R inneholder et sjikt lysfølsomt fargestoff som en CD-brenner bruker en laserstråle til å endre de reflekterende egenskapene til. Data brent til en CD-R er permanente, og kan ikke slettes igjen. Det er imidlertid ikke nødvendig å brenne hele CD-en på en gang.

En CD-brenner kan også brukes til å lese både CD-R og CD-ROM.

CD-R-plater
CD-R plater

CD-RW står for «Compact Disc ReWritable», og kan i motsetning til en CD-R overskrives. CD-RW-plater er imidlertid betydelig dyrere enn CD-R-plater, og de kan være problematiske å spille av i vanlige CD-ROM spillere.

DVD

DVD står for «Digital Versatile Disc», tidligere «Digital Video Disc». DVD har lagringskapasitet opp til ca. 17 GB.

Det finnes DVD-R og DVD-RW på samme måte som det finnes CD-R og CD-RW.

Hastigheten til en DVD-spiller oppgis som 2X, 4X, etc. på samme måte som for en CD-ROM spiller. Dette henviser imidlertid til hastigheten i forhold til de første DVD-spillerne, og har ikke noe med hastigheten på en CD-ROM å gjøre.

En CD kan spilles av i en DVD-spiller, og en CD brennes i en DVD-brenner. Det motsatte er derimot ikke mulig.

En periode konkurrerte formatene HD DVD og Blu-ray om dominansen i markedet, men Blu-ray vant i 2008. Blu-ray bruker en blå laser, og kan lagre 128 GB på en tosidig disk, såkalt BDXL-format.

Kilder

    • Per A. Holst: Datateknologiens utvikling. Tapir Akademisk forlag, Trondheim 2001
    • Jarle Aase, Clemet Thærie Bjorbæk: Maskinvare og operativsystemer. Fagbokforlaget 2004
    • Deborah Morley, Charles S. Parker: Understanding Computers: Today and Tomorrow. Thomson Course Technology 2006
    • Bilder fra PBase
    • Bilder fra The PC Guide

Komponenter

Releer

Et relé er en strømbryter som slås på eller av, avhengig om det går strøm gjennom en spole (elektromagnet) eller ikke. Det bruker derved én strøm til å slå av og på en annen. Sammenlignet med rent elektroniske komponenter er releer trege, det går gjerne så mye som 0,1 sekund fra strømmen settes på til kontakten har lukket seg. Noen historiske datamaskiner var basert på reeler, men i dag brukes ikke releer som datamaskinkomponent lenger. Releer har imidlertid mange andre anvendelser, for eksempel til å skru av og på den kraftige elektriske strømmen til hovedlyktene i en bil. Gjennom lysbryteren i kupeen går det da bare en svak styrestrøm.

Relé
Relé
Skjematisk framstilling av relé
Skjematisk framstilling av releet til venstre

Radiorør

Et radiorør av triode-type er en elektronisk forsterker som tidligere ble mye brukt i elektronisk utstyr som radio, TV, etc. Det bruker én strøm til å styre en annen, og kan derved erstatte releer. Radiorør er mye raskere enn releer, men mindre pålitelige, fordi de brenner ut på samme måte som lyspærer. En annen ulempe er at de må varmes opp før bruk. En del historiske datamaskiner var basert på radiorør.

I dag brukes radiorør nesten ikke lenger i noen sammenheng. Transistorer har overtatt denne komponentens rolle så og si fullstendig.

Triode
Triode, en type radiorør med funksjonalitet som en transistor
Prinsippskisse for triode
Prinsippskisse av en triode. Radiorøret til venstre inneholder to slike trioder

Transistorer

En transistor er en elektronisk forsterker der én strøm kan styre en annen, på samme måte som i et triode-radiorør. Transistorer har nesten tatt helt over for radiorør i dagens elektronikk. De er mindre, billigere å produsere, bruker mindre strøm, og trenger ikke varmes opp før de virker.

Virkemåten til transistorer baserer seg på egenskapene til halvledere, for eksempel silisium.

Assorterte transistorer
Assorterte transistorer
Symbol for NPN-transistor
Symbol for NPN-transistor av BJT-type

Frittstående transistorer brukes ikke lenger i datamaskinens logikk. I stedet brukes integrerte kretser, der mengder av transistorer og andre komponenter masseproduseres ferdigkoplet på en enkelt brikke.

Kondensatorer

En kondensator er en elektronisk komponent som er i stand til å oppbevare en elektrisk ladning. Denne egenskapen gjør det mulig å bruke kondensatorer som lagringsmedium i datamaskiner, slik som i DRAM-brikker. En slik brikke inneholder en miniatyrisk kondensatorer for hver bit som skal lagres. Inni en datamaskin vil vi imidlertid også finne store, frittstående (diskrete) kondensatorer som blant annet hjelper til med strømstyring.

Assorterte kondensatorer
Assorterte kondensatorer
Symbol for kondensator
Symbol for kondensator

Integrerte kretser

En integrert krets (IC) er en miniatyrisk strømkrets produsert på en brikke av halvledermateriale. Den inneholder som regel transistorer og kondensatorer i tillegg til en del andre elektroniske komponenter.

Med integrerte kretser kan en presse et stort antall komponenter inn på svært liten plass. En neglestor brikke rommer mange ganger kompleksiteten til datamaskinen ENIAC, som i 1946 okkuperte 167 m2 og veide 27 tonn.

Ingen av komponentene i en integrert krets koples sammen vha. lodding eller liknende. I stedet produseres hele kretsen som en enhet, ved at mikroskopiske materialmengder deponeres på brikken gjennom spesialiserte prosesser. Den ferdige kretsen koples til omverdenen gjennom tynne metalltråder, og kapsles inn i et beskyttende hylster.

Det er integrert kretsteknologi som har gjort datamaskinen til allemannseie, fordi ekstremt kompliserte strømkretser kan produseres svært billig.

Produksjonsteknologien forbedres hele tiden, og i 2025 blir det produsert integrerte kretser med flere hundre milliarder transistorer.

I 1965 forutsa George Moore at transistortettheten i integrerte kretser ville fordobles hver 24. måned. Denne spådommen er blitt hetende Moores lov, og har vist seg å stemme svært godt.

Integrert krets i DIP-pakning
Integrert krets innkapslet i DIP-pakning
Det indre av en integrert krets
Det indre av en integrert krets
44-pins integrert krets med lokk
44-pins integrert krets
44-pins integrert krets uten lokk
Kretsen til venstre med lokket fjernet

Kilder

Logiske porter

De fleste datamaskiner arbeider i totallsystemet. De organiserer informasjon i form av binære tilstander, 0 eller 1, og når de gjør beregninger, kombinerer de slike tilstander ved hjelp av logiske porter. De grunnleggende typer porter er OG-port, ELLER-port, IKKE-port og XELLER-port.

Logiske porter kombinerer 2 inngangsverdier til 1 utgangsverdi, med unntak av IKKE-porten, som bare har 1 inngangsverdi.

I det følgende illustreres virkemåten til disse portene ved hjelp av releer. En skjematisk tegning av et relé er vist under. Når en elektrisk strøm sendes inn i spolen ved «A», trekker den til seg metallpinnen som oppretter forbindelse mellom «X» og «Ut», slik at strøm kan flyte mellom disse punktene. 

Du kan starte en animasjon ved å holde musa over tegningen. Farge symboliserer den binære tilstanden 1, ingen farge symboliserer tilstanden 0.

Prinsippskisse av relé

Releer illustrerer prinsippet i en logisk port på en oversiktlig måte, men i virkeligheten brukes transistorer, ikke releer. Hver type logisk port har imidlertid et standardisert symbol, som er teknologiuavhengig.

OG-port

OG-porten arbeider etter følgende logiske skjema:

INN UT
A B A OG B
0 0 0
1 0 0
0 1 0
1 1 1

Begge portens innganger må være i tilstand 1 for at OG-portens utgang skal være i tilstand 1.

En OG-port kan konstrueres ved å kople sammen to releer i serie som vist i tegningen under. Begge releene må få strøm før det kommer strøm på utgangen.

Du kan starte en animasjon ved å holde musa over tegningen. Farge symboliserer den binære tilstanden 1, ingen farge symboliserer tilstanden 0.

Og-port bygget av releer

Standardsymbolet for en OG-port ser slik ut:

Og-symbol

ELLER-port

ELLER-porten arbeider etter følgende logiske skjema:

INN UT
A B A ELLER B
0 0 0
1 0 1
0 1 1
1 1 1

ELLER-portens utgang er i tilstand 1 hvis én eller begge portens innganger er i tilstand 1.

En ELLER-port kan konstrueres ved å kople sammen to releer i parallell som vist i tegningen under. Det er nok at ett av releene får strøm for at det skal komme strøm på utgangen.

Du kan starte en animasjon ved å holde musa over tegningen. Farge symboliserer den binære tilstanden 1, ingen farge symboliserer tilstanden 0.

Eller-port bygget av releer

Standardsymbolet for en ELLER-port ser slik ut:

Eller-symbol

IKKE-port

IKKE-porten arbeider etter følgende enkle, logiske skjema:

INN UT
A IKKE A
0 1
1 0

Den gir altså utgangen tilstand 1 hvis inngangen har tilstand 0, og omvendt.

En IKKE-port kan konstrueres ved å bruke et relé av en spesiell type som bryter strømkretsen på utgangen når det settes strøm på inngangen. Dette er illustrert i tegningen under.

Du kan starte en animasjon ved å holde musa over tegningen. Farge symboliserer den binære tilstanden 1, ingen farge symboliserer tilstanden 0.

Eller-port bygget av et relé

Standardsymbolet for en IKKE-port ser slik ut:

Ikke-symbol

XELLER-port

XELLER-porten arbeider etter følgende logiske skjema:

INN UT
A B A XELLER B
0 0 0
1 0 1
0 1 1
1 1 0

XELLER-portens utgang er i tilstand 1 hvis én av inngangene er i tilstand 1, men ikke begge samtidig. Denne hendelsen er ekskludert. Dette skiller porten fra ELLER-porten som inkluderer tilfellet at begge er 1 samtidig. X-en i navnet kommer da også fra det engelske exclusive.

En XELLER-port kan bygges ved å sette sammen to OG-porter, to IKKE-porter og en ELLER-port som vist i skjemaet under.

Du kan starte en animasjon ved å holde musa over tegningen. Farge symboliserer den binære tilstanden 1, ingen farge symboliserer tilstanden 0.

Prinsippskjema for xeller-port

En slik port ville kreve 1 + 1 + 2 + 2 + 2 = 8 reeler.

Standardsymbolet for en XELLER-port ser slik ut:

Xeller-symbol

Addisjon ved hjelp av logiske porter

I artikkelen om tallsystemer beskriver vi regnereglene for addisjon av to binære sifre:

0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 = 0 og 1 i mente

I tabellform, satt opp som en regel for logiske porter, ser det slik ut:

INN UT
A B SIFFER MENTE
0 0 0 0
1 0 1 0
0 1 1 0
1 1 0 1

Sammenligner vi kolonnen «SIFFER», med «UT»-kolonnen til en XELLER-port, ser en at de er like. Og «MENTE» er lik «UT»-kolonnen til en OG-port. Dette betyr at vi kan addere to binære sifre ved hjelp av en XELLER-port og en OG-port, koplet som vist under:

 

Prinsippskjema for halvadderer

Dette er en halvadderer. Vil en addere binære tall med mer enn ett siffer, trengs imidlertid en litt mer komplisert kopling. For dersom addisjonen av to sifre i en kolonne genererer mente, må vi ta hensyn til dette ved addisjon av sifrene i neste kolonne. Ta f.eks.

$\begin{align} \, &1 \, 1 \\
+ \, &0 \, 1 \end{align}$

Summen av sifrene i kolonna lengst til høyre gir 1 og 1 i mente. Denne menten må så tas med ved summering av sifrene i neste kolonne. Vi har altså tre sifre å forholde oss til, addenden 1, addenden 0 og menten 1. Som det forklares i artikkelen om tallsystemer, kan vi addere tre tall ved først å legge sammen to, og deretter addere summen til det tredje. En addisjonskopling som tar høyde for innkommende mente, er vist under. Legg merke til at alle sifre adderes parvis. Ingen av komponentene har mer enn to innganger.

Prinsippskisse av fulladderer

Dette er en fulladderer. Ved å kjede flere slike sammen, kan vi addere binære tall med mange sifre.

Skulle vi bygd opp denne koplingen med releer, ville vi trengt 8 + 8 + 2 + 2 + 2 = 22 stykker. For å legge sammen to binære tall med 8 siffer, en byte, ville vi trengt ca. 22 · 8 = 176 releer. Ikke rart tidlige datamaskiner ble store og klumpete.

Datalagring ved hjelp av logiske porter

I alle koplingene vist over, gjenspeiler utgangen(e) verdiene på inngangen(e). IKKE-porten har for eksempel alltid en utgang som er det motsatte av inngangen.

Ved å lage en tilbakekopling fra utgangen inn i det logiske systemet, kan vi imidlertid bygge en krets som bevarer tilstanden på utgangen. Vi kan altså bruke en slik kopling til å lagre tilstanden 0 eller 1.

En slik kopling er vist under. Den kalles vippe, bistabil krets, eller flip-flop. Hvis inngang «A» gis verdien 1, får utgangen verdien 1, og beholder den når «A» går tilbake til 0. Hvis inngang «B» gis verdien 1, får utgangen verdien 0, og beholder den når B går tilbake til 0.

Du kan starte en animasjon ved å holde musa over tegningen. Farge symboliserer den binære tilstanden 1, ingen farge symboliserer tilstanden 0.

Prinsippskisse av bistabil krets

Kilder

    • Bård Kjos: Innføring i informasjonsteknologi. Tapir Akademisk forlag, Trondheim 2005
    • Dan I. Porat, Arpad Barna: Introduction To Digital Techniques. John Wiley & Sons, Inc. 1979

Tallsystemer

Titallsystemet

Vi mennesker er vant med å regne med 10 som grunntall, vi bruker titallsystemet (desimalsystemet). Dette kommer formodentlig av at mennesker har 10 fingre, og derved er i stand til å representere 10 ulike sifre uten ekstra hjelpemidler. De 10 sifrene er symbolene 0, 1, 2, 3, 4, 5, 6, 7, 8 og 9.

Tallsystemet vårt er et posisjonssystem, hvor verdien til hvert siffer avhenger av hvor i tallet sifferet er plassert. I tallet 782, for eksempel, representerer sifferet 7 «syv hundre», 8 representerer «åtti», og 2 representerer «to». Sifferet lengst til høyre representerer enere, det neste tiere, deretter hundrere, etc.

Vi ser at sifferverdien, altså 0, 1, 2, 3, 4, 5, 6, 7, 8 og 9, multipliseres med tallsystemets grunntall, altså 10, opphøyd i sifferets posisjonsnummer. Enerplassen regnes som posisjon null. 782 betyr for eksempel altså 7 · (10)2 + 8 · (10)1 + 2 · (10)0 = 7 · 100 + 8 · 10 + 2 · 1.

Totallsystemet

Et annet viktig posisjonssystem er totallsystemet (binærsystemet), der vi bruker 2 som grunntall. I totallsystemet brukes bare to sifre, 1 og 0, og de ulike posisjonene representerer 1, 2, 4, 8, og så videre, i stedet for titallsystemets 1, 10, 100, 1000, etc. Helt analogt med titallsystemet multipliseres sifferverdien (0, 1) med tallsystemets grunntall (2) opphøyd i sifferets posisjonsnummer. 1101 betyr for eksempel 1 · 23+ 1 · 22 + 0 · 21 + 1 · 20 = 1 · 8 + 1 · 4 + 0 · 2 + 1 · 1 = 13 i titallsystemet.

For å angi hvilket tallsystem vi arbeider i, bruker vi et lite subskript. 2 for totallsystemet, 10 for titallsystemet, etc. For eksempel betyr 11012 = 1310 at 1101 i totallsystemet er lik 13 i titallsystemet.

Siden det bare er to sifre i totallsystemet, kan vi lett representere tall fysisk ved å la 1 bety at noe er til stede og 0 at noe ikke er til stede. Dette er illustrert på bildet under, ved hjelp av egg i en eggekartong. Her ligger det egg i de fire posisjonene lengst til venstre, mens de to til høyre er tomme. Tallet dette symboliserer blir derved 1111002. Skulle vi representert det samme i titallsystemet, måtte vi innført et innfløkt system der for eksempel rødt egg betydde 1, blått egg 2, grønt egg 3, etc.

Egg som illustrerer 111100 i totallsystemet
 

Datamaskiner representerer tall som fysiske enheter, selv om det ikke er egg. I RAM-minne, for eksempel, betyr «elektriske ladning» 1, og «ingen ladning» 0. Skulle vi operert i titallsystemet, måtte vi holdt rede på 10 forskjellige ladningsnivåer, like innviklet som 10 fargede egg.

En annen stor fordel med totallsystemet er at regneoperasjonene er svært enkle. Regnereglene for addisjon er slik:

0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 = 0 og 1 i mente

Multiplikasjon i totallsystemet er like enkelt. Gangetabellen ser slik ut:

  0 1 10
0 0 0 0
1 0 1 10
10 0 10 100

På grunn av den enkle måten å representere tall på og de enkle regnereglene arbeider de aller fleste datamaskiner i totallsystemet, de er binære.

Skal vi gjøre operasjoner på flere tall, kan vi ta for oss to tall av gangen. For å addere tre tall for eksempel, adderer vi først to av dem, og deretter adderer vi summen til det siste tallet.

Regneeksempler

Akkurat som i titallsystemet adderer vi to binære tall ved å summere kolonne for kolonne, fra høyre mot venstre. Eksemplet under viser skritt for skritt prosedyren med å utføre addisjonen 101012 + 11012 = 100102. I titallsystemet tilsvarer det 2110 + 1310 = 3410.

Addisjon i totallsystemet

Multiplikasjon kan vi også utføre på samme måte som i titallsystemet. Vi multipliserer tallet til venstre med hvert siffer av tallet til høyre, setter resultatene under hverandre, og summerer. Eksemplet under viser skritt for skritt prosedyren med å utføre multiplikasjonen 1010012 · 1102 = 111101102. I titallsystemet tilsvarer dette 4110 · 610 = 24610.

Multiplikasjon i totallsystemet

Sekstentallsystemet

Totallsystemet er kjekt for datamaskiner, men ikke så lett for mennesker å håndtere, fordi sekvensene av ettall og nuller fort blir lange og tungvinte. For mennesker er titallsystemet mye mer praktisk. Det er for eksempel atskillig enklere å tolke tallet 128583 i titallsystemet, enn motparten i totallsystemet: 11111011001000111.

Totallsystemet brukes derfor sjelden i skriftlig materiale. Men hvis vi ønsker å vise hvordan tall representeres i en datamaskin, er titallsystemet heller ikke særlig velegnet. Dersom vi f.eks. øker tallet 11112 med 1, får vi 100002, en endring som overhodet ikke gjenspeiles i at 1510 blir til 1610.

Vi slår derfor i stedet sifrene i totallsystemet sammen i grupper på fire, og representerer hver gruppe med ett enkelt symbol. En slik gruppe på fire sifre kan representere 16 forskjellige tall, og et slikt tallsystem kalles derfor sekstentallsystemet (heksadesimalsystemet). For de første10 sifrene brukes de vanlige symbolene 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Men så eksisterer det ikke flere tallsymboler. En kunne selvfølgelig oppfunnet nye symboler for å representere de neste 6 sifrene, men i stedet har en valgt å bruke bokstavene A, B, C, D, E og F. Dette er illustrert i tabellen under.

00002 = 016 00012 = 116 00102 = 216 00112 = 316
01002 = 416 01012 = 516 01102 = 616 01112 = 716
10002 = 816 10012 = 916 10102 = A16 10112 = B16
11002 = C16 11012 = D16 11102 = E16 11112 = F16

I sekstentallsystemet vil en endring fra 11112 til 100002, vises ved at F16 blir til 1016. I motsetning til titallsystemet, gjenspeiler sekstentallsystemet at sifrene i totallsystemets posisjon 0, 1, 2 og 3 er blitt satt til 0, og sifferet i posisjon 4 er blitt satt til 1.

Sekstentallsystemet er et posisjonssystem hvor sifferverdien, det vil si 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E og F, multipliseres med tallsystemets grunntall, altså 16, opphøyd i sifferets posisjonsnummer. 3F6 betyr for eksempel 3 · 162 + 15 · 161 + 6 · 160 = 3 · 256 + 15 · 16 + 6 · 1 = 1014 i titallsystemet.

Omregning mellom tallsystemene

Fra totallsystemet til titallsystemet

Multipliser sifferet lengst til høyre med 20, neste siffer med 21, neste med 22, etc., og adder resultatet.
Eksempel: 101012 = 1 · 20 + 0 · 21 + 1 · 22 + 0 · 23 + 1 · 24 = 1 · 1 + 0 · 2 + 1 · 4 + 0 · 8 + 1 · 16 = 2110.

Fra titallsystemet til totallsystemet

Del tallet på to. Blir det en rest, skriv 1. Blir det ingen rest, skriv 0. Stryk resten og del på to på nytt. Skriv 1 eller 0 til venstre for forrige siffer, alt etter om det ble rest eller ikke.
Gjenta operasjonen inntil det står null igjen.

Eksemplet under viser hvordan vi regner om 1310 til 11012.

Desimalt   Rest?   Binært
13 : 2  = 6,5    Ja   1
6 : 2  = 3,0    Nei   01
3 : 2  = 1,5    Ja   101
1 : 2  = 0,5    Ja   1101
         

Fra totallsystemet til sekstentallsystemet

Grupper sifrene 4 og 4, fra høyre mot venstre. Dersom siste gruppe har færre enn fire sifre, fyll på med nuller til venstre. Regn om ifølge tabellen i avsnittet om sekstentallsystemet.

Eksempel: 111110110010001112 = 0001 1111 0110 0100 01112 = 1F64716.

Fra sekstentallsystemet til totallsystemet

Ta utgangspunkt i tabellen i avsnittet om sekstentallsystemet og erstatt hvert siffer med de tilhørende fire sifrene i totallsystemet. Ledende nuller kan strykes.

Eksempel: 2F316 = 0010 1111 00112 = 10111100112.

Fra sekstentallsystemet til titallsystemet

Multipliser sifferet lengst til høyre med 160, neste siffer med 161, neste med 162, og så videre, og adder resultatet. Husk at A16 = 1010, B16 = 1110, C16 = 1210, D16 = 1310, E16 = 1410, F16 = 1510.

Eksempel: 2F3C16 = 12 · 160 + 3 · 161 + 15 · 162 + 2 · 163 = 12 · 1 + 3 · 16 + 15 · 256 + 2 · 4096 = 1209210

Fra titallsystemet til sekstentallsystemet

Det enkleste er nok å regne om til totallsystemet først, og deretter til sekstentallsystemet, som beskrevet i avsnittene over. Vi kan imidlertid bruke teknikken for å regne om fra ti- til totallsystemet til å regne om direkte til sekstentallsystemet. Men vi må dele på seksten, og i stedet for å skrive 1 når vi får rest, skriver vi resten multiplisert med seksten.

Eksemplet under viser hvordan vi regner om 1209210 til 2F3C16.

Desimalt Oppmultiplisert rest   Heksadesimalt
12092 : 16  = 755,75    0,75  * 16= 12    C
755 : 16  = 47,1875    0,1875  * 16 = 3   3C
47 : 16  = 2,9375    0,9375  * 16 = 15   F3C
2 : 16  = 0,125    0,125  * 16 = 2   2F3C
           

Omregning med kalkulator

Windows har en kalkulator-app som vi får fram ved å åpne Windows-menyen og skrive «kalkulator». Denne kan brukes til å regne om mellom totallsystemet (binært), åttetallsystemet (oktalt), titallsystemet (desimalt) og sekstentallsystemet (heksadesimalt).

Første gang kalkulatoren hentes fram, vises den i modus «Standard», dette endrer vi til «Programmerer» i menyen øverst til venstre.

Windows-kalkulator i programmerings-modus

HEX, DEC, OCT og BIN er til å velge tallsystem med, henholdsvis sekstentallsystemet, titallsystemet, åttetallsystemet og totallsystemet. Vil vi regne om fra titallsystemet til sekstentallsystemet, for eksempel, klikker vi på DEC, skriver inn tallet, og klikker på HEX. Vil vi regne om fra totallsystemet til titallsystemet, klikker vi på BIN, skriver inn tallet, og klikker på DEC. Kalkulatoren deaktiverer knapper med tall som ikke er gyldige i et gitt tallsystem. Velger vi BIN, er derfor bare 0 og 1 aktivert. Velger vi OCT, aktiveres i tillegg 2, 3, 4, 5, 6 og 7. Med DEC kommer også 8 og 9, og med HEX A, B, C, D, E og F.

Kilder

    • Bård Kjos: Innføring i informasjonsteknologi. Tapir Akademisk forlag, Trondheim 2005