Boken Om Linux/Kapittel 2
Kap 2: Operativsystemet
[rediger]Linux-operativsystemet
[rediger]Uten programmer har du liten nytte av datamaskinen. Den er da bare en samling av elektroniske og mekaniske komponenter som du ikke kan bruke. Programmene kan deles inn i tre nivåer; grunnleggende oppstartsprogram innebygd i datamaskinen (BIOS), operativsystemet og brukerprogrammene som du kjører.
BIOS (Basic Input Output System) starter når du slår på maskinen. Dette programmet gjennomfører en del tester for å sjekke om maskinen fungerer slik den skal. Når testene er utført, starter det innlesing av programmet som kalles operativsystemet.
EFI bios (Extensible Firmware Interface) er for Apple maskiner, som ikke gir grafisk GUI for å tilpasse maskinvare\programvare til oppstartlasteren.
UEFI bios (Unified Extensible Firmware Interface) Er dagens bios der man får bedre sikkerhet Security boot eller mulighet å laste ned nyere firmware direkte fra UEFI.
Operativsystemprogrammet er ikke alltid bare ett program, men kan være en samling programmer. Det er operativsystemet som gjør det mulig å bruke maskinen. Operativsystemet fungerer som en administrator for maskinen og andre maskinressurser som skrivere og lagringsmedier, for programmene, og for deg og andre brukere. Vi skal nå se nærmere på de forskjellige oppgavene som operativsystemet utfører.
Linux kontrollerer
[rediger]Når du for eksempel trykker en tast på tastaturet, oversetter operativsystemet det signalet som sendes fra tastaturet inn til maskinen, og sørger for at det blir sendt et signal som får den bokstaven du trykte på fram på skjermen. Når du skriver ut en tekst, sørger operativsystemet for å starte skriveren og sende teksten slik at den blir skrevet ut.
Når du skal bruke et program som hører inn under operativsystemet, eller et annet program, henter operativsystemet det inn, og sørger for at du får tilgang til det.
Linux oversetter
[rediger]De fleste kommandoene i brukerprogrammer som tekstbehandling, regneark eller database kan ikke forstås direkte av maskinen. Operativsystemet virker som en oversetter mellom disse programmene og maskinen.
Operativsystemet virker også som en hjelper for brukerprogrammene. Programmene er laget for et bestemt operativsystem og ikke for en bestemt maskin. Dette gjør det lettere å lage programmer som kan utføre mange forskjellige kompliserte oppgaver, fordi programmet kan utnytte operativsystemet. Det blir enklere å flytte data fra en maskin til en annen. "Alt" som trengs, er at den andre maskinen bruker det samme operativsystemet.
Linux’ oppgaver
[rediger]Operativsystemet utfører også en rekke praktiske oppgaver. Med operativsystemet kan du klargjøre disketter for bruk (formatere), du kan finne innholdsfortegnelser på disker og disketter, og du kan kopiere og slette filer. Med et avansert operativsystem som Linux har du, som du senere skal se, en mengde muligheter.
Linux finner feil
[rediger]En viktig oppgave for operativsystemet er å kontrollere om alt virker som det skal. Operativsystemet finner feil og gir beskjed til deg om de feilene det har funnet. Mindre feil kan det rette opp selv. I andre tilfeller gir det deg beskjed om feilen og spør om hva som skal gjøres videre.
Flerbrukeroperativsystem
[rediger]Linux er et flerbrukeroperativsystem. Dette gjør det mulig for flere brukere å bruke maskinen samtidig. Dette blir gjort ved såkalt tidsdeling. Det betyr at operativsystemet deler tiden mellom de forskjellige brukerne.
Hvis for eksempel to eller flere brukere samtidig ønsker å skrive ut på den samme skriveren, ordner operativsystemet en kø og slipper til først den ene, så den andre osv. Hvis samme bruker kjører forskjellige programmer som alle skal bruke samme del av maskinen, fordeler operativsystemet på tilsvarende måte tiden mellom disse programmene.
Operativsystemet passer også på at dataene fra forskjellige brukere ikke blandes, og at en bruker ikke forstyrrer det en annen bruker gjør.
Hvis to brukere holder på med samme program, for eksempel et tekstbehandingsprogram, fordeler operativsystemet tilgangen til programmet. Hver bruker anvender det samme programmet, men de holder på med hver sine data.
Datamaskinen utfører sine oppgaver så raskt at du vanligvis ikke merker at det er andre brukere på maskinen samtidig.
Konsepter og teknologi
[rediger]Jeg skal nå se nærmere på noen av egenskapene til Linux, og forklare noen spesielle ord og uttrykk som brukes i forbindelse med Linux:
- programmer og prosesser
- bakgrunnsprosesser
- ressursdeling og prioritet
- mellomlagring, lagerveksling og sideveksling
- instruksjonsdel og datadel
Programmer og prosesser
[rediger]Oppgaver som kan utføres av datamaskinen, kaller man ofte prosesser. En prosess kan være å lese inn data fra en fil, skrive ut et dokument, utføre en beregning eller kjøre et større program. En bruker kan ha flere prosesser i gang på samme tid.
Bakgrunnsprosesser
[rediger]Enkelte prosesser kaller man bakgrunnsprosesser. Det betyr at prosessene kjøres i bakgrunnen i forhold til terminalen (systemenheten eller X-terminalen) du sitter ved. Hvis du for eksempel ønsker å kjøre et program som tar flere minutter, kan det være kjedelig å sitte ved terminalen og vente på at dette skal bli ferdig. Du kan da kjøre programmet som en bakgrunnsprosess, og mens programmet utføres, kan du gjøre andre ting på terminalen.
Ressursdeling og prioritet
[rediger]Ressursene du har tilgjengelig, er for eksempel datamaskinens prosessor (CPU), internhukommelse, maskinvare (skrivere, plottere, eller eksternlager) og hele eller deler av et program. Linux sørger for å fordele tilgangstiden til disse ressursene mellom de enkelte brukerne og mellom den enkelte brukers forskjellige programmer. Linux gir hver av de ventende prosessene en prioritet. Prioriteten bestemmer i hvilken rekkefølge prosessene skal utføres. Ofte er rekkefølgen bestemt av den rekkefølgen prosessene har bedt om tilgang til ressursen. Prioriteten kan også bestemmes på annen måte:
Som bruker kan du påvirke prioriteten. Linux kan også ha lagt inn mekanismer som bestemmer prioritet, eller systemet kan være satt opp slik at det gir bestemte prioritetsfordelinger.
Mellomlagring og veksling
[rediger]Linux er bygd opp slik at bare en liten del av Linux befinner seg i internhukommelsen. De øvrige delene, som ikke er i bruk hele tiden, ligger lagret på harddisken. Linux leser inn disse delene når det er behov for dem. De blir lagt ut igjen på harddisken når det ikke lenger er behov for å ha dem i internhukommelsen.
Har man andre store programmer, kan de overflyttes mellom internhukommelsen og harddisken på samme måte.
En teknikk som noen operativsystemer bruker til denne type overføringer, kalles lagerveksling (swapping; to swap er engelsk for å veksle). Swapping betyr at hele programmer lastes inn og ut av internhukommelsen.
Sideveksling (paging) er navnet på en annen teknikk. Med denne teknikken overføres bare biter av programmet. Størrelsen på programbitene er som regel 1 kB, 2 kB eller 4 kB (1 kB er ca. 1000 tegn). Linux bruker sideveksling.
Instruksjonsdel og datadel
[rediger]Hvis for eksempel fire brukere samtidig bruker samme programdel i OpenOffice (www.openoffice.org) sier man at de bruker den samme instruksjonsdelen av programmet. Hvis denne er på 100 kB, vil dette ikke føre til at plassbehovet i internhukommelsen er 400 kB (100 x 4), men atskillig mindre, for eksempel bare 250 kB. Instruksjonsdelen av programinstruksjonen er nemlig felles, mens datadelen er spesiell for hver bruker.
Linux og arkitekturstøtte
[rediger]Linux er et flyttbart operativsystem (støttes i dag på plattformene Intel, SPARC, Alpha, PowerPC, MCXXX og StrongARM), eller portabelt som det også kalles. Det betyr at mange forskjellige prosessorarkitekturer kan bruke operativsystemet Linux. Fordelen er at de fleste brukerprogrammer er laget for et bestemt operativsystem og ikke for en bestemt maskin.
I praksis betyr det at "programmer" (kildekoder) du har lagret på en maskin under Linux, kan brukes på en helt annen maskin som også bruker Linux.
Linux-kjernen
[rediger]Linux er et omfattende program som er delt opp i mange større og mindre delprogrammer. Den viktigste delen av Linux kalles kjernen. Den ligger fast lagret i datamaskinens internhukommelse når du har startet opp maskinen. Det er kjernen som styrer ressursfordelingen mellom de forskjellige programmene og brukerne.
De fleste andre deler av Linux-operativsystemet brukes ikke hele tiden. Kjernen sørger for å hente inn disse delene av programmet fra harddisken til maskinens internhukommelse når det er behov for dem. Du kommuniserer med Linux-kjernen via et program som kalles skallet. Dette er illustrert i figur 2.1.
Linux-skallet
[rediger]Den delen av Linux som du ser mest til som bruker, er det Linux-programmet som kalles skallet. Dette er en slags oversetter mellom deg og de andre delene av Linux-operativsystemet. Du skriver dine kommandoer, og skallet oversetter slik at andre programmer og Linux-kjernen forstår hva du mener.
Det finnes flere forskjellige skallprogrammer som kan brukes med Linux. Jeg kan blant annet nevne Bourne Again Shell (bash), C shell with file name completion and command line editing (tcsh) og Z Shell (zsh). Det skallet som er mest benyttet, er Bourne Again Shell (bash).
Verktøy og hjelpeprogrammer
[rediger]I tillegg til skallet og kjernen inneholder Linux en rekke andre programmer som ofte kalles hjelpeprogrammer eller verktøy. De kan brukes hver for seg, eller du kan lage større Linux-programmer som benytter flere slike verktøy. Det finnes også en mengde andre verktøy som kan brukes som en del av operativsystemet Linux.
En spesiell type nytteprogrammer er programmer som tekstbehandling, regneark og databaseprogram. Det finnes en mengde slike programmer som kan kjøres under Linux. "Kjøres under Linux" betyr at disse programmene kan kommunisere med Linux, det vil si at du kan kjøre programmene hvis du har installert Linux på din maskin. Du kan starte opp programmene fra Linux, og programmene bruker Linux når de utfører forskjellige funksjoner, for eksempel å kjøre utskrifter.
Bruke Linux-kommandoer
[rediger]Du gir kommandoer til Linux via skallet. Hvis du for eksempel vil skrive ut innholdsfortegnelsen i en katalog, gjør du slik:
- Skriv kommandoen for innholdsfortegnelse
ls
. - Du gir beskjed til Linux om å utføre kommandoen ved å trykke Enter.
Du får nå opp innholdsfortegnelsen. Denne kan for eksempel se slik ut:
batch c-files dhry.c dok mbox norsk.inn tekst usr
Til de fleste kommandoene finner du tillegg. Med tilleggene kan du styre kommandoens funksjonalitet. Disse tilleggene består av opsjoner (ofte kalt argumenter) og filnavn (inndata). Under har jeg et eksempel:
tar -zxvf minfil.tgz
Her er tar kommandoen -zxvf tilleggene (opsjonene) og minfil.tgz filnavnet, det vil si filen som kommandoen skal behandle. I stedet for filnavn vil du ofte se ordet argument. I et argument brukes i noen tilfeller både filnavn og opsjoner blandet sammen eller bare opsjoner.
Når jeg vil vise deg at en kommando kan bruke tillegg (opsjoner) og filnavn så skriver jeg det på følgende måte:
Kommando [opsjon][filnavn]
eller
Kommando [opsjon][argument]
Kommandoen er navnet på det programmet eller den funksjonen som skal kjøres; den angis alltid først. Det skal som regel være et mellomrom mellom kommando, opsjon og argument (filnavn).
[ ]
Når opsjon står i hakeparentes, betyr det at den er valgfri, det vil si at du kan gi kommandoen uten noen opsjon.
...
Er det flere forekomster av en opsjon eller et argument, viser jeg dette med ...
-opsjoner
I de fleste tilfellene skal den første opsjonen innledes med - (bindestrek).
Argument betyr at du kan gi tilleggsbeskjeder om hva kommandoen skal virke på.
For å skille hva som skrives av bruker, og hva som skrives ut på skjermen av programmet, har jeg brukt følgende skrivemåte i eksemplene:
Det brukeren skal skrive, er uthevet med halvfet skrift: ls -la. Utskrift fra programmet på skjermen er skrevet i kursiv.
Eksempel:
elboth@suselap:~> '''ls -la
total 7433
&drwxr-xr-x 61 elboth users 2928 2004-04-02 10:51
drwxr-xr-x 4 root root 96 2004-02-02 02:10
-rw-r--r-- 1 elboth users 43827 2004-02-13 11:37 1002susenvidia.jpg
-rw-r--r-- 1 elboth users 82476 2004-02-13 13:26 1003yast.jpg
-rw-r--r-- 1 elboth users 74456 2004-02-27 19:55 1501C-montsuse.jpg
drwx------ 2 elboth users 112 2004-02-02 03:38 .AbiSuite
drwxr-xr-x 2 elboth users 72 2004-02-10 10:20 .acrobat
-rw-r--r-- 1 elboth users 2048000 2004-02-10 10:20 AcroN0
drwxr-xr-x 13 elboth users 424 2004-02-02 01:07
drwx------ 2 elboth users 128 2004-03-06 22:50 .adobe
-rw------- 1 elboth users 412 2004-03-14 19:32 alert.tx
drwxr-xr-x 2 elboth users 72 2004-02-06 08:40
-rw------- 1 elboth users 3978 2004-04-01 22:30 .bash_history
-rw-r--r-- 1 elboth users 1536 2004-02-02 01:06 .bashrc
drwxr-xr-x 2 elboth users 72 2004-03-19 22:14
drwxr-xr-x 2 elboth users 48 2004-01-30 12:57
-rwxr-xr-x 1 elboth users 6754423 2004-03-30 11:42 boken.gz
drwxr-x--- 2 elboth users 144 2004-03-14 21:01 cbi
drwx------ 3 elboth users 72 2004-02-13 08:18 .config}}
-rw-r--r-- 1 elboth users 1554 2004-03-14 20:47 osi.head_logo.gif
drwxr-xr-x 2 elboth users 240 2004-01-31 12:15 .crafty<
-rw-r--r-- 1 elboth users 5 2004-01-31 12:15 .craftyrc
elboth@suselap:~>
Et eksempel på hvordan en kommando med en opsjon og et argument kan se ut er:
ls -t htm*
ls er en kommando som sender en innholdsfortegnelse på skjermen. Opsjonen -t gir beskjed om at innholdsfortegnelsen skal sorteres i kronologisk rekkefølge. Filene blir sortert etter årstall, måned og klokkeslett. De ferskeste filene blir satt på lista først, de eldste kommer til slutt.
Argumentet htm* gir beskjed om at innholdsfortegnelsen for alle filer med navn som begynner med htm, skal skrives ut til skjermen.
En kommando kan også skrives uten opsjoner og argumenter. Kommandoen utføres da i sin standardutførelse. Det betyr at kommandoen har en standardopsjon og et standardargument som brukes hvis ikke andre opsjoner og argumenter er oppgitt. La oss igjen ta kommandoen ls som et eksempel:
ls
Uten noen opsjoner eller argumenter gir denne kommandoen beskjed om at innholdsfortegnelsen til aktiv katalog skal skrives ut på skjermen.
Rør, filtre og omdirigering
[rediger]I Linux kan du lage nye kommandoer ved å koble sammen kommandoer. Et eksempel på en slik sammenkoblet kommando er:
ls | wc -l
Kommandoen ls lager først en innholdsfortegnelse. Kommandoen wc -l teller så antall linjer i denne innholdsfortegnelsen.
Slike koblinger mellom kommandoer kalles rør. Den engelske betegnelsen er "pipe". Jeg forestiller meg at den første kommandoen gir et resultat som så blir ført i et slags rør til den neste kommandoen. Denne utfører en ny operasjon på resultatet av den første kommandoen.
Man bruker symbolet | for rør. Når dette symbolet står mellom to kommandoer, betyr det altså at den andre kommandoen utfører sine operasjoner på resultatet av den første.
På denne måten kan du koble sammen mange programmer. Hvert program i en slik rekke utfører bestemte operasjoner på dataene. En annen måte å se dette på er at programmet filtrerer dataene før de sendes videre til neste program. Derfor kalles slike programmer også filterprogrammer.
I tillegg til at kommandoene har bestemte standardutførelser, så henter kommandoene data fra en bestemt kanal og skriver resultatet av behandlingen ut på en annen kanal. Kommandoen ls for innholdsfortegnelse hentet informasjon fra tastaturet og skrev resultatet ut på skjermen. Standard innkanal (inndata) for ls er derfor tastaturet, og standard utkanal (utdata) er skjermen. En vanlig rørkobling er da å koble standard utkanal fra et program til standard innkanal til et annet program.
Det er også mulig å forandre standard inn- og utkanaler. Hvis jeg for eksempel ønsker å skrive ut en innholdsfortegnelse et annet sted enn på skjermen, kan jeg gjøre det. Kommandoen ls > /dev/lp0
skriver innholdsfortegnelsen ut på skriveren i stedet for på skjermen.
Kommandoen
ls > datafil
skriver innholdsfortegnelsen ut på en datafil i stedet for på skjermen. Når jeg forandrer standard innkanal eller utkanal på denne måten, kaller jeg det å omdirigere dataene.
Redigere tekst
[rediger]Linux inneholder flere programmer for tekstredigering. De mest brukte er editorene ed (linjeeditor), red (linjeeditor), vi (skjermeditor), pico (skjermeditor), emacs (skjermeditor) og xedit (X-basert editor). Med de forskjellige editorene kan du skrive, slette, tilføye eller flytte tekst. Du kan også kopiere tekst fra andre filer. Den populære vi-editoren har meget avanserte teksthåndteringsverktøy.
Systemadministrator eller root
[rediger]Systemadministrator kan starte og stoppe Linux. Det er systemadministrator som legger inn eller fjerner brukere. Systemadministrator sørger for å vedlikeholde Linux-systemet. Det betyr at de bruker en del kommandoer for å kontrollere systemets tilstand. De holder øye med hvor mye av systemet som er brukt. Hvis for eksempel lagringskapasiteten begynner å bli brukt opp, kan systemadministrator oppfordre brukerne til å rydde opp blant filene sine og slette dem de ikke trenger. Når du har installert Linux på din egen PC, har du muligheten til å være både systemadministrator og/eller vanlig bruker.
For å kunne gjøre en del av de oppgavene som hører til under systemadministrasjonen, må du ha tilgang til spesielle kommandoer som ikke kan brukes av den vanlige bruker. De som har denne spesielle tilgangen kalles systemadministrator eller root. Systemadministratorer har spesiell bruker-id (0) og gruppe-id (0) som gir dem tilgang til de aktuelle systemadministrasjons-kommandoene.
En del av stoffet i boken forutsetter at du er systemadministrator (root). For mange kommandoer er det satt inn kommentarer myntet på systemadministrator (root). Dette stoffet er noen ganger vanskeligere å forstå enn det øvrige. Du som er vanlig bruker og har en ferdig oppsatt maskin, kan gjerne hoppe over disse kommentarene, uten at det ødelegger for din forståelse av det som forklares.
Oppgaver til kapittel 2
[rediger]Oppgave 2.1 Hva betyr det at Linux er et flerbrukeroperativsystem? Er Windows 10 eller Windows 8.1 et flerbrukeroperativsystem?
Oppgave 2.2 Forklar hvordan mellomlagring og veksling fungerer under Linux?
Oppgave 2.3 Vil to identiske programmer på en og samme Linux-maskin bruke dobbelt så mye minne som ett program? Hvordan fungerer dette under Windows?
Oppgave 2.4 Hva er forskjellen mellom Linux-kjernen og Linux-skallet?