パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

昔のコンピュータにあった、致命的なデザインミス」記事へのコメント

  • リトルエンディアンとセグメント方式
    • by Anonymous Coward

      セグメント方式がダメなのではなくて、セグメントサイズの上限が64KBしかなかったことが問題でしょう。
      現代のCPUでもセグメントに類する機構が存在することは珍しくありません。セグメントではなくGlobal Pointerとか呼ばれてるだけで。むしろ一切存在しないのはx64くらい。

      • by SteppingWind (2654) on 2009年06月18日 15時11分 (#1589250)

        セグメント方式がダメなのではなくて、セグメントサイズの上限が64KBしかなかったことが問題でしょう。

        あれって今想像するに, コンカレントCP/M [wikipedia.org]みたいに1プロセスあたり64KBの空間(それで十分だと思っていた)を並列して効果的に動かすための機構として想定していたんじゃないかと思います. まさか単一のプログラムが64kBを超えるコードやデータを取り扱うことは無い. 一般プログラマが直接セグメントを管理することはなく, OSにまかせるものだと.

        誤算だったのは, 8086用OSにセグメント管理を効率的にこなせるような高級なものが広まらなかったってことと, 画像処理みたいなメモリ空間を要求する用途が急激に広がったってことでしょうね.

        親コメント
        • by Anonymous Coward

          > まさか単一のプログラムが64kBを超えるコードやデータを取り扱うことは無い.

          単一の64KBを越えるメモリブロックを取り扱うことはない、ですね。8086でもESを用いた任意の外部メモリブロックへのアクセスが想定されています。

          80x86のセグメント方式は、大型計算機などでポピュラーだったものがiAPX432経由で取り込まれたものです。(iAPX432も64KBセグメントでした)

          80286については以下のページが詳しいのでご覧ください。80286が保護仮想アドレスモードから実アドレスモードへ移行できない理由もお分

        • 指定できるセグメントが16ビット分しかないので、あっというまに使い切ってしまいますし。
          今見れば、セグメントもオフセットも絶対的に足りていないような気がします。
          • by Anonymous Coward
            > 指定できるセグメントが16ビット分しかないので、あっというまに使い切ってしまいますし。

            80386で32ビット(4GB)セグメントが導入されましたが。セグメントサイズが64KB単位になり悲しく思いました。
            初期のlinuxでも80386のセグメントが使われていました。現在の32ビット版Windowsでもセグメントは使われています。

            > 今見れば、セグメントもオフセットも絶対的に足りていないような気がします。

            今から見れば、どんな設計にもケチをつけられますよ。だから当時の致命的なデザインミスかどうかの話をしているわけで。
            • by Anonymous Coward
              > 指定できるセグメントが16ビット分しかないので、あっというまに使い切ってしまいますし。

              セレクタの仮想化は容易ですし、4GBセグメントがあれば1プロセスが64KBセグメントをたくさん使うということもなくなりますので、セレクタのスラッシングの心配は不要だと思いますよ。

              ※セレクタはオープンしているファイルハンドルにおおむね対応します。

ソースを見ろ -- ある4桁UID

処理中...