アカウント名:
パスワード:
全てが永続オブジェクトという仮想マシンベースのOSを作るって話なのかな?
オブジェクトをディスク上に意図的に置く操作なしで仮想記憶のページング操作として実現って事のよう?面白そうで野心的ではあるんだけど気になること(プロジェクトのWebサイトでは答えを見つけられなかったこと)も…:
>以上に挙げたような問題
下のほうで別の人が「それなんてSmalltalk」と言っていますが、つまりそういう問題もまたSmalltalkが既に何十年も前から取り組んでいる問題であり、その幾つかは既にエレガントな解決策が見つかっていたりするのでしょう。たぶん。
>書き込みの途中で中断された場合オブジェクトの状態が破壊される
オブジェクトの「更新」を馬鹿正直に更新そのものとして実装するんじゃなく、更新のたびにprototypeを生成して乗り換える、というジャーナルファイルシステムのOOP版みたいなことをやる奴は既にいるようです。[酔出典]それならば当然ですがROLLBACKしたくなったらprotoを遡ればいいわけで。
でも永続オブジェクトの実現をページングの一環でやるから軽いよというのがウリみたいなので…。ページングを改変版生成して乗り換える実装にすると配列とかのデカイオブジェクトの部分更新の問題が…。(配列の部分更新への対応も色々あって更新履歴リストとハッシュ・テーブルを組み合わせて「ランダムアクセス可でアクセス時間ほとんど定数」って実装もあるけどその定数時間がかなり大きかったりと、間違いなくオーバーヘッドはあるので。)
あるいは基本メカニズムではトランザクション的な保証はしないで、そのメカニズムの上でジャーナル・オブジェクト・ツリー(?)サービスを構築してもいいけど、その場合そのサービスを使わないオブジェクトのディスク・イメージはやっぱり壊れるわけで…。
でも永続オブジェクトの実現をページングの一環でやるから軽いよというのがウリみたいなので…。ページングを改変版生成して乗り換える実装にすると配列とかのデカイオブジェクトの部分更新の問題が…。
実装やペーパーを観て言っているわけではないですが Copy on write を駆使すれば、部分更新の問題は乗り越えられると思います。#SunのZFSのcowの使い方のイメージです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
永続オブジェクトでOS (スコア:2, 参考になる)
全てが永続オブジェクトという仮想マシンベースのOSを作るって話なのかな?
オブジェクトをディスク上に意図的に置く操作なしで仮想記憶のページング操作として実現って事のよう?
面白そうで野心的ではあるんだけど気になること(プロジェクトのWebサイトでは答えを見つけられなかったこと)も…:
オブジェクト作成数の上限が(仮想記憶のアドレス空間/平均的なオブジェクトのサイズ)になっちゃう?
Re: (スコア:1, 興味深い)
>以上に挙げたような問題
下のほうで別の人が「それなんてSmalltalk」と言っていますが、
つまりそういう問題もまたSmalltalkが既に何十年も前から取り組んでいる問題であり、
その幾つかは既にエレガントな解決策が見つかっていたりするのでしょう。たぶん。
>書き込みの途中で中断された場合オブジェクトの状態が破壊される
オブジェクトの「更新」を馬鹿正直に更新そのものとして実装するんじゃなく、
更新のたびにprototypeを生成して乗り換える、
というジャーナルファイルシステムのOOP版みたいなことを
やる奴は既にいるようです。[酔出典]
それならば当然ですがROLLBACKしたくなったらprotoを遡ればいいわけで。
Re: (スコア:1)
でも永続オブジェクトの実現をページングの一環でやるから軽いよというのがウリみたいなので…。
ページングを改変版生成して乗り換える実装にすると配列とかのデカイオブジェクトの部分更新の問題が…。
(配列の部分更新への対応も色々あって更新履歴リストとハッシュ・テーブルを組み合わせて「ランダムアクセス可でアクセス時間ほとんど定数」って実装もあるけどその定数時間がかなり大きかったりと、間違いなくオーバーヘッドはあるので。)
あるいは基本メカニズムではトランザクション的な保証はしないで、そのメカニズムの上でジャーナル・オブジェクト・ツリー(?)サービスを構築してもいいけど、その場合そのサービスを使わないオブジェクトのディスク・イメージはやっぱり壊れるわけで…。
Re:永続オブジェクトでOS (スコア:2)
実装やペーパーを観て言っているわけではないですが Copy on write を駆使すれば、部分更新の問題は乗り越えられると思います。
#SunのZFSのcowの使い方のイメージです。