Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 50 reacties

Microsoft heeft de broncode van een 'nieuw' besturingssysteem genaamd Singularity vrijgegeven. De software is bedoeld als onderzoeksproject en daarom is de broncode vrij inzichtelijk voor academici en non-commerciŽle gebruikers.

Singularity is een onderzoeksproject van Microsoft Research en bedoeld om een besturingssysteem te schrijven dat vrijwel volledig in een beheerde omgeving functioneert. Binnen Singularity zijn daarom onder andere de kernel, drivers en applicaties in C# geschreven. Deze managed omgeving zou een betrouwbaarder systeem moeten opleveren.

Tijdens de Techfest 2008-onderzoeksconferentie in Redmond is deze week versie 1.1 van Singularity aan het verzamelde publiek getoond, en is hen verteld dat de broncode van het besturingssysteem gratis is in te zien door academici en non-commerciŽle gebruikers. De software is te downloaden via de Codeplex-site van Microsoft.

Verschillende ideeŽn en technieken die binnen Singularity zijn ontwikkeld en getest zullen op termijn in de broncode van de Windows-kernel terechtkomen. Singularity zelf zal in ieder geval niet de kern van een volgende Windows-release gaan vormen. Wie via Singularity een kijkje wil nemen in de broncode van Windows komt derhalve van een koude kermis thuis.

Singularity
Singularity in actie na het opstarten
Moderatie-faq Wijzig weergave

Reacties (50)

besturingssysteem (...) dat vrijwel volledig in een beheerde omgeving functioneert
Wat wordt hiermee bedoeld? Zie http://en.wikipedia.org/wiki/Managed_code :
In Microsoft Windows terminology, managed code is computer program code that executes under the management of Microsoft's CLR virtual machine in the .NET Framework, or another similar virtual machine. It is contrasted with unmanaged code, which is executed directly by the computer's CPU.

[Reactie gewijzigd door Rekcor op 7 maart 2008 09:13]

dat er eerst hyperviser voor een abstractie laag zorgt (virtualizing). Dit betekent dat er nog een besturings systeem onder draait maar de managed code die daar op draait kan wel direct interupts aan de hardware geven zonder eerst langs het "bodem besturingssysteem", die met de hypervisor, te moeten (dit heet virtualiseren). Het is dus niet ge-emuleerd maar "Gevirtualiseert". Het systeem met de hypervisor (stuk software dat de virtuele computers, die met de managed code dus) interrupts laat geven heeft dus de ultime controle omdat die 100% direct op de hardware draait (zoals demeeste pc's thuis nu nog doen) en dus de code in de virtuele computer kan managen, aldus "managed code": Managed code is dus de code van een systeem dat compleet controleerd kan worden door het systeem eronder omdat die een hogere prioriteit heeft op de hardware, en tegelijk draait met de managed code door middel van een hyperviser.

Er zijn ook virussen die zo functioneren gebaseerd op het REDPILL/BLUEPILL** concept dat gepresteerd is door onderzoekers in 2006, en zo dus ook de code managen. Omdat door de hardwarematige instructiesets die op de huidege generatie computers zit het systeem geen idee heeft dat het gevirtualiseert word is dit ook niet op te pikken door virusscanners (tenzij de cpu cycles van elk virus uitgebried gedocumenteerd worden natuurlijk, die zouden dan herkent kunnen worden). Virussen gebaseerd op dit concept kunnen letterlijk overal bij op de geinfecteerde computer (die dan dus gevirtualiseert is) en zou in theorie ALLES kunnen volgen en beinvloeden dat de nu gevirtualiseerde computer doet. Managed code zal net zo werken maar dan zonder de bedoeling dat je pc word gesloopt of er gegevens worden verzonden, maar in plaats daarvan kan het voor antivirus en systeem stabiliteit zorgen.

**link volgt nog, het concept is dat een machine kan wisselen tussen gevirtualiseerd worden en niet gevirtualiseerd worden zonder uit te gaan en zonder dat de computer dit merkt.

[Reactie gewijzigd door ThePiratemaster op 7 maart 2008 11:34]

Virussen gebaseerd op dit concept kunnen letterlijk overal bij op de geinfecteerde computer (die dan dus gevirtualiseert is) en zou in theorie ALLES kunnen volgen en beinvloeden dat de nu gevirtualiseerde computer doet.
En dat is precies wat Microsoft hiermee wil: Nog meer controle over het systeem. Het is niet meer mogelijk voor de programmeur om iets rechtstreeks op de hardware te regelen, maar het moet eerst goedgekeurd worden door de virtual machine van Microsoft. Dit zorgt er natuurlijk ook voor dat programmeurs niet zomaar virussen kunnen maken omdat dit ook niet goedgekeurd wordt door Microsoft, maar ook wel legale zaken die Microsoft niet zo goed uitkomen (zoals het kraken van DRM hier in Nederland) zouden gestopt kunnen worden. Ik moet er niet aan denken dat dit gecombineerd wordt met TCPA.

[Reactie gewijzigd door QkE op 7 maart 2008 10:28]

Wat een overdreven reactie.

Goedgekeurd door de Virtual Machine houd ongveeer in: gecompileerd naar Win32-x86-(A64)

alle Java code is ook managed. Net als andere managed talen.

Je compileerd gewoon voor de virtual machine, en niet voor Win32. Dat is maar een ontzettend kleine verandering en heeft niets met controle te maken. Managed code is voor programmeurs makkelijker, omdat ze een interface naar de hardware hebben die als het goed is altijd het zelfde blijft. De applicatie achter de interface (de virtual machine) kan wel veranderen en aangepast worden zodat de voor de VM gecompileerde code op alle pc's kan draaien waar de VM op kan draaien. Dit maakt bijvoorbeeld cross-platform beter mogenlijk. Zodadelijk hoef je op Linux alleen maar de MS Virtual Machine aan de praat te krijgen, en hopla! MSPaint op linux ;) (for example)

Ook heeft ieder programma zijn eigen instantie van een VM, loopt het programma dus vast, dan merkt de rest van de pc dat als het goed is niet.

Je gebazel over dat MS het goed moet keuren vind ik echt paranoia! Of dat heeft iig niets met managed vs unmanaged code te maken. MS kan nu al prima checken welk programma draait en ze zo mogenlijk blokkeren, bijvoorbeeld de programma's die known bugs hebben in Vista, het programma wordt gestopt terwijl je het launched en je krijgt een melding of je door wil gaan ivm known bugs for Vista.


Duzzz.....
Je zou door middel van een opensource hypervisor zoals Xen de TPM module niet mee kunnen laten virtualiseren of zelfs code implementeren om deze om omzeilen of te blokkeren, misschien zelfs te emuleren door eentje die alles "confirmed" vind en je alles laat doen wat je wilt
Blue Pill werd gemaakt door de hackster (hekster? :)) Joanna Rutkowska.
We zitten hier echter wel op tweakers.net, dus enige kennis van terminologie mag ook wel verwacht worden.
maar toch, wat snap je niet? als ik er aan denk dan zet ik er wel een wiki linkje bij.

heb het al iets duidelijker gemaakt

[Reactie gewijzigd door ThePiratemaster op 7 maart 2008 11:35]

Ik zie het ja, en ik kan het nu wel beter volgen. Dankjewel.

Terechte score, al vind ik de leesbaarheid nog steeds niet grandioos maar blijkbaar ben ik de enige (+1).

[Reactie gewijzigd door torp op 7 maart 2008 11:59]

Managed code in een virtual machine.

De code die draait in een geheugen veilige omgeving.
(driver A kan geen geheugen van driver B benaderen door een klein programeer foutje)

Alle pointer fouten worden direct door een exception afgevangen zonder dat het verdere invloed heeft op je systeem.

Het doel van een managed omgeving is code die 'weinig' aan het systeem kan laten vastlopen.
Dat is een van de dingen die je zou kunnen bereiken. Je zou ook een virus scanner kunnen maken die niet kan worden uitgeschakelt door een virus en eveneens als onzichtbare firewall functioneert. Ook is er omdat er al een dom0 (het hoofddomein in een gevirtualiseerde omgeving met volledige hardwaretoegang en prioriteit) bestaat er denk ik ook geen risico op redpill/bluepill virussen meer.
Dat is een van de dingen die je zou kunnen bereiken. Je zou ook een virus scanner kunnen maken die niet kan worden uitgeschakelt door een virus en eveneens als onzichtbare firewall functioneert. Ook is er omdat er al een dom0 (het hoofddomein in een gevirtualiseerde omgeving met volledige hardwaretoegang en prioriteit) bestaat er denk ik ook geen risico op redpill/bluepill virussen meer.
ook daar heb je nog risico. Alle code moet nog steeds door dom0 heen voor het bij domU terecht komt. Een fout in de programmacode, of in de management interface tussen de twee, kan er voor zorgen dat er arbitrary code uitgevoerd wordt binnen dom0.

In het beste geval maak je het iets moeilijker, maar bij lange na niet onmogelijk.
Op de website van Singlarity: http://research.microsoft.com/os/singularity/ kan meer informatie over dit besturingssysteem worden gevonden. Met name de uitzendingen van Channel 9 zijn interessant om een goed beeld te krijgen van de werking en doelstellingen.
En ook in de Java wereld zijn er natuurlijk vergelijkbare projecten, zie bv. http://www.jnode.org/
Veel vergelijkbaarder is jxos, deze maakt ook gebruikt van Typesafe language die managed/verifieerbaar is. Nu zou je zeggen jnode gebruikt java (net als jxos) dus dat is het zelfde. Maar Singularity en Jxos maken daarbovenop gebruik van deze eigenschappen om de MMU http://en.wikipedia.org/wiki/Memory_management_unit niet te hoeven aanroepen.

"JX is a single address space system. All code runs in one
physical address space; an MMU is not used. Protection is
based on the type-safety of the Java bytecode instruction set."
http://www4.informatik.un...X/publications/jx-sec.pdf

Zo als je misschien kunt raden is het aanroepen van de MMU 'duur'(als in kost relatief veel tijd)

Singularity en Jxos doen dit bijde en halen hier veel snelheids winst mee. Zie ook papers van de mensen van MS over Singularity.

Waar het hierboven heen gaat met hypervisor weet ik niet.

De mmu wegsnijden(voor de meeste dingen je heb hem nog wel nodg alleen niet voor (hardware) protectie) is en van de belangerijkere eigenschappen. Extra betrouwbaarheid kregen ze er volgens mij gratis bij door de opzet die dit vereist. Het meeste van een papers gaat hier ook over.

[Reactie gewijzigd door Mr_Light op 7 maart 2008 15:24]

Inderdaad, zeker niet met managed code, JNode (www.jnode.org) is volledig geschreven in Java op een heel kleine beetje asambler voor the boot na. Alle drivers zijn bijvoorbeeld ook in Java geschreven. Inmiddels vrij aardige ondersteuning voor netwerk, verschillende bestands systemen (ext, hfs, ntfs, fat16, fat32 en nog een paar) en grafische kaarten ondersteuning (vrij summier nog). Daarnaast ook een grafische omgeving (plaatjes op de website zijn verouderd). Ben hier gisteren mee gestart om het onder VMWare Player te draaien en te testen. (dit project is de derde in de reeks en de laatste is in 2003 gestart).

Oh en voor de reachties hierop, dit is niet bedoeld als flame van zij zijn hier later mee niet origineel, maar meer als, wist je dat er ook zoiets met Java gedaan is. (Java en .NET zijn op het gebied van managed code erg vergelijkbaar).

[Reactie gewijzigd door ronaldmathies op 7 maart 2008 09:44]

Onder Virtual PC geeft JNode:

Real panic: VmProcessor#Suspended

na een flink java stackdump.

In een ander opstartmode blijft JNode gewoon hangen op 'Detected 1 processor'.

Niet erg bemoedigend! ;(
Het is nog een erg jong systeem, ik heb het kunnen draaien op mijn dell laptop met vista onder VMWare Player waarbij ik de standaard 'ISO' en vmx bestand heb gebruikt.
Volgens mij is Singularity een heel stuk ouder dan SharpOS en Cosmos. Daarnaast zou je kunnen zeggen dat JNode de voorloper was van Singularity, als je zo graag wilt gaan roepen dat MS "weer eens aan het jatten is" of iets dergelijks, maar feit is gewoon dat Singularity een enorm innovatief en origineel onderzoeksproject is dat veel verder gaat dan alleen het schrijven van een kernel in C#. C# is namelijk gewoon een middel in het project, het doel is een 100% veilig operating systeem te schrijven, en dat kan alleen met een veilige taal als C#. Dit heeft weinig te maken met JNode, dat een project is om een kernel te schrijven waarop Java applicaties kunnen draaien.

Microsoft doet ook wel eens gewoon leuke, interessante en originele dingen hoor. :P
Vergeet niet dat Singularity reeds eind 2005 werd voorgesteld aan het grote publiek.
Om 2 redenen:
1. als flame om aan te duiden dan MS niet innovatief bezig is.
2. ter informatie dat er ook andere projecten zijn die soortgelijke dingen doen (maar niet miljarden aan PR geld hebben).
Bijzonder interessante ontwikkeling, ik ga dan ook zeker een kijkje nemen. Dit zou misschien nog wel eens heel goed gebruikt kunnen worden voor bepaalde taken waar verder geen grafische interface oid voor nodig is. De uitvoerbaarheid en de stabiliteit hiervan zullen in ieder geval bepalend zijn of Singularity een serieuze optie kan worden.
windows 2008 heeft ook een cl only versie
Een "cl only" versie die eerst een grafische schil opstart, en daar een powershell window overheen knalt, noem ik geen cl only! Overigens is het zo dat je in die cl only bvb om de tijd goed te zetten alsnog een gui krijgt. Ook als de server gelockt is, is het grafisch. Het is dus een niet eens verdienstelijke poging tot een cl only.
Het zou ook geen Windows meer heten wanneer je geen windows meer zou hebben :P

Even serieus: vrijwel alles van de GUI is niet beschikbaar. Dat je ipv een character-based venster, nog altijd een high-res beeld krijgt, wil niet zeggen dat er een full-blown GUI gestart wordt. Waarom wordt het altijd zo met *nix vergeleken... bij *nix is het een herritage van vele decenia terug... efficient, maar achterhaald en niet gebruikers vriendelijk.
Ja, je hebt gelijk, je kunt beperkt een aantal grafische management tools starten en notepad is beschikbaar. Notepad is overigens een beperkte variant, omdat API's missen!
Ik vind het overigens geen verkeerd idee om notepad aan te bieden. De Windows beheerders zijn niet echt gewend om tekstfiles met een commandline tool te bewerken en dat maakt powershell wat toegankelijker voor hun.
Waarom wordt het altijd zo met *nix vergeleken... bij *nix is het een herritage van vele decenia terug... efficient, maar achterhaald en niet gebruikers vriendelijk.
Pardon? het is juist een bewuste keuze, maximale performance en efficiency. Waarom denk je dat Microsoft zelf die mogelijkheid in Windows 7 ook juist weer gaat bieden? Omdat men het wil, sterker nog: eist!

Iedere Unix admin is prima in staat een GUI te instaleren, maar vrijwel geen enkele doet het, en diegene die het wel doen hebben er doorgaans een bijzonder goede reden voor. Slechts een heel klein deel doet het uit onwetenheid, of omdat ze het anders niet snappen.

Niet gebruiksvriendelijk? Joh, als ik een nieuwe site moet uitrollen op windows ben ik 2x langer bezig dan op een unix machine, juist omdat het op unix gewoon even een textfile aanpassen is, en apache reloaden. Of even tomcat een rotschop verkopen, of jboss. Niets geen 10 tabbladen afstruinen voor instellingen.

Kijk, voor de normale kantoor medewerker in een niet IT gerelateerde functie, ja, dan is linux zonder GUI waarschijnlijk niet iets waar je blij van wordt. Linux met GUI misschien ook wel niet. Mac OS X valt bij dergelijke gebruikers juist weer wel erg goed heb ik gemerkt. De meesten zullen gewoon weigeren te werken tot ze Windows hebben. Maar voor de mensen die het allemaal mogen beheren? Die kunnen uitstekend uit de voeten met een GUI-loze Unix prompt.
Dat is wel een hele botte mening over *nix die je geeft. De stamboom van unix wel eens bekeken (google maar rustig). Decennialang ontwikkeld en getest zul je bedoelen.

Het concept is nog alijd ijzersterk en aktief in ontwikkeling op vele fronten. En dankzij X valt het met de gebruikersonvriendelijkheid tegenwoordig reuze mee.
Windows is daar beter in, ben ik met je eens maar de verschillen worden kleiner. Als het echter op achterhaald ontwerp aankomt denk ik dat Windows de 1e prijs wint, niet *nix.
Ook windows 2008 is geen managed omgeving. Voor mensen die niet weten wat dat is, lees eerdere reacties of bekijk een how-to voor .NET.
1 Singularity is niet bedoelt als serieuze optie, dit is uitsluitend voor studiedoeleinden.
2 Hebben we niet al een os dat uiterst stabiel is en zonder grafische schil gedraait kan worden? (hint: unix/linux)
We hebben ook een variant voor studiedoeleinden: Minix
Alleen geen van beiden zijn een managed omgeving.
Alleen geen van beiden zijn een managed omgeving.
'managed' is ook alleen maar een ding waarvan microsoft iedereen probeert wijs te maken dat het hoort. Als je goed je code schrijft dan is de noodzaak voor 'managed' erg klein, uiteindelijk is dat 'managed' alleen maar weer een extra laag er tussen, die de boel weer vertraagt.

het voordeel van unix (of linux) is juist: er zit niets meer tussen dat zich ermee bemoeit. En ja, dat brengt wel enige risico's met zich mee, maar in de praktijk vallen die zo extreem mee dat ik me er eigelijk nooit druk om maak.

goed geschreven code managed zichzelf.
hear! hear!

Het hele concept van 'tegen de programmeur beschermde code' is in beginsel onjuist, programmeurs die dat soort bescherming nodig hebben zijn gewoon niet in staat goede software te schrijven.
SELinux is slechts de toepassing van een beter beveiligingssysteem voor linux, maar is niet managed of gevirtualiseerd. Het beperkt de mogelijke schade als er iets mis gaat in een applicatie of deamon, meer niet. Zie ook: http://www.nsa.gov/selinux/info/faq.cfm

[Reactie gewijzigd door Bas van der Doorn op 7 maart 2008 09:46]

Zeker, die link had ik al verwacht. Maar is het niet prettig om een alternatief te hebben? Niet omdat Unix/Linux slecht is, maar als optie ernaast.
Ook Singularity is niet volledig managed/safe:
Most of the kernel is verifiably safe, but portions are written in assembler, C++, and unsafe C#.
The assembler and C++ portions of the HAL represent approximately 5% of the trusted code in the system (35 out of 561 files).
Een complete managed omgeving is dan ook niet mogelijk. Tenzij je de hardware software taken laat overnemen en dan moet je hardware weer 'save' gemaakt worden.

Het leuke aan singularity (een ook JNode) is dat de bootstrap kernel zo klein en simpel mogelijk gehouden word zodat de code ook makkelijk te controleren is op foutjes.
Wow.. Ze beginnen nu al met een BSOD.. :+
Boot Screen On Display in dit geval :P
En volgens mijn weten zijn ze al met singularity begonnen in 2003

http://en.wikipedia.org/wiki/Singularity_(operating_system)

Singularity is a Microsoft Research project started in 2003 to build a highly-dependable operating system in which the kernel, device drivers, and applications are all written in managed code.
Singularity zelf zal in ieder geval niet de kern van een volgende Windows-release gaan vormen
Beantwoord dit de vraag afdoende?

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True