Great set of ideas here! On Wed, Sep 14, 2011 at 8:41 AM, ron minnich wrote: > We'd like to announce the availability of NIX, a 64-bit Plan 9 kernel > with some new ideas. The full set of changes will be covered at IWP9. > For now, here are some highlights. > > - 2 MB PTEs. 4096 byte PTEs are not used in user programs at all. > PTE = Page Table Entry? Sorry, been working in Java too long I guess :-(. > > - 64 bit address space for processes, backed by 1 Gbyte PTEs for BSS > with addresses > 1 Gbyte. Use of Gbyte PTEs does not require anything > special; it just works. It's possible to have a process with (e.g.) 64 > Gib of memory in use which only needs 66 active PTEs (1 for code, 1 > for date, and 64 for BSS). > > - Core roles. A process can designate that it wishes to run on an > application core (AC). ACs do not run kernel code, and take no > interrupts, not even the APIC timer interrupt. They own the core and > are never pre-empted. They can run all standard system calls however. > That sounds amazingly great for certain servers. > > - kernel-based Linux system call interface (work in progress) > Can I run Mozilla Firefox? :-) > > - Optimistic semaphores, a new type of semaphore which lives half in > and half out of the kernel, and which in many cases will never run in > kernel > How is this both like and not like a futex? > > - Tubes, a new IPC mechanism like pipes that uses the optimistic semaphores > I love the name... > > - A new memory management design which eliminates the huge static > array of page structs > > - NUMA-aware allocation, such that a process can be co-located with > its memory. This support is transparent. > > - Kernel can address all of physical memory. No more bounce buffers. > The kernel maps memory with GiB PTEs. > > - And, finally, standard Plan 9 binaries run unmodified on NIX. > > For now, NIX will only run on 64-bit x86 CPUs which support Gbyte > PTEs, e.g. K10. > > The tree is set up to run under 9vx or on a standard Plan 9 system. We > have tested and it is possible to do a full build of amd64 binaries > and then a build in /sys/src/nix/k10 and boot the kernel. You'll be > prompted > during the build for information to create an nvram file. > > A new package manager is included in the tree, written by John Floren > and Nemo. It aims to be fast (downloading packages over HTTP) and > maintainable; development is ongoing, but for now pm(1) gives some > essential information. > > As for the name: we were trying to express the fact that ACs do not > have a kernel, > and after much time spent with the dictionary, came up with nix. > > The code is at http://code.google.com/p/nix-os/. Management > of the code base will be via the standard code review mechanisms > supported by google code; you're going to need mercurial and > the extensions. We welcome contributors. For guidelines on how to > contribute see > http://golang.org/doc/contribute.html. > > You'll need a 9vx setup to start. > Checkout the tree, and run 9vx with the tree as your root. You'll find a > file > called BUILDING_AMD64 with further instructions in the root. > > Thanks to Bell Labs, University Rey Juan Carlos, Vita Nuova, the > US Dept. of Energy and Comunidad de Madrid for their support > and efforts in getting this working. > > Ron > Thanks again Ron and everyone involved!