アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
20年前の議論 (スコア:3, 興味深い)
32bitっていっても何ギガもメモリ積めるわけじゃないし、スピードも80286と変わらないし80386って何なの?っていってたの思い出しました。あの時も80286が80386が必要な領域を侵しているから性能を上げないようにしているだのなんだのと。
たぶん、そのうちItaniumの後継の後継あたりが主流になるのかも。
20年前を知らない人のために…(Re:20年前の議論 (スコア:5, 興味深い)
>32bitっていっても何ギガもメモリ積めるわけじゃないし、スピードも80286と変わらないし80386って何なの?っていってたの思い出しました。
真面目に話すと、i8086~i80286のアーキテクチャというのは、以下のような問題を抱えていました。
・プログラムから扱えるアドレス空間がMAX16MBだった
・セグメントとアドレッシングの制約で64KB(だったかな?)以上の大きさの空間を使おうとするとセグメントいじらなきゃいけなかった
で、i80386以降の、今のia32アーキテクチャでは、この二つがこうなりました。
・アドレス空間がMAX4GBだった(あくまでも論理アドレス、アドレス線が全て出てる訳じゃない)
・セグメントとアドレッシングも4GBまで連続した空間を取れるようになったので、一回仮想記憶登録すればセグメントいじる必要がない
皮肉な言い方をすれば、ソフトを書くときの制約の少なさの面で、i80386になってやっと(16bitである)MC68000系MPUと肩を並べられた。とも言える訳ですが…
とにもかくにも、あの時のi80386論争というのは、i80386を、MS-DOSアプリで主流だったi80286互換モードで使っていたらパフォーマンスが悪いから32bitにする意味がないんじゃないかと言うお話で、それはDOS-EXTENDERの普及やLinuxの登場で決着が付いたと記憶していますが…
### ここから自分語り ###
私自身はFM-Townsが初めてのDOSマシンで、れいのTOWNS-OSと言うのは、結局はDOSにPhar-Lap社のDOS-Extender(社名記憶いい加減)乗っけてアプリから全ての物理アドレスを触れるようにした代物で、結局はMS-DOS自体の制約である「640KBの壁」が付きまとっていたり、開発環境がCまで含めると十万近かったりしたので、遊べなかった。
当時の安価なDOSの開発環境と言うとLSI-C試食版で、その内にgccをTowns-OSに移植し始める人たちが現れて、LinusがLinuxをMINIXの人と口喧嘩した勢いでPC/AT用に出したあたりでgccを使ってGNU TOOLSなどを32bit移植してた人たちの一部がLinuxをTownに移植しよう!ってぶち上げて、本当にできた。と言うのでNIFTYのダウンロードコーナー見たら10MB位は落とさないとだめじゃん…課金が何万かかるんだorz
と言う人が続出して、結局は希望者を募って、南と北に「フロッピー回覧」なる物を行いました…最初のは確か20枚くらい。
で、確か0.99.7あたりだったかをインストールしました。まともなインストーラなんかなくって、最低限のフロッピーをブートしてからFDDに入ったイメージをHDDにコピってtarballをHDDに展開していくという世界…
で、立ち上げるとviもEmacsもXもちょっとConfigファイルいじれば、スワップしながらあれやこれやのソフトウェアが並行して動くという状況(確か6MBしか積めなかった)…特に仮想コンソールとXには感動した。と言うか、80年代半ばにカジュアルコピーで貰ったOS-9/6809でできてMS-DOSで出来なかったことが全て出来る上に沢山のプロセスを走らせてもストレスかからない…32bit+マルチタスクであることの本当の意味を思い知らされました…で、今にいたる。
### 自分語りおしまい ###
Re: (スコア:0)
x86の用語では、論理アドレスは「セグメント:オフセット」形式のアドレスのことを指します。386では48ビットになります。
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol1_Onl... [intel.com]
ほとんど茶々なのでAC
Re: (スコア:0)
次に回すときに、郵便局が開いている時間に仕事を抜け出せなかったから、帰宅途中に郵便受けに放り込んできたっけ。
その後、別の知り合いが欲しいというからコピーしたのを渡してしまったんだけど、どうなったのかなぁ?
Re: (スコア:0)
>・セグメントとアドレッシングの制約で64KB(だったかな?)以上の大きさの空間を使おうとするとセグメントいじらなきゃいけなかった
i8086は1024kb(1MB)でi80286が16MBですね→物理メモリ。
でi8086で1MB空間を64kbで細切れにしてアクセスするという、セグメント-オフセットレジスタの組み合わせがそのままi80286に適用されるので、リアルモード(i8086互換のモード)で1MB以上のメモリ空間にアクセスできてしまうという珍現象がおきたわけで、それが後にHMAなんてものに発展したりするわけです。
i80286にはプロテクトモードが搭載されているけれども、セグメントのサイズが64kbに固定されているのでセグメントが重なるようにメモリを配置すると、ほかのセグメント領域を自在にアクセスできてしまうという"欠陥"を抱えていたとか。
結局i80286のプロテクトモードってOS/2ぐらいしかまじめに使っていなかったのではないでしょうか。
Re: (スコア:0)
欠陥というか、OSによっては積極的に利用されていました。
典型例としては、セグメント間でメモリアドレスを完全に一致させる場合ですね。
プログラムのロードやリンク時に使います。
> 結局i80286のプロテクトモードってOS/2ぐらいしかまじめに使っていなかったのではないでしょうか。
皆さんに馴染の深いベンダーだと
インテル謹製のリアルタイムOS iRMX
マイクロソフトの純正UNIX XENIX
デジタルリサーチのCP/Mの進化版で、欧州ではそれなりにシェアのあった CDOS
など
Re: (スコア:0)
> セグメントのサイズが64kbに固定されているので
セグメントのサイズは16ビット、つまり1バイト単位で指定できます。
セグメントディスクリプタ内で指定します。
Re:20年前を知らない人のために…(Re:20年前の議論 (スコア:1)
Re: (スコア:0)
セグメントレジスタに入るものが
8086:セグメントベース
286:セレクタ
で、それが指し示すメモリの領域がセグメント