OFF/少なめシステムコール


7割方はジョークですが、がっつり考えましょうということで。

まぁ、システムコールは普通のOSに近づけておくというアイデアも有りだとは思いますが。

OFF

.mjt

cltnにはgiveとgetしか無いんですが、流石にこれでは効率が悪い*1のでOS側である程度は用意すべき。

要は全てファイルと見なして、それに対するI/Oだけ提供する。と。

create

オブジェクトを作成する。

必要ならメッセージリスナも同時に登録する。オブジェクトクラスやWindowクラスのために。

メッセージリスナは再入可能である必要がある。

オブジェクトを"process::"以下に作成する事でプロセスごとの独立性は保障される。

lookup

パスをハンドルに変換する

call

オブジェクトにメッセージを送信する

listen

オブジェクトからの返事を待つ

あまり明確でないサンプル

#test.txt(ユーザの指示するファイル)をtest.bak(ユーザの指示するファイル)にコピー
#(ダイナミックリンカによって自動的に行われる部分)
bs_read = lookup("world::bytestorage::read")
bs_write = lookup("world::bytestorage::write")
bs_size = lookup("world::bytestorage::write::wsize")
bs_create = lookup("world::bytestorage::create")
e_success = lookup("world::error::success")
e_eof = lookup("world::error::eof")
area_create = lookup("world::area::create")

c = lookup("user::bytestorage::from")
h = lookup("user::string::to")

#処理
m = call(area_create,"tempbuffer",1024)
a = call(bs_create,h)

while(1){
 call(bs_read,c,m)
 e = listen(c)
 if(e == e_eof) break
 if(e != e_success) break
 call(bs_write,a,m,call(bs_size,m))
}

問題

利点

コメントなど

コメントはありません。 コメント/OFF/少なめシステムコール?

お名前:

MENU

now: 7

リンク


最新の20件
2020-06-30 2020-06-26 2020-06-15 2020-05-27 2020-05-22 2020-05-14 2020-05-12 2020-05-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 1816, today: 1, yesterday: 1

*1 cltnはインタプリタが駆動できれば問題無かったので。。

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:55 (4493d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.019 sec.