星期二, 6月 13, 2006

UnixLite - Lightweight Unix in C++

今天在OSNEWS看到的新聞,所以跟著到網站去看看...似乎是不錯的東西喔...

About:

UnixLite 是用C++寫的 ,相容於unix/linux的os。使用OpenSource, GPL 授權。
一個完整,可用的OS,通常需要兩部份: kernel 和 Application。
UnixLite 只包含kernel的部份 (就像Linux一樣)。

這個kernel 大部分都是用C++寫的,但是他使用 uClibc,而不是 glibc,所以size會小很多。
(所以也不會有一些複雜的standard template libarary....我猜的 :P )

UnixLite 實做了一些linux常用的system call (所以不是全部? 所以不是posix complait?)。和linux是 binary compatible,有些 gnu的軟體已經 ported成功了。

UnixLite 現在的目標是實做一個教學目的用的Unix 系統,將來,UnixLite或許會作為一個soft-realtime的 embedded OS。

UnixLite 是一個小而完整的Unix系統,並且附有完整的說明文件,對於想瞭解OS的學生和programmer來說是一個很好的學習環境。

功能上,UnixLite和Minix的差異是UnixLite支援Paging,但是Minix沒有。
(minux386 好像就有了...)

由於以C++實做,以OO方式設計,UnixLite大約只有20000行程式,kernel 也看起來比較modular 和易於瞭解,


Technical Features
  • 支援paging 和flat memory model (幾乎和linux一樣)。
  • 實做約80個posix system call
  • Binary compatible with Linux
  • run bash/gcc, 和一些UNIX tools
  • 基本的TCP/IP,足以執行簡單的http server
  • 約20000行程式
  • 以C++寫作,模組化且易於擴充
  • Minix的32-bit filesystem


從網站上看來,文件還沒有很多,但是已經提供 qemu的 image作測試。

FAQ部份說了更多..
  • unixlite不是microkernel
  • 原來要能使用glibc,kernel 要implement的api 要更多,這是他採用uclibc的另一個原因。
  • 只用到c++的一點基本語法。沒有用到:
    • Exception
    • 多重繼承
    • run time type id
    • operator overload (new, delete除外)
    • template.
大概看的一下source code,果然比minix容易瞭解一些(或許是因為還是0.2版的關係吧..)。



C++的OS,以前看過的就只有embedded in C++ 這一本書中 的ADEOS,原版本是用在x86上(186),但是有人port到ARM過。 可惜,都是很久以前的事了...

沒有留言:

張貼留言