Betriebssysteme - Tamdhu www root

Werbung
Betriebssysteme
Winter2016
Betriebssysteme
(c)PeterSturm,UniTrier
1
Betriebssysteme
Winter2016
Organisatorisches
• VorlesungDienstags,10.00bis11.30,F55
• Master-Veranstaltung
• Übung
• Klausur
– 21.2.2017
– Bonussystem?
• Informationen
– http://tamdhu.uni-trier.de/Asysob
– Stud.IP
VONMONOLITHENUND
MIKROKERNEN
(c)PeterSturm,UniTrier
2
Betriebssysteme
Winter2016
WaytoAccessOSFunctionality
• Libraryfunctions
– Classicalprocedurecall
– Staticanddynamiclinking
Applications
• SystemCalls
– Theactualfunctionsofthe
operatingsystems
– Wrappersletsystemcalls
looklikelibraryfunctions
– InsomeOS,systemcallsare
notdirectlyaccessibleby
applications(evenaswrappers)
Operating System
Libraries
System Call Wrapper
System Calls
SystemCall
• Theonlylegitimateaccesstotheoperatingsystemkernel
• Systemcalls=softwareinterrupt
– Codeexecutionstartsatdefinedaddress
ofassociatedinterruptserviceroutine
– Switchtoprivilegedmode
– Switchtokernelstack
System Call
Illicit
Calls
Protective Barrier
Operating System Sanctum J
(c)PeterSturm,UniTrier
3
Betriebssysteme
Winter2016
SupervisorMode&UserMode
• ModernoperatingsystemsrequireCPUtodifferbetween
– Supervisormode
• Everyinstructioncanbeexecuted,
includingconfiguringMMUetc.
• Accesstoallmemorylocations
User
Mode
– Usermode
• Sensibleinstructionsarenotallowed
(MMU,interrupthandling,…)
• Restrictedmemoryaccess
(MMU)
• OnlyOSallowedtorunin
supervisormode
Hardware
Interrupt
Software
Interrupt
Supervisor
Mode
SwitchOn
EverythingIsInsideTheKernel
• Threadissuingsystemcall„stays“insidekerneluntilcallis
completed
• Allrequiredfunctionality
mustbeinsidekernel
• Context-switchin
caseofblocking
• Monolith
(c)PeterSturm,UniTrier
OS Kernel
System Call
4
Betriebssysteme
Winter2016
…orISS
NexttoNothingInsideKernel
Microkernel
Client
Context
Switch
(c)PeterSturm,UniTrier
Server 1
Server 2
Server 3
Server 4
5
Betriebssysteme
Winter2016
Microkernel
• Implementsveryfewessentialabstractions
– Communicationprimitivestocrossaddressspaces
– Protection
– Interruptpreprocessinganddelivery
• Goal:Nosingleapplicationcanmonopolizeresources
• Dislocationofallremainingoperatingsystemfunctionality
intousermodeserver
–
–
–
–
Fileserver
Communicationserver
Graphicsserver
…
• Fromascientificpointofviewthemostattractivesolution
Comparison
Monolith
MicrokernelandServer
•
•
Pro
– Fast
•
(c)PeterSturm,UniTrier
– Goodarchitectureandstructure
possible
– Easiertoextend
– Easiertoadapt
– Debuggingofserverswithuser
modetools
Contra
– Keepingagoodarchitectureand
structurerequiresalotofselfdiscipline
– Noisolationbetweendifferent
partsofkernel
– Hardtoextend
– Complextoadapt
Pro
•
Contra
– Slow
(toomanycontextswitches)
6
Betriebssysteme
Winter2016
AcceleratingMicrokernels
•
Sensibleand/ortime-criticalservers
returnintokernel
– Microkernelbecomes„still
structured“monolith
•
Server
1
Server
n
Realization
– AdditionallinkingstepreplacesIPC
withfunctionscalls
– Ofcourse,noprotectionanymore
•
Appliedinmostmodernan
microkernel-basedoperating
systems
– MACH
– NTandsubsequentsystems
Microkernel
ImprovingMonoliths
• ExampleLinux
– Introductionofamoduleconcept
– Partsofoperatingsystems(especiallydrivers)willbeloadedon
demand
– Mostmodulescanbeunloadedagain
• Execution,testing,anddebuggingstillnotpossibleinuser
mode
• Stillnoprotection
Module1
Module2
Module3
Modulen
Monolith
(c)PeterSturm,UniTrier
7
Betriebssysteme
Winter2016
LINUX
Linux
SystemCallInterface
Process
Management
Architecture
Dependent
Code
(c)PeterSturm,UniTrier
Memory
Management
Memory
Manager
Filesystems
Filesystem
Types
Block
Devices
Device
Control
Character
Devices
Networking
Network
Subsystem
IF
Drivers
8
Betriebssysteme
Winter2016
History
• ArchetypeMINIX
– Minimal-UNIXforteachingpurposes
– A.Tanenbaum,Amsterdam
• LinusTorvaldsimplementshisown
system
• Firstappearance:comp.os.minix,
29.3.1991
„Helloeverybody,
I‘vehadminixforaweeknow,andhaveupgradedto386-minix(nice),
anddulydownloadedgccforminix.Yes,itworks– but…optimizing
isnt‘tworking,givingerrormessage[…].Isthisnormal?“
Aminixclonewasborn
„Helloeverybodyoutthereusingminix–
I‘mdoinga(free)operatingsystem(justahobby,won‘tbebig
andprofessionallikegnu)for386(486)ATclones.Thishas
beenbrewingsinceApril,andisstartingtogetready.I‘dlike
anyfeedbackonthingspeoplelike/dislikeinminx,asmyOS
resemblesitsomewhat(samephyiscallayoutofthefilesystem(duetopracticalreasons)amongotherthings).
…I‘llgetsomethingpracticalwithinafewmonths,andi‘dlike
toknowwhatfeaturesmostpeoplewouldwant.Any
suggestionsarewelcome,butiwon‘tpromiseI‘llimplement
them:-)“
(c)PeterSturm,UniTrier
9
Betriebssysteme
Winter2016
Chronology
•
Version0.01,September1991
•
Version0.11,December1991
– 0.11+VMoverchristmas
•
Version0.12,January1992
•
Version0.95,March1992
•
Weareapproachingversion1
•
Version1.0,13.March1994
– Increasingnumberofinterestedpeople
– QuarrelonOSarchitecturewithA.Tanenbaum(Linuxisobsolete)
– 0.95a,0.95a.1,0.95c,0.95c+,pre0.96,0.96a(Mai1992),0.96b,0.96b.2,0.98,
0.98.2,0.99,0.99.13,0.99.13k,
Linuxisobsolete(1)
• Tanenbaum
„IwasintheU.S.foracoupleofweeks,
soihaven‘tcommentedmuchonLINUX
(notthatiwouldhavesaidmuchhadi
beenaround),butforwhatitisworth,
ihaveacoupleofcommentsnow.
Asmostofyouknow,formeMINIXisa
hobby,somethingthatidointheevening
whenigetboredwritingbooksandthere
arenomajorwars,revolutions,andsenate
hearingsbeingtelevisedliveonCNN.Myrealjobisaprofessorand
researcherintheareaofoperatingsystems.
Asaresultofmyoccupation,IthinkIknowabitaboutwhere
operatingsystemsaregoinginthenextdecadeorso.Twoaspects
standout[kernelarchitectureandportability].
[…]“
(c)PeterSturm,UniTrier
10
Betriebssysteme
Winter2016
Linuxisobsolete(2)
• Tanenbaum(contd.)
„WhileIcouldgointoalongstoryhereabouttherelativemeritsofthe
twodesigns,sufficetosaythatamongthepeoplewhoactuallydesign
operatingsystems,thedebateisessentiallyover.Microkernelshave
won.
LINUXisamonolithicstylesystem.Thisisagiantstepbackintothe
1970s.Thatisliketakinganexisting,workingCprogramandrewriting
itinBASIC.
IthinkitisagrosserrottodesignanOSforanyspecificarchitecture,
sincethatisnotgoingtobearoundallthatlong.MINIXwasdesigned
tobereasonablyportable,andhasbeenportedfromIntellinetothe
680x0(Atari,Amiga,Macintosh),SPARC,andNS32016.LINUXistied
fairlycloselytothe80x86.Notthewaytogo.“
Linuxisobsolete(3)
• Torvaldsreply
„Well,withasubjectlikethis,I‘mafraidI‘llhavetoreply.Apologiesto
minix-userswhohaveheardenoughaboutlinuxanyway.I‘dlinketobe
abletojust‚ignorethebait,‘but…Timeforsomeseriousflamefesting!
[…]Lookatwhomakesmoneyoffminix,andwhogiveslinuxoutfor
free.Thentalkabouthobbies.Makeminixfreelyavailable,andoneof
mybiggestgripeswithitwilldisappear.
[…](BezugnehmendaufTanenbaumsBeruf)That‘sonehellofgood
excuseforsomeofthebraindamagesofminix.Icanonlyhope(and
assume)thatAmoebadoesn‘tsucklikeminixdoes.“
(c)PeterSturm,UniTrier
11
Betriebssysteme
Winter2016
Linuxisobsolete(4)
• Torvaldsreply(contd)
„PS.Iapologizeforsometimessoundingtooharsh:minixisnice
enoughifyouhavenothingelse.Amoebamightbeniceifyouhave510spare386‘slyingaround,butIcertainlydon‘t.Idon‘tusuallyget
intoflames,butI‘mtouchywhenitcomestolinux:)“
Linuxisobsolete(5)
• Torvaldsemailnextday
„Iwrote:
Well,withasubjectlikethis,I’mafraidI’llhavetoreply.
AndreplyIdid,withcompleteabandon,andnothoughtforgoodtaste
andnetiquette.Apologiesto[AndrewTanenbaum],andthankstoJohn
Nallforafriendy“that’snothowit’sdone”letter.Ioverreacted,and
amnowcomposinga(muchlessacerbic)personalletterto[Andrew
Tanenbaum].Hopenobodywasturnedawayfromlinuxduetoitbeing
(a)possiblyobsolete(Istillthinkthat’snotthecase,althoughsomeof
thecriticismsarevalid)and(b)writtenbyahothead:-)
Linus“myfirst,andhopefullylastflamefest”Torvalds”
(c)PeterSturm,UniTrier
12
Betriebssysteme
Winter2016
Linuxisobsolete(6)
• Wisewordsbysomebodyelse
„Manyifnotmostofthesoftwareweusisprobablyobsolete
accordingtothelatestdesigncriteria.Mostuserscouldprobablycare
lessiftheinternalsoftheoperatingsystemtheyuseisobsolete.They
arerightlymoreinterestedinistperformanceandcapabilitiesatthe
userlevel.
Iwouldgenerallyagreethemicrokernelsareprobablythewaveofthe
future.However,itisinmyopinioneasiertoimplementamonolithic
kernel.Itisalsoeasierforittoturnintoamessinahurryasitis
modified.
Regards,
Ken”
• KenThompson,„Inventor“ofUNIX
Linuxisobsolete(7)
• Thefightisover
• Tanenbaum
„Istillmaintainthepointthatdesigningamonolithickernelin1991is
afundamentalerror.Bethankfulyourarenotmystudent.Youwould
notgetahighgradeforsuchadesign:-)
[…]WritinganewOSonlyforthe386in1991getyouyoursecond‘F’
forthisterm.Butifyoudorealwellonthefinalexam,youcanstillpass
thecourse.”
• Torvald
„Well,Iprobablywon‘tgettoogoodgradesevenwithoutyou:Ihadan
argument(completelyunrelated– notevenpertainingtoOS‘s)with
thepersonhereattheuniversitythatteachesOSdesign.Iwonder
whenI‘lllearn:)
(c)PeterSturm,UniTrier
13
Betriebssysteme
Winter2016
THEUNIXROOTS
Inthebeginning…
• 1969:FirstUNIXversion(BellLabs)
– „Private“researchprojectbyKenThompson„touseanotherwiseidle
PDP-7“
– DennisRichie:Cprogramminglanguage
– Sourcesavailabletouniversitiesfromtheverybeginning
• Predecessors
– MULTICS:AmbitiousgoalatBellLabswasarchetypeformanyofthe
centralabstractionssuchasfilesystem,shell,etc.
– CTSS(MIT)
– GENIE(Berkeley):fork()
(c)PeterSturm,UniTrier
14
Betriebssysteme
Winter2016
DennisRitchie
PDP-11
KenThompson
1972
TheUNIXWay
• UNIXwasprogrammedwithhigh-levelprogramminglanguage
– TriumphalprocessionforprogramminglanguageC
– About3%assembleronly
• UNIXwasdistributedassources
– AT&T(BellLabs)hadnocommericalinterest(atfirst)
• UNIXfeaturedpropertesonlymuchlargerandmore
expensivesystemsofferedatthistime
• UNIXprovidesmanyelementaryfunctionsthatcanbe
combinedinverydifferentways(synergy)
– forkandpipes
(c)PeterSturm,UniTrier
15
Betriebssysteme
Winter2016
ImportantUNIXfamilies
• FirstEditionuptoTenthEdition,Plan9
– TheofficialBellLabsbranch
– Plan9(4theditionavailablesince2003)
• BSDbranch
– Advancementsinanacademicenvironment
• SystemV
– Advancementsinacommericalenvironment
• SunOS/Solaris
• Linux
BSDfamily
FirstEdition
SixthEdition
1BSD
• Earlybranchinacademia
– UniversityofBerkeley,SanDiego
2BSD
• IntegrationofTCP/IP
protocolstack
3BSD
4.0BSD
4.1BSD
4.2BSD
4.3BSD
Tahoe
NET/1
Reno
NET/2
– ARPANET
– SocketAPI
– TCPvariants(Reno,Tahoe,Vegas,…)
• Licensedifficulty
– Severalapproachestoprovide
license/freeversion(Litex)
4.4BSD
• FreeBSD
2.11BSD
BSDI1
4.4BSD
Lite1
FreeBSD
2.0
(c)PeterSturm,UniTrier
2.8BSD
4.4BSD
Lite2
BSDI2
16
Betriebssysteme
Winter2016
SystemV
SeventhEdition
PWB3.0.1
SystemIII
• Commercialversion
– DemergerofAT&T(1985)inhibits
successfulmarketing
SystemV
• Importantimprovement
PWB5.2
– Copy-On-Write
SystemV
Release2
• „SystemVIPC“
– SharedMemory
– UNIXStreams
– Semaphores,etc.
EightEdition
4.2BSD
SystemV
Release3
SunOS3
XENIX
SystemV
Release4
NovellUNIXWare
SunOS/Solaris
Solaris2
4.1cBSD
SunOS
• UNIXbranchofSUNMicrosystems
• ConsolidationofBSD
andSystemVbranches
SunOS3
4.3BSD
• AlsoavailableforPC
SunOS4
SystemV
Release4
Solaris
Solaris2
(c)PeterSturm,UniTrier
17
Betriebssysteme
Winter2016
MACHKERNEL
History
• Famousmicrokernelapproachstarting1984
– RichardRashid,CMU,previouslyworkingontheAccentnetwork
operatingsystemkernel,nowheadofMicrosoftResearch
• Microkerneltocopewiththeeverincreasingcomplexityof
theUNIXoperatingsystem
– Reducethenumberoffeaturesinthekerneltomakeitlesscomplex
• Machkernelimplementsprocessorandmemory
management
– Filesystem,networking,I/Oinauser-levelMachtask
(c)PeterSturm,UniTrier
18
Betriebssysteme
Winter2016
MachAbstractions
• Task
– Containerforalltheresourceofoneormorethreads
• Includesvirtualmemory,ports,processors,…
• Thread
– Basicunitofexecution
• Port
– In-kernelmessagequeuewithcapabilities
• Message
– Collectionofdatasentbetweenthreadsindifferenttasksusingports
• MemoryObject
– Containerofdatamappedintoatask‘saddressspace
MachMonolithsorMicrokernels
• Monolithsduetoperformanceissues(Mach2and2.5)
– BSD,OSF/1,NEXTSTEP,OPENSTEP
• TrueMicrokernelwithversion3
–
–
–
–
–
StartedatCMU,continuedbyOSF
KernelpreemptionandRTscheduling
Low-leveldevicesrepresentedasports
System-Callredirection(handlinginuserspace)
Continuations
• threadsmayblockbyspecifyingafunctiontobecalleduponcompletion
(c)PeterSturm,UniTrier
19
Betriebssysteme
Winter2016
MACOSX
Roots
• Quitecomplexhistory(seeSinghfordetails)
• OSKernel
– NuKernelfirst,replacedbyMachkernellater
• OSPersonality
– VariousapproachesincludingTalOS,Copland,Gershwin,BeOS,
– NEXTSTEPandOPENSTEP(withSunMicrosystems)andObjective-C
• Finalproducts
– MacOS8and9
– Rapsody(1997)
(c)PeterSturm,UniTrier
20
Betriebssysteme
Winter2016
FamilyTree
FreeBSD
NetBSD
Mac3.0
OPENSTEP
4.4BSD
Rapsody
MacOS
BlueBox
1998
MacOSXServer1.0
March1999
MacOSXDP1
Darwin0.1
March1999
May1999
MacOSX10.0
March2001
MacOSX10.5
October2007
Architecture
GUIAqua
ApplicationEnvironments
Classic,BSD,X11,Carbon,Cocoa,WebObjects,QuickTime,Java(AWT,Swing)
GraphicsandMultimedia
QuickDraw2D,Quartz,OpenGL,QuickTime,Audio,JRE
CoreServices
JDK,JVM
BSDAPI(Posixu.a.)
Mach
Hardware
(c)PeterSturm,UniTrier
21
Betriebssysteme
Winter2016
MICROSOFTWINDOWS
Overview
• SinceWindowsNTbackin1989…
–
–
–
–
32bitand64bitoperatingsystems
Preemptiveandreentrantscheduling
Fullvirtualmemorysupport
Supportformultiprocessorsystems
• Initialamikrokernel-basedapproachwithanumberoftimecriticalservices“re-integrated”intothekernel
• OSpersonalitiesareimplementedassubsystemsontopof
Windowskernel
– Windowssubsystemcommontoall(providesWin32API)
– SomeserversystemssupportPOSIXsubsystem
– TherewasaOS/2subsystemonce
(c)PeterSturm,UniTrier
22
Betriebssysteme
Winter2016
OverallArchitecture
Subsystem
System
Support
Processes
Service
Processes
User
Applications
Environment
Subsystems
SubsystemDLLs
SystemCall
Interface
Executive
Kernel
Windowing
andGraphics
DeviceDrivers
HardwareAbstractionLayer(HAL)
WindowsExecutive
SystemCallInterface
System Threads
System Service Dispatcher
I/O
Manager
USER
GDI
File
System
Cache
Object
Manager
Plug
and
Play
Manager
Security
Reference
Monitor
Virtual
Memory
Processes
and
Threads
Config
Manager
(Registry)
Local
Procedure
Call
Graphics
Driver
Kernel
Hardware Abstraction Layer (HAL)
(c)PeterSturm,UniTrier
23
Betriebssysteme
Winter2016
Literature
•
D.Bovet,M.Cesati,UnderstandingtheLinuxKernel,3rdEdition,O‘Reilly,2006
•
EricLevenez,Variouschronologiesonoperatingsystems,
http://www.levenez.com
•
J.Mauro,R.McDougall,SolarisInternals,SunMicrosystemsPress,2001
•
M.K.McKusik,K.Bostic,M.J.Karels,J.S.Quarterman,TheDesignand
ImplementationoftheFreeBSDOperatingSystem,Addison-Wesley,2014
•
G.Moody,rebelcode– LinuxandtheOpenSourceRevolution,ThePenguin
Press,2001
•
M.E.Russinovich,D.A.Solomon,MicrosoftWindowsInternals,4th Edition,
MicrosoftPress,2005
•
AmitSingh,MacOSXInternals– ASystemsApproach,Addison-Wesley,2007
•
A.S.Tanenbaum,A.S.Woodhull,TheMinixBook– OperatingSystems,3rd
Edition,Prentice-Hall,2006
•
L.Torvalds,justforfun,HarperBusiness,2001
(c)PeterSturm,UniTrier
24
System Software
Winter 2016
OperatingSystems
VirtualMachines
Virtualisierung
SystemX‘‘
SystemX‘
SystemX
„Virtualizationisaframeworkor
MaschineY‘‘‘
MaschineY‘‘
methodologyofdividingtheresources
ofacomputerintomultipleexecution
environments,byapplyingoneormore
conceptsortechnologiessuchas
hardwareandsoftwarepartitioning,
time-sharing,partialorcomplete
machinesimulation,emulation,quality
ofservice,andmanyothers.”
MaschineY‘=Y
Virtualisierungssoftware
MaschineY
AmithSingh
(c) Peter Sturm, University of Trier
1
System Software
Winter 2016
Vorteile
• Server-Konsolidierung
• Indirektionsstufe
–
–
–
–
–
• TestenundDebugging
• Isolation
– Sandboxing
– Fault/ErrorContainment
• AusführungvonLegacy
Software
– AlteAnwendungen
– AlteBetriebssysteme
Migration
QualityofService
Lastverteilung
Administration
Automatisierung
• Schulungen
• Auslieferungsmediumfür
Anwendungen
– EinsichteninneueSoftware
Nachteile
• Zeit- undPlatzeffizienz
• SchlechtvirtualisierbareHardware
• BereitsimGast-OSgenutzteVirtualisierung
(c) Peter Sturm, University of Trier
2
System Software
Winter 2016
Technikistrechtverbreitet!
• VirtualisierungeinzelnerRessourcen
– Terminal=Window
• AktivesFensterhatFokus(=KeyboardundMaus)
– CPU=Thread
– AdreßraumSpeicher=VirtualMemory
– …
• VirtualisierungganzerRechner
– 16BitWindowsundDOS-Anwendungen
• AusführungineinervirtuellenMaschine
– VirtuelleMaschinenunterschiedlichsterBauart
Ressourcen-Virtualisierung
• BessereAusnutzung
– KontextwechselbeiblockierendemAufruf
– NebenläufigeAnwendungenprofitierenvonMultiprozessoren
• …aberlaufenauchaufMonoprozessoren
• EliminierenvonEngpässen
– MehrSpeicherdurchPaging
– JedeAnwendungbekommtihreigenesTerminal
• Schutz/Isolation
– Anwendungenuntereinanderisoliert
– Betriebssystemvordefekten/bösartigenAnwendungengeschützt
(c) Peter Sturm, University of Trier
3
System Software
Winter 2016
Beispiel„VirtuellerSpeicher“
Stack
Heap
Data
Code
Page
Table
• Abbildungsverfahren
– Ortjedergenutztenvirtuellen
SeiteimSpeicher
RealerAdreßraum
VirtuellerAdreßraum
MMU
• Mehrwert
– IsolationvonAdreßräumen
– Schutz
– BessereSpeichernutzung
• OverheadwirddurchspeziellenCache
(TranslationLookasideBuffer)minimiert
HistorischeWurzeln
(c) Peter Sturm, University of Trier
4
System Software
Winter 2016
Details
• 1959bis1970,IBMfederführend,aberauchMITu.a.
• GeburtsstundedesMulti-ProgrammingundTime-Sharing
– AtlasProject,Manchester (1961)
– Multics,MIT(1963)
– m44/44X,IBM704Serie,CTSS,CP-40,CP-67,VM/370IBM(ca.1965)
• MehrereidentischeKopienderHardware
• KommendeOS-Generationnochzujungundinstabil
• SchnelleNutzungderbesserwerdendenHardware
• EtablierteundzuverlässigeBetriebssystememittelsvirtuellen
Maschinenreplizieren
Virtualisierungsarten
• Emulation
– VollständigeSimulationandererCPUundHardware
• NativeVirtualisierung(FullVirtualization)
– KeineÄnderungdesGastsystems(=Transparenz)
• Paravirtualisierung
– GastsystemesindsichihrerVirtualisierungbewußt
– TransparenzoberhalbdesGastes
• OS-Level-Virtualisierung
– BetriebssystemvirtualisiertmehrereInstanzenseinerselbst
• Anwendungsvirtualisierung
(c) Peter Sturm, University of Trier
5
System Software
Winter 2016
Emulation
• Interpretation
• Übersetzung
– MSVirtualPCfürPPC
– EmulatorenfürAtari,VC64,
AppleII,…
– Rosetta(MACOSX,PPCauf
Intel)
– WOW64(32BitWindowsauf
Itanium2)
– …
• Performanz
NativeVirtualisierung
• BefehlssatzGast=BefehlssatzHost
• Voraussetzungen
– Privilegierterundnicht-privilegierterModus
– GutvirtualisierbareCPU;-)
• Gast-OSführtprivilegierteInstruktion
aus
– VMMinterpretiertBefehlimKontext
dervirtuellenHardware
• WechselzuvirtuellerHardwarefür
Gast-OSunsichtbar
Anwendung
Nicht-Privilegiert
Gast-OS
Nicht-Privilegiert
Anwendung
Virtuelle
Nicht-Privilegiert
Hardware
VMM
OS
Privilegiert
Hardware
(c) Peter Sturm, University of Trier
6
System Software
Winter 2016
Typ-1undTyp-2
Type-2 VMM
Gast1
Type-1 VMM
(Hypervisor)
Gast2
VMM
Gast1
Gast2
HostOS
VMM
Hardware
Hardware
Beispiele
• VMware,Parallels,...
– FortgeschritteneKonzepte
•
•
•
•
•
DragandDrop
Schnappschüsse
Clones
Multimedia
VirtuelleRechnernetze
• MicrosoftVirtualPCund
VirtualServer
• VirtualBoxvonSun
(c) Peter Sturm, University of Trier
7
System Software
Winter 2016
KritischeInstruktionen
• RealeCPUsmehroderwenigergutvirtualisierbar
• x86eherwenigerJ
• Gründe
– Nicht-privilegierteInstruktionengebenAuskunftüberprivilegierte
Hardware-Informationen(Interrupts,…)
– InstruktionsresultatabhängigvomAusführungsmodus
– InstruktionenverändernverstecktenProzessorzustand
• Insgesamt17kritischeInstruktionen
– AusführunglöstkeineExceptionaus
– FürVMMschwererkennbar(z.B.aufwendigeFilterung)
Paravirtualisierung
• Gast-Systemmußangepaßtwerden
• Vorteile
– FürVirtualisierungungünstigeHardware-Eigenschaftenabschwächen
bzw.aufheben
– KritischeInstruktionenvermeiden
– GeringeEffizienzverluste
• Nachteile
– ZugangzumSourcecodenotwendig
• BedeutendsterVertreter:Xen
• StarkesInteresseseitensVMwareundMicrosoft
(c) Peter Sturm, University of Trier
8
System Software
Winter 2016
Xen
Host
Gast1
Gastn
Dom0
Dom1
Domn
XenHypervisor
Hardware
• OpenSourceProjektderUniversitätCambridge
• VolleVirtualisierungmitHW-Unterstützungmöglich
• SpeziellesHostsysteminDom0
– stelltinderRegelTreiberfürE/Abereit
– FührtdiverseXen-Prozesseaus
• GästegreifenübervirtuelleTreiberundHostaufGerätezu
– SharedMemoryundEvents
User-ModeLinux(UML)
• PortierungdesLinux-KernelsaufvirtuelleArchitekturum
• arch/um bildetFunktionalitätaufSystemCallsab
Þ UMLbestehtaus
mehrerenLinux-Prozessen
Anwendungen
Linux
Anwendungen
arch/um
Linux
arch/i386
Hardwarei386
(c) Peter Sturm, University of Trier
Hardwareum
9
System Software
Winter 2016
OS-LevelVirtualisierung
• DünneVirtualisierungsschichtoberhalbdesBetriebssystems
• JedesServer-OSbietetentsprechendeMöglichkeiten
– VirtualEnvironments,VirtualPrivateServers,Jails,vservers,Zones,
Containers,…
• KommerzielleLösungen
• Bemerkungen
– Leichtgewichtig
– Vergleichsweisekomplex
– Meistfangenvorgeschaltete
Kerneltreiberalle
Aufrufeab
Service1
Service2
Service3
OSX
OSX
OSX
Virtualisierungsschicht
OSX
Hardware
Produkte
Wikipedia
(c) Peter Sturm, University of Trier
10
System Software
Winter 2016
ABI/API-Virtualisierung
• WINE
– WindowsAPIaufUNIX/LinuxundX
• CrossOver
– KommerzielleWine-Version
• SUNWABI
– WindowsApplication
BinaryInterface
– fürx86
– EmulationaufSPARC
• …
ApplicationVirtualisierung
• VielÄhnlichkeitmitEmulation,aber…
– keineNachbildungeinesvorhandenenBefehlssatzes
– sonderneigenständige,problemspezifischeLösung
• MeistdeutlichhöhereAbstraktionenalsCPU-Instruktionen
• WichtigsteVertreter
– JavaVirtualMachine(JVM)
– .NETCommonLanguageRuntime(CLR)
• DIELaufzeitplattformenderGegenwart
(c) Peter Sturm, University of Trier
11
System Software
Winter 2016
Beispiele
Wikipedia
WeitereBeispiele
• Web-Server
– VirtualDirectory
– VirtualHost
• ApplicationServer
– EnterpriseJavaBeans
– WeitereIndirektionsstufe
• WPFundWFaus.NET4.5
– Instruktionssätze
• XAML
• XAMLPresentation
• XOML
(c) Peter Sturm, University of Trier
12
System Software
Winter 2016
Microsoft
• DiverseAnsätzeseitmindestens1995inBenutzung
• VirtualDOSMachine(VDM)
– DOS-AnwendungenunterWindowsausführen
• WOW32,WOW64
– Unterstützungfür16-Bit-Anwendungenauf32-Bit-Windowsund32-BitAnwendungenauf64-Bit-Windows
• ABI/API-EmulationenfürOS/2undPOSIX
• ApplicationVirtualization
– SQLServer,IIS,ExchangeServer,TerminalServer,….
• AktuelleProduktlinie
• Ziel:ParavirtualisierteWindows-Betriebssysteme,Hypervisor
WindowsEnlightenment
• ParavirtualisierbareWindows-Betriebssysteme
• SeitLonghorn(CodebaseVistafürServer)
• VerlagerungderTreiberinGast-OS
– VirtualizationProvider
– VirtualizationClient
– DirekterHW-ZugangfürGäste
• Direct3Dbzw.DirectXfürGästezugänglich!!!
(c) Peter Sturm, University of Trier
13
System Software
Winter 2016
Sicherheit
• VMWareSoftware
– RemoteHeapExploitinvmnat.exe
– AngreiferkanneinevirtuelleMaschineverlassenundHost
kompromittieren
• AngriffeaufJVMund.NETCLRdurchFehlerinder
Speicherverwaltung
– S.Govindavajhala,A.W.Appel,Princeton,2003
BluePillAttack
• JoanaRutkowska,COSEINC
• NutztHardwareunterstützungfürVirtualisierung
– MalwarewirdkleinerHypervisor
– OSkommtineinevirtuelleUmgebungundwirdkontrollierbar
– Geht„Onthefly“
• ExploitaufAMD64SVMüberVista
• SchutzmitzusätzlicherHW-Unterstützungmöglich
– AuthenifizierungaufHW-EbenebeimEinrichtenneuerVMs
(c) Peter Sturm, University of Trier
14
System Software
Winter 2016
BlueandRedPill
TheMatrix
writtenbyAndyWachowski&LarryWachowski
Morpheus: Iimaginethatrightnowyou'refeelingabitlikeAlice.Tumblingdowntherabbithole?
Neo: Youcouldsaythat.
Morpheus: Icanseeitinyoureyes.Youhavethelookofamanwhoacceptswhatheseesbecausehe'sexpectingtowake
up.Ironically,thisisnotfarfromthetruth.Doyoubelieveinfate,Neo?
Neo: No.
Morpheus: Whynot?
Neo: 'CauseIdon'tliketheideathatI'mnotincontrolofmylife.
Morpheus: Iknowexactlywhatyoumean.Letmetellyouwhyyou'rehere.You'reherebecauseyouknowsomething.What
youknow,youcan'texplain.Butyoufeelit.Youfeltityourentirelife.Thatthere'ssomethingwrongwiththeworld.You
don'tknowwhatitis,butit'sthere.Likeasplinterinyourmind-- drivingyoumad.Itisthisfeelingthathasbroughtyouto
me.DoyouknowwhatI'mtalkingabout?
Neo: TheMatrix?
Morpheus: Doyouwanttoknowwhatitis?
(Neonodshishead.)
Morpheus: TheMatrixiseverywhere,itisallaroundus.Evennow,inthisveryroom.Youcanseeitwhenyoulookoutyour
window,orwhenyouturnonyourtelevision.Youcanfeelitwhenyougotowork,orwhengotochurchorwhenyoupay
yourtaxes.Itistheworldthathasbeenpulledoveryoureyestoblindyoufromthetruth.
Neo: Whattruth?
Morpheus: Thatyouareaslave,Neo.Likeeveryoneelse,youwerebornintobondage,borninsideaprisonthatyoucannot
smell,taste,ortouch.Aprisonforyourmind.(longpause,sighs) Unfortunately,noonecanbetoldwhattheMatrixis.You
havetoseeitforyourself.Thisisyourlastchance.Afterthis,thereisnoturningback.
(Inhislefthand,Morpheusshowsabluepill.)
Morpheus: Youtakethebluepillandthestoryends.Youwakeinyourbedandbelievewhateveryouwanttobelieve.(ared
pillisshowninhisotherhand) YoutaketheredpillandyoustayinWonderlandandIshowyouhowdeeptherabbit-hole
goes.(Longpause;Neobeginstoreachfortheredpill) Remember-- allIamofferingisthetruth,nothingmore.
(Neotakestheredpillandswallowsitwithaglassofwater)
TRENDS
(c) Peter Sturm, University of Trier
15
System Software
Winter 2016
Trends
• MehrFunktionalität
– MigrationvirtuellerMaschinenimlaufendenBetrieb
– Konvertierung
• AusrealerInstallationwirdvirtuelleInstallation
• AusvirtuellerInstallationwirdrealeInstallation
• ZwischenverschiedenenvirtuellenFormaten
• MehrStandards
– OffenlegungderFormatevirtuellerFestplatten
– ManagementkomplexervirtuellerInfrastrukturen
• MehrHardwareunterstützung
– ParavirtualisierungbeiHardwaretreibern
• Zugriffauf3D-FeaturesmodernerGraphikkartenindervirtuellenMaschine
– DirekterSupportinmodernenCPUs
Visionen?!
• VirtuelleMaschinenwerdenimmer„billiger“
– AusreichendvieleCPUsvorhanden
– KompakteImages
• SnapshotswerdenalsDeltasgespeichert
• MehrereVMsnutzengleicheCodebasis
• Hypervisor+VirtuelleMaschinenwirdNormalfall
• „WennderProphetnichtzumBergkommt,…“
– BetriebssystemeerlaubensaubereAnwendungsstrukturen
– AbervieleAnwendungenwerden„unsauber“realisiert
– JedeAnwendungbekommteigenevirtuelleHardware
• VirtuelleMaschinenwerdenEinheitendesDeployments
(c) Peter Sturm, University of Trier
16
System Software
Winter 2016
VirtuelleZeiten
• Anwendungenwerdenalsvorkonfiguriertevirtuelle
Maschinenausgeliefert
–
–
–
–
BessereIsolation
WenigerWechselwirkungen
ErhöhteFlexibilität
ErhöhteMobilität
• VieleVMslaufenaufjeweilseinemRechner
– Zeit- undPlatzeffizienz
• RenaissanceinForschungundEntwicklung
• VirtualisierungstechnikensindneueralterTrend
Trend
OnBoard Hypervisor
(c) Peter Sturm, University of Trier
17
System Software
Winter 2016
Trend:Hypervisorwandeltsich
• 1.Generation
– Hosted Typ-2-Hypervisor
Hardware
HostBetriebssystem
Hypervisor
GastBetriebssystem
Applikation
MehrTyp1?
• NativeTyp-1-Hypervisor
Hardware
Hypervisor
Gast
Betriebssystem
Applikation
(c) Peter Sturm, University of Trier
18
System Software
Winter 2016
Trend…
• Managed Code
Hardware
Hypervisor
Gast
Betriebssystem
Managed Runtime
Environment
Applikation
Trend:Gast-OSwandeltsich
• BeispielESXServer3i
– TeilmengederPOSIXOS-API
– VSockets überVMCI(zukünftig)
– Microkernel++?
• Canonical JeOS
– JustEnough OperatingSystem
– Minimal-Ubuntu fürVirtualAppliances
– FürESXServer3iHypervisor
HW
HV
RTE
• BEALiquidVM
– JVMfürdenHypervisor
– FürVirtualAppliances
Applikation
• MicrosoftServerCore
– Konfigurierbarer minimalWindowsServerohneGUI
(c) Peter Sturm, University of Trier
19
System Software
Winter 2016
Odernochschlimmer...
• ...BrowseristdasBetriebssystem
– VergleichbarJVModerCLR
• BeispielChrome
HW
• Trend„RichInternetApplications“(RIAs)
– AspektverteilterSysteme
– IntegrationvonCloudsbzw.*aaS
Minimal
OS
Browser
RIA
Hardwareunterstützung
• SupportfürvirtuelleMaschinen
– Unzulänglichkeitenderx86-Architekturbzgl.Virtualisierungbeseitigen
– IntelVT(früherVanderpool)
– AMDV(früherPacifica)
• IOMMU
–
–
–
–
VirtuelleAdreßabbildungundSchutzbeiDMA-Zugriffen
Legacy32-Bit-Supportauf64-Bit-Systemen
DirekterabergeschützterZugriffvirtuellerGästeaufHardware
DirekterabergeschützterZugriffvonAnwendungenaugfHardware
(c) Peter Sturm, University of Trier
20
System Software
Winter 2016
IntelVT
VM Entry
Host-State
Area
Guest-State
Area
VM Exit
• ZweiRealisierungen
– x86-Architektur:VT-x
– Itanium:VT-i
• VMExitssindkonfiguierbar
–
–
–
–
WelcheExceptionsollExitauslösen?
WelcherI/O-Zugriff?
WelchemaschinenspezifischenRegistersindgeschützt?
WelchekritischenInstruktionen?
Trend:VMalsEinheitdesDeployment
• OpenVirtualMachine Format(OVF)
– PortabelundHV-unabhängig
– XML-basierterStandardzumAustauschvirtuellerMaschinen
– Unterstützt„VirtualAppliances“/„SoftwareAppliances“
• „NichtnurBetriebssystemesondernApplikationen“
• VirtualAppliances
– VM-EnsemblesalseinheitlicheApplikation
– BeispielCRM-Applikation
• WebServer,Datenbank-Server,Frontend,…
• JedeKomponenteeineVM
– Einfache„Installation“
(c) Peter Sturm, University of Trier
21
System Software
Winter 2016
Standards
• ImageSpezifikationen
– InterneRepräsentationdervirtuellenLaufwerkeoffengelegt
• VMware
• Microsoft
• Zusammenarbeitbei
– DefinitioneinesParavirtualisierungs-APIs
• WindowsaufXenohneSourcecodeundHWmöglich
– EinheitlicheManagement-APIs
• UmstiegvonAppleaufIntel-CPUshatSzenebelebt
(c) Peter Sturm, University of Trier
22
System Software
Winter 2016
Record/Replay
• KompletteKontrollederZeitausSichteinerVM
– VollkommendeterministischeAusführung
• Einsatzszenarien
– Software-Tests/Debugging
•
•
•
•
ExakteReproduzierbarkeitvonFehlern
Race-Conditions
AlsLoganEntwicklerliefern
Debuggernachträglicheinhängen
– Consumer
• Recovery imtäglichenEinsatz?
• VM-basierteWiederherstellungspunkte?
(c) Peter Sturm, University of Trier
23
Betriebssysteme
Winter2016
CONTAINER
DOCKER ET AL.
Steffen Gebert (Uni Würzburg) & Peter Sturm
©Gebert/Sturm
1
Betriebssysteme
Winter2016
VIRTUELLE MASCHINEN
• Pflegen wir, als wären es reale
• Installieren Updates
• Schauen wir uns bei Fehlern genauer an
• Geben wir bedeutungsvolle Hostnamen
• Hängen an deren Existenz
JAILS
©Gebert/Sturm
2
Betriebssysteme
Winter2016
OS LAYER VIRTUALISIERUNG
• OS virtualisiert hinter dem System Call API
• chroot, Jails, u.a.
System Calls
Betriebssystem
OS LAYER VIRTUALISIERUNG
• OS virtualisiert hinter dem System Call API
• chroot, Jails, u.a.
System Calls
Virtualisierung
Betriebssystem
©Gebert/Sturm
3
Betriebssysteme
Winter2016
NEUE KLEIDER?
• Wieder neue Kleider
• Diesmal aber mit mehr Power
• Klappt vielleicht besser als beim letzten Mal
VIRTUELLE MASCHINE à CONTAINER
• Container sind zum Wegwerfen
• Sind sehr schnell instanziiert
VM
• Gleicher Kernel wie Hostsystem
• Virtualisierung von
Container
• Prozessbaum
• Netzwerkstack
• Filesystem
©Gebert/Sturm
4
Betriebssysteme
Winter2016
ANWENDUNGS-DEPLOYMENT
Kernel
Systemd
SSH
Docker
Python
Java
Nginx
MySQL
OpenSSL
OS
App
Deployment
Python
Java
Nginx
MySQL
OpenSSL
Kernel
Systemd
SSH
Docker
OS
App
Deployment
• Traditionell:
• Python/Ruby/Java/Tomcat etc. Teil des OS
• Container:
• Plattform + Anwendung = Container = deploybares Artefakts
CONTAINER == DOCKER ?!
• Docker-Projekt hat Container populär gemacht
• Linux Container (LXC) als leichtgewichtige Virtualisierungstechnik
• Vereinfacht Handling von Containern (LXC schwer handhabbar)
©Gebert/Sturm
5
Betriebssysteme
Winter2016
DOCKER: STORE
DOCKER: HUB
• Zentrale Registry (Artefaktrepository) für Images
(http://hub.docker.com oder Unternehmens-Registry)
• Jeder kann Container auf Basis vorhandener Images starten
• Docker Host lädt fehlende Images automatisch
• Self-service-Angebot für Entwickler/Mitarbeiter
©Gebert/Sturm
6
Betriebssysteme
Winter2016
DOCKER: UNION FILESYSTEM
• Zu kopierende Daten bei Starten eines Docker-Containers: 0
• Zeitdauer zum Starten: Nahezu 0
• Overlay/Union-Filesystem
• Schreibzugriffe werden in neuen Layer gelenkt
writeable
Applic. XYZ
Tomcat
Base
Ubuntu
WO LÄUFT DOCKER?
• Docker Container laufen auf allen modernen Linux-Distros
• Für Produktivbetrieb: Auf Docker spezialisierte Distros
• Weniger installierte Software
• Integrierte Management-Tools
• Public Clouds: In virtueller Maschine
©Gebert/Sturm
7
Betriebssysteme
Winter2016
COREOS
• Kein Paketmanager, nur Docker und wenige Userland-Tools
• Hostsysteme werden zentral aktualisiert
• Aktualisierungsquote festlegbar
• Fallback-System auf 2. Partition installieren
• Automatischer Reboot
MICROSOFT VS. DOCKER?
• Microsoft findet Docker toll
• Docker-Support in Azure schon länger
• Partnerschaft mit Docker Inc. seit Okt 2014
• Diverse Beiträge zum Docker Code
©Gebert/Sturm
8
Betriebssysteme
Winter2016
WINDOWS CONTAINER
• Neu in Windows Server 10
• Docker-kompatibel
• Zwei Varianten
• Windows Server Container (direkt auf Hardware)
• Hyper-V Container (in Hyper-V und z.B. Azure, Multi-Tenancy)
“new level of isolation” [wie wir es nur von VMs gewohnt sind]
MICROSOFT NANO SERVER
• Abgespeckter Server Core
• Kein MSI Installer, kein WOW64 (= 32 Bit Support)
• Keinerlei Nutzer-Interfaces (auch nicht lokales CLI)
• Konfiguration über PowerShell bzw. Desired State Configuration (DSC)
©Gebert/Sturm
9
Betriebssysteme
Winter2016
CONTAINER MANAGEMENT
COREOS: FLEET
• Verteilt Container auf laufende Hosts
• Hält immer festgelegte Anzahl Instanzen am Laufen
• Startet bei Bedarf zusätzliche
• Tagging (z.B. app, db) erlaubt Container auf bestimmten
Host-Typen zu starten
©Gebert/Sturm
10
Betriebssysteme
Winter2016
KUBERNETES
• Management und Orchestrierung
von Containern
• Pods fassen mehrere Container
zusammen
• Policies legen Eigenschaften der
Dienste fest
• Basisimages, Versionen, Ports, Volumes
MESOS
• 2009 an der UC Berkeley erschaffen, Apache Top-Level Project
• Abstraktion der Data Center Ressourcen
• Datacenter operating system („program against your datacenter like
it‘s a single pool of resources“)
• APIs für zahlreiche Sprachen
• Fehlererkennung und –korrektur / High Availability
• 2-Layer Scheduling
• Resourcenverwaltung gegenüber Frameworks, diese wiederum ggü.
Applikation
• Docker-basierte Scheduler neben anderen Frameworks
• Nutzer: Twitter, Airbnb, Apple‘s Siri
©Gebert/Sturm
11
Betriebssysteme
Winter2016
MESOS ALS DATA CENTER KERNEL
DOCKER SWARM
• Integraler Bestandteil von Docker
• Zugang über Standard Docker API
• Unterstützung vorhandener Tools
• { Docker Hosts } = Virtueller Docker Host
• Node API
• Kritik: Node API != Cluster API
• Kubernetes u.a. mehr als Swarm
©Gebert/Sturm
12
Betriebssysteme
©Gebert/Sturm
Winter2016
13
Betriebssysteme
Winter2016
Innovative
Architekturansätze
PeterSturm
AGSystemsoftware
BetriebssystemeimUmbruch
• AllgemeineProbleme
– SteigendeKomplexität
– MangelndeZuverlässigkeit
• NeueHerausforderungen
– ManyCore-Architekturen
• NeueAnwendungsszenarien
– RIAs
– ManagedApplications
(c)PeterSturm,UniversityofTrier
1
Betriebssysteme
Winter2016
ChromeOS+ChromiumOS
• Kategorie„Justenoughoperatingsystem“
• ChromoOS=Google„Produkt“
• ChromiumOS=OpenSourceProjekt
Applications(JavaScript,RIA,...)
ChromeBrowser
Customization
LinuxDerivat
MicrosoftSingularity
• ForschungsprojektvonMicrosoftResearch
– 2004– ~2009
• DesignPrinzipien
–
–
–
–
–
KompletterNeubeginn(NameJ )
KeineAbwärtskompatibilität
FokusaufZuverlässigkeit
TypsichereSprachenundSoftwareverifikation
Microkernel-Architektur
wikipedia
(c)PeterSturm,UniversityofTrier
2
Betriebssysteme
Winter2016
Adressräume
• Isolationvon…
– VerschiedenenProzessen
– KernelundProzessen
• Grund?
– UnmanagedCode
• C/C++,Assembler,…
– NichttypsichereSprachen
– PotenziellfehlerhafteVerwendungvonPointern
SingularityAnsatz
App
App
Dateisystem
Treiber
CLR
CLR
CLR
CLR
CLR
GC
GC
GC
GC
GC
…
…
TCP/IP
Stack
ABI
CLR
Garbage
Collector
Kernel(C#)
Adressraum
KernelMode
è KeineWechselvonAdressräumenmehrnotwendig!
(c)PeterSturm,UniversityofTrier
3
Betriebssysteme
Winter2016
Software-isolierteProzesse(SIPs)
• AllesimgleichenAdressraum!
– Kernel,Treiber,Applikationen
• Isolation
–
–
–
–
TypsichereSprache(keinePointer)
AlleReferenzenexplizitundtypisiert
VerifikationwährendderÜbersetzung
Isolationistformalbeweisbar!
• KeineIsolationaufHW-Ebene
– Nichtnotwendig
– KeinAdressraumwechsel
– KeinekaltenCaches/TLBs,…
è Microkernel-Ansatzwirdeffizient!
Software-isolierteProzesse(SIPs)
• VerifikationzurÜbersetzungszeit
– Deshalb(momentan)…
• KeineCode-GenerierungzurLaufzeit
• KeindynamischnachgeladenerCode
(c)PeterSturm,UniversityofTrier
4
Betriebssysteme
Winter2016
InterprozessKommunikation
• KompletteIsolation?
• InteraktionnurüberspezielleKommunikationskanäle
– Nachrichtentypen+AbfolgeperKontraktspezifiziert
– CompilerüberprüftkorrekteVerwendung
• Abhängigkeiten
– VollständigüberKontraktespezifiziert
– ZwischenallenSIPs
• Treiber,Applikationen,Kernel,Dateisystem,…
Sing#
• C#-DialektSing#
• KommunikationundKontrakteaufSprachebene
–
–
–
–
DefinitionvonEndpunkten
Empfangvon(mehreren)Nachrichten
SendenvonNachrichten
Zustandsmodell
(c)PeterSturm,UniversityofTrier
5
Betriebssysteme
Winter2016
public contract TcpConnectionContract {
in message Connect(uint dstIP, ushort dstPort);
out message Ready();
state Start : Ready! -> ReadyState;
state ReadyState : one {
Connect? -> ConnectResult;
BindLocalEndPoint? -> BindResult;
Close? -> Closed;
}
state BindResult : one {
OK! -> Bound;
InvalidEndPoint! -> ReadyState;
}
in message Listen();
state Bound : one {
Listen? -> ListenResult;
Connect? -> ConnectResult;
Close? -> Closed;
}
…
}
TechnischeUmsetzung
• EffizienteNachrichtenkommunikation?
App
App
Dateisystem
Treiber
CLR
CLR
CLR
CLR
CLR
GC
GC
GC
GC
GC
…
…
TCP/IP
Stack
ABI
CLR
(c)PeterSturm,UniversityofTrier
Garbage
Collector
Kernel(C#)
Exchange
Heap
6
Betriebssysteme
Winter2016
ExchangeHeap
• DurchKernelverwalteteDatenstruktur
– EnthälttypisierteNachrichten
– KernelerlaubtundentziehtZugriffaufTeiledesHeaps
• AustauscheinerNachricht
– ReferenzaufNachrichtanKernelübergeben
– KernelbenachrichtigtEmpfängerundgibtihmReferenzaufdie
Nachricht
è Simple„Pointer“-Operation
• Invariante
– ZujedemZeitpunkthatnureinProzeßeineReferenzaufTeildes
ExchangeHeaps
– VerifikationdurchCompileraufBasisdesKontrakts
Composability
• AktuelleBetriebssysteme?
– WelcheAuswirkunghatdieInstallationderSoftwareXaufdierestliche
Software?
– Kaumvorhersehbar
• Ziel
– ExpliziteAbhängigkeiten
– VorhersagbarkeitvonEffektenundFehlern
• z.B.beiFehlerineinerKomponenteabhängigeKomponenten
benachrichtigen/neustarten
(c)PeterSturm,UniversityofTrier
7
Betriebssysteme
Winter2016
Performance?
LandläufigeMeinung
InC/C++geschriebeneSoftwareläuftschneller
alsSoftware,dieinC#oderJAVAgeschrieben
wurden!
AufdenzweitenBlick…
• Performancevorteile
– IPCohneKontextwechsel
– KernelaufrufeohneKontextwechsel
– KeineRuntimeChecksnotwendig
à CheckseinmaligbeiderÜbersetzung
if(ptr!=NULL)
*ptr…
• Benchmark-Ergebnisse
– Faktor5– 10schnelleralsaktuelleBetriebssysteme
(FreeBSD,Linux,Windows)
(c)PeterSturm,UniversityofTrier
8
Betriebssysteme
Winter2016
MICROSOFTMIDORI
MicrosoftMidori
• ForschungsprototypmitPraxisbezug
– Sogenanntes„Incubation“-Projekt
– BasiertaufSingularity
– Geheimnisumwittert
• Spekulationen
– ZukünftigeWindows-Version?
– Bislangwenigtechnische
Detailsbekannt
• TrendzuformalenMethoden
(c)PeterSturm,UniversityofTrier
9
Betriebssysteme
Winter2016
MidoriProgrammiermodell
• „Concurrency“
–
–
–
–
AsynchroneOSAPI
KommunikationüberasynchroneNachrichten
ErlaubtbessereMultiCoreSkalierbarkeit
siehez.B.auchMSRoboticsStudio
• „DistributedConcurrency“
– EinbeziehungentfernterKomponenten
– à CloudComputing
– ProgrammiermodellunterstütztNachrichtenverlust,Latenzen,
sporadischeKonnektivität
Virtualisierungsaspekte
• VirtualisierbarkeitdesKernels
– Nativausführbaraufx86,x86undARM
– AusführungimHypervisor
• typsichereInteraktionzwischenHypervisorundKernel
– AusführungineinemWindows-Prozess
(c)PeterSturm,UniversityofTrier
10
Betriebssysteme
Winter2016
Quellen
•
Artikel
•
SingularityalsSourceCodeundbootbaresImage
•
Channel9Videos
– GalenC.Hunt,JamesR.Larus,Singularity:RethinkingtheSoftwareStack,ACMSIGOPSOperating
SystemsReview,vol.41,no.2,pp.37-49,Apr.2007
– MarkAikenetal.,DeconstructingProcessIsolation,inACMSIGPLANWorkshoponMemory
SystemsPerformanceandCorrectness,pp.1-10,ACM,SanJose,CA,Oct.2006
– GalenHuntetal.,AnOverviewoftheSingularityProject,no.MSR-TR-2005-135,pp.44,Microsoft
Research,Oct.200
http://www.codeplex.com/singularity
http://channel9.msdn.com
•
ErsteMidori-Fakten
http://www.sdtimes.com/MICROSOFT_S_PLANS_FOR_POST_WINDOWS_OS_REVEALED
(c)PeterSturm,UniversityofTrier
11
Betriebssysteme
Winter2016
CONCURRENCY
Auf der Suche nach dem heiligen Gral der ManyCores
Peter Sturm
PROGRAMMING MODEL
• „Unlimited” virtual memory
• „Unlimited” number of virtual
CPUs
• Mechanisms to synchronize
concurrent threads
• Way to communicate
• Between applications on
a single host (IPC)
• Between hosts in a network
• Persistent storage of information
(file system)
(c)PeterSturm,UniversitätTrier
1
Betriebssysteme
Winter2016
VISION
• Assume that there is an unlimited number of processors
available
• Within an application
• The required number of processors primarily depends on the
inherent parallelism
• Between application
• Every application may have its own processors
Adress Space
Stack
Stack
Stack
CPU
CPU
CPU
Stack
CPU
Stack
Stack
CPU
Address
Space 1
CPU
Stack
CPU
WHY “UNLIMITED” CPUS?
Address
Space n
• Abstract from the number of CPUs on a given computer
• Exploit concurrency inherent to an application
• Utilize possible parallelism of multiprocessor systems
• Other reasons for multiple threads
• Improve response time of interactive applications
• Utilize parallelism available in most modern computer hardware
(c)PeterSturm,UniversitätTrier
2
Betriebssysteme
Winter2016
Stack
CPU
Stack
CPU
Stack
CPU
CPU
CPU
CPU
CPU MULTIPLEXING
Virtual
Address Space
… BUT 1 PHYSICAL CPU AVAILABLE?
• Easy to map many virtual CPUs to a physical CPU
• A "Thread of Control" consists of
• Address space
• State of registers
• Stack (already part of address space)
• Context Switch
• Save current thread state
• Restore another thread state
• When to switch
• Calls that might block for a longer period of time
• Implicitly, e.g. in case of page fault or memory congestion
(c)PeterSturm,UniversitätTrier
3
Betriebssysteme
Winter2016
MODEL OF THREAD STATES
Threads are ready to
run and await CPU
assigment
Threads are
executed by
some CPU
Ready
Running
Blocked
Threads wait for some
condition and can’t
execute
STATE TRANSISTIONS
Resign
Which thread should
be assigned
= Scheduling
Add
Ready
Assign
Ready
Running
Terminate
Block
Blocked
(c)PeterSturm,UniversitätTrier
4
Betriebssysteme
Winter2016
COMPETITION AND COOPERATION
• Competition
• Cooperation
• Applications compete for
resources
• Sharing of resources and tasks
• Goal: Sole user of system
• Implicit Synchronization
• Virtual resources
• Serialization by OS
• Mutual exclusion
(c)PeterSturm,UniversitätTrier
• Applications (Threads) cooperate
• Goals
• Performance improvement
• Avoidance of bottlenecks
• Fault tolerance
• Mutual exclusion and more
specific synchronization patterns
5
Betriebssysteme
Winter2016
AUTOVERKEHR
• 61.5 Millionen zugelassene Autos (Anfang 2014)
Quelle: Statistisches Bundesamt
(c)PeterSturm,UniversitätTrier
6
Betriebssysteme
Winter2016
SPERRGRANULAT
Die Zeit
(c)PeterSturm,UniversitätTrier
7
Betriebssysteme
(c)PeterSturm,UniversitätTrier
Winter2016
8
Betriebssysteme
(c)PeterSturm,UniversitätTrier
Winter2016
9
Betriebssysteme
Winter2016
LOCK-FREE
(c)PeterSturm,UniversitätTrier
10
Betriebssysteme
Winter2016
ANWENDUNGSPROGRAMMIERUNG
• Parallele CPUs
• Diverse parallele Pipelines
• SIMD-Extensions (Single Instruction Multiple Data)
• ManyCores
• CPUs
• GPUs (über 1000 Kerne)
• Cluster
• Verteilte Systeme
GUTE ALTE ZEIT
Threads, Mutex und Semaphore
(c)PeterSturm,UniversitätTrier
11
Betriebssysteme
Winter2016
THREADS
(c)PeterSturm,UniversitätTrier
12
Betriebssysteme
Winter2016
SEMAPHORE
P
Semaphore
• Fundamental synchronization primitive
• Two basic functions (on a semaphore s)
• s.P()
• May block in case semaphore already “occupied”
• s.V()
• Never blocks; releases semaphore and may free a blocked thread
• Dijkstra (1968), “THE” Multiprogramming System
• P = passeren (request entry)
• V = vrygeven (release)
(c)PeterSturm,UniversitätTrier
13
Betriebssysteme
Winter2016
SEMANTIC
• Semaphores are counting signals
Of course, P and V
themselves are critical
sections and must be
protected!
• s.P(): Thread waits for some signal s
void P () {
s.value--;
if (s.value < 0)
Semaphor = Integer
(s.value)
Block calling thread;
}
• Initialized with a s.value ≥ 0
• s.V(): Thread sends a signal s
•
void V () {
s.value++;
if (s.value < 1)
Put a thread waiting in s into ready queue;
}
IMPLEMENTATION
S:
value
queue
TCB
P
TCB
TCB
V
• s.value--;
Execution of P must be atomic
if (s.value < 0) {
• Thread k calls P
tail(s.queue) :=
k;
block(k);
}
(c)PeterSturm,UniversitätTrier
• Execution of V must be atomic
• s.value++;
Calling thread normally doesn’t
if
(s.value <= 0) {
block
ready(head(s.queue))
delhead(s.queue)
}
14
Betriebssysteme
Winter2016
SEMAPHOR
(c)PeterSturm,UniversitätTrier
15
Betriebssysteme
Winter2016
INTERLOCKED
PRODUCER
CONSUMER
(c)PeterSturm,UniversitätTrier
16
Betriebssysteme
Winter2016
MOTIVATION
Producers
Buffer
• Erzeuger und Verbraucher
Consumers
• Puffer fester Größe
• Geschwindigkeitsunterschiede
• Wie löst man das Problem?
OUTLINE OF BUFFER
public class Buffer
{
public Buffer ( int n )
{
}
/// Inserts another good into the buffer.
/// May block until free space is available.
public void Produce ( int good )
{
}
}
(c)PeterSturm,UniversitätTrier
/// Consumes a good stored inside the buffer.
/// May signal blocked producer threads.
public int Consume ()
{
return 42;
}
17
Betriebssysteme
Winter2016
PRODUCER (C#)
public class Producer
{
public Producer ( Buffer b )
{
buffer = b;
my_id = this.GetHashCode();
ThreadStart ts = new ThreadStart(Run);
my_thread = new Thread(ts);
my_thread.Start();
}
private void Run ()
{
Console.WriteLine("Producer {0}: started ...",my_id);
int good = this.GetHashCode() * 1000000;
while (true)
{
buffer.Produce(good);
Console.WriteLine("Producer {0}: good {1} stored",my_id,good);
good++;
}
}
}
private Buffer buffer;
private Thread my_thread;
private int my_id;
CONSUMER (C#)
public class Consumer
{
public Consumer ( Buffer b )
{
buffer = b;
my_id = this.GetHashCode();
ThreadStart ts = new ThreadStart(Run);
my_thread = new Thread(ts);
my_thread.Start();
}
private void Run ()
{
Console.WriteLine("Consumer {0}: started ...",my_id);
while (true)
{
int good = buffer.Consume();
Console.WriteLine("Consumer {0}: good {1} retrieved",my_id,good);
}
}
}
(c)PeterSturm,UniversitätTrier
private Buffer buffer;
private Thread my_thread;
private int my_id;
18
Betriebssysteme
Winter2016
public class Buffer
{
public Buffer ( int n )
{
this.n = n;
slots = new int[n];
mutex = new Semaphore(1);
slots_available = new Semaphore(n);
goods_available = new Semaphore(0);
}
…
}
private
private
private
private
private
private
private
int n;
int [] slots;
int free = 0;
int used = 0;
Semaphore mutex;
Semaphore slots_available;
Semaphore goods_available;
THE BUFFER (C#)
public void Produce ( int good )
{
slots_available.P();
mutex.P();
slots[free] = good;
free = (free+1) % n;
mutex.V();
goods_available.V();
}
public int Consume ()
{
goods_available.P();
mutex.P();
int good = slots[used];
used = (used+1) % n;
mutex.V();
slots_available.V();
return good;
}
THE OPTIMAL BUFFER (C#)
public class Buffer
{
public Buffer ( int n )
{
this.n = n;
slots = new int[n];
mutex_p = new Semaphore(1);
mutex_c = new Semaphore(1);
slots_available = new Semaphore(n);
goods_available = new Semaphore(0);
}
…
}
private
private
private
private
private
private
private
int n;
int [] slots;
int free = 0;
int used = 0;
Semaphore mutex_p, mutex_c;
Semaphore slots_available;
Semaphore goods_available;
(c)PeterSturm,UniversitätTrier
public void Produce ( int good )
{
slots_available.P();
mutex_p.P();
slots[free] = good;
free = (free+1) % n;
mutex_p.V();
goods_available.V();
}
public int Consume ()
{
goods_available.P();
mutex_c.P();
int good = slots[used];
used = (used+1) % n;
mutex_c.V();
slots_available.V();
return good;
}
19
Betriebssysteme
Winter2016
READER/WRITER
THE PROBLEM
Shared Data
• A shared data structure is used by multiple threads
• Writer threads
• These threads modify the shared data and require mutual exclusion
• Reader threads
• Since readers don’t modify data, they can access the shared data
structure simultaneously
(c)PeterSturm,UniversitätTrier
20
Betriebssysteme
Winter2016
STARTING POINT: MUTUAL EXCLUSION
Semaphore Sanctum = new Semaphore(1);
Shared Data
while (true) {
Sanctum.P();
// Change data
Sanctum.V();
}
while (true) {
Sanctum.P();
// Read data
Sanctum.V();
}
Writer
Reader
READER PREFERENCE (FAULTY)
Shared Data
Semaphore Sanctum = new Semaphore(1);
int readers_inside = 0;
while (true) {
Sanctum.P();
// Change data
Sanctum.V();
}
Writer
(c)PeterSturm,UniversitätTrier
while (true) {
if (readers_inside == 0)
Sanctum.P();
readers_inside++;
// Read data
readers_inside--;
if (readers_inside == 0)
Sanctum.V();
}
Reader
21
Betriebssysteme
Winter2016
WHY DOES IT FAIL?
while (true) {
if (readers_inside == 0)
Sanctum.P();
readers_inside++;
// Read data
readers_inside--;
if (readers_inside == 0)
Sanctum.V();
}
Reader
• Multiple readers may
access the shared
variable readers_inside
concurrently
• Testing and setting
variable must be atomic
among readers
• Mutual exclusion
required
2. READER PREFERENCE (CORRECT)
Shared Data
Semaphore Sanctum = new Semaphore(1);
Semaphore RMutex = new Semaphore(1);
int readers_inside = 0;
while (true) {
Sanctum.P();
// Change data
Sanctum.V();
}
Writer
(c)PeterSturm,UniversitätTrier
while (true) {
RMutex.P();
if (readers_inside == 0)
Sanctum.P();
readers_inside++;
RMutex.V();
// Read data
RMutex.P();
readers_inside--;
if (readers_inside == 0)
Sanctum.V();
RMutex.V();
}
Reader
22
Betriebssysteme
Winter2016
READER/WRITER (PRIO WRITER)
Shared Data
Semaphore Sanctum = new Semaphore(1);
Semaphore RMutex = new Semaphore(1);
Semaphore WMutex = new Semaphore(1);
Semaphore PreferWriter = new Semaphore(1);
Semaphore ReaderQueue = new Semaphore(1);
int readers_inside = 0;
int writers_interested = 0;
while (true) {
WMutex.Enter();
if (writers_interested == 0)
PreferWriter.Enter();
writers_interested++;
WMutex.Leave();
Sanctum.Enter();
// Change data
Sanctum.Leave();
WMutex.Enter();
writers_interested--;
if (writers_interested == 0)
PreferWriter.Leave();
WMutex.Leave();
}
Writer
(c)PeterSturm,UniversitätTrier
while (true) {
ReaderQueue.Enter();
PreferWriter.Enter();
RMutex.Enter();
if (readers_inside == 0)
Sanctum.Enter();
readers_inside++;
RMutex.Leave();
PreferWriter.Leave();
ReaderQueue.Leave();
// Read data
RMutex.Enter();
readers_inside--;
if (readers_inside == 0)
Sanctum.Leave();
RMutex.Leave();
}
Reader
23
Betriebssysteme
Winter2016
SPIN LOCKS
ATOMIC READ AND WRITE CYCLE
Address bus
\Valid Address
Read Address
Write Address
\Read
\Write
Data bus
Atomic
• Combined read and write cycle to a single address
• Not interruptable even on a multiprocessor system
• All modern CPUs offer such instructions
• SPARC: LDSTUB (Atomic Load-Store Unsigned Byte), SWAP
• 680x0: TAS (Test and Set)
• No privileged instructions required for synchronization
(c)PeterSturm,UniversitätTrier
24
Betriebssysteme
Winter2016
EXAMPLE USING ATOMIC “TEST AND SET”
• h = TAS Address
• h := Memory[Address]
• Memory[Address] := 1
Spinlock
…
Loop: h = TAS mutex
if (h) goto Loop
// mutex is now 1
…
Loop: h = TAS mutex
if (h) goto Loop
// mutex is now 1
// Critical section
// Critical section
mutex = 0;
mutex = 0;
Thread 1
Thread n
WHERE TO USE?
• Useful only for short waiting time
• Accessing the scheduling queues on a ManyCore CPU
• Synchronizing on a hardware event happening in the near future
• Potential risks
• Starvation, Livelocks, …
• Performance with respect to multiprocessors and caching
(c)PeterSturm,UniversitätTrier
25
Betriebssysteme
Winter2016
SPINLOCKS
Running
Ready
Blocked
SPINLOCKS
Running
Ready
Blocked
(c)PeterSturm,UniversitätTrier
26
Betriebssysteme
Winter2016
?
IMMER WICHTIGER!
• Schnelle Kommunikation bei kooperierenden Threads
• Gleichzeitige Ausführung
• Gang Scheduling
(c)PeterSturm,UniversitätTrier
27
Betriebssysteme
Winter2016
.NET SUPPORT
• Class Interlocked in System.Threading
• static int Increment (ref int x)
• Increments variable x atomically and returns result
• static int Decrement (ref int x)
• Decrements variable x atomically and returns result
• static int Exchange (ref int x, int y)
• Assigns value y to variable x atomically and retuns the previous value
• static int CompareExchange (ref int x, int y, int c)
• Assigns value y to x atomically iff x == c; returns previous value of x
(c)PeterSturm,UniversitätTrier
28
Betriebssysteme
Winter2016
SPINLOCK EXAMPLE IN .NET
CRITICAL SECTION
WITHOUT HELP
(c)PeterSturm,UniversitätTrier
29
Betriebssysteme
Winter2016
CRITICAL SECTION
• A “sensible” sequence of instructions which may only be
executed by one thread at a time
• Mutual exclusion required inside critical section
• Must be defined by the application
…
• Bracketing by some
Enter() and Leave()
EnterCriticalSection();
Sensible instruction 1;
operations:
Critical
Section
(c)PeterSturm,UniversitätTrier
…
Sensible instruction k;
LeaveCriticalSection();
…
30
Betriebssysteme
Winter2016
CORRECT IMPLEMENTATION
• Mutual exclusion
• At any given time at most one thread is inside
• No deadlocks
• Threads are delayed for a finite time only before entering
• Fairness
• Any thread who wants to enter will enter eventually
• Efficiency
• Threads are not delayed needlessly
• Threads currently not interested shouldn’t do superfluous work
BASIC PROGRAM STRUCTURE
• We assume 2 threads with ids 0 and 1 continuously entering the
critical section:
Different
Implementations
public void Loop ()
{
DateTime start = DateTime.Now;
do
{
EnterCriticalSection();
threads_inside_critical_section++;
if (threads_inside_critical_section > 1)
{
Console.WriteLine("Oops. More than one thread inside critical section");
}
Thread.Sleep(0); // Forces context switch
threads_inside_critical_section--;
LeaveCriticalSection();
} while (((TimeSpan)(DateTime.Now - start)).TotalSeconds < seconds_to_run);
}
• Do not make use of any synchronization support
• No primitives provided by the operating system
• No hardware support
(c)PeterSturm,UniversitätTrier
31
Betriebssysteme
Winter2016
VOLATILE DATA STRUCTURES
• Hardware (CPU, MMU), runtime support, and compiler normally
relax memory consistency to improve performance
• Re-odering memory access as long as program semantics are not altered
• Don’t expect memory to change by side-effects
• Normally, a single thread is assumed
• Unexpected behavior in multi-threaded environments
• Data structures that are accessed concurrently by multiple threads
should be marked volatile
• Nobody will cache these data
• Compiler expects these data to change asynchronously
• Every access will read the memory address
VOLATILE AND C#
• Specific keyword
• volatile bool flag
• Specific static methods in Thread available
• object Thread.VolatileRead ( ref object )
• Thread.VolatileWrite ( ref object, object)
• Various overloads
• The problem with arrays:
• Consider “volatile bool [] flags …”
• Reference to array is marked volatile
• The booleans themselves are not!
• Thread.VolatileRead() and Thread.VolatileWrite() don’t work on
boolean
• Workaround: Integers instead of boolean
• 1 Û true
• Some subsequent examples may look strange L
(c)PeterSturm,UniversitätTrier
32
Betriebssysteme
Winter2016
STARTING POINT
• Empty functions to enter and leave the critical section
• No concurrency control
• Several threads may be inside critical section in parallel
RESULT
(c)PeterSturm,UniversitätTrier
33
Betriebssysteme
Winter2016
STEP 1: ALTERNATING TOKEN
• Implementing a token-based approach
• The thread who owns the token may enter, the other waits
• The token must circulate among the participating threads
ALTERNATING TOKEN
• For each thread
• self = own thread, rival = rival thread
• Solution
private volatile static int turn = 0;
public void EnterCriticalSection ()
{
while (turn != self) /* Busy Wait */;
}
public void LeaveCriticalSection ()
{
turn = rival;
}
(c)PeterSturm,UniversitätTrier
34
Betriebssysteme
Winter2016
RESULT
• No invalidation
• Times inside critical section identical (±1)
COMMENTS
• Mutual exclusion is guaranteed
• It is a fair solution
• Provided any
• It is a non-blocking solution (Busy Waiting)
• Requires preemptive scheduling
• Threads must pass the token actively although they are not
interested in entering the critical section
• Solution doesn’t consider different interest and enter frequency of
all threads involved
(c)PeterSturm,UniversitätTrier
35
Betriebssysteme
Winter2016
STEP 2: SOMEONE INSIDE
• Threads set flag when inside critical section
• Only enter if the rival is not already inside
SOMEONE ABOUT TO ENTER
• For eachprivate
threadstatic
bool[] inside =
new int[2] { 0, 0 };
• self =public
own thread,
rival = rival thread
void EnterCriticalSection
• Solution
{
}
()
while (inside[rival] == 1) /* Busy Wait */ ;
inside[self] = 1;
public void LeaveCriticalSection ()
{
inside[self] = 0;
}
(c)PeterSturm,UniversitätTrier
36
Betriebssysteme
Winter2016
RESULT
• Mutual exclusion condition still invalidated several times
COMMENTS
• Mutual Exclusion not guaranteed
Thread 0:
inside[0] == 0;
...
while (inside[1] == 1) ;
inside[0] = 1;
// Inside Critical Section
Thread 1:
inside[1] == 0;
Context
Switch
...
while (inside[0] == 1) ;
inside[1] = 1;
// Inside Critical Section
• Testing and setting flag is not atomar
• Gets worse with increasing number of threads
(c)PeterSturm,UniversitätTrier
37
Betriebssysteme
Winter2016
STEP 3: SET BEFORE TEST
• Threads express their interest before entering
• Only enter if the rival is not interested too
SET BEFORE TEST
• For eachprivate
threadstatic
bool[] interested =
new int[2] { 0, 0 };
• self =public
own thread,
rival = rival thread
void EnterCriticalSection
• Solution
{
}
()
interested[self] = 1;
while (interested[rival] == 1) /* Busy Wait */ ;
public void LeaveCriticalSection ()
{
interested[self] = 0;
}
(c)PeterSturm,UniversitätTrier
38
Betriebssysteme
Winter2016
RESULT
• No progress after 1 minute! Why?
COMMENTS
• Mutual exclusion guaranteed
• At most one thread (actually 0) inside
• Livelock
Thread 0:
interested[0] = 1;
while (interested[1]==1)
while (interested[1]==1)
while (interested[1]==1)
while (interested[1]==1)
while (interested[1]==1)
...
(c)PeterSturm,UniversitätTrier
Context
Switch
;
;
;
;
;
Thread 1:
interested[1] = 1;
while
while
while
while
while
...
(interested[0]==1)
(interested[0]==1)
(interested[0]==1)
(interested[0]==1)
(interested[0]==1)
;
;
;
;
;
39
Betriebssysteme
Winter2016
STEP 4: I WANT, I DON’T WANT, I WANT …
• Trying to avoid livelock
• In case of imminent livelock release flag for a short period of time
and try again
• Well, it’s still busy waiting, but …
SHORT BREAK
private static bool[] interested =
new int[2] { 0, 0 };
• For each thread
public void EnterCriticalSection ()
• self ={ own thread, rival = rival thread
• Solution
}
interested[self] = 1;
while (interested[rival] == 1) {
interested[self] = 0;
/* Short Break */;
interested[self] = 1;
}
public void LeaveCriticalSection ()
{
interested[self] = 0;
}
(c)PeterSturm,UniversitätTrier
40
Betriebssysteme
Winter2016
RESULT
• Seems to work?
COMMENTS
• Mutual exclusion guaranteed
• Mutual Courtesy
• Threads in lockstep can exhibit livelock-like behavior
Thread 0:
Thread 1:
interested[0] = 1;
while (interested[1]==1)
interested[0] = 0;
/* Short Break */
interested[0] = 1;
while (interested[1]==1)
interested[0] = 0;
/* Short Break */
interested[0] = 1;
...c
interested[1] = 1;
while (interested[0]==1)
interested[1] = 0;
/* Short Break */
interested[1] = 1;
while (interested[0]==1)
interested[1] = 0;
/* Short Break */
interested[1] = 1;
...
(c)PeterSturm,UniversitätTrier
41
Betriebssysteme
Winter2016
THE ALGORITHM BY DEKKER
• Combination of versions 4 and 2
• 4: Set before test, but avoid livelocks by releasing the own flag
again
• 2: Alternating token to resolve conflicts fair
DEKKER: SOURCE CODE
bool [] interested = new bool[2] { false, false };
int turn = 0;
EnterCriticalSection () {
interested[self] = true;
while (interested[rival]) {
if (turn == rival) {
interested[self] = false;
while (turn == rival) /* Busy Wait */ ;
interested[self] = true;
}
}
}
LeaveCriticalSection () {
turn = rival;
interested[self] = false;
}
(c)PeterSturm,UniversitätTrier
42
Betriebssysteme
Winter2016
THE ALGORITHM BY PETERSON
• Improvement of Dekkers’ algorithm
• Conflict is resolved through race condition
• Who made the last write to turn?
PETERSON: SOURCE CODE
bool [] interested = new bool[2] { false, false };
int turn = 0;
EnterCriticalSection () {
interested[self] = true;
turn = rival; // Volatile race condition
while (interested[rival] and (turn == rival)) {
/* Busy Wait */ ;
}
}
LeaveCriticalSection () {
interested[self] = false;
}
(c)PeterSturm,UniversitätTrier
43
Betriebssysteme
Winter2016
ZEIT FÜR VERÄNDERUNGEN!
(c)PeterSturm,UniversitätTrier
44
Betriebssysteme
Winter2016
... WARTEN?
PARALLELISIERENDE COMPILER
• SIMD-artige Probleme (Number Crunching)
• High Performance Fortran (HPF)
• Erweiterung von Fortran 90
• FORALL
• Datenflußanalyse
• Forschungsgebiet
• Alternative Rechnerarchitekturen
(c)PeterSturm,UniversitätTrier
45
Betriebssysteme
Winter2016
PARALLEL LOOP
PRIMZAHLEN
(c)PeterSturm,UniversitätTrier
46
Betriebssysteme
Winter2016
SEQUENTIELL
PARALLEL
(c)PeterSturm,UniversitätTrier
47
Betriebssysteme
Winter2016
STOLPERSTEINE
• Willkürliche Abarbeitungsreihenfolge
• Concurrency-safe?
• Datenabhängigkeiten über Iterationen hinweg!!!
• Seiteneffekte
HAVE A BREAK
• Mehrere Iterationen gleichzeitig aktiv
• Parallel Break
• Alle Iterationen mit kleinerem Index werden noch beendet
• Parallel Stop
• Schnurzpiepegal
(c)PeterSturm,UniversitätTrier
48
Betriebssysteme
Winter2016
BEISPIEL
ES GIBT NOCH MEHR ...
• External Loop Cancellation
• Granularität steuern
• Partitioner
• Minimale und maximale Threadanzahl spezifizierbar
(c)PeterSturm,UniversitätTrier
49
Betriebssysteme
Winter2016
FP
Functional Programming
(c)PeterSturm,UniversitätTrier
50
Betriebssysteme
Winter2016
SINGLE-THREADED
Thread
State
MULTI-PROCESS
Thread
State
(c)PeterSturm,UniversitätTrier
Thread
State
51
Betriebssysteme
Winter2016
MULTI-THREADED
Thread
Shared
Mutable
State
Thread
„IF IT HURTS, STOP DOING IT“
Paul Butcher
Thread
(c)PeterSturm,UniversitätTrier
Shared
Immutable
State
Thread
52
Betriebssysteme
Winter2016
IMMUTABLE
STATE?
IMPERATIV
(c)PeterSturm,UniversitätTrier
53
Betriebssysteme
Winter2016
FUNKTIONAL
(c)PeterSturm,UniversitätTrier
54
Betriebssysteme
Winter2016
CLOJURE
IMPURE FUNCTIONAL LANGUAGE
• „Concurrency-aware mutable variables“
• Imperativ: Mutable ist Standardfall
• Persistenz
• Transaktions-artiges Fortschreiben des Objektzustands
• Vorheriger Zustand während der Änderung zugreifbar
• Software-Transactional Memory
(c)PeterSturm,UniversitätTrier
55
Betriebssysteme
Winter2016
MULTI-THREADED
Thread
Shared
Mutable
State
Thread
MESSAGES
Thread
Thread
State
State
Immutable
(c)PeterSturm,UniversitätTrier
56
Betriebssysteme
Winter2016
ACTORS
FOKUS SUBJEKT: ACTORS
Thread
State
(c)PeterSturm,UniversitätTrier
Thread
State
57
Betriebssysteme
Winter2016
AKTOREN
R
S
Aktiv
S
R
Passiv
ELIXIR
• Läuft auf der „Erlang Virtual Machine“ (BEAM)
• Erlang
• Funktionale Sprache (Ericsson)
• OTP (Open Telecom Platform)
(c)PeterSturm,UniversitätTrier
58
Betriebssysteme
Winter2016
If there’s one lesson we’ve
learned from 30+ years of
concurrent programming,
it is:
Just don’t share state!
Pieter Hintjens
(c)PeterSturm,UniversitätTrier
59
Betriebssysteme
Winter2016
ANSATZ
• Kein „Shared State“ zwischen Threads
• Austausch von Nachrichten
• inproc-Transport
• Support für Thread-Signaling
• PAIR sockets
TPL DATA FLOW
• Actor-artiger Ansatz in .NET
• Zusätzliches Package
• Blocktypen
• Buffer
• TransformBlock ( DataIn, DataOut )
• Broadcast Block
• JoinBlock
• ...
(c)PeterSturm,UniversitätTrier
60
Betriebssysteme
Winter2016
CSP
FOKUS MESSAGE: CSP
Thread
State
(c)PeterSturm,UniversitätTrier
Thread
State
61
Betriebssysteme
Winter2016
CSP
• Communicating Sequential Processes
• Hoare, Process Calculus, 1978
• Channels
• Go
• Clojure, core.async
LAMBDA
ARCHITECTURE
(c)PeterSturm,UniversitätTrier
62
Betriebssysteme
Winter2016
DATENPARTITIONIERUNG
Map-Reduce
NoSQL
(c)PeterSturm,UniversitätTrier
NoSQL
NoSQL
63
Betriebssysteme
Winter2016
• Vertikale Skalierung
• Traditionelle DBMS
SKALIERBARKEIT
• NoSQL-Systeme
• Horizontale Skalierung
APM
Asynchronous Programming Model
(c)PeterSturm,UniversitätTrier
64
Betriebssysteme
Winter2016
FUTURES, PROMISES UND MEHR
ASYNCHRON
• Blockierende Aufrufe meiden
• Ursprung im Bereich „User Interface“
• Ausgangspunkt für nebenläufige Programmierung
(c)PeterSturm,UniversitätTrier
65
Betriebssysteme
Winter2016
.NET
• Verfeinerung und Ausbau von Task, Task<T>
• Task-Ketten
• ...
• Thread Pool
• await
• Synchrone Kapselung eines asynchronen Aufrufs
• Compiler
BEISPIEL
(c)PeterSturm,UniversitätTrier
66
Betriebssysteme
Winter2016
BEMERKUNG ZU .NET
• Nur Einzelaspekte
angesprochen
• Concurrent Collections
• Monitor
• ...
FAZIT
(c)PeterSturm,UniversitätTrier
67
Betriebssysteme
Winter2016
Assassins Creed
(c)PeterSturm,UniversitätTrier
68
Betriebssysteme
Winter2016
... SUCHE GEHT WEITER
• Positiv überrrascht!
• Compiler übernehmen
Hauptlast
• Code-Generierung
• Spannende Zukunft
• Experimentieren
(c)PeterSturm,UniversitätTrier
69
Betriebssysteme
Winter2016
Betriebssysteme
5.SynchronisationmittelsMonitor
Language-basedSynchronization
• Semaphoresand/orothersynchronizationprimitivesare
sufficienttosolveanycomplexsynchronizationproblem
• Butcomplexsolutionsareveryhardtounderstand
• Itisnearlyimpossibletoanticipateanyentangledexecution
ofconcurrentthreadsandtheinfluenceondataconsistency
– Mosthumansaresingle-threaded
(atleastwithrespecttoconsciousnessJ)
• Higherrorprobabilitywithincreasingproblemcomplexity
(c)PeterSturm,UniTrier
1
Betriebssysteme
Winter2016
Higher-LevelAbstractions
• Synchronizationtechniqueswithahigherlevelofabstraction
areneeded
• Synchronizationsupportinprogramminglanguages
– ”Synchronized”inJava
– “lock”inC#
Motivation
•
P.BrinchHansen,T.Hoare,1974
•
Encapsulationofshareddatatogether
withallthefunctionsaccessingthese
data
– Abstractdatatype
– Resemblesinsomesensethenotionof
aclassinobject-orientedlanguages
•
Mutualexclusionbetweenalltheentry
functionsofamonitor
– Implicitmonitorsemaphore
(c)PeterSturm,UniTrier
Monitor M {
Shared Data;
Entry f1 ( Parameter )
: Result {
Statements;
}
...
Entry fn ( Parameter )
: Result {
Statements;
}
}
2
Betriebssysteme
Winter2016
CompilersApplySemaphoresCorrectly!
•Monitor
MutualexclusionguaranteedJ
M {
Shared Data;
Entry f1 ( Parameter )
: Result {
Statements;
}
...
Entry fn ( Parameter )
: Result {
Statements;
}
}
Monitor M {
Shared Data;
Semaphore MonSem(1);
Entry f1 ( Parameter )
: Result {
MonSem.P();
Statements;
MonSem.V();
}
...
Entry fn ( Parameter )
: Result {
MonSem.P();
Statements;
MonSem.V();
}
}
Producer/Consumer?
(c)PeterSturm,UniTrier
3
Betriebssysteme
Winter2016
OutlineofBuffer
public class Buffer
{
public Buffer ( int n )
{
}
/// Inserts another good into the buffer.
/// May block until free space is available.
public void Produce ( int good )
{
}
}
/// Consumes a good stored inside the buffer.
/// May signal blocked producer threads.
public int Consume ()
{
return 42;
}
public class Producer
{
public Producer ( Buffer b )
{
buffer = b;
my_id = this.GetHashCode();
ThreadStart ts = new ThreadStart(Run);
my_thread = new Thread(ts);
my_thread.Start();
}
Producer(C#)
private void Run ()
{
Console.WriteLine("Producer {0}: started ...",my_id);
int good = this.GetHashCode() * 1000000;
while (true)
{
buffer.Produce(good);
Console.WriteLine("Producer {0}: good {1} stored",my_id,good);
good++;
}
}
}
(c)PeterSturm,UniTrier
private Buffer buffer;
private Thread my_thread;
private int my_id;
4
Betriebssysteme
Winter2016
Consumer(C#)
public class Consumer
{
public Consumer ( Buffer b )
{
buffer = b;
my_id = this.GetHashCode();
ThreadStart ts = new ThreadStart(Run);
my_thread = new Thread(ts);
my_thread.Start();
}
private void Run ()
{
Console.WriteLine("Consumer {0}: started ...",my_id);
while (true)
{
int good = buffer.Consume();
Console.WriteLine("Consumer {0}: good {1} retrieved",my_id,good);
}
}
}
private Buffer buffer;
private Thread my_thread;
private int my_id;
TheBuffer(C#)
public class Buffer
{
public Buffer ( int n )
{
this.n = n;
slots = new int[n];
mutex = new Semaphore(1);
slots_available = new Semaphore(n);
goods_available = new Semaphore(0);
}
…
}
(c)PeterSturm,UniTrier
private
private
private
private
private
private
private
int n;
int [] slots;
int free = 0;
int used = 0;
Semaphore mutex;
Semaphore slots_available;
Semaphore goods_available;
public void Produce ( int good )
{
slots_available.P();
mutex.P();
slots[free] = good;
free = (free+1) % n;
mutex.V();
goods_available.V();
}
public int Consume ()
{
goods_available.P();
mutex.P();
int good = slots[used];
used = (used+1) % n;
mutex.V();
slots_available.V();
return good;
}
5
Betriebssysteme
Winter2016
TheMonitorBuffer(C#)?
public monitor Buffer
{
public Buffer ( int n )
{
this.n = n;
slots = new int[n];
slots_available = new Semaphore(n);
goods_available = new Semaphore(0);
}
…
}
private
private
private
private
private
private
int n;
int [] slots;
int free = 0;
int used = 0;
Semaphore slots_available;
Semaphore goods_available;
public void Produce ( int good )
{
slots_available.P();
slots[free] = good;
free = (free+1) % n;
goods_available.V();
}
public int Consume ()
{
goods_available.P();
int good = slots[used];
used = (used+1) % n;
slots_available.V();
return good;
}
ConditionVariable
CV:
Queue(q)
TCB
TCB
TCB
• Synchronizationinsidethemonitor
– CV.Wait()
• Callingthreadwillbealwaysblocked
• Monitorwillbefreeagain
– CV.Signal()
• SomeotherthreadkblockedatCVwillbereadyagain
• kmustcompeteformonitorentranceagain
• DifferentvariantsofSignal()possible
(c)PeterSturm,UniTrier
6
Betriebssysteme
Winter2016
SolutionwithMonitor
• Monitorisusedtoimplementtheboundedbuffer
• Conditionvariablesareusedtosynchronizeproducersand
consumersinsidethemonitor
Monitor Buffer {
const int max_items = 42;
Item[] items = new Item[max_items];
int free = 0;
int used = 0;
int n_items = 0;
ConditionVariable some_free;
ConditionVariable some_used;
public void Produce ( Item i );
}
public Item Consume ();
void Produce ( Item i )
public void Produce ( Item i ) {
// Wait if no free slot left in buffer
while (n_items == max_items)
some_free.Wait();
// Insert item
n_items++;
items[free] = i;
free = (free + 1) % max_items;
}
(c)PeterSturm,UniTrier
// Signal to waiting consumer arival of item
some_used.Signal();
7
Betriebssysteme
Winter2016
Item Consume ()
public Item Consume () {
// Wait if no item available in buffer
while (n_items == 0)
some_used.Wait();
// Get item
n_items--;
Item result = items[used];
used = (used + 1) % max_items;
}
// Now producers may store another item
some_free.Signal();
return result;
Noticetheasymmetric
usageofthecondition
variables
GeneralArchitectureofaMonitor
•
EQ
– Threadtryingtoenterthe
monitor
CQ1
•
•
Monitor
Variables
SignallingQueue(SQ)
– Anyactivethreadissuingasignal
operationonsomecondition
queuesmustenterthisqueue
SQ
WQ
ConditionQueues(CQ)
– Foreachconditionvariablea
queueforallthewaitingthreads
CQ2
CQk
EntryQueue(EQ)
•
SignaledQueue(WQ)
– Threadsawaitingmonitor
re-entranceafterreceiving
asignal
Exit
Blocked Thread
Active Thread (only 1)
(c)PeterSturm,UniTrier
8
Betriebssysteme
Winter2016
ActiveThreadLeavesMonitor
EQ
•
Who’snext?
•
Anynewthreadoutsidewhowants
toenter?(EQ)
•
Somethreadwhohasbeensignaled
inaconditionvariable?
CQ1
CQ2
CQk
– ThreadhasleftCQibecauseof
signalandiswaitsforthemonitor
againatthecommonentrance
Monitor
Variables
SQ
WQ
•
SQisaspecialcase
– Someversionsofsignalblockthe
signalingthreadandfavorthe
signaledthreadagain
Exit
MonitorClassifikation
• AssigningdifferentprioritiestoqueuesEQ,SQundWQ
(see[Buhretal1995])
• Prioritymeans,ifthreadsarewaitingonallthesequeues,
threadsinqueueswithhigherpriorityarefavorized
(c)PeterSturm,UniTrier
EQp = WQp < SQp
Wait and Notify
EQp = SQp < WQp
Signal and Wait
EQp < WQp < SQp
Signal and Continue
EQp < SQp < WQp
Signal and Urgent Wait
9
Betriebssysteme
Winter2016
Example“SignalandContinue”
EQ
CQ1
CQ2
CQk
Monitor
Variables
SQ
WQ
•
Threadinsidemonitorexecutesis
signalingconditionvariableCQ2
•
Conceptually,activethreadmust
enterSQ
•
TheprioritysettingsfavorSQagain
•
Nowactivethreadisleaving
monitor
•
SQisempty,soWQisnext
•
Nowthisthreadisleavingtoo
•
SinceSQandWQareemtpy,anew
threadmayenter
Exit
Blocked Thread
Active Thread (only 1)
Implementationof“SignalandContinue”
•
Priorities
•
Datastructures
–
–
–
–
–
EQp<WQq<SQq
Semaphorec.sforeachconditionvariablec
Counterc.ccountsthenumberofthreadsblockedonc
Similarforsignaledqueue
Nosignallingqueuerequired
Entry fk (...) {
P(MonSem);
...
if (w.c > 0)
V(w.s);
else
V(MonSem);
}
(c)PeterSturm,UniTrier
Wait ( Condition c ) {
c.c += 1;
if (w.c > 0)
V(w.s);
else
V(MonSem);
P(c.s);
c.c -= 1;
w.c += 1;
P(w.s);
w.c -= 1;
}
Signal ( Condition c ) {
if (c.c > 0)
V(c.s);
}
10
Betriebssysteme
Winter2016
Example“SignalandUrgentWait”
EQ
CQ1
CQ2
CQk
Monitor
Variables
SQ
WQ
Exit
•
Threadinsidemonitorexecutesis
signalingconditionvariableCQ2
•
ActivethreadmustenterSQ
•
TheprioritysettingsfavorWQ,so
ownershipchangestothreadinWQ
•
Whenthisthreadleavesmonitor…
•
…thesignalingthreadwillenter
again
•
Andwhenthisthreadleavesthe
monitor…
•
…anotherthreadfromEQmay
enter
Blocked Thread
Active Thread (only 1)
The3MostCommonSignal()
• SignalandContinue
– Signalingthreadsremainsinsidemonitor
– Atmostoneblockedthreadisfreed
– Foundinthemajorityofimplementations
• Signaland(Urgent)Wait
– Signalingthreadwillbeblocked
– Signaledthreadisresumed
– Quiteoften,signaledthreadre-entersmonitorjusttoleaveit
• BroadcastSignalandContinue
– Signalingthreadremainsinsidemonitor
– Allblockedthreadsarefreed
– Manythreadswakeupjusttosleepagain
(c)PeterSturm,UniTrier
11
Betriebssysteme
Winter2016
Reader/Writer?
(c)PeterSturm,UniTrier
12
Betriebssysteme
Winter2016
Realtime Systems
Realtime?
• Functional requirements
– Software has to do it‘s job!
• Non-functional requirements
– Within given time constraints
(c)PeterSturm,UniversityofTrier
1
Betriebssysteme
Winter2016
Soft Realtime
• Violating a time constraint is annoying
• Examples
– Digital phone switch
– Multimedia
Hard Realtime
• Violating a time constraints may end in a disaster
• Examples
– Controling some critical chemical reaction
– Anti-lock braking system (ABS)
– Fly by wire in planes (e.g. Airbus)
(c)PeterSturm,UniversityofTrier
2
Betriebssysteme
Winter2016
OS Issues
• Realtime scheduling
• Dedicated functionality
• Communicating deadlines
How to become a RT OS?
(c)PeterSturm,UniversityofTrier
3
Betriebssysteme
Winter2016
Requirements
• Minimal interrupt latency
• Don‘t lose interrupts
• Minimal context switch latency
• No unexpected delays
– Memory locking
• Guarantees
– Upper bound for input stimulus to output response
• Size
Example OS
• Most are for embedded systems
– Symbian OS, Nokia OS, ...
• Others
– QNX, VxWorks, LynxOS, ...
• RTLinux
– Multi-Environment Real-Time (MERT)
– Microkernel with fully preemptive Linux OS (process)
• Windows CE
(c)PeterSturm,UniversityofTrier
4
Betriebssysteme
Winter2016
Real-Time Scheduling
• Meet application-specific time constraints
• Determining program characteristics and deriving
time constraints is very hard
• Worst case assumptions
• Scheduling depends on time constaints
Modeling Realtime Activities
• Time constraints
– Ready time r
• Earliest execution time
– Deadline d
De
r
d
• Activity must be finished
– Execution time ∆e
• Problem
– How to determine ∆e
– Worst case assumption
– Bad utilization
(c)PeterSturm,UniversityofTrier
5
Betriebssysteme
Winter2016
Periodic Activities
De
• Period ∆p
De
Dh
r1
r2=d1
r3=d2
– Frequency
• Phase ∆h
– Initial offset in execution
rk = Dh + ( k - 1) Dp
d k = Dh + kDp = rk +1
• Constraints can be
derived
Successful Completion
• Any activity must be completed
– Start time s: Actual begin of execution
– Completion time c: Actual end of execution
• ... within time constraints
– Not to early: "k : rk £ sk
– Not to late: "k : ck £ d k
(c)PeterSturm,UniversityofTrier
6
Betriebssysteme
Winter2016
Preemption
De
r
s
c
d
c
d
Without Preemption
r s
With Preemption
Static/Dynamic Scheduling
• Static
– All constraints are known
– no surprises during execution
– limited adaptibility
• Dynamic
– Some constraints known at run-time only
– Typically, dynamic creation of threads
– Guarantees hard to meet
(c)PeterSturm,UniversityofTrier
7
Betriebssysteme
Winter2016
Explicit/Implicit Scheduling
• Explicit
– Complete scheduling plan available at run-time
– Offline-Scheduling
– Scheduling = Table access via time index
• Implicit
– Scheduling rules such as priorities
Best Effort
• Don‘t consider time constraints at all
– Use normal scheduling strategies
– Application doesn‘t have to define constraints
• Design hardware (and software)
to keep up with maximum demand
(c)PeterSturm,UniversityofTrier
8
Betriebssysteme
Winter2016
Consequences
• Meeting time constraints not guaranteed
• Maybe useful
– Some soft real-time systems
• Widespread usage
Earliest Deadline First (EDF)
• Assign CPU to thread with next deadline
• Dynamic priorities
• Preemptive and non-preemptive versions
(c)PeterSturm,UniversityofTrier
9
Betriebssysteme
Winter2016
EDF optimal?
• Non-preemptive EDF is not optimal
– Although a plan that meets all deadlines exists, nonpreemptive EDF may not find it?
• Preemptive EDF is optimal
– If there is a plan, preemptive EDF will find it
– Neglect time for context switches
Example
(c)PeterSturm,UniversityofTrier
10
Betriebssysteme
Winter2016
SCHED_DEADLINE
Rate Monotonic Scheduling
• Implicit scheduling with fixed priorities
• Theory by Liu and Layland (1973)
– Periodic activities
– Period definies priority
High Frequency = High Priority
(c)PeterSturm,UniversityofTrier
11
Betriebssysteme
Winter2016
RMS (contd.)
High Frequency = High Priority
• Somewhat counterintuitive
• Of no influence
– Importance of threads
– Execution time (De)
• Of course, thread with high frequency
can’t have a long De
RMS Assumptions
• Ready time starts with period
• Deadline ends with period
• Threads don‘t suspend themselves
– No voluntary blocking system call
• Threads are preemtable
• Switching & scheduling overhead is neglectable
• Threads are independent
(c)PeterSturm,UniversityofTrier
12
Betriebssysteme
Winter2016
Priority
Important = High Priority?
• Important thread with low frequency
• Increasing probability that low priority thread with
high frequency miss their deadline
Priority
High Frequency = High Priority
• High frequency = Small execution time (De < Dp)
• Increasing frequency = decreasing delay
– Only interrupted by threads with even higher frequency
• Cutting up of threads with low frequency
– More context switches (still neglectable?)
(c)PeterSturm,UniversityofTrier
13
Betriebssysteme
Winter2016
Critical Instance
•
tL has low priority
•
tH has high priority
•
Can TL meet its deadline?
•
r(tL) = r(tH)
– Critical Instance
•
r(tL) < r(tH)
– Simple movement
– No influence on deadline of tL
•
r(tH) < r(tL)
– Easier for tL to meet its deadline
Response Time
• Response Time = Completion Time – Ready Time
• Ready time depends on frequency and execution
time of threads with higher priorities
• No delay for thread with highest priority
c0 - r0 = De0
• For all the others
(c)PeterSturm,UniversityofTrier
c p - rp <
æ ê Dp p ú
ö
ç
D
×
e
å ê ú k ÷ø + Dep
0£ k < p è ë Dpk û
14
Betriebssysteme
Winter2016
RMS Scheduling Criterion
• For a set of n periodic threads is
Dek
k =1 Dpk
n
Un = å
UMn
the utilization of the
system
• RMS leads to an executable plan, if
1
n
U n < UM n = n × (2 - 1)
(c)PeterSturm,UniversityofTrier
15
Betriebssysteme
Winter2016
Dateisysteme
Peter Sturm
Universität Trier
Aufgaben
• Persistente Daten
• Information
• Organisation
©PeterSturm,UniversitätTrier
1
Betriebssysteme
Winter2016
• 5 MByte Festplatte wird
mit dem Gabelstapler
verladen (1956)
©PeterSturm,UniversitätTrier
2
Betriebssysteme
Winter2016
Beispiel Seagate
• Liefert 1979 erste Festplatte aus
• ST506, 5 MB Daten, $1500
• April 2008
• 1 Milliarde Laufwerke ausgeliefert
• Prognostiziert 2 Milliarden in 5 Jahren
• Kummulative ausgelieferte Speicherkapazität seit
1979
• 79.000.000 Terabytes
• 7.5 Ÿ 1018 Bytes (75 Exabyte)
• 1.5 TByte Platten (3.5 Zoll)
Rechenbeispiele
• Schrift
• Brockhaus paßt auf eine DVD
• Lebenslange Audioaufzeichnung
• 32 Kbit pro Sekunde
• 120 GByte pro Jahr
• 9.6 TByte bei 80 Jahren Lebenserwartung
• Ein Leben in Einzelbildern
• Microsoft SenseCam, 1 Tag = 7 -10 MByte
• Lebenslanges Filmarchiv
• 4 GByte pro Stunde (DVD-Qualität)
• 4 Stunden pro Tag (im Alter 0 .. 80)
• 456 TByte
©PeterSturm,UniversitätTrier
3
Betriebssysteme
Winter2016
Microsoft SenseCam
• Digitalkamera, die selbständig Bilder macht
• Wahl geeigneter Zeitpunkte
• Sensoren
• Lichtintensität
• Farbsensoren
• Infrarot
(Körperwärme)
• Temperatur
• Beschleunigung
(über mehrere Achsen)
Terabyte
• Aktuell gängige Größe
1024 4 = 1024 ⋅1024 ⋅1024 ⋅1024 = 1.099.511.627.776
• Wieviel ist das?
• Fußballfeld voller Smarties?
©PeterSturm,UniversitätTrier
4
Betriebssysteme
Winter2016
126Meter
Probleme
©PeterSturm,UniversitätTrier
5
Betriebssysteme
Winter2016
Moore’sche Gesetz
• Selbsterfüllende Prophezeiung
• Vorgabe an den Fortschritt im Entwicklungsprozeß
• Laut Intel mindestens bis
2029 gültig!
Intel
Folgen
• 2029 – 2016 ≈ 16 = 8Ÿ 2 è Steigerung um Faktor
256
• Gilt bestimmt für Hauptspeicher
• 1-4 TByte pro PC realistisch
• Festplatten ebenfalls
• 500 TByte bis 1 PByte pro Platte (3.5 Zoll) erreichbar
• Smartphone mit 500 Tbyte? Möglich!
• Sollen wir so weiter machen wie bisher?
©PeterSturm,UniversitätTrier
6
Betriebssysteme
Winter2016
Hibernate
• Retten des Hauptspeicherinhalts auf Festplatte
• System “schneller” wieder fortführbar
• Einfach den Hauptspeicherinhalt wieder herstellen
• Sinnvoll bei 8 GB? 32 GB? 1 TByte?
• Ja bei nicht-flüchtigem RAM
• Nein sonst
Speichermenge beherrschen?
• Hierarchische Ordnungsprinzipien für Menschen nur
bedingt geeignet
• … und wer noch daran glaubt, weiß es nur noch nicht J
• Subjektive Erkenntnis
• Kurz vor der Organisationskatastrophe
• Entartete Verzeichnisstruktur
• Ja …
• mag sein, daß nur ich unfähig bin!
OLD
OLD
©PeterSturm,UniversitätTrier
7
Betriebssysteme
Winter2016
Wiederfinden?
• Finden Sie alles wieder?
• Ich nicht L
• 14 Jahre gewachsenes Homeverzeichnis: > 1 TB
• Ich habe ausgedruckte Beweise, daß bestimmte
Dateien mal existiert haben
• dümpeln vielleicht in irgendwelchen Archiv-CDs rum
• Droht digitaler Alzheimer?
• Ja …
• im kommerziellen Umfeld wird sauber gearbeitet: hier
nicht!
Geräte-Allerlei
• Eine Vielzahl an angeschlossenen physischen
Speichermedien prägen das Bild!
• PC: Sticks, Festplatten, portable Platten, …
• Backend: Speicherplatz für Zig-TByte oder gar -PByte Daten
• Einzelmedium häufig isoliert
• Viele Entscheidungen beeinflussen Systemleistung
• Welches Dateisystem für welches Gerät?
• Kleine Änderung – große Wirkung
• Ja …
• Im professionellen Bereich gibt es Lösungen (z.B. Volume
Manager)
©PeterSturm,UniversitätTrier
8
Betriebssysteme
Winter2016
Anwendungsentwicklung
Informationenim
Hauptspeicher
(Flüchtig)
Informationenauf
externemSpeicher
(Nichtflüchtig)
• Zwei Welten
• Externer Speicher
• Einfacher Dateizugriff
• SQL-Queries gegen Datenbanken
• Interner Speicher
• Container-Klassen mit entsprechenden Zugriffsmöglichkeiten
Beispiel Container-Klassen
©PeterSturm,UniversitätTrier
9
Betriebssysteme
Winter2016
Dateisysteme
Typische Dateinutzung
• Dateien sind klein oder sehr groß
• Lesender Zugriff überwiegt
• Sequentieller Zugriff dominiert
• (Dateien werden selten oder nie gelöscht)
• Einige Dateien werden von vielen Nutzern verwendet
• Dabei überwiegt lesender Zugriff
• “Make the common case fast”
• Sequentieller lesender Zugriff auf Dateien
• Caching und Read Ahead sinnvoll
©PeterSturm,UniversitätTrier
10
Betriebssysteme
Winter2016
Meta Data
• File information (inode)
• Size, owner, access rights, timestamps
• Where are the blocks on disk
• Directory information
• Content, owner, access rights, timestamps
• Device information
• root directory
• Free blocks
• Bad blocks
Requirements
• Minimize time-consuming head movement
• Store file data & meta-data in close neighborhood
• Collect mutiple disk requests and optimize movement
• Cluster blocks consecutive blocks of a file phyiscally
• Improve read/write performance
• Utilize caching agressively (disk & OS)
• Exploit striping and mirroring
• Keep pace with increasing disk capacity
• “Disk usage is like an ideal gas, which takes up every
available space”
• Deal with more and more files
• Recovery in case of system failure must be fast
©PeterSturm,UniversitätTrier
11
Betriebssysteme
Winter2016
Functions
• Formatting and initializing media
• Create initial content to access media
• Keeping track of bad blocks
• Recognize bad blocks and exclude them from future use
• Managing of meta-data
• Small set of data but high update frequency
• Storing and retrieval of files
• Sequential reading and writing
• Positioning of file pointer
• Mapping files into virtual address space
• Security
• Who‘s allowed to access a file?
Hierarchical Structure
Vir tual Filesystem
Physical Filesystem
Volume Access
LogicalVolumes
Logical Volume Management
PhysicalVolumes(Disks)
©PeterSturm,UniversitätTrier
12
Betriebssysteme
Winter2016
In Place vs. Log
• Sometimes high update frequency
• e.g. every access changes some timestamps
• Small updates
• 4 bytes timestamp
• Cache changes might
lead to inconsistencies
• How to update
• In place
• Log-based
Classification
Data
UpdateinPlace
Log
MetaData
UpdateinPlace
©PeterSturm,UniversitätTrier
Traditional filesystems
ext2, FAT, …
Journaling
filesystems
ext4, NTFS, HFS,
reiserfs, XFS, …
Log
unknown
Log-based
filesystems
ZFS, btfs, …
13
Betriebssysteme
Winter2016
Linux
Linux 4.3/fs
9p adfs affs afs autofs4 befs bfs btrfs
cachefiles ceph cifs coda configfs cramfs
debugfs devpts dlm ecryptfs efivarfs efs
exofs exportfs ext2 ext4 f2fs fat freevxfs
fscache fuse gfs2 hfs hfsplus hostfs hpfs
hugetlbfs isofs jbd2 jffs2 jfs kernfs lockd
logfs minix ncpfs nfs nfs_common nfsd nilfs2
nls notify ntfs ocfs2 omfs openpromfs
overlayfs proc pstore qnx4 qnx6 quota
ramfs reiserfs romfs squashfs sysfs sysv
tracefs ubifs udf ufs xfs
©PeterSturm,UniversitätTrier
14
Betriebssysteme
Winter2016
./fs/<fsdir>
find linux-4.3/fs/* -maxdepth 0 -type d |
xargs -n 1 -J dir find dir -name "*.[ch]" -exec cat {} \; |
wc
• Linux 4.3
• 1.084.731 Zeilen von 4.614.490 Zeilen Kernel
Zeilen Sourcecode
0
20000
40000
60000
80000
100000
120000
9p
adfs
affs
afs
autofs4
befs
bfs
btrfs
cachefiles
ceph
cifs
coda
configfs
cramfs
debugfs
devpts
dlm
ecryptfs
efivarfs
efs
exofs
exportfs
ext2
ext4
f2fs
fat
freevxfs
fscache
fuse
gfs2
hfs
hfsplus
hostfs
hpfs
hugetlbfs
isofs
jbd2
jffs2
jfs
kernfs
lockd
logfs
minix
ncpfs
nfs
nfs_common
nfsd
nilfs2
nls
notify
ntfs
ocfs2
omfs
openpromfs
overlayfs
proc
pstore
qnx4
qnx6
quota
ramfs
reiserfs
romfs
squashfs
sysfs
sysv
tracefs
ubifs
udf
ufs
xfs
©PeterSturm,UniversitätTrier
15
Betriebssysteme
Winter2016
ext2
• The original Linux filesystem
• Origin was Minix filesystem
• Extended filesystem (inefficient extension)
• 2nd Extended filesystem (since 1994)
• Properties
•
•
•
•
Selectable block size between 1024 and 4096 bytes
Selectable number of inodes per partition
Clustering of blocks
Preallocation of file blocks (enlargement)
Structure
BootBlock
BlockGroup0
Group
Descriptors
Superblock
1
n
BlockGroupn
DataBlock
Bitmap
1
Inode
Bitmap
1
Inode
Table
DataBlocks
m
• Reason for block groups?
• Maximum size of block group:
• Data Block Bitmap = 1 Block
• 8 MB (1 KB blocks) up to 128 MB (4 KB blocks)
• Superblock and group descriptors are replicated in each group
• Kernel will access block group 0 only
©PeterSturm,UniversitätTrier
16
Betriebssysteme
Winter2016
• Total number of inodes
Superblock
• Block size
• Size of overall filesystem in blocks
• Number of reserved blocks
• Only accessible by root processes
• Accessing an otherwise full filesystem
• Number of free blocks and free inodes
• Characteristics of block groups
• Statistics
• Timestamps (Last mount operation, Last write, Last filesystem check)
• Mount statistics (Number of mount operations, Maximum mounts before
check)
• Status flag
• 0 mounted or missed unmount, 1 cleanly unmounted, 2 Filesystem has errors
ext3 & ext4
• Journaling der Metadaten
• Ext4
•
•
•
•
Größere Platten (1 EB)
Größere Dateien (16 TB statt 16 GB)
Größere Directories
Checksums, Delayed allocation, …
©PeterSturm,UniversitätTrier
17
Betriebssysteme
Winter2016
Flash
• Floating Gate FETs
• Gate von Isolator umgeben
• Hält Ladung sehr lange
• Ladung beeinflußt Verhalten
©PeterSturm,UniversitätTrier
18
Betriebssysteme
Winter2016
Besonderheiten
• Hohe Spannungen beim Ändern
• 1 kann zu 0 werden
• Block-basiertes Löschen
• 0 wieder zu 1
• Memory Wear
• 105 bis 106 Erase-Zyklen
• Flash Translation Software Layer (FTL)
• Read Disturb (NAND)
©PeterSturm,UniversitätTrier
19
Betriebssysteme
Winter2016
Recht verbreitet …
Flash File Systems
©PeterSturm,UniversitätTrier
20
Betriebssysteme
Winter2016
Update in Place L
Update in Place L
©PeterSturm,UniversitätTrier
21
Betriebssysteme
Winter2016
Update in Place L
Update in Place L
©PeterSturm,UniversitätTrier
22
Betriebssysteme
Winter2016
Update in Place L
Update in Place L
©PeterSturm,UniversitätTrier
23
Betriebssysteme
Winter2016
Update in Place L
Update in Place L
©PeterSturm,UniversitätTrier
24
Betriebssysteme
Winter2016
Update in Place L
Update in Place L
©PeterSturm,UniversitätTrier
25
Betriebssysteme
Winter2016
Log-Based J
Log-Based J
©PeterSturm,UniversitätTrier
26
Betriebssysteme
Winter2016
Log-Based J
Log-Based J
©PeterSturm,UniversitätTrier
27
Betriebssysteme
Winter2016
Log-Based J
Log-Based J
©PeterSturm,UniversitätTrier
28
Betriebssysteme
Winter2016
Indexstrukturen
Indexstrukturen
©PeterSturm,UniversitätTrier
29
Betriebssysteme
Winter2016
Indexstrukturen
Indexstrukturen
©PeterSturm,UniversitätTrier
30
Betriebssysteme
Winter2016
Indexstrukturen
Indexstrukturen
©PeterSturm,UniversitätTrier
31
Betriebssysteme
Winter2016
Walking Trees
DerKampfderHäuptlinge
Flash Friendly File System
©PeterSturm,UniversitätTrier
32
Betriebssysteme
Winter2016
Fight walking trees
©PeterSturm,UniversitätTrier
33
Betriebssysteme
Winter2016
Fight Walking Trees
MappingTable
… noch mehr
• Optimimiertes Layout
• Multi-Head Logging
• Hot/Cold data
• Adaptive Logging
• Role-Forward Recovery
©PeterSturm,UniversitätTrier
34
Betriebssysteme
Winter2016
DiagrammeausdemangegebenArtikel
Andere Dateisysteme
• BTRFS
• Wächst und gedeiht
• Bootbar, Software RAID
• NILFS2
• New Implementation of a Log-based File System
• XFS
• In vielen Benchmarks das Schnellste
• Parallel I/O
• OCFS2
• Cluster-Dateisystem (für RDBMS-Cluster)
©PeterSturm,UniversitätTrier
35
Betriebssysteme
©PeterSturm,UniversitätTrier
Winter2016
36
Betriebssysteme
Winter2016
ZFS
• SUN Microsystems
• Vorreiter im Bereich logbasierter Dateisysteme
• Entwickelt für Solaris 10 / OpenSolaris
• ZFS setzt den “State of the Art” geschickt um
• Vollständige Neuentwicklung
• 128 Bit Dateisystem
“Populating 128-bit file systems would exceed the
quantum limits of earth-based storage. You couldn't
fill a 128-bit storage pool without boiling the
oceans.” (Jeff Bonwick, Chief Developer ZFS)
Kilauea
©PeterSturm,UniversitätTrier
37
Betriebssysteme
Winter2016
Eckdaten
• Kernziele
• Transaktional
• Integriertes Volume-Management
• Einfache Bedienung und Administration
• Pooled Storage
• Alle Speichersysteme werden in einem Pool verwaltet
• Selbst Hardware-RAID ist prinzipiell nicht mehr nötig
• Ende-zu-Ende Datenintegrität
•
•
•
•
Fehlerisolation zwischen Daten und Prüfsumme
Erkennt exotische Fehlersituationen (Phantom Writes, …)
Datenredundanz und Selbstheilung
RAID-Z
Grundstruktur
ZFSFilesystem
Snapshot
Volume
Traditionelles
Dateisystem
(z.B.UFS)
DataSets
DataSetManagement
Pools
PoolManagement
Disks
©PeterSturm,UniversitätTrier
38
Betriebssysteme
Winter2016
Charakteristische Größen
• Wortlänge:
128 Bit
• Höchstanzahl Dateien:
248
• Größe Dateisystem (max.):
16 EB
• Größe Datei (max.):
16 EB
• Größe Einzelpool (max.):
3×1023 PB
• Höchstanzahl Attribute / Datei:
256
• Höchstanzahl Geräte in zPool:
264
• Dateisysteme in zPool:
264
• zPools in System:
264
Datenintegrität
• Alle Operationen copy-on-write / transaktionsbasiert
• Daten auf Platte immer konsistent
• Kein Journaling notwendig
1.
2.
3.
©PeterSturm,UniversitätTrier
4.
39
Betriebssysteme
Winter2016
Datenintegrität II
• Ende-zu-Ende-Prüfsummen
• Daten und Metadaten
• 256 Bit (fletcher2 u.a.)
• Prüfsumme in übergeordnetem Blockpointer
Adresse
Adresse
Prüfsumme
Prüfsumme
Adresse
Adresse
Prüfsumme
Prüfsumme
Daten
Daten
Datenintegrität III
• Automatische Erkennung und Korrektur korrupter
Daten
• ‘Selbst-Heilung’ der Daten
• Disk Scrubbing
Applikation
Applikation
Applikation
ZFS
(Mirror)
ZFS
(Mirror)
ZFS
(Mirror)
©PeterSturm,UniversitätTrier
40
Betriebssysteme
Winter2016
Redundant Arrays of
Independent Disks (RAID)
• 6 Levels
•
•
•
•
•
•
•
RAID 0: Striped
RAID 1: Mirrored
RAID 2: Striped+ ECC
RAID 3: Striped+ Parity
RAID 4: Huge stripes + Parity
RAID 5: Huge stripes + Rotating Parity
RAID 6: RAID 5 + additional parity
A
B
C
D
AA
B
C
D
• Most common are RAID 0,1,5 and
combinations (RAID 10 = 1 + 0)
CD
AB
• Favor huge writes
• Overhead 1/(n-1) for ndisks
C’D’
A’B’
• Small writes are expensive
•
•
•
•
Read data
Write data
Read parity
Write parity
AA
BA
C
Parity
Raid 5 und Raid 6
1
0
1
1
0
0
1
1
EvenParity
• Raid 5
• Feste Stripe-Größe für schnelle Positionsberechnung
• Große Writes anstreben
• Anfällig in der Recoveryphase
• Raid 6
• Zusätzlicher Parity-Block macht Recoveryphase robust
• Write Hole
• Stromausfall zwischen Schreiben von Daten- und Parity-Block
• HW-Controller verwenden NVRAM (z.B. Batteriepufferung)
©PeterSturm,UniversitätTrier
41
Betriebssysteme
Winter2016
Raidz / Raidz2
• In ZFS integrierte Raid-Schemata
• Raidz (= Software Raid5)
• Atomares Copy-On-Write
• Stripes unterschiedlicher Länge
• d.h. nur Full-Stripe-Writes
• Parity lesen entfällt
• Raidz2 ähnelt in seiner Funktion Raid6
Schnappschüsse
und Klone
©PeterSturm,UniversitätTrier
42
Betriebssysteme
Winter2016
Snapshots
• Read-only Kopie eines Dateisystems oder
Volumes
• Platzeffizient (Copy-on-Write)
• Snapshot-Name:
filesystem@snapname
volume@snapname
Clones
• Beschreibbares Volume oder Dateisystem
• Entsteht aus Snapshots (Copy-On-Write)
• Snapshots möglich
• Anwendungsbeispiel
• Boot Environment von OpenSolaris
©PeterSturm,UniversitätTrier
43
Betriebssysteme
Winter2016
Benutzung
Administration
• Einfache Administration
• Zwei zentrale Kommandos
• zpool
• Erzeugen, Verwalten und Löschen von Pools
• Zustandsinformation
• Verlaufslog
• zfs
• Erzeugen, Verwalten und Löschen von Datasets
• Schnappschüsse und Klone
©PeterSturm,UniversitätTrier
44
Betriebssysteme
Winter2016
ZFS Datasets sind “kostengünstig”
• Fein-granulare Nutzung empfohlen
• Jedes Benutzer-Account = eigenes Dateisystem
• Jeder besonders zu behandelnde Teilbaum
• Vorteile
• Weiterhin einzeln verwalt- und konfigurierbar
• Zuteilung vorhandener Pool-Ressourcen
# zpool create home mirror disk1 disk2
Beispiel
# zfs create home/volker /export/home/volker
# zfs create home/michael /export/home/michael
# zfs create home/annett /export/home/annett
# zpool add home mirror disk3 disk4
# zfs compression=on home/michael
# zfs create home/michael@donnerstag
# zfs quota=42g home/volker
# zfs reservation=10g home/annett
# zfs clone home/michael@donnerstag home/tmp
# zfs send home/michael@donnerstag | ssh sturm@...
©PeterSturm,UniversitätTrier
45
Betriebssysteme
Winter2016
Metadaten
Repositories
Finden
Daten
Daten
Daten
Daten
Metadaten
Metadaten
Metadaten
Metadaten
• Datenbank speichert
• … alle vorhandenen Metadaten
• … zusätzlich inhaltsbezogene Keywords
• Ermitteln spezifische Plugins abhängig vom
Dateityp
• Ereignisgesteuerter, asynchroner Aufruf bei
Dateiänderung
Repository
• Komplexe Suchanfragen formulierbar
©PeterSturm,UniversitätTrier
46
Betriebssysteme
Winter2016
Beispiel Spotlight
(P)LINQ
©PeterSturm,UniversitätTrier
47
Betriebssysteme
Winter2016
LINQ
• Language integrated Query
• Bestandteil von .NET 3.5
• SQL-ähnliche Queries auf Container-Klassen und alle
mengenorientieren Datenstrukturen
• Zusätzliche Indirektionsstufe
Informationenim
Informationenauf
EinheitlicherZugriffaufflüchtigundpersistent
Hauptspeicher
externemSpeicher
gespeicherteDatenstrukturen
(Flüchtig)
(Nichtflüchtig)
NVM
Peter Sturm
Universität Trier
©PeterSturm,UniversitätTrier
48
Betriebssysteme
Winter2016
Es war einmal …
… sondern:
©PeterSturm,UniversitätTrier
49
Betriebssysteme
Winter2016
• Ganz wenige Kbyte
• Zugriffszeit ~ 300 ps
©PeterSturm,UniversitätTrier
50
Betriebssysteme
Winter2016
• Meist abgestuft (L1, L2, …)
• Meist getrennt (Instruktionen, Daten)
• Beispiel: Xeon Broadwell
• L1 64 Kbyte pro Core, 1 – 2 ns (Hit)
• L2 256 Kbyte pro Core, 3 – 5 ns (Hit)
• L3 6 Mbyte (shared, Server), 10 – 40 ns
UMAs
• “Uniform Memory Architecture”
• Gleiche Speicherzugriffszeit
©PeterSturm,UniversitätTrier
51
Betriebssysteme
Winter2016
Main Memory
• RAM (dynamisch und statisch)
• [ Gbyte … Tbyte ]
• Desktop 8 – 32 GB
• Server – 32 TB (und mehr)
• Zugriffszeit 12-15 ns
Eigenschaften
• Flüchtig
• Inkontinent (Kondensator)
• Verliert Ladung nach
wenigen Millisekunden
• Refresh
©PeterSturm,UniversitätTrier
52
Betriebssysteme
Winter2016
NUMA
Disk / SSD
• Persistenz
• [ Tbyte … viele Tbyte]
• Zugriffszeiten
• Disk 6 – 12 ms und mehr
• SSD ~ 50 us
• IOPs
• Disk 100 – 200
• SSD Mehrere 10k
©PeterSturm,UniversitätTrier
53
Betriebssysteme
Winter2016
GPU
• Small Supercomputer
• Mehrere 1000 Prozessoren
• Komplexe Cache-Struktur
• Bester verfügbarer Speicher
Ethernet
• 1 Gbit/s bis 10 Gbit/s
• Mehrere 10k IOPs
©PeterSturm,UniversitätTrier
54
Betriebssysteme
Winter2016
Verteilte Systeme
Volume
Velocity
Verzögerung
Volatility
Vortune (Vermögen)
©PeterSturm,UniversitätTrier
55
Betriebssysteme
Winter2016
Der “Große Graben”
Wir fordern!!!
Volume
Wenig
Viel
Velocity
Lahm
Schnell
Viel
Wenig
Volatility
Ja
Nein
Vortune
Teuer
Günstig
Verzögerung
©PeterSturm,UniversitätTrier
56
Betriebssysteme
Winter2016
Kernspeicher
©PeterSturm,UniversitätTrier
57
Betriebssysteme
Winter2016
128 Gbyte?
• 1.099.511.627.776 Bits / 256 / 4 cm2
• 1.073.741.824 cm2 = 107.374 m2
• 328m x 328m
RAM / Cache
Volume
Wenig
Viel
Velocity
Lahm
Schnell
Viel
Wenig
Volatility
Ja
Nein
Vortune
Teuer
Günstig
Verzögerung
©PeterSturm,UniversitätTrier
58
Betriebssysteme
Winter2016
Disk
Volume
Wenig
Viel
Velocity
Lahm
Schnell
Viel
Wenig
Volatility
Ja
Nein
Vortune
Teuer
Günstig
Verzögerung
SSD
Volume
Wenig
Velocity
Lahm
Verzögerung
Volatility
Vortune
©PeterSturm,UniversitätTrier
Viel
Schnell
Viel
Wenig
Nein
Ja
Teuer
Günstig
59
Betriebssysteme
Winter2016
Storage Class Memory (SCM)
Volume
Wenig
Velocity
Lahm
Verzögerung
Volatility
Viel
Schnell
Viel
Wenig
Nein
Ja
Teuer
Vortune
Günstig
Fast angekommen!?
Volume
Wenig
Velocity
Lahm
Verzögerung
Wenig
Volatility
Ja
Vortune
Teuer
©PeterSturm,UniversitätTrier
Viel
Viel
Schnell
Wenig Viel
Nein
Teuer
Günstig
60
Betriebssysteme
Winter2016
Indizien
Hard Drive
©PeterSturm,UniversitätTrier
61
Betriebssysteme
©PeterSturm,UniversitätTrier
Winter2016
62
Betriebssysteme
Winter2016
TSV, HBM und HMC
• Through Silicon Via (TSV)
• Aktuell 4 bald 8 Layer
• High Bandwidth Memory (HBM)
• Hybrid Memory Cube (HMC)
• 20 – 40 Gbyte/s Durchsatz
HBM Specs
©PeterSturm,UniversitätTrier
63
Betriebssysteme
Winter2016
3D Chips?
Nvidia Pascal GPU
16 GB HBM2
1 TB/s
17 Milliarden Transistoren
©PeterSturm,UniversitätTrier
64
Betriebssysteme
Winter2016
Details
128 GB DDR4 DIMM
• Samsung, Ende 2015
• TSV Interconnects, 144 DRAM Chips
• 2.4 GT/s * 8 Byte = 19.2 Gbyte/s/DIMM
©PeterSturm,UniversitätTrier
65
Betriebssysteme
Winter2016
Viel Speicher J
128 DIMMs
Bandbreiten
©PeterSturm,UniversitätTrier
66
Betriebssysteme
Winter2016
… Morgen
… Höher
z.B.M.2(PCIe)32Gbit/s
©PeterSturm,UniversitätTrier
67
Betriebssysteme
Winter2016
… ganz hoch
Andere Stimmen
• Geoffrey W. Burr, IBM
• “es fehlt nur noch eine Zehnerpotenz”
ACMQueue,Nov/Dez2015
• Nanavati:
©PeterSturm,UniversitätTrier
68
Betriebssysteme
Winter2016
Memory
CPU
CPU
Memory
©PeterSturm,UniversitätTrier
69
Betriebssysteme
Winter2016
Strukturfolgen
• Komplexität reduzieren
• Weniger Software-Caches
• Geänderte Prioritäten
• CPUs müssen nicht mehr warten
• Weniger Asynchronität
• Mehr Polling ~ ManyCores
Neue Paradigmen
• Neue Datenbankprinzipien
• Jede DB ist In-Memory J
• ”Kriegen wir später”
• Deklarativ
• Knowledge-based
• Machine Learning
©PeterSturm,UniversitätTrier
70
Betriebssysteme
Winter2016
THE END
Peter Sturm
RÜCKBLICK
• Architekturen
• Virtuelle Maschinen
• Synchronisation
• Dateisysteme
(c)PeterSturm,UniversitätTrier
1
Betriebssysteme
Winter2016
ARCHITEKTUR
• Mikrokern vs. Monolith
• Virtuelle Maschinen
• Virtualisierung wird Normalfall
• Software-isolierte Prozesse
• Browser-OS
SYNCHRONISATION: FEIN BIS GROB
• Mikro
• Parallele Schleifen
• Meso
• Futures, Promises, Tasks
• Makro
• Threads
• Anwendungen
(c)PeterSturm,UniversitätTrier
2
Betriebssysteme
Winter2016
TRENDS
• Beschreiben statt Programmieren
• Innovative Ein- und Ausgaben (Gesten, Sprache, ...)
• Mobile Geräte
• Embedded
• Ubiquituous Computing
• Internet of Things
• The Cloud
UBICOMP
(c)PeterSturm,UniversitätTrier
3
Betriebssysteme
Winter2016
Dr. John R. Gold (http://agrilife.org/gold)
Dr. John R. Gold (http://agrilife.org/gold)
(c)PeterSturm,UniversitätTrier
4
Betriebssysteme
Winter2016
ARDUINO UNO
(c)PeterSturm,UniversitätTrier
5
Betriebssysteme
Winter2016
ARDUINO MEGA
GRUSELKABINETT
(c)PeterSturm,UniversitätTrier
6
Betriebssysteme
Winter2016
3.11.2013
(c)PeterSturm,UniversitätTrier
7
Betriebssysteme
Winter2016
http://www.wired.com/design/2012/12/raspberry-pi-roundup/
(c)PeterSturm,UniversitätTrier
8
Betriebssysteme
Winter2016
http://letsmakerobots.com
SUPERCOMPUTER
64 Knoten, Universität Southampton
(c)PeterSturm,UniversitätTrier
9
Betriebssysteme
Winter2016
http://goo.gl/HY5XMx
(c)PeterSturm,UniversitätTrier
10
Betriebssysteme
(c)PeterSturm,UniversitätTrier
Winter2016
11
Betriebssysteme
Winter2016
http://goo.gl/0OzXsz
PEBBLE
(c)PeterSturm,UniversitätTrier
12
Betriebssysteme
Winter2016
HYPE?!
(c)PeterSturm,UniversitätTrier
13
Betriebssysteme
Winter2016
INTEL
(c)PeterSturm,UniversitätTrier
14
Betriebssysteme
Winter2016
UDOO (KICKSTARTER)
(c)PeterSturm,UniversitätTrier
15
Betriebssysteme
Winter2016
PROGRAMMIERUNG
• Verschiedene Lager
• C/C++
• Arduino und Co., Raspberry Pi
• Python, Skratch
• Raspberry Pi
• C# (.NET Micro Framework)
• Netduino
• JavaScript
(c)PeterSturm,UniversitätTrier
16
Betriebssysteme
Winter2016
.NET MICRO FRAMEWORK
• Version 4.3 (Dezember 2012)
• Kleine CLR für C# und VB.NET
• Teilmenge von .NET
• ca. 70 Klassen mit 420 Methoden
• Apache License, Version 2.0
• SDK inkl. Source Code
• Visual Studio Integration
• Debugging
(c)PeterSturm,UniversitätTrier
17
Betriebssysteme
Winter2016
ESPRUINO (KICKSTARTER)
JavaScript
(c)PeterSturm,UniversitätTrier
18
Betriebssysteme
Winter2016
INTERNET DER
DINGE
(c)PeterSturm,UniversitätTrier
19
Betriebssysteme
Winter2016
DEUTLICHES MOMENT
• Hohes Innovationspotential
• Viel Pioniergeist
• Nerds
• Schulen
• Hardware-Hersteller
1% EINSPARUNG (CISCO)
Industrie
Segment
Art
Ersparnis (15J)
Flugverkehr
Kommerziell
-1% Treibstoff
$30 Milliarden
Energie
Gastherme
-1% Gas
$ 66 Milliarden
Gesundheit
Gesamtbereich
-1% Ineffizienz
$63 Milliarden
Schiene
Fracht
-1% Ineffizienz
$27 Milliarden
Öl/Gas
Erschließung
-1% Kosten
$90 Milliarden
http://goo.gl/8QNXIj
(c)PeterSturm,UniversitätTrier
20
Betriebssysteme
Winter2016
DEVICE CLOUDS
REST
IFTTT
(c)PeterSturm,UniversitätTrier
21
Betriebssysteme
Winter2016
ARDUINO YÚN
OpenWRT Linux
TCP/IP Stack
Arduino
(c)PeterSturm,UniversitätTrier
22
Betriebssysteme
Winter2016
NOCH MEHR DATEN
(c)PeterSturm,UniversitätTrier
23
Betriebssysteme
(c)PeterSturm,UniversitätTrier
Winter2016
24
Herunterladen