- 追加された行はこの色です。
- 削除された行はこの色です。
あとできれいな表にまとめたいなあ。表センスゼロだけど。
** Monaのスペック [#h2101ab6]
- プリエンプティブなマルチタスク
- FAT12ファイルシステム
- TSS(TaskStateSegment)をカーネル全体で1つのみ使用して、タスクスイッチを実現。
- C++言語によるカーネルのオブジェクト指向開発
- ユーザーモード、カーネルモードの2種類のプロセスをサポート。
- ユーザーモードからのカーネル資源使用にシステムコールを用意。
- システムコール実行中のタスクスイッチを実現
- 実行可能形式のELFファイルの実行サポート
- 簡単なユーザープログラムのサポート
- 16色のARGB形式ファイルの表示。
- ページングによるプロセス空間の分離サポート
- プロセス間の共有ページのサポート
- ファイルシステムからのプロセス生成のサポート
|機能|説明|h
|ファイルシステム|FAT12/FAT32/RAM DISK/ISO9660ファイルシステムをサポート|
||ファイルの読み込み|
||ファイルの書き込み|
|並列処理|プリエンプティブなマルチタスク|
||プリエンプティブなマルチスレッド|
||排他のためのMutexを提供|
||TSS(Task State Segment)をカーネル全体で1つのみ使用して、スレッドスイッチを実現|
|仮想化対応|KVM virtio-net ドライバ|
|ネットワーク|BSD Socket, OpenSSL|
|ブラウザ|w3m|
|実行モード|ユーザーモード、カーネルモードの2種類をサポート|
|GUI|Mona Forms, BayGUIの二つのGUIをサポート。新規にGUIを追加することも可能。|
|入力装置|キーボードをサポート|
||PS/2マウスをサポート|
|サウンド|Beep API、OGG 再生|
|浮動小数計算|FPUのサポート。sin/cos/tan/atan/atan2|
|実行形式|ELF(実行形式)&EXE(実行形式)をサポート。ファイルシステムから実行ファイルを読み込んでプロセス生成可能|
||EL2/EX2(ELF/EXEをBZIP2で圧縮したもの)をサポート|
||EL5/EX5(ELF/EXEをTEK5(STK5)で圧縮したもの)をサポート|
||EXEはDLLにも対応|
|表示|VESAの機能により高解像度・多色に対応(MONA.CFGで解像度を変更可能)|
||jpegの表示が可能nikqさん提供|
||mpegの表示が可能nekoさん提供|
||bmpの表示が可能|
||3DライブラリMesaの使用が可能|
|プロセス|各プロセスに独立したアドレス空間を提供|
||オンデマンドページングにより必要になったときに物理メモリを確保|
|スケジューラ|動的優先度スケジューラを搭載|
|プロセス間通信|汎用メッセージング機構send/recieve/peekによりプロセス間通信のサポート|
||プロセス間共有メモリページのサポート|
|ライブラリ|カーネル・ユーザープログラムで使用可能なコレクションクラスHash Map, HList, Binary Treeの提供|
|言語|C++言語によるカーネルのオブジェクト指向開発|
||C++言語によるアプリケーション開発をサポート(g++等を使用)|
|システムコール|カーネル資源の利用にシステムコールをサポート|
||システムコールをラッピングしたクラスライブラリもサポート|
|電源管理| APM によるシャットダウン、再起動|
||時刻取得|
||FD読み書き|
||スレッド作成|
||MUTEX作成|
||プロセス生成|
||共有メモリページ作成|
||仮想キーコードによりキー情報取得|
||Randomクラスによる乱数|
|マイクロカーネル化にむけて|キー入力を制御するキーボードサーバーがユーザーモードで稼動|
||マウス入力を制御するマウスサーバがユーザーモードで稼動|
||GUIアプリケーションにフォント情報を提供するGUIサーバーがユーザーモードで稼動|
|IRQ|割込み通知メッセージをサポート|
|I/O|ユーザーアプリからのI/Oをサポート|
|シェル|Schemeのシェルを提供|
||Schemeの仕様である R5RS にあるものはほとんどサポート|
||ライブラリのロード/プロセスの起動(同期・非同期)|
||シェルスクリプト|
|VIDEO|VRAM操作のScreenクラス提供|
||バッファとして仮想Screenクラスも提供|
|アプリケーションプログラミング|g++などgnuのフリーのツールで開発が可能(cygwinを使用すればWindows上で容易に開発が可能)|
||C++言語での開発が可能|
||MonaForms,BayGUIにより簡単にGUIが作成可能。モナーフォントによりAAが表示可能|
||printf, malloc/free, new/delete, File Input Stream, Dateなど続々とクラス・関数が追加されています。|
||開発支援ツールとしてMonaADK(Mona Application Development Kit)を用意|
|アプリ等|透明感のあるデモ・マウスを使った簡易オセロ、psコマンドなど|
|言語|Squirrelの実行環境 monasq|
|言語|Schemeの実行環境 |
|エミュレーター対応|bochs2.1.1(--enable-vbeビルド版)で動作|
||Vmware4.0.5(win)で動作|
||Virtual PC for win 5.1で動作|
||Virtual PC 2004で動作|
||qemu for WIN32で動作|
||qemu for GNU/Linuxで動作|
||qemu for NetBSDで動作|
||qemu for MacOSXで動作|
-各プロセスに独立したアドレス空間を提供。
-各プロセスにヒープをオンデマンドページングで提供
-zlibのカーネルへの組み込みにより圧縮ファイルが使用できる(Gaku氏提供)
-MemoryManagerのリライト。
-プロセス間での共有ページの仕組みを提供(SharedMemoryObject, SharedMemorySegment)
-ディスクからELFファイルを読み込んでプロセスを生成するLoadProcess関数を提供
-汎用メッセージング機構send/recieveの提供
-カーネル・ユーザープログラムで使用可能なコレクションクラスHashMap, HList, BinaryTreeの提供。
-スレッドの提供
-マイクロカーネル化への第一歩
--キー入力を制御するキーボードサーバーがユーザーモードの1プロセスとして実現
--Shellサーバー
-VESA VBEに対応することにより今までより大画面多色に(800 x 600 16bpp)
--nikq氏の実験によれば24bppでjpegの表示も可能
--VRAMへの転送機能bitbltを実装
--VESAの大画面に対応したフォント表示機能(Gaku氏提供)
-ユーザーモードプログラミング環境の提供
--メモリ割り当て malloc/free new/delete
--C++での開発が可能(gcc)
--メッセージsend/receive
--マルチスレッドプログラミングをサポートする
---int mthread_create
---int mthread_join
---ロック機構Mutexクラス
---ファイル読み込みにFileInputStreamクラスを提供
** コメント [#wcec61f0]
#pcomment(,1000,below,reply)
HTML convert time to 0.027 sec.
Copyright(C)2003-2007 MonaProjectTeam, all rights reserved. powered by www.be-interactive.org