9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: ron minnich <rminnich@gmail.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: [9fans] NIX 64-bit kernel is available
Date: Wed, 14 Sep 2011 08:41:48 -0700	[thread overview]
Message-ID: <CAP6exYKf6RL6J8MU1E3vc4y_TarbYzowkeHdTrpZ1Q5ved9faQ@mail.gmail.com> (raw)

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.

- 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.

- kernel-based Linux system call interface (work in progress)

- 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

- Tubes, a new IPC mechanism like pipes that uses the optimistic semaphores

- 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



             reply	other threads:[~2011-09-14 15:41 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-14 15:41 ron minnich [this message]
2011-09-14 15:58 ` andrey mirtchovski
2011-09-14 16:06   ` Jeff Sickel
2011-09-14 17:32 ` David Leimbach
2011-09-14 17:40   ` ron minnich
2011-09-14 17:51   ` Francisco J Ballesteros
2011-09-14 20:38     ` s s
2011-09-14 20:42       ` John Floren
2011-09-14 20:50         ` Gabriel Díaz López de la Llave
2011-09-14 20:52         ` s s
2011-09-14 21:32         ` Bakul Shah
2011-09-14 21:48           ` John Floren
2011-09-14 22:10             ` Dan Cross
2011-09-17 20:45               ` Brantley Coile
2011-09-14 22:36             ` Nick LaForge
2011-09-14 22:44               ` ron minnich
2011-09-16 17:48         ` Jack Johnson
2011-09-14 20:50       ` Lluís Batlle i Rossell
2011-09-14 21:12         ` ron minnich
2011-09-14 20:56       ` Francisco J Ballesteros
2011-09-14 21:11         ` ron minnich
2011-09-14 19:22 ` Bakul Shah
2011-09-14 19:30   ` Francisco J Ballesteros
2011-09-14 21:10   ` ron minnich
2011-09-14 21:38     ` Bakul Shah
2011-09-14 21:48       ` ron minnich
2011-09-14 22:08       ` yy
     [not found]       ` <CADErNDukvepbqiUEObGMY7Fba__kG953wmtNdUSFPEwwqSnHVw@mail.gmail.c>
2011-09-14 22:12         ` erik quanstrom
2011-09-14 22:32           ` hiro
2011-09-15  1:10     ` David Leimbach
     [not found]   ` <CAP6exY+iHDpy+dig3Rvi6WHjv8k8sajOwJ3AjMxKADvoSZqtDw@mail.gmail.c>
2011-09-14 21:14     ` erik quanstrom
2011-09-14 21:33       ` Charles Forsyth
2011-09-14 21:14 ` Don Bailey
2011-09-15 10:19 ` Christian Neukirchen
2011-09-15 10:34   ` Francisco J Ballesteros
2011-09-15 10:39     ` hiro
2011-09-15 10:42       ` Francisco J Ballesteros
2011-09-15 10:50   ` Christian Neukirchen
2011-09-15 11:07     ` Noah Evans
2011-09-15 11:11       ` Noah Evans
2011-09-15 11:57       ` Christian Neukirchen
2011-09-14 21:13 erik quanstrom
     [not found] <CAP6exYKf6RL6J8MU1E3vc4y_TarbYzowkeHdTrpZ1Q5ved9faQ@mail.gmail.c>
2011-09-15  4:39 ` erik quanstrom
2011-09-15  7:28   ` Nemo
2011-09-15  9:39     ` Francisco J Ballesteros
2011-09-15 13:17     ` erik quanstrom
2011-09-15 14:02       ` Francisco J Ballesteros
     [not found]       ` <CA+N-5bYxuADQJ1e2PChv7RZA8DdpHcqvnotX7jSnSPxxYK1Bbw@mail.gmail.c>
2011-09-15 14:13         ` erik quanstrom
2011-09-15 14:42           ` Francisco J Ballesteros

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAP6exYKf6RL6J8MU1E3vc4y_TarbYzowkeHdTrpZ1Q5ved9faQ@mail.gmail.com \
    --to=rminnich@gmail.com \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).