6. 移植性について

(OHP 10)
--------------------------------
Portability (Alpha)
- Memory management
- Processor management
- Device driver
- 64 bits vs 32 bits
--------------------------------

このスライドの最後のところから始めよう。それが一番おもしろいからね。

僕が Alpha を好きなのは、それが完全な 64ビットマシンで 64ビットのポイ ンタと 64ビットのレジスタを持っているからだ。これは OS にも大きな変更 を要する。なぜなら、32 bits のマシンだと 4G バイトまでの空間しか確保で きないけど、Alpha マシンでは 8T バイトまで管理でき、膨大な大きさの仮想 メモリが使えるので、それをきちんと管理する方法を考えないといけない。

もう一つ、異なる機種に移植する際に大きな変更が必要なのはデバイスドライ バの部分だ。ただし、先に述べたように Alpha は PC 互換機と同じ PCI バス を使っているので、大部分のデバイスドライバは PC 用のものがそのまま使え る。一方、sparc や Atari、Amiga と言ったマシンの場合、I/O バスの処理の 仕方が PC 互換機と根本的に違うので、デバイスドライバは全て 0 から書き なおさねばならない。

プロセッサ自身ずいぶん違う。もちろん、32 ビットと 64 ビットという違い はあるけど、それ以外にもメモリのアラインメントという問題がある。

386 ではメモリのどこでも自由にアクセスできるのでアラインメントという問 題は生じないが、Alpha の場合、8 バイト = 1 ワードをロードする場合はメ モリのアラインメントを合わさなければならない。これもカーネルの仕事だ。 キャッシュやプロセッサの状態推移もプロセッサの機種ごとに異なっている。 これらの問題はユーザープログラムでは気にする必要はないが、カーネルにとっ てはきわめて重要な問題だ。

メモリ管理については、ページテーブルや MMU の状態遷移をちゃんと処理す るのもカーネルの重要な仕事だ。

あまりプログラマ、特にカーネルプログラマはあまりいないようなので、次の スライドは飛ばすね。

(OHP 11)
--------------
Future (水晶玉占いをしている女性の絵)
-------------

カーネルの側から見た未来について少し話しておこう。