質問: 16bit?32bit?64bitos??? ○○bitosという言い方を良くするのですが そこで、ふと、思ったのですが win3.1・・・・・・16bitos win95,98,me・・・16bitos/32bitos winnt,2000・・・・32bitos 次期osから64bitosを混在させていくみたいですが この8bitとか16bitと言うのは何でしょうか? osと言うプログラムが扱えるメモリ空間が16bit=65536までと 思っていたんですが、65536b=8mbでは少ないし・・・・ それと、cpuに関しての16bitとか32bitとか言うのは何なんで しょうか?cpu内部のバスの幅を表してるのかな・・・ もしそうなら16bitcpu=最大8bit命令*2を1サイクルで処理 できるって事になり、最初に書いた質問に帰結するような 気がしますが・・・・ちょっと混乱してます。 以上です、分かる方よろしくお願いします
回答: すみませんちょっと抽象的ですが...。 ご質問の「osにおける○bitos」という言い方は、そのos上でプログラムをする時に、「自然」に扱う事のできる変数(データ)の大きさということになると思います。(c言語の表現で言うと「sizeof(int)」です。) つまり、完全な16bitosであるwindows3.1では32bitの値を扱うことはできますが、16bitを扱う場合に比べて「不自然」な扱いが必要になる場合があります。(32bit数を扱う場合にいつでも「不自然」であるという意味ではなく、16bitの値を中心に扱うような仕組みにosがなっているという意味です。) 同様に32bitosであるwindowsntでは32bit値を基本的なデータ型としており(16bit値は、メモリ効率が悪い事を除けばそのまま使えます。)64bit値を扱う場合は「不自然」な仕組みが存在します。(64bitosも同様です。繰り返しません。) 次に「cpuにおける○bitcpu」ですが、内部データバスということで基本的には良いと思います。ただ、メーカの発表ではこれに厳密に一致していると言えない場合があります。内部データバスの条件を満たしていなくても○bitcpuを名乗るだけの風格(?)があれば、○bitcpuと言うことがあるようです。 最後に「osにおけるbitとcpuにおけるbitの関係」ですが、cpuが○bitを「自然」に扱える仕組みを持っていない限りそのos上で○bitosを設計することができません。(windows3.1がサポートしていた80286は32bitを「自然」に扱える仕組みをもっていなかったため、80286を対象cpuにいれているかぎり32bitosになることはできません。)