アカウント名:
パスワード:
OSでは、Multicsで、ハードレベルで複雑かつ高度な保護が考えられていた。が、それは滅びて、代わりに、簡単で保護の無いUnix(この命名自体、元々パロディ)が普及してしまい、現在に至る。
あー、それでわかりました。どうしてうちの親
ノイマン型コンピュータの基本構造は、その頃の発想から、実質まるで変わっていないし、変えたくても、互換性維持のためには変えられなかったのが、おそらく実情。
ハーバードアーキテクチャって聞いたことないの?
高級言語での保護も、言語レベルでの保護を捨てたCが普及してしまい
言語で保護するなんて意味ないでしょ。他の言語を使えばできるんだから。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
要するに (スコア:1)
欠陥アーキテクチャのCPUを使ったシステム(Windowsに限らず)に
依存しているこの世の中って????
スタックオーバーフローなんて、OS/コンパイラー以前に
システム設計時につぶせるものだと思うのですが...。
^-_^-_-~
救世主はきっといる。
Re:要するに (スコア:5, 興味深い)
>システム設計時につぶせるものだと思うのですが...。
歴史的に言えば、サブルーチンは、かつて、自己書換プログラムとして実装されていた。(JMP命令しかなかった)
ノイマン型コンピュータの基本構造は、その頃の発想から、実質まるで変わっていないし、変えたくても、互換性維持のためには変えられなかったのが、おそらく実情。
実際、互換性を維持したまま高速化するの為のアーキテクチャ変更は、高度に進歩している。
OSでは、Multicsで、ハードレベルで複雑かつ高度な保護が考えられていた。が、それは滅びて、代わりに、簡単で保護の無いUnix(この命名自体、元々パロディ)が普及してしまい、現在に至る。
高級言語での保護も、言語レベルでの保護を捨てたCが普及してしまい、オブジェクト指向が提唱されても、保護の無い点でも互換性のあるC++が主流になった。
プログラミングの発想を根本から変える可能性のあったPrologや、第五世代も滅んだ。
>救世主はきっといる。
商業的の神は、既に「互換性の維持」をメシアに選んでいる模様...
//神を捨てる?
-- Buy It When You Found It --
Re:要するに (スコア:0)
あー、それでわかりました。どうしてうちの親
Re:要するに (スコア:0)
> その頃の発想から、実質まるで変わっていないし、変えたくても、
> 互換性維持のためには変えられなかったのが、おそらく実情。
それってスタックがなかったころの話でしょ?
少なくともWindows9XとかNT
Re:要するに (スコア:0)
ハーバードアーキテクチャって聞いたことないの?
言語で保護するなんて意味ないでしょ。他の言語を使えばできるんだから。
Re:要するに (スコア:0)
アホか。
Re:要するに (スコア:1)
ノイマン型でもハーバードアーキテクチャならバッファオーバーフローによる不正な命令コードの実行なんて事態は絶対に発生しえない。
この問題はノイマン型であることに由来するものではない。
ということでしょ。
個人的には、引数だとかローカル変数というデータ情報とリターンアドレスというコード情報を同じスタックに積むというやり方が最大の問題でしょう。
ハーバードアーキテクチャなんて使いにくいものにしなくても
スタックを2本持ち、
コールスタックの方にはそれ以外の情報は持てないように
すれば簡単に解決しますね。
もっとも、コンパイラの処理内容と呼び出し規約の問題なので、
既存のプログラムとの互換性がまったく持てないのが難点でしょうか?
Re:要するに (スコア:0)
『ハーバードアーキテクチャ』
今日ではこの用語は,単一の主記憶装置を有しているが,キャッシュ・メモリが命令用とデータ用に分離されているマシンを指すものとして使われている。
(ヘネシー&パターソン著 コンピュータ・アーキテクチャより)
Re:要するに (スコア:1)
「今日では」って所が重要なのですが、
元々、「ハーバードアーキテクチャ」とは、命令用メモリとデータ用メモリが分離しているもの [google.co.jp]を指す言葉です。
今でもDSPとかに見られます。
それを、キャッシュメモリを命令用とデータ用に分離していることを指す言葉にも流用してるだけです。
Re:要するに (スコア:0)
関数ポインタをスタックに積んだりローカル変数に保持するのも禁止ですか?
性質はリターンアドレスとなんら変わりないように思えますが。
Re:要するに (スコア:0)
正気か?
Re:要するに (スコア:0)
スタック上のバッファをオーバーフローさせて
リターンアドレスでもローカルの関数ポインタでも書き換えれば、
不正な命令コードを実行できますね。
任意のコードを実行できるかどうかは分かりませんが。
そういう意味で、次