Story 3QG Unikernels: rise of the virtual-library operating system

Unikernels: rise of the virtual-library operating system

by
in code on (#3QG)
Mssrs. Anil Madhavapeddy and David J. Scott over at the Association for Computing Machinery (ACM) ask: What if all layers in a virtual appliance were compiled within the same safe, high-level language framework? Good question, and I suspect we'll find out soon enough, because the trend in virtualization seems to be leading us in this direction.
While operating-system virtualization is undeniably useful, it adds yet another layer to an already highly layered software stack now including: support for old physical protocols (e.g., disk standards developed in the 1980s, such as IDE); irrelevant optimizations (e.g., disk elevator algorithms on SSD drives); backward-compatible interfaces (e.g., POSIX); user-space processes and threads (in addition to VMs on a hypervisor); and managed-code runtimes (e.g., OCaml, .NET, or Java). All of these layers sit beneath the application code. Are we really doomed to adding new layers of indirection and abstraction every few years, leaving future generations of programmers to become virtual archaeologists as they dig through hundreds of layers of software emulation to debug even the simplest applications?
This project intends to reduce the different layers of software and operating system to simple-API systems that can be installed and used like virtual appliances, perhaps [ed. note: this is my analogy, not the author's] the way Busybox reduces the POSIX standard to a simpler and smaller binary executable.
Reply 5 comments

"Let's dumb down all the APIs/ABIs and make a single one so it's easy to use!" (Score: 1, Informative)

by Anonymous Coward on 2014-07-12 22:39 (#2FS)

This article is like XKCD #927. It will NEVER WORK.

Whatever API/ABI you create right now? You'll have to support it in future operating systems for earlier-written software.

All /they're/ doing is saying "Hey, let's build a unified interface!", it already exists: POSIX.

Continued: "Let's dumb down all the APIs/ABIs and make a single one so it's easy to use!" (Score: 2, Insightful)

by Anonymous Coward on 2014-07-12 22:41 (#2FT)

Oh, and if you think POSIX is hard to use? You can just go right back to your rubies and pythons, because you obviously don't know C.

I think the people that came up with this didn't know C, and then said POSIX was complicated and hard to use, so they roll their own. Any programmer knows this is a rookie mistake.

BadBIOS Is Real! (Score: -1, Offtopic)

by Anonymous Coward on 2014-07-13 11:50 (#2G1)

I've taken a standard PC, freeware Audacity, and manually generated both Morse Code and Binary data in a simple .wav file using 20kHz - 22kHz "sound" with some fade in/fade out to clean up 'tics'. When played you cannot hear it (the dog goes nuts though). I then used my iPhone and a sound spectrum analyzer (free app) and monitored the inaudible frequencies.

BINGO...

A partition type virus combined with modem type software (but modified to use inaudible sound) could easily perform communication between PCs.

The Humpty Dance is your chance to do the hump (Score: -1, Troll)

by Anonymous Coward on 2014-07-13 15:32 (#2G3)

All right!
Stop whatcha doin'
'cause I'm about to ruin
the image and the style that ya used to.
I look funny
but yo I'm makin' money see
so yo world I hope you're ready for me.
Now gather round
I'm the new fool in town
and my sound's laid down by the Underground.
I drink up all the Hennessey ya got on ya shelf
so just let me introduce myself
My name is Humpty, pronounced with a Umpty.
Yo ladies, oh how I like to hump thee.
And all the rappers in the top ten--please allow me to bump thee.
I'm steppin' tall, y'all,
and just like Humpty Dumpty
you're gonna fall when the stereos pump me.
I like to rhyme,
I like my beats funky,
I'm spunky. I like my oatmeal lumpy.
I'm sick wit dis, straight gangsta mack
but sometimes I get ridiculous
I'll eat up all your crackers and your licorice
hey yo fat girl, c'mere--are ya ticklish?
Yeah, I called ya fat.
Look at me, I'm skinny
It never stopped me from gettin' busy
I'm a freak
I like the girls with the boom
I once got busy in a Burger King bathroom
I'm crazy.
Allow me to amaze thee.
They say I'm ugly but it just don't faze me.
I'm still gettin' in the girls' pants
and I even got my own dance
{Chorus:}
The Humpty Dance is your chance to do the hump
Do the Humpty Hump, come on and do the Humpty Hump
Do the Humpty Hump, just watch me do the Humpty Hump
Do ya know what I'm doin', doin' the Humpty Hump
Do the Humpty Hump, do the Humpty Hump
Verse Two:
People say "Yo, Humpty, you're really funny lookin'"
that's all right 'cause I get things cookin'
Ya stare, ya glare, ya constantly try to compare me
but ya can't get near me
I give 'em more, see, and on the floor, B,
all the girls they adore me
Oh yes, ladies, I'm really bein' sincere
'cause in a 69 my humpty nose will tickle ya rear.
My nose is big, uh-uh I'm not ashamed
Big like a pickle, I'm still gettin' paid
I get laid by the ladies, ya know I'm in charge,
both how I'm livin' and my nose is large
I get stoopid, I shoot an arrow like Cupid,
I use a word that don't mean nothin', like looptid
I sang on Doowhutchalike, and if ya missed it,
I'm the one who said just grab 'em in the biscuits
Also told ya that I like to bite
Well, yeah, I guess it's obvious, I also like to write.
All ya had to do was give Humpty a chance
and now I'm gonna do my dance.
{Chorus}
Breakdown:
Oh, yeah, that's the break, y'all
Let me hear a little bit of that bass groove right here
Oh, yeah!
Now that I told ya a little bit about myself
let me tell ya a little bit about this dance
It's real easy to do--check it out
Verse Three:
First I limp to the side like my leg was broken
Shakin' and twitchin' kinda like I was smokin'
Crazy wack funky
People say ya look like M.C. Hammer on crack, Humpty
That's all right 'cause my body's in motion
It's supposed to look like a fit or a convulsion
Anyone can play this game
This is my dance, y'all, Humpty Hump's my name
No two people will do it the same
Ya got it down when ya appear to be in pain
Humpin', funkin', jumpin',
jig around, shakin' ya rump,
and when the dude a chump pump points a finger like a stump
tell him step off, I'm doin' the Hump.
{Chorus}
Black people, do the Humpty Hump, do the Humpty Hump
White people, do the Humpty Hump, do the Humpty Hump
Puerto Ricans, do the Humpty Hump, just keep on doin' the hump
Samoans, do the Humpty Hump, do the Humpty Hump
Let's get stoopid!
{Chorus}
Oh, yeah, come on and break it down
Outro:
Once again, the Underground is in the house
I'd like to send a shout out to the whole world,
keep on doin' the Humpty Dance,
and to the ladies,
peace and humptiness forever
{Music and fade}

Basic idea is sound but proposed plan is shitty (Score: 2, Informative)

by Anonymous Coward on 2014-07-13 21:45 (#2G6)

I'm so tired of ML hippies saying "If you use ML, you'll never make a mistake and your program will run in the best way possible." It's wrong on so many levels, I don't even want to talk about it.

In the article they talk about how the compiler would be able to optimize everything all the way down to the device drivers, then they say that they aren't going to HAVE any device drivers since that would entail a lot of constant work. How are the device drivers optimized in this case? You're still using the host OS device drivers.

Same thing with the context switches. They optimize everything together to run at the same protection level with just one register set, then they need to call the host OS to actually use the hardware. The host OS is supposed to be used with multiple VMs and is responsible for time-sharing the hardware. So, this again requires context switches. You could get away with just one system call for writing out a 1 MB chunk in a traditional system but now that you have optimized everything, you need as many system calls as the number of packets (or disk blocks) since you're now operating at the hardware level. Very nice.

Alternately, you group them together into one big request. This adds another unnecessary layer of complexity which is the article is trying to avoid.

How about reliability? A compiler just won't fix human stupidity. I'd very much like to see a compiler which detects my misunderstanding of a spec. People are messing up and bringing down whole systems just within their POSIX userspace confines (hence the need for virtual machines). How do they propose to find enough competent programmers who can write kernel code for everyday work? It's just a dream.

Setting up a VM for just one application is idiotic anyway. It has no advantage other than the marginal security gained by adding yet another layer between the user and the hardware. The proposed plan is really funny when you consider the single application case:

- We have a program running on some POSIX host
- Put it in a VM and run the VM on the POSIX host
- Make the VM smaller by compiling the guest OS and the program together
- Still run the resulting guest-program on the POSIX host

So, the program is still running as a simple process on the host OS, but with some bullshit OS code added in.