operativsystem och praktisk linux föreläsning 2 - 4.11.2010
Post on 20-Jan-2016
51 Views
Preview:
DESCRIPTION
TRANSCRIPT
OPERATIVSYSTEM OCH PRAKTISK LINUX
Föreläsning 2 - 4.11.2010
INNEHÅLLOperativsystemarkitekturerProcesserKommandotolkar
Operativsystemarkitektur
Operativsystem är otroligt stora (i Mb) och komplexa
OS/360 (En av de första operativsystemen som utvecklades av IBM)
utvecklades av ca 5000 olika programmerare under en period av fem år
och innehöll drygt 1 miljon rader kod!!!
Linux-kärnan (med Linus Torvalds som chefsutvecklare) har tusentals
programmerare världen över
Version 2.6.22 av Linuxkärnan , lanserad i Juli 2007, innehåller
8 259 076 rader vilket är tre miljoner fler än i version 2.4.22 som lanserades
2003
Jämfört med andra operativsystem är Linux litet!!
Operativsystemarkitektur
Finns i huvudsak fyra olika arkitekturmodeller Monolitisk Skiktad Mikrokärna (Den virtuella maskinen)
Monolitisk arkitektur
Många program och operativsystemkärnor brukar beskyllas för att vara
monoliter!!!
Med monolit menas att hela programmet består av ett block med kod
Varje del är innesluten i kerneln och kan direkt kommunicera med andra
delar, t.ex. Filsystemet kan direkt kalla på minnesallokeringssystemet
De flesta monolitiska operativsystemkärnor är dock inte till arkitekturen rena
monolitkonstruktioner
Utvecklarna har i stället ofta skapat en logisk struktur som placerar viss
funktionalitet i block och sedan blocken i ett antal lager/skikt
Skiktad arkitektur
I praktiken realiseras ofta lagerbaserad/skiktad struktur på det sättet att
källkoden delas in i olika underkataloger och så finns det regler för vilka
variabler som får användas och vilka funktioner som får anropas
En äkta skiktad konstruktion är dock baserad på ett antal lager där ett lagar
bara kan anropa ett angränsande lager och bara genom ett visst antal
förutbestämda anrop
Mikro- och nanokärnor
Tanken är att själva kärnan endast skall hantera den mest basala
funktionaliteten och att allt annat skall skötas av processer som exekveras
utanför kärnan
Funktionaliteten är uppdelad så att mikrokärnan har ansvar för att skicka
meddelanden mellan alla processer + att schemalägga dem
Resten av funktionaliteten sköts av serverprocesserna
I vissa fall har mikrokärnan inte ens ansvar för att schemalägga
processerna (kallas för nanokärna)
Mikrokärna vs monolitisk kärna
En monolitisk kärna är mycket effektivare eftersom ingen kommunikation
behövs mellan olika serverprocesser (kärntrådar)
En mikrokärna är dock mycket stabilare och har klarare design
(För ett praktiskt exempel, se sid 55-56 i kursboken)
Arkitekturen i Windows och Linux
Windows Ursprungligen baserat på en mikrokärna Har modifierats mot monolitisk konstruktion bl.a. p.g.a kravet grafikprestanda
Linux Ursprungligen designad av Linus enligt den monolitiska arkitekturen Fick kritik bl.a. av Tanenbaum (pappan bakom Minix) Rör sej dock mer och mer mot en mikrokernelkonstruktion
Kerneltrådar (servrar) Moduler
Virtuell omgivning för operativsystem
Inte egentligen en operativsystemarkitektur enligt den rätta bemärkelsen
men ändå värt att nämnas!
Ett tidsdelande system (timesharing system) erbjuder en exakt kopia av
den existerande hårdskivan till en virtuell dator
Innebär att på en fysisk dator kan man köra många virtuella datorer där alla
datorer i princip har samma hårdvara som värddatorn
De olika virtuella maskinerna kan köra olika operativsystem
Exempel på virtualiseringsprogramvara är VMWare Server och WMWare
Player
Virtuell omgivning för operativsystem
Processhantering
En process är ett program som exekveras på en dator
En process blir till/startas på flera olika sätt: Av operativsystemet vid uppstart av dator (t.ex. en printerserver-
process) Av en annan process Interaktivt av en användare
Operativsystem
Printerserver
Operativsystem
Terminal
Pico
Processhierarkin i Linux
I Linux upprätthålls en processhierarki som ser ut ungefär som ett släktträd:
Föräldraprocess
BarnprocessBarnprocess
Barnbarnproc.Barnbarnproc.Barnbarnproc.Barnbarnproc.
Processhierarkin i Linux
Init-processen är förälder till alla processer i Linux-systemet
Init (process 1)
BarnprocessBarnprocess
Barnbarnproc.Barnbarnproc.Barnbarnproc.Barnbarnproc.
Processhierarkin i Linux
En process kan ha flera barn men endast en förälder
En föräldraprocess i Linux känner till alla sina barnprocesser och
tillsammans kallas dessa för en processgrupp
Om en föräldraprocess ”kraschar” förvandlas barnen till s.k.
”orphanprocesser” (föräldralösa) Barnen ”adopteras” i detta fall av init-processen
En annan variant av processer är zombie- eller ”defunced-” processer: En process som utfört sin uppgift men som inte fått sin avslutningsstatus
avläst av sin förälder Uppstår t.ex. Om en föräldraprocess fastnat i en oändlig loop
Processhantering: Schemaläggare
En processor i en dator är inte speciellt smart
Processorn utför helt enkelt bara de uppgifter den blir tilldelad
Det är operativsystemets uppgift att tilldela uppgifter åt processorn
Man kan jämföra en processor med metalldetektorn i säkerhetskontrollen
på ett flygfält! Metalldetektorn är processorn Varje människa i kö är en instruktion i en process som i tur och ordning
ska hanteras av processorn I multiprogrammering system har vi flera processer (köer) och
instruktioner (människor i kö) och plockas från de olika processerna(köerna) i tur och ordning enligt operativsystemets schemaläggare
Processhantering: Schemaläggare
Dagens operativsystem möjliggör exekvering av flera program samtidigt
Dagens datorer kan inte göra detta!!!!! (skulle i så fall behövas minst lika
många processorer som exekverande program)
Operativsystemet möjliggör dock samtidig exekvering m.h.a.
multiprogrammering:
Multiprogrammering innebär att vi har en schemaläggare som föredelar
processortiden mellan de olika processerna som körs på datorn
Processhantering: Schemaläggare
Schemaläggarens grunduppgift är att se till att alla processer får tillgång till
datorns processor så att de kan utföras
Processhantering: Schemaläggare
Mera faktorer en schemaläggare bör ta hänsyn till:
Faktor Innebörd
Interaktivitet Hur snabbt användaren uppfattar att datorn reagerar på t.ex. En tangenttryckning. Grundregeln för att optimera interaktivitet är att låta alla processer exekvera ofta men en kort stund varje gång.
Genomströmmning Hur får man igenom så många jobb som möjligt på kortast möjliga tid? Detta är mera intressant på en server än på en arbetsstation.
Förutsägbarhet Om samma uppgift utförs flera gånger skall den ta ”ungefär” lika lång tid varje gång.
Rättvisa På ett system med många samtidiga användare kan det vara vettigt att låta var och en av användarna få tillgång till lika stor del av kapaciteten.
Resursutnyttjande Vissa processer använder processorn mycket och andra använder den lite. Det kan vara effektivt att låta en process som gör exempelvis mycket diskarbete schemaläggas före en som utnyttjar processorn mycke. Om den bara utför lite processorarbete och sedan lämnar tillbaka den igen
Prioritering Det skall vara möjligt för användarna och systemet att avgöra vilka processer som är viktigast och vilka som är minst viktiga.
Vad är en kommandotolk?
Man kan säga att kommandotolken fungerar som en länk mellan
användaren och operativsystemet
Hanterar information som användaren skriver in från tangentbordet
Vad är en kommandotolk?
Brukar även kallas kommandoskal eller “command shell” på
engelska
Är precis vad namnet säger, dvs. ett program som tolkar de
kommandon som en användare ger och utför kommandona på
enligt operativsystemet det bästa sättet
Det goda med kommandotolken i Linux är att man kan via den
effektivt använda operativsystemet såsom: hantera filer hantera processer skapa automatiska processer (t.ex. backup-kopiering av filer) konfigurera operativsystemet (uppstartskript odyl.)
Shellskript
Förutom kommandon klarar kommandoskalet av att även tolka
s.k. shellskript som är en sorts tolkat programspråk
Ett shellskript skapas av vanliga kommandotolkskommandon som
sparas i en fil med exekveringsrättigheter (chmod 700 filnamn)
Ett skript kan t.ex. användas för att: att köras vid systemstart för att starta upp vissa
program/processer automatiskt. skapa automatiska backup kopior av en viss katalog i filsystemet
Olika kommandotolkar
Det finns flera olika kommandotolkar (program för att tolka
kommandon) i Unix/Linux-världen, bl.a:• Bourne Shell (/bin/sh)• Bourne Again Shell (/bin/bash)• C Shell (/bin/csh)• Korn Shell (/bin/ksh)• TC Shell (/bin/tcsh)• Zsh (/bin/zsh)
Bourne Again Shell (bash) är den abolut vanligaste
kommandotolkaren idag
Tillgång till kommandotolken lokalt
På ett Linux-system har man tillgång till kommandotolken via ett
textgränssnitt (textbaserat program) som kan startas upp t.ex. via
en meny ur operativsystemests GUI (Graphical User Interface)
Man kan också starta operativsystemet utan GUI om man t.ex. kör
Linux på en server och vill att systemet skall kräva så lite prestanda
som möjligt
Kommandotolken är också oftast det ända tillgängliga gränssnittet
efter en systemkrasch vid försök att starta upp systemet från en
installations-CD/DVD
Tillgång till kommandotolken över nätverk
Administratörer av Linux-servrar ansluter sej ofta till en servers
kommandotolk över ett nätverk (lokalnät/Internet) via gränssnittet
SSH (Secure Shell)
Det även finns SSH-klienter för Windows som tillåter SSH
inloggning till en Linux-dator från en Windows-dator, bl.a. Putty, se
http://www.putty.org/ (kan laddas ner gratis)
Distansinloggning med Putty
Distansinloggning med Putty
top related