Wat is een Operating System? CSN
I Standaard verzameling software voor een computer I Besturing/beheer van de computer I Gemak voor schrijvers van programma’s
– CS3 –
I Standaarden voor apparatuurbesturing I Maakt samenwerking tussen verschillende programma’s mogelijk
OS structuur en File management
I Bescherming tussen gebruikers/programma’s
Piet van Oostrum 15 april 2002
CSN-CS3
1
CSN-CS3
Onderdelen van O.S
1
O.S. Interfaces Hoe worden de functies van het O.S. gebruikt?
I Besturing randapparaten (device drivers)
1. Allerlei functies uit het O.S. kunnen vanuit programma’s aangeroepen worden met system calls lezen en schrijven van files timers starten en stoppen van programma’s netwerkdiensten
I Memory management I Beheer van andere hulpbronnen (bijv. CPU tijd) I Bescherming I File management
2. Gebruikersinteractie (shell) grafische shell tekstgeorienteerde shell (command line) Shells zijn meestal “gewone” gebruikersprogramma’s
I Opstarten/stoppen van programma’s I Communicatie tussen programma’s I Tijdsbeheer
3. Diverse andere programma’s
I Netwerkfuncties I Grafische functies I Handige bibliotheken en programma’s CSN-CS3
2
CSN-CS3
Besturing randapparatuur
3
Synchronisatie device driver opdracht
I device driver = de software voor het besturen van een apparaat. I Meestal in system mode
driver
I Vanuit het O.S. ontvangt de driver opdrachten (read, write, control)
aanvrager
wacht
I De driver bestuurt de interface met INP, OUT of memory-mapped I/O
stack
I Interrupt routines signaleren dat een operatie klaar is, of een volgend deel gestart kan worden.
interrupt
I Hier zit een potentieel synchronisatieprobleem. ga door programma
CSN-CS3
4
CSN-CS3
slides3.pdf — April 15, 2002 — 1
programma
stack
driver
5
Resource management
Abstractie
I In een O.S/computer zitten veel “hulpbronnen” die door een aantal programma’s of gebruikers gezamenlijk gebruikt kunnen worden
I Het O.S. geeft een “abstract beeld van: De computer De apparatuur De software componenten
I Geheugen I gebruik van CPU
I voorbeelden: abstracte randapparaten virtueel geheugen file systeem virtuele machine
I schijfruimte I printer/netwerkaansluiting I Het O.S. moet dit regelen (politie-agent):
I Voordelen: Abstracte machines zijn simpeler dan de echte Nieuwe ontwikkelingen makkelijk inpassen Virtualisatie: doe net alsof iets bestaat uitwisselbaarheid
I Beheer (wie heeft wat in gebruik?) I Synchronisatie I scheduling (wie mag wanneer?)
CSN-CS3
6
CSN-CS3
7
Concurrency
Kenmerken van een proces
I Concurrency = het (min of meer) gelijktijdig uitvoeren van verschillende activiteiten op de computer
I eigen stuk (virtueel) geheugen
I Bij een multiprocessor systeem: echte concurrency
I eigen resources I eigen machineregisters
I Anders: virtuele concurrency
I CPU toewijzing
I Basis concurrency komt voort uit interrupts
I protectie
I O.S. levert op gebruikersniveau concurrency door processen
= eigen virtuele machine
I Proces = onafhankelijke executie (draaien) van een programma I Ook nodig om te kunnen stoppen, resource beheer, bescherming.
CSN-CS3
8
aanroepen van O.S. diensten I Procedure/functie-aanroep in het O.S. Nadeel: geen bescherming (user/system mode) Voordeel: snel, simpel I “Speciale system call instructie” push param1 push param2 move code, R1 TRAP −→ system mode bescherming tegen programmafouten ook langzamer
CSN-CS3
10
CSN-CS3
9
TRAP interrupt routine switch (R1): { case 1: /* case 2: /* etc.... default: /* } keer terug naar
code voor syscall 1 */ code voor syscall 2 */ error: verkeerde code */ het proces (RTI)
Iedere syscall controleert de parameters
CSN-CS3
slides3.pdf — April 15, 2002 — 2
11
O.S. kernel
Microkernel O.S.
I Het “centrale deel” van het O.S. dat in system mode draait wordt vaak “kernel” genoemd
I De kernel bevat alleen de minimaal benodigde onderdelen
I system call interface
I Alle andere functies worden in aparte processen uitgevoerd I Bijv. filemanagement, netwerk functies
I device drivers I process management
I Sommige functies kunnen in bibliotheekprocedures opgenomen worden (in de user processen).
I ...
I microkernel O.S. is flexibeler, maar vaak iets langzamer.
I Sommige O.S. hebben alle O.S. in ´e´en kernel (Unix)
I Voorbeeld: Mach (is de kernel van Mac OS X op de Macintosh)
I = Macro-kernel O.S. I Nadeel: moeilijk aan te passen (bijv. nieuwe device driver) I Moeilijk te debuggen I Door grotere gecompliceerdheid vaak fouten erin. CSN-CS3
12
CSN-CS3
Lagenmodel O.S.
File management File management beheert de data op de schijven:
user program gebruikers programma’s/processen
library
I Waar staat de data op de schijf
DLL
I Welke naam behoort bij welke data
system call interface
file system service
13
O.S.
process management
I Organisatie van filenamen in directories I Lezen, schrijven e.d. van de files
netwerk services
I Gelijktijdige toegang tot files I Bescherming van data tegen ongeoorloofd gebruik
memory management
I/O management
disk driver
terminal driver
netwerk driver
hardware interfaces
CSN-CS3
14
CSN-CS3
File Management 2
15
File Management 3
Storage Service:
Vragen:
I Beheert de indeling van de schijf
I Waar zit de bescherming tegen ongeoorloofd gebruik?
I Houdt bij welke ruimte in gebruik is en welke vrij
I Kun je een file benaderen zonder de naam te hebben?
I Houdt bij waar elke file op de schijf staat
I Kan een file meer dan ´e´en naam hebben?
Directory Service:
NB. Een directory is ook een file (met andere toegangsmogelijkheden)
I Houdt namen van files bij in directories I Beeldt namen in directories af op “Storage service dingen” Vaak min of meer met elkaar verweven.
CSN-CS3
16
CSN-CS3
slides3.pdf — April 15, 2002 — 3
17
Ge¨ıntegreerd systeem
Hi¨ erarchisch filesysteem # root
schijf
/
naam attrib blocknr 1 block nr 2
#
*
A
# C
b
schijf
entry
*
* dd
directory
CSN-CS3
18
*
# D
aa
* bb
* ee
* file # directory
* ff
CSN-CS3
Filesysteem met links
cc
19
Implementatie van links
# root
I directory structuur en storage structuur gescheiden
/
I File wordt ge¨ıdentificeerd door de “storage structuur” I In Unix een grote tabel op schijf #
*
A
#
b
I Index in deze tabel is inode.
C
I Elke entry in deze tabel stelt een file voor en bevat (o.a.) de locatie van de file
xx
I Directory entries bevatten de naam en de inode *
*
# aa
* bb
D
I Protecties staan in de inode
cc
I Harde link: dezelfde inode staat in verschillende directory entries
yy * dd
* ee
* ff
CSN-CS3
I Symbolische link: directory entry verwijst naar een andere filenaam
* file # directory link 20
CSN-CS3
Garbage collection
21
Disk cache
Wanneer kan het O.S. een file weggooien? I Als er geen extra links zijn kan de file weggegooid worden wanneer een remove (delete) commando gegeven wordt. I Maar wat gebeurt er als een ander programma met deze file bezig is? I Als er extra link zijn dan moet bijgehouden worden hoeveel verwijzingen er zijn (reference count). I Bij een delete/remove opdracht wordt de directory verwijzing weggehaald en de reference count afgelaagd I Als de reference count 0 is wordt de file echt weggegooid.
I Deel van het geheugen dat gebruikt wordt om gelezen/te schrijven blokken van de schijf op te slaan. I Wanneer het nog een keer nodig is dan is het snel beschikbaar I Vergelijkbaar met geheugen-cache maar op ander niveau (software) I Bij het schrijven voorzichtig zijn anders data verloren. I Sommige files graag direct doorschrijven I Volgorde kan belangrijk zijn database systemen metadata
I Als er cyclische structuren ontstaan wordt de reference count nooit 0
CSN-CS3
22
CSN-CS3
slides3.pdf — April 15, 2002 — 4
23
API 2
Programma interface (API) Unix interface: fileid = open ( filenaam, opties );
proces A
proces B
0 1
0 1
I opties = manier van openen: lezen, schrijven, nieuwe file aanmaken, e.d. I fileid = (klein) nummer. I Verschillende andere operaties (lezen, schrijven) gebruiken niet meer de filenaam maar de fileid:
file positie file 1
result = read (fileid, buffer, aantal_bytes); result = write (fileid, buffer, aantal_bytes); close (fileid); I In O.S. wordt een datastructuur bijgehouden over deze “open file”. I De fileid is de index in een array van deze data-objecten
file positie file 2
Garbage collection gevolgen: I Bij een close opdracht in een programma wordt de reference count afgelaagd I Files die geopend zijn door programma’s moeten nog extra references krijgen.
CSN-CS3
24
CSN-CS3
25
API 3
Hogere File I/O lagen
I In Win32 soortgelijke operaties: Meer parameters fileHANDLE = “geheime” waarde Handle = CreateFile(FileName, Access, ShareMode, Security, Disposition, Flags, Template)
I Files lezen met de ‘primitieve’ API is vaak niet handig: Bijvoorbeeld regels lezen: Hie vind je het Newline teken? Per character lezen is inefficient Bij grotere blokken lezen heb je teveel of te weinig
I Wordt ook gebruikt om bestaande files te openen.
I Gebufferde I/O: Lees met de ‘primitieve I/O blokken in Haal daar uit wat je nodig hebt I Bepaalde operaties (bijv. file copieren kunnen efficient met de primitieve API.
CSN-CS3
26
CSN-CS3
Memory-mapped Files
27
Memory mapping
I Dit kan voor lezen/schrijven I Dan hebben we ‘shared memory’
data data
stack stack
paging
paging
pagina’s van file
CSN-CS3
28
swap
swap gebied
file
I Dan hebben we DLL’s (shared libraries)
file
I Maar ook voor instructies (bibliotheek)
swap gebied
swap gebied
I je kunt nu gewoon de file als een stuk geheugen gebruiken
proces B programma code B
I Zeg tegen het O.S. dat een bepaald deel van het geheugen eigenlijk een file is
intern geheugen
programma code A
proces A
I In plaats van File opdrachten kunnen we het memory management systeem gebruiken (paginering)
CSN-CS3
slides3.pdf — April 15, 2002 — 5
29
Geheugen pagina’s
Netwerk Filesystemen
I vrij nog niet gebruikt
I Netwerk Filestysteem: De files staan op een andere computer dan waar ze gebruikt worden (Fileserver)
I vast pagina’s van het O.S. die niet gepaged mogen worden (bijv. page tables, de pager zelf)
I Ze kunnen op dezelfde manier gebruikt worden als locale files
I nieuw pagina’s die nog geen waarde hebben (bijv aangevraagde heap)
I Alle file operaties worden opgevangen en doorgestuurd naar de fileserver
I file van/naar een file gepaged: instructies, mapped files en cache pagina’s
I NFS (Network File System): populair op Unix systemen
I swap niet bij een specifieke file horend, gepaged van en naar een speciale swap-ruimte: data, heap en stack pagina’s e.d.
I SMB/CIFS (Server Message Block/Common Internet File System) op Microsoft systemen I Samba is een open source implementatie van SMB/CIFS op vooral Unix systemen I Eerst moet een remote filesysteem gemount worden Op Unix geintegreerd in de directory structuur Op Windows aparte drive letter (X:) of \\servernaam\filenaam
CSN-CS3
30
CSN-CS3
slides3.pdf — April 15, 2002 — 6
31