メモリレスアーキテクチャ
- 『川合の「ちょっと一言」』 OSASKスレ5の175(コメント書き込み日:2003/05/21) に対する回答の中から引用
メモリレスアーキテクチャを簡単に言うと、mallocやfreeの下請けとなるようなAPIがない、という事に尽きます(C言語のライブラリとしてmallocやfreeがないというわけではないです。後述の方法で相当するものを作っています)。そもそも「メモリ」という概念がAPIの中にないのです。あるのはファイルに対する操作だけです。
OSASKのAPIにあるのは、「ファイルを作れ」「ファイルをメモリマップしろ」「ファイルのサイズを変更しろ」などだけです。 100MBのワークエリアがほしいのなら、"WORK.BIN"というファイルを作って、それを100MBにリサイズし、適当にメモリマップして、後はあたかもそこをmallocしたかのように扱えばいいのです。この領域がいらなくなったら、メモリマップをやめて(メモリ空間からはがして)、"WORK.BIN"を削除すればおしまいです。
OSASKではstatic変数やスタックさえも、所詮はファイルなのです。メモリなんて概念上は全く存在せず、あったとしてもただのファイルキャッシュです。僕たちがCPUのキャッシュサイズ以上のワークエリアを簡単に利用できるのと同じように、ファイルシステムが許す限り、実メモリ以上の容量のワークエリアを自由に利用できます。
なお、このやり方をまともにやるとやたらとファイルアクセスが発生しそうで遅そうですが、遅延書き込みやプリロードなどにより、実際のアクセスはかなり少ないと思われます。ファイルを生成しても遅延書き込み時間中はディスクに反映されませんし、その反映されない間にそのファイルが消去されたりすれば、結局ディスクアクセスはゼロになります。そういう感じです。
このメモリレスアーキテクチャのメリットは、メモリをコントロールするためのAPIファンクションを用意しなくていいということが、最大です。これによってOSの構造は単純化されます。 OSはスワップファイルの管理のためにコードを追加する必要は全くなくなります。ひたすらファイルキャッシュ制御の質を高めていけばそれでいいのです。またアプリごとにメモリイメージがファイルとなってきれいに分離するために、デバッグの場合はそのファイルを覗いたりいじったりすればよく、タスクセーブもこれらをまとめればメモリイメージのことは解決するということもあります。
メリットはこの程度です。今までできなかったことができるようになるというほどのものではありません。しかし効率重視のOSASKにとってはこういう改善の積み重ねが重要なのです。
Counter: 234,
today: 2,
yesterday: 0
初版日時: 2003-05-21 (水) 14:05:26
最終更新: 2009-11-17 (火) 00:00:00 (JST) (319d) by ゲスト
|
ぺージ情報 | 閲覧可 | 編集可 | |||
---|---|---|---|---|---|---|
ぺージ名 : | メモリレスアーキテクチャ | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
ページ作成 : | ゲスト | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
ページ別名 : | 未設定 |