Jorrit Herder heeft een foutdetectiemodule voor open source-besturingssysteem Minix3 ontwikkeld waarmee fouten automatisch worden achterhaald en gerepareerd. Dat gebeurt zonder gebruikerstoepassingen te onderbreken en zonder tussenkomst van de gebruiker. Herder promoveerde donderdag 9 september aan de Vrije Universiteit Amsterdam op het onderwerp. Veel van de ideeën zijn van toepassing in een bredere context dan besturingssystemen alleen. Ook mobiele apparaten en ingebedde systemen, zoals pinautomaten hebben er mee te maken.
De promovendus deed zijn onderzoek binnen een onderzoeksproject 'naar werkelijk betrouwbare en veilige systeemsoftware', dat wordt geleid door hoogleraar Informatica Andrew Tanenbaum. Dit project ontving in 2008 een vijfjarig budget van 2,5 miljoen euro van de Europese Research Council.
Tanenbaum ontwikkelde Minix in 1987 als voorbeeldsysteem. Het systeem telde toen twaalfduizend regels code voor de kernel, geheugenmanagement en bestandsbeheer. Minix is gedeeltelijk gebaseerd op Unix, maar met een microkernel in plaats van de klassieke monolithische kernel. De bedoeling van dit besturingssysteem was dat studenten het in drie maanden studie konden snappen. In oktober 2005 is versie 3 van Minix uitgebracht. Deze versie bestaat uit minder dan vierduizend regels code en is er op gericht betrouwbaar te zijn.
Foutreparatie achter de schermen
Het ontwerp van Herder is geïntegreerd binnen Minix3. Met zijn onderzoek wil Herder het gebruik promoten van een modulair besturingssysteem. In zijn ontwerp combineert hij twee strategieën om de foutbestendigheid van het besturingssysteem te verhogen: fout-isolatie, om de tijd tussen fatale fouten te vergroten, en foutherstellend vermogen, om de benodigde tijd voor de repareren van fouten te verkleinen.
De promovendus maakte het besturingssysteem foutbestendig, zodat het normaal kan blijven functioneren ondanks problemen: er kunnen nog steeds programmeerfouten in stuurprogramma's zitten, maar deze zijn in Minix3 netjes afgeschermd van de rest van het systeem. Daardoor kan alleen plaatselijk een fout optreden.
De rest van het besturingssysteem kan gewoon blijven werken en de fout detecteren en vaak zelfs automatisch herstellen. Dit alles gebeurt achter de schermen en is in de meeste gevallen niet zichtbaar voor de eindgebruiker.
Pinautomaten
Volgens de promovendus zijn de meeste besturingsfouten te herleiden tot stuurprogramma's voor randapparatuur ('device drivers'). Dergelijke stuurprogramma's zijn nauw geïntegreerd in het besturingssysteem, waardoor fouten zich gemakkelijk kunnen verspreiden en het hele systeem kunnen ontregelen.
Dit probleem doet zich niet alleen voor bij standaard besturingssystemen voor de pc, zoals Windows, Linux, FreeBSD en MacOS. Besturingssystemen voor mobiele apparatuur (bijvoorbeeld telefoons, PDA's en fotocamera's) en ingebedde computers (bijvoorbeeld in auto's, pinautomaten en medische apparatuur) zijn veelal gebaseerd op een vergelijkbaar ontwerp waardoor ze soortgelijke problemen kennen.
Onbetrouwbare besturingssystemen veroorzaken daardoor volgens de promovendus niet alleen persoonlijke frustraties, maar kunnen ook grote maatschappelijke consequenties hebben, zoals economische schade en veiligheidsrisico's.
Kijk dat noem ik nu nog eens een echte vooruitgang!
Tja Jolein, leuke kop, maar je verteld niet echt wat Herder nu eigenlijk gedaan heeft.
Zijn thesus is welicht erg technisch maar ook voor niet ingewijden best te volgen zie de volgende link
http://www.minix3.org/doc/herder.html
Het is jammer dat Minix zo onderbelicht blijft in het ict-onderwijs.
Minix is welliswaar voor practische toepassingen niet oppertuun (daar is het ook niet voor bedoeld), het is wel een fantastisch stukje lesmateriaal (daar is het wel voor bedoeld)
Een hoop technische problemen zouden kunnen worden voorkomen als ontwikkelaars (ongeacht voor wel OS) een wat dieper gaande kennis van de interne werking van besturingssystemen zouden hebben.
Bedankt @Pascal voor het daadwerkelijk toevoegen van wat content. Zal de Computable wel van schrikken 🙂
@Pascal:
“Een hoop technische problemen zouden kunnen worden voorkomen als ontwikkelaars (ongeacht voor wel OS) een wat dieper gaande kennis van de interne werking van besturingssystemen zouden hebben.”
Das nu juist wa er kompleet mis is in dit onderwijs systeem en de rest van de industrie. Er word geen kennis meer overgedragen, geen inzichten meer verstrekt, alleen nog maar mensen dom gehouden en informatie ‘onderwezen” op een need-to-know basis.
Alle echt interessante (diepte,achtergrond)info zit “embedded in componenten, objecten” en/of verscholen achter slecht gedocumenteerde API’s. Hierdoor blijven ict-ers die echt zefl willen uitzoeken, en hun klanten hun product-life-cycle lang lang afhankelijk van de componentenleverancier.
Hoera de Object Oriented Revolutie encapsulate alles heel ver weg van je, inclusief de kennis van de onderliggende software en/of hardware laag (en to my opinion that sucks big time)
@RV,
Het is waar dat het ict-onderwijs vrijwel aleen nog brandhout afleverd, maar anderzijds, probeer maar eens iemand met kennis van zaken te vinden die nog voor de klas wil staan.
Mwah, als ik de C-code lees in het “herder” artikel, dan is het van: meerdere ‘returns’ per functie, en andere C-zondes, die inmiddels afgeleerd zijn in bepaalde omgevingen. Is ook bewezen dat e.e.a. correct is? (zodat de code ook echt compileronafhankelijk is) ?
Je weet immers hoe C wat lacunes heeft in deze.
Tuurlijk P.Oekie, zelf dacht ik aanvankelijk dat het om het idee ging dat kernelthreads afgeschoten konden worden om vervolgens opnieuw opgestart te worden,
maar het niet fatsoenlijk schrijven van ( C, C++, whatever) code is uiteraard een belangrijke oorzaak van problemen, met hulpjes als valgrind kun je natuurlijk ook al een hoop lekken opsporen. maar ja wie gaat dat doen, commerciele druk is wat telt.
Ik heb iemand gekend die beoordeeld werd op het aantal afgeleverde functies
Welnu dat is simpel
function doeiets()
{
return;
}
De rest is meerwerk, mag de klant extra voor betalen.
@Pascal, de broncode van windows is ook een mooi voorbeeld 😉
/*
TOP SECRET Microsoft(c) Project:Longhorn(TM) SP1
Estimated release date:2008
*/
#include “win95.h”
#include “win98.h”
#include “leopard.h”
char chew_up_some_ram[10000000];
void main () {
while (!CRASHED) {
if (first_time_install) {
make_10_gigabyte_swapfile();
do_nothing_loop();
search_and_destroy(FIREFOX | OPENOFFICEORG | ANYTHING_GOOGLE);
hang_system();
}
if (still_not_crashed) {
basically_run_windows_xp();
do_nothing_loop();
}
}
if (!DX10GPU()) {
set_graphics(aero, very_slow);
set_mouse(reaction, sometimes);
}
// printf(“Welcome to Windows 2000″);
// printf(“Welcome to Windows XP”);
printf(“Welcome to Windows Vista”);
while (something) {
sleep(10);
get_user_input();
sleep(10);
act_on_user_input();
sleep(10);
flicker_led_promisingly(hard_disk);
}
creat_general_protection_fault();
}
@Mario: Waar slaat deze nepcode op? Ga toch ergens aan windows bashing doen, zou ik zeggen…
@Mario, Kaspar heeft geen gevoel voor humor. Ik heb me kostelijk geamuseerd, bedankt.