mikro - introducing a c++ mikro kernel - epita systems laboratory
TRANSCRIPT
![Page 1: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/1.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
mikro - Introducing a C++ Mikro Kernel
Victor Apercé & Julien Freche
[email protected]@lse.epita.frhttp://lse.epita.fr/
![Page 2: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/2.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Outline I
1 Introduction
2 Kernel typesIntroduction to kernelMonolithic/Micro kernel explainedMonolithic/Micro kernel comparison
3 mikro
4 Low level C++
5 Design considerations
6 Features and progressImplemented featuresMissing features
7 Conclusion
![Page 3: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/3.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Introduction
Introduction
![Page 4: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/4.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
mikro id
Kernel type: micro kernel
Status: experimental now but intended to be in production(if we can :D)
Language: C++
Fathers: Victor Apercé, Julien Freche
Birth: in early September 2013
Place of birth: LSE, near Paris, France
![Page 5: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/5.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Some figures about mikro
The most active project of the LSE this year
2 repositories: kernel and User land
2 main authors and 2 contributors
~900 commits representing 5.2 commits per day
~27,000 lines
![Page 6: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/6.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Kernel types
Kernel types
![Page 7: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/7.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Introduction to kernel
Introduction to kernel
![Page 8: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/8.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Kernel land/User land
Kernel landCode running at a privileged level of the CPU
Bugs are most of the time fatal
User landTasks running at a low privileged level
Bugs can be recovered by Kernel land
![Page 9: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/9.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Kernel
KernelInterface between software and hardware
A part is running in Kernel land but not necessary all
Core of the operating system
2 main types: monolithic and micro kernel
![Page 10: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/10.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Main component of Kernel
Main components of kernel are:
Paging (will be discussed in an other talk)
VFS: Virtual File System
Binary loader
Scheduler
Processor init (will be discussed in an other talk)
Drivers
![Page 11: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/11.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Monolithic/Micro kernel explained
Monolithic/Micro kernel explained
![Page 12: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/12.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Monolithic kernel
Monolithic kernelAlmost everything privileged is in Kernel land
Availability of dynamic module loading - most of the time
Very big
System functionality access: through system calls
![Page 13: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/13.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Micro kernel
Micro kernelThe less as possible resides in Kernel land
No dynamic module loading
Very light
Kernel components are User land processes: services
System functionality access: through IPC
![Page 14: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/14.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
IPC
Inter Process CommunicationCommunication between 2 User land processes
Message passing in micro kernels
Will be discussed in an other talk
![Page 15: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/15.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Component location
Components Micro kernel Monolithic kernelPaging Kernel & User
Kernel land
VFS UserBinary Loader UserScheduler Kernel or UserProcessor Init KernelDrivers User
![Page 16: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/16.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Examples
Monolithic kernelsWindows (hybrid :D)
Darwin, MacOS X kernel (hybrid :D)
Linux
*BSD
STOS
Micro kernelsQNX
Mach
L4 family, the reference
![Page 17: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/17.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Monolithic/Micro kernel comparison
Monolithic/Micro kernel comparison
![Page 18: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/18.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Complexity
Monolithic kernelVery complex
Hard to maintain
Kernel must be reentrant
Micro kernelKernel land is simple
User land is hard to design and complex
Supposed to be easier to maintain
Kernel don’t need to be reentrant
![Page 19: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/19.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Security
Monolithic kernelKernel land is big so many possible bugs
Possibility to exploit dynamic code loading in Kernel land
Bugs are most of the time fatal
Micro kernelKernel land is simple so less possible bugs
Bugs in User land are not fatal
Still possible exploits in User land services
Security can be mathematically proved like seL4
![Page 20: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/20.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Performance
Monolithic kernelVery fast due to system calls
Micro kernelSlower because of IPC context switches
IPC must be as fast as possible to improve performance
This problem hasn’t been really solved yet
![Page 21: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/21.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel typesIntroduction to kernel
Monolithic/Micro kernelexplained
Monolithic/Micro kernelcomparison
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Knowledge background
Monolithic kernelFirst kernels
Design used a lot
Less fun, recipe already exists
Micro kernelRare design
Still researches on the topic
But let room to innovations!
![Page 22: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/22.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
mikro
mikro
![Page 23: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/23.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Why’s mikro a micro kernel?
More challenging
Pretty fan of the micro kernel idea
More fun because there’s no recipe
![Page 24: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/24.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
What makes mikro different?
Not a L4 clone but inspired from L4
We want it to be as fast as we can
IPC will be different from other micro kernel (see othertalk)
mikro code has been designed to be "one day" in productionDeveloped with newer technologies:
clang is the default compilerC++ is the official language of mikro
![Page 25: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/25.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Low level C++
Low level C++
![Page 26: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/26.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
C- - ?
Common question:Is it possible to code a kernel in C++ ?
Answer:Yes, it is, but you will have to drop some features:
RTTI: Run-Time Type Information
STL: Standard Template Library
Local static variables
Global objects
New and delete operators
...
![Page 27: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/27.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Who am I anyway ?
RTTIC++ mechanism that gives informations about an object’s datatype at runtime.
This is useful for dynamic_cast<> and typeid operators.
Used when handling exceptions.
Virtual functions work without RTTI (using vtables).
You can port a C++ RunTime lib and an Unwind lib to restorethese features.
![Page 28: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/28.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Template Paradise
STLLibrary that provides generic templated classes and associatedalgorithms.
Depends on the libc
No stream operators
Some of the containers may be usable if extracted from thelib.
You can port libstdc++, STLPort or uSTL for example to restorethese features.
![Page 29: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/29.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Guards, protect me !
Local static variablesThese variables are declared as static inside a function and arepreserved across different calls.
The compiler will generate a code that will looks like:
__guard gua rd ;
i f ( ! ( ( char ∗)& guard ) [ 0 ] )i f ( _ _ c x a _ g u a r d _ a c q u i r e (& guard ) ){
/ / E f f e c t i v e v a r i a b l e i n i t_ _ c x a _ g u a r d _ r e l e a s e (& guard ) ;
}
This code is, of course, simpler that the real generated code.You can code __cxa_guard_* to support this feature.
![Page 30: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/30.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Init me
Constructor of global objects have to be called before enteringthe C++ entry point. You can do it with the following:
mov $ s t a r t _ c t o r s , %ebxjmp 2 f
1 :c a l l ∗(%ebx )add $4 , %ebx
2 :cmp $ e n d _ c t o r s , %ebxjb 1b
c a l l k_main
The symbols start_ctors and end_ctors are generated by thecompiler. You can call destructors with a similar code.
![Page 31: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/31.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
No throw, please !
You will have to code new and delete operators by yourself. Theusual new operator will throw an exception on error but youprobably don’t want that.
void ∗ operator new ( s i z e _ t s i z e ) n o e x c e p t ;void operator d e l e t e ( void ∗p ) ;
The new operator will have to call your kernel internalallocator.
Do not forget to check the return value.
Do not use new in a constructor, you cannot check thereturn value.
![Page 32: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/32.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Design considerations
Design considerations
![Page 33: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/33.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Pick one
How to separate generic code from arch-specific code ?
Using inheritance ?
Using templates ?
Using macro ?
![Page 34: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/34.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Not so good..
Inheritance
Parent Class: arch generic
Inherited Class: arch specific
Considerations:
First naive idea
You can change program behavior at run-time. Uselesshere.
Overhead due to vtables and pointer manipulation.
Pay attention to not compile useless code.
![Page 35: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/35.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Not so bad..
Macro
Macro name: arch generic
Expanded name: arch specific
Considerations:
Less readable. You have to find the macro definition tounderstand.
C style.
Pretty powerful.
![Page 36: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/36.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
First try
Templates
Base template: arch generic
Specialized template: arch specific
Considerations:
Some code has to be in the header file.
Specialized templates do not receive methods from the basetemplate.
You cannot easily write an arch generic interface...
![Page 37: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/37.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Hybrid
The solution implemented in mikro is hybrid and inspired by thePIMPL design pattern.
c l a s s MemoryManager{
p u b l i c :i n l i n e void i n i t ( ){
a r c h . i n i t ( ) ;}
MemoryManagerImpl<ARCH_GENERIC> a r c h ;} ;
This solution is not perfect but it works and can also be used forother things like changing scheduler at compile time.
![Page 38: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/38.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogressImplemented features
Missing features
Conclusion
Features and progress
Features and progress
![Page 39: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/39.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogressImplemented features
Missing features
Conclusion
Implemented features
Implemented features
![Page 40: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/40.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogressImplemented features
Missing features
Conclusion
Awesome
Kernel:
Paging
SMP
IPC
vm86
Userland:
minimal libc
mikro lib
vesa
Bootloader:
module loading
ext2 support
configuration file
![Page 41: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/41.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogressImplemented features
Missing features
Conclusion
Of course it works !
Tested on:
qemu
bochs
VirtualBox
Real hardware
You can easily create a USB stick with mikro and test it on yourhardware.
![Page 42: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/42.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogressImplemented features
Missing features
Conclusion
Missing features
Missing features
![Page 43: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/43.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogressImplemented features
Missing features
Conclusion
Not my fault
Kernel:
Support x86_64 and armv7
Better scheduler
Time management
Improve IPC
Probably a lot of bugs to fix
Userland:
VFS
Paging daemon
Process creation in userland
Drivers
![Page 44: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/44.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogressImplemented features
Missing features
Conclusion
Let’s dream
Other features we want to add if we can:
Linux compatible driver API
Metadata oriented file system "datameat" port on mikro
Unix program ports
And much more...
![Page 45: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/45.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Conclusion
Conclusion
![Page 46: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/46.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Almost done
mikro
highly active project
very fun to code !
a good way to learn new stuff
not usable yet but mainly because of the userland
![Page 47: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/47.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
I want YOU!
You can contribute to the project.
Main page:http://www.lse.epita.fr/projects/mikro.html
Kernel repo (lse):http://git.lse.epita.fr/?p=mikro.git
Kernel repo (bb):http://bitbucket.org/mikroteam/mikro
Userland repo (lse): http://git.lse.epita.fr/?p=mikro-userland.git
Userland repo (bb): http://bitbucket.org/mikroteam/mikro-userland
![Page 48: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/48.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
Contacts
Julien Freche
@JulienFreche
Victor Apercé
Mailing List:
Feel free to contact us if you have any questions about theproject. We will be happy to answer.
![Page 49: mikro - Introducing a C++ Mikro Kernel - EPITA Systems Laboratory](https://reader031.vdocuments.mx/reader031/viewer/2022021007/620395aeda24ad121e4b1d6a/html5/thumbnails/49.jpg)
mikro - Introducinga C++ Mikro Kernel
Victor Apercé &Julien Freche
Introduction
Kernel types
mikro
Low level C++
Designconsiderations
Features andprogress
Conclusion
The end
Thank you for your attention