Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor...

51
Een .NET-besturingssysteemtoolkit Discovering Cosmos Sijmen J. Mulder

Transcript of Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor...

Page 1: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Een .NET-besturingssysteemtoolkit

Discovering CosmosSijmen J. Mulder

Page 2: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Agenda

Boek 1Cosmos: a very short introduction

Boek 2Modern Operating Systems

Pauze

Boek 3The Design and Implementationof the Cosmos Operating System

Boek 4Cosmos in Context

Page 3: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer
Page 4: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer
Page 5: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Cosmos

• Toolkit voor besturingssystemen

• (Bijna) compleet .NET

• Open source (BSD-3)

https://www.gocosmos.org

5

Page 6: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Demo

6

Page 7: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

“Waarom”

7

Page 8: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer
Page 9: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Besturingssysteem

• Drivers voor hardware en protocollen

• Interface voor gebruiker

• Voert applicaties uit

• Diensten voor applicaties

9

Page 10: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Computer

• Processor voert instructies uit

• Geheugen bevat data (o.a. instructies)

Welke instructies?

10

https://commons.wikimedia.org/wiki/File:Von_Neumann_Architecture.svg

Page 11: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Firmware

• Op PC: UEFI

• Vindt en start besturingssysteem

Hoe dan?

11

Page 12: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

UEFI

• Drivers (FAT32, WiFi, enz.)

• Interface voor systeemconfiguratie

• Voert besturingssystemen uit

• Diensten voor het besturingssysteem

12

Page 13: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

UEFI Besturingssysteem

• Drivers (FAT32, WiFi, enz.)

• Interface voor systeemconfiguratie

• Voert besturingssystemen applicaties uit

• Diensten voor het besturingssystemen applicaties

13

Page 14: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Diensten

• Procesbeheer

• Geheugenbeheer

• Communicatie

…en nog veel meer

14

Page 15: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Uitdagingen procesbeheer

• Multitasking (scheduling)

• Isolatie tussen processen

• Coördinatie gedeelde bronnen

15

Page 16: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

System calls

• OS en software in eigen domeinen

• Speciale functiecalls naar OS-domein

Voordelen:

• Sterke isolatie

• Privileges OS bewaakt door processor

Nadelen:

• Dure contextswitch

16

OS

Programma

Page 17: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

OS as library

• OS en software in zelfde domein

• Reguliere functiecalls

Voordelen:

• Eenvoud

• Snelheid*

Nadelen:

• Geen harde scheiding OS en programma’s

17

OS

Programma

Page 18: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Uitdagingen geheugenbeheer

• Meerdere programma’s tegelijk laden

• Gote werksets

• Isolatie tussen processen

18

Page 19: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Lineair geheugen

Voordelen:

• Eenvoudig

• Geen indirectie, dus snel

Nadelen:

• Vereist positie-onafhankelijke code

• Geen isolatie tussen programma’s

• Geen werksets groter dan fysiek geheugen

19

Programma

Programma

Page 20: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Toegewezen geheugen

• Paginering

• Elke pagina heeft een eigenaar

• Sleutel huidig programma in beveiligd register

Voordelen:

• Geen indirectie

• Isolatie

Nadelen:

• Vereist positie-onafhankelijke code

• Geen werksets groter dan fysiek geheugen

20

Programma

Programma

Page 21: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Virtueel geheugen

• Paginering

• Virtuele adressen

Voordelen:

• Eigen ruimte

• Grote werksets

Nadelen:

• Indirectie

• Complexiteit

21

ProgrammaProgramma

Programma

Programma

Page 22: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Architectuur

• Monolitisch

• Microkernel

• Unikernel

22

Page 23: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Monolitisch

• Processen in eigen domeinen

• Drivers in kerneldomein

Voorbeelden:

• Windows

• Linux

• BSD

23

DriversDriver

ProcesProces

Kernel

Page 24: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Microkernel

• Minimale kernel

• Drivers zijn processen

Voorbeelden:

• Mach

• MINIX

• L4

24

Kernel

DriversDriverProcesProces

Page 25: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Unikernel

• Eén proces

• Eén domein

Voorbeelden:

• Cosmos

• IncludeOS

• MirageOS

25

DriversDriverProces

Kernel

Page 26: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Demo

26

Page 27: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer
Page 28: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer
Page 29: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Ontwerpkeuzes

• C#/etc gecompileerd naar machinecode

• Unikernel

• Lineair geheugen

Maar die nadelen?!

Page 30: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

30

X#

DLL DLL

011

DLL DLL

DLL DLL

X#

Page 31: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

IL2CPU

• Compileert MSIL naar assembly

• (Voor nu) alleen x86

• Plugs om implementaties te vervangen

• Gebuikt X# API

31

X# DLL

011

Page 32: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

X# API

• Genereer assembly vanuit .NET

• (Voor nu) alleen x86

32

XS.Comment("Arraytype: " +aOpType.StackPopTypes.Last().FullName);

XS.Comment("Size: " + aElementSize);

// calculate element offset into array// memory (including header)XS.Pop(EAX);XS.Set(EDX, aElementSize);XS.Multiply(EDX);XS.Add(EAX, (uint)(ObjectUtils.FieldDataOffset + 4));

// pop the array nowXS.Add(ESP, 4);XS.Pop(EDX);

XS.Add(EDX, EAX);XS.Push(EDX);

IL2CPU/source/Cosmos.IL2CPU/IL/Ldelema.cs

Page 33: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

X# taal

• High level assembler

• Via NASM

• Op basis van X# API

• Niet gebruikt in Cosmos

33

function strlen {// get pointer to string passed as first argumentESI = ESP[4]// clear ECXECX ^ ECXLoop:

AL = ESI[ECX]if AL = 0 returnECX++goto Loop

}

https://www.x-sharp.net/docs/

Page 34: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Kernel

Library

Programma’s

Page 35: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Kernel

Library

Programma’s

Cosmos

CoreCLR + CoreFX

Programma

Page 36: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Kernel

Library

Programma’s

Cosmos

CoreCLR + CoreFX

Programma

Kernel

Co

reC

LR+

Co

reFX Programma

Page 37: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Plugs

• Vervangen delen bestaande assemblies

• .NET of X#

• Bijvoorbeeld: Console, File, …

• Zo kan reguliere .NET Core worden gebruikt

37

CoreCLRCoreFX

Plug

Plug

Plug

Page 38: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer
Page 39: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer
Page 40: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

“Waarom”

• Alternatief voor andere unikernels

• Geheugenveiligheid door de talen

• Privilegescheiding door het typesystem

• Scheduling-trucs via de compiler

Page 41: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

.NET-besturingssystemen

• Singularity OS

• MOSA

• Meadow

41

Page 42: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Singularity

• Onderzoeksproject Microsoft (2003-2010)

• Microkernel

• Lineair geheugenmodel met garanties door taal (zoals Cosmos)

https://www.microsoft.com/en-us/research/project/singularity/

42

Page 43: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

MOSA

• Managed Operation System Alliance

• Standaardisatie interfaces .NET operating systems

• Cross platform

https://github.com/mosa/MOSA-Project/wiki

43

Page 44: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Meadow

• IoT platform

• Vergelijkbare benadering als Cosmos

• Realtime OS

• Van (deel) Mono/Xamarin team

https://www.kickstarter.com/projects/meadow/meadow-full-stack-net-standard-iot-platform

44

Page 45: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Unikernels

• IncludeOS (http://www.includeos.org)

• Mirage OS (https://mirage.io)

45

Page 46: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Bijzondere vermeldingen

• OpenBSD

• seL4

• Redox

46

Page 47: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

OpenBSD

• Conventioneel (evolutionair)

• Focus op veiligheid in de diepte

• pledge(), retpoline, …

https://www.openbsd.org

47

Page 48: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

seL4

• L4 microkernel zonder bugs*

• Geschreven in Haskell en C

• Compleet formeel geverifieerd!

http://sel4.systems

* Terms and conditions apply

48

Page 49: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Redox

• Unix-achtig

• Geschreven in Rust

https://www.redox-os.org

49

Page 50: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Andere richtingen

• Containers

• Virtuele machines (Erlang, Java, WebAssembly, …)

• Hybride oplossingen

50

Page 51: Discovering Cosmos OS - Betabit · Demo 6 “Waarom” 7. Besturingssysteem ... • Diensten voor het besturingssystemen applicaties 13. Diensten • Procesbeheer • Geheugenbeheer

Bedankt voor je aandacht