http://d3s.mff.cuni.cz

Martin Děcký [email protected]

CHARLES UNIVERSITY IN PRAGUE facultyfaculty ofof mathematicsmathematics andand physicsphysics WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar multiserver designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 2 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 3 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Not a Linux/*BSD/etc. distribution SPARTAN microkernel Custom user space http://www.helenos.org

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 4

WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 6 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

3-clause BSD license bzr://bzr.helenos.org/mainline http://trac.helenos.org http://www.ohloh.net/p/helenos

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 7 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 8 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Rather breadth-first than depth-first Desktop Server Embedded

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 9 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 10 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

IA-32 and AMD64 (PC) IA-64 () ARM (Neo FreeRunner, BeagleBoard, BeagleBone, ) MIPS (Malta) PowerPC (iMac G4) UltraSPARC (Ultra 60, Enterprise T1000)

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 11 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 12 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Mostly familiar “common sense” API Unicode (no legacy character sets) No skeletons in the closet (strcpy, signals, fork & ) libposix as an optional emulation layer

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 13 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 14 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Memory management Scheduling Asynchronous IPC Not a trivial kernel

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 15 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 16 WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Component-based design Separate and isolated user space tasks (servers) Naming service, VFS, file system drivers, Location service, device drivers, network layers, graphics stack layers, etc.

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 17

WhatWhat isis HelenOS?HelenOS?

open source general-purpose multiplatform POSIX-similar microkernel multiserver operating system designed from scratch

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 19 DesignedDesigned fromfrom scratchscratch

SPARTAN kernel since 2001 HelenOS since 2005 Latest release 0.5.0 (Fajtl) in August 9th 2012 Some 330K lines of code in the mainline branch About 93 % in , 3 % in assembler About 30 % of comments “Very well-commented ” [ohloh.net] Some 45 contributors About 20 active during the last year (only 10 of them at least 10 commits)

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 20

CommitsCommits

8000

7000

6000

5000

4000

3000

2000

1000

0

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 22 LinesLines ofof codecode

350000

300000

250000

200000

150000

100000

50000

0

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 23 DesignDesign principlesprinciples

Microkernel design principle General-purpose design principle Non-fundamentalistic design principle Full-fledged design principle Multiserver design principle Split of mechanism and policy design principle Encapsulation design principle Portability design principle

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 24 Why?

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 25 HelenOS vs. Linux HelenOS vs. Linux HelenOS and Linux

Why?Why? Reliability Robustness Dependability Natural design

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 29 DependabilityDependability

IEEE definition “Dependability is a measurable and provable degree of system's availability, reliability and its maintenance support” In other words Formal verification of correctness and quality of service with respect to predefined specification/criteria

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 30 DependabilityDependability (2)(2)

Architecture and behavior specification

Semantic information Extra-functional in source code properties

Architecture models

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 31 DependabilityDependability (2)(2)

Compatibility checks Compiler checks Compliance checks Static analyzers Code generation Abstract interpretation

Architecture and behavior specification

Semantic information Extra-functional in source code properties

Architecture models Performance modeling Schedulability analysis Model checking Use case analysis

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 32 FunctionalComponent properties Extra-functional properties implementationFrama-C properties timing properties Frama-C

pre/post-conditions checking invariant checking

HelenOS sources C99 with GNU extensions

stubs, skeletons, interface properties checking connectors generation (correct sequencing, run-type interface type checks live/deadlock freedom)

Architecture Description behavior compatibility Behavior Description ADL/CDL with extensions substituability {T|E|-}BP with preprocessing

compliance checking extraction extraction

Use cases domain-limited English MicrokernelMicrokernel OSOS communitycommunity

FOSDEM 2012 February 4th – 5th 2012, Brussels, Belgium Université libre de Bruxelles Jakub Jermář chaired the Microkernel OS Devroom Participation of HelenOS, Labs, NOVA, , Hurd FOSDEM 2013 February 2nd – 3rd 2013, Brussels, Belgium Genode Labs chaired the Microkernel and Component- based OS Devroom

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 34 FOSDEMFOSDEM 20122012

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 35

LearningLearning byby doingdoing

Keep the Moore's law in mind early during the design phase Do not put the kernel in charge of purely user space namespaces Too much synchronization spoils the kernel

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 38 FeaturesFeatures

File systems ext4, FAT, exFAT, ISO 9660, UDF, MFS Networking IPv4 & IPv6, NE2000, E1000, RTL8139 GUI Composing desktop USB 1.1 (UHCI, OHCI) HID, mass storage PATA, SATA (AHCI) GNU binutils, Portable C Compiler (PCC), MIPS simulator

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 39 What next?

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 40 WhatWhat next?next?

Towards self-hosting GCC, Clang Go VFS2 FUSE BIRD, KnotDNS

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 41 WhatWhat next?next? (2)(2)

User space driven system-wide scheduler User space driven SMP management New RCU algorithms AP-RCU (highly portable, decently scalable PaR) AH-RCU (highly scalable, microkernel-friendly) Implicitly shared resources management De-duplicated caching, future usage prediction (read- ahead), resource pressure evaluation (out-of-memory conditions)

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 42 JoinJoin us!us!

www.helenos.org

Martin Děcký, LinuxDays 2013, October 5th 2013 HelenOS 43