AmigaOS
開発者 | 1.0-3.1: コモドール 3.5-3.9: Haage & Partner 4.0-4.1: Hyperion Entertainment |
---|---|
開発状況 | 開発中 |
ソースモデル | クローズドソース |
最新安定版 | 4.1u2 / 2010年4月 |
プラットフォーム | Motorola 68k、PowerPC |
カーネル種別 | ピコカーネル |
既定のUI | Workbench |
ライセンス | プロプライエタリ |
ウェブサイト | http://hyperion-entertainment.biz |
AmigaOS(アミガOS)は、パーソナルコンピュータ Amiga専用のOSである。アメリカ合衆国のコモドールが1985年に開発し、Amiga 1000と共にリリースした。初期のバージョン (1.0-3.9) はモトローラの68kシリーズの16ビットおよび32ビットのマイクロプロセッサで動作し、新しいAmigaOS 4はPowerPCマイクロプロセッサでのみ動作する。
概要
[編集]AmigaOSは、1985年に販売が開始されたときから、マルチタスクとカラーグラフィックスに対応するなど、当時としては先進的な機能が備えられていた。Execと呼ばれるプリエンプティブ・マルチタスク型カーネルの上に、Amigaの独特なハードウェアの抽象化層があり、ディスクオペレーティングシステムのAmigaDOS、ウィンドウシステムAPIのIntuition、グラフィカルユーザインタフェース (GUI) のWorkbenchが載っている。また、コマンド行インタフェース (CLI) のAmigaShellもシステムに含まれている。GUIとCLIは相補的であり、同等の機能を有する。
John C. Dvorakは1996年に、次のように記した。
AmigaOSは過去20年間の中でも最も偉大なオペレーティングシステムの1つであり、小さなカーネルと素晴らしいマルチタスク機能を有していた。同等のマルチタスク機能はごく最近の OS/2やWindows NTまで見られなかった。最大の違いは、AmigaOSがたった250KBのアドレス空間で完全なマルチタスクを実現していた点である。今日でもこのOSのサイズは約1MBほどしかない。そして、現在のCD-ROMでロードするメモリを食うOSでできることで、Amigaでできなかったことはほとんどない。これほど緻密なコードは存在しない。
私は10年ほどAmigaを所有している。私が使ってきた中でも最も信頼のおける機器である。驚くべきことだ!大勢の熱狂的信者がいるのもうなずける。AmigaはLinuxやUnixクローンとは異なるカルト的ともいえる活発なコミュニティを刺激し続けている。[1]
ただし(Macintoshとの競争に敗れるなどして[2])1994年にコモドールが破産してしまい、一時は販売が停止してしまった。その後、コモドールの資産は数多くの企業に渡り、コモドール破産から5年後の1999年に、新たに誕生したAmiga.intによって数年ぶりにAmigaOS 3.5が販売されたものの、これには先進的な機能が備えられておらず、特にこれといった特徴もなかったため売り上げは低迷した。
だが2004年には、一気にバージョンアップされたAmigaOS 4.0が発表され。こちらは一新され、新機能が多数増加され、評判は良くなった。
2006年12月24日にはAmigaOne向けのAmigaOS 4.0がリリースされた。
現在のAmigaの知的資産を所有するのはAmiga Incである。同社はAmigaOS 4の開発を監督する立場にあるが、実際の開発はHyperion Entertainmentに委託している。2006年12月20日、Amiga IncはHypelionのAmigaOS 4の開発ライセンスを終了させた。しかし、2009年9月30日、HyperionはAmigaOS 3.1の全世界での独占的かつ永久的な使用・開発・改変・販売・配布の権利とAmigaOS 4.xとその後の(AmigaOS 5 を含む)バージョンを販売する権利を獲得した[3]。
2015年12月にAmigaOS 3.1のソースコードがwebにリークされた。権利を持つHyperionもリークしたという事実は認めた[4]
- 欧米と日本の人気度の差
北アメリカやヨーロッパでは、Amiga OSが小サイズなのに開発コンセプトが良くて高性能であること、当時としてはAmigaOSで出来ることが画期的であったこと、またデザインの良さでも人気が非常に高かった。欧米では、マルチタスクで画像処理でも日常の文書処理でも使える優秀なOSとして評価が非常に高かった。
日本では、テレビ業界の人々には、子供向けテレビ番組の『ウゴウゴルーガ』のCGアニメでAmigaが使用された場面が出たことでかなり有名である。 ただしAmigaはマルチバイト文字への対応に消極的であったため、日本語の「文書」を扱うのには不向きで、一般人への日常用途での販売は全然伸びず、一般の日本人にはあまり知られないままになってしまった。
コンポーネント
[編集]AmigaOSは、ROM上のKickstartとディスク上のWorkbenchに分かれている。KickstartとWorkbenchは同時にリリースされ、それぞれ対応したバージョン同士で使うようになっていた。しかし、コモドールがKickstartの開発をやめたため、Workbench 3.5以降はKickstart 3.1のROMにブート時にパッチをあてる形で対応していた。
Kickstart
[編集]KickstartはブートストラップROMである。Kickstartには標準的なAmigaハードウェアをブートするのに必要なコードと、AmigaOSの中核コンポーネントの多くを含んでいる。Kickstartの機能はPC/AT互換機で言えば、BIOSとOSのカーネルの主要部分に相当する。しかし、Kickstartはブート時に典型的なPCよりも多くの機能を提供でき、例えば完全なウィンドウ環境が立ち上げ途中でも利用可能である。
KickstartにはAmigaOSの Exec、Intuition、AmigaDOS 中核部、Autoconfig によって拡張ハードウェアを使う機能などが含まれる。つまり、Amigaは電源を入れただけでOSの基本的部分の多くを既に使える状態になっている。後のバージョンではIDEおよびSCSIコントローラのドライバやPCカードポートのドライバなど、Amiga本体に追加されたハードウェアのドライバが追加されている。
立ち上げ時やリセット時、Kickstartは診断やシステムチェックを行い、Amigaのチップセットを初期化し、OS中核コンポーネントを初期化する。次に接続されているブートデバイスを調べ、優先度の高い方からブートを試みる。ブートデバイスが全くない場合、ユーザーに対してブートデバイス(通常フロッピーディスク)を挿入するよううながすメッセージをディスプレイに表示する。
Workbench
[編集]WorkbenchはAmiga用の標準のグラフィカル・デスクトップ環境である。WorkbenchはOSそのものではなく、その上で動作するデスクトップ環境である。ソフトウェアを動作させるのにWorkbench環境は必須ではない。実際多くのゲームは自前でハードウェアとメモリを制御するため、Kickstartから直接ブートできるようになっていた(フロッピーディスク上にブートブロックがある)。
名前が示す通り、作業台(ワークベンチ)のメタファーを使っており、厳密にはデスクトップではない。ディレクトリは「引き出し」、実行ファイルは「工具(ツール)」、データファイルは「プロジェクト」、GUIウィジェットは「小道具(ガジェット)」とされている。多くの面でインタフェースはMac OSに似ている。メインデスクトップには挿入されているディスクのアイコンとハードディスクドライブのパーティションのアイコンが表示され、それぞれのスクリーンの上部に1つのメニューバーがある。Macintoshとは異なり、マウスは2ボタン式だったが、右ボタンだけでMacintoshのようにプルダウンメニューを操作できる(ボタンを離したときに選択される)。
AmigaOS独特の機能として「マルチスクリーン」がある。AmigaOSのスクリーンはWorkbenchのデスクトップ環境を必要としない。それらのスクリーンは概念的には X Window Systemの仮想デスクトップやワークスペースに似ているが、必要に応じてアプリケーションプログラムが動的に生成する。それぞれのスクリーンは解像度や色深度をそれぞれ別々に設定できる。スクリーンの右上端のガジェットでスクリーンを切り替える。OSが全スクリーンの内容をメモリ上に保持しており、描画をその時点で素早く行う。スクリーン上端のタイトルバーでスクリーンを上下にドラッグすることもできる。かつてのAmigaは専用チップセットの機能を使ってこれを実現していたが、AmigaOS 4では新たな技法を採用しており任意の方向にスクリーンをドラッグできる。異なるスクリーン間でのドラッグ・アンド・ドロップもできる。
Workbenchの基盤となっているのがIntuitionというウィンドウシステムである。スクリーン / ウィンドウ / ガジェットの制御と描画、キーボードとマウスの入力の処理、プログラムへのメッセージパッシングなどを行う。
AmigaOS 2.x でのユーザインタフェースの改善
[編集]AmigaOS 2.0 までは統一的なルック・アンド・フィールのデザイン標準は存在しなかった。アプリケーション開発においてはそれぞれが自前のウィジェット(ボタンやメニュー)を用意する必要があり、Intuitionが提供するサポートは最小限の範囲だった。AmigaOS 2.0には標準ウィジェットセットを提供するgadtools.libraryが追加され、ルック・アンド・フィールのガイドラインとなるAmiga User Interface Style Guideができた。
また、それまでWorkbenchのスクリーンが唯一の共有可能スクリーンだったが、2.0以降ではアプリケーションが他のアプリケーションと共有可能なスクリーンを作成できるようになった。
また、AmigaOS 2.0では単純なハイパーテキストのマークアップ体系とブラウザであるAmigaGuideが導入され、アプリケーションのオンラインヘルプに使われた。また、LISP風のスクリプト言語で動作する標準のソフトウェアインストールプログラムInstallerも導入された。
AmigaOS 2.0までアプリケーションはキーボードやマウスの入力イベントを捉えるためにフックをしかけ、システム全体の入力ストリームを捉えるしかなかった。AmigaOS 2.0では入力イベントを修正したり詳細に調べたりするための標準インタフェースCommoditiesが提供されるようになった。これにより、グローバルな「ホットキー」のキー押下シーケンスの設定ができ、Commodities Exchangeというレジストリでユーザーがどんな入力イベントがあるかを見ることができるようになった。
AmigaOS 2.1ではlocale.libraryが導入され、AmigaOSの英語以外への翻訳が行えるようになった[5]。
AmigaDOS
[編集]AmigaDOS はAmigaOSのディスクオペレーティングシステム (DOS) 部分である。ファイルシステム、ファイルとディレクトリの操作、コマンド行インタフェース、ファイルのリダイレクト、コンソール・ウィンドウなどの機能を有する。コマンド・リダイレクション、パイプ、構造化プログラミング型のスクリプト言語、システムのグローバル変数やローカル変数といった仕組みを提供している。
AmigaOS 1.xではBCPLで書かれたTRIPOSをベースにしていた。しかし、他の言語とのインタフェースが難しく間違いやすいことがわかり、TRIPOSからの移植はあまり効率的ではなかった。
AmigaOS 2.x以降では1.xとの互換性を保ちつつC言語とアセンブリ言語に書き直された。また、サードパーティーで行われていたAmigaDOS Resource Project (ARP)[6]の成果も取り入れている。ARPでも独自にBCPLで書かれたユーティリティやインタフェースを書き換えていた。
ARPはまた、Amiga向けの標準化されたファイル・リクエスター(ファイル選択ダイアログのようなもの)を提供し、UNIX風のワイルドカードをコマンドのパラメータに使えるようにした。他にもコマンドが受け付ける日付フォーマットの範囲を改善し、コマンドをメモリに常駐させてロード回数を減らす機能も追加された。
AmigaOS 4.0ではBCPLからの遺産は完全に払拭され、AmigaOS 4.1で64ビットサポートのための改造が行われている。
ファイル拡張子はAmigaOSでもよく使われるが必須ではなく、AmigaDOSも拡張子を特別に扱うことはない。単にユーザーがファイルの種類を名前から推測しやすくしているだけである。実行ファイルはマジックナンバー (プログラム)を使って認識する。
グラフィックス
[編集]AmigaOSはバージョン3までAmigaの本来のグラフィックス・チップセットのみをgraphics.library経由でサポートしていた。このためアプリケーションではOSの機能を使わずに直接ハードウェアを操作するものが多かった。サードパーティー製グラフィックスカードは公式にはサポートされなかった。
AmigaOSが任意のグラフィックスシステムを直接サポートできる体系がretargetable graphics (RTG) である[7]。AmigaOS 3.5ではいくつかのRTGシステムがOSに同梱されており、Amiga本来のチップセット以外のグラフィックスカードも一部サポートされた。主なRTGシステムとして、CyberGraphX、Picasso 96、EGSがある。
Amigaには3次元コンピュータグラフィックス機能がないため、3Dグラフィックス・インタフェースも標準化されていない。そのためグラフィックスカードのベンダーがそれぞれ独自の標準(MiniGL、Warp3D、StormMesa (agl.library)、CyberGLなど)を提供した。
Amigaが誕生したころ、デスクトップGUIや表示などに3Dグラフィックス・ライブラリを使うという考え方はほとんど存在しなかったが、Amigaはグラフィックス機能が強力だったため3DCGの開発プラットフォームとして広く使われた。初期の3DCG制作ソフトウェアとしてVideoScape 3DやTrueSpace 3Dがある。その後もImagineやLightWaveがAmiga向けにリリースされている。LightWaveは『バビロン5』などのテレビ番組のCG制作にも使われた。
また、Amigaはビデオ信号のゲンロック(同期)が容易だということでも知られているが、ビデオキャプチャ用インタフェースは内蔵していない。最盛期にはAmiga向けのサードパーティー製ビデオキャプチャ用インタフェースが数多く製造販売されていた。
AmigaOS本来のグラフィック・エンジン兼ウィジェット・ライブラリとしてintuition.libraryがある。AmigaOS 2.0ではそれがGadToolsに拡張された。Stefan Stuntzが開発したMagic User Interface (MUI) が2.0以降のAmigaシステムで使われ、AROSではMUIクローンのZuneを実装、MorphOSではMUIが標準のウィジェット・ツールキットとなっている。また、ClassACTというウィジェット・ツールキットはReAction GUIへと発展し、AmigaOS 3.0および4.0で使われている。AmigaOS 4.0ではReAction GUIが標準の1つとされている。CygnixはAmiga上でX11互換グラフィック環境を提供するものである。他にもcairoやAnti-Grain Geometryといったグラフィックライブラリが一部ベンダーから登場している。
現在のAmigaではクロスプラットフォームのSDL (Simple DirectMedia Layer) エンジンをゲームや他のマルチメディアプログラムによく使っている。
AmigaOS 4.1では3Dのハードウェアアクセラレーションに対応したPorter-Duff画像合成エンジンを採用している。
オーディオ
[編集]AmigaOSはバージョン3.1まで、Amigaの元々のチップセットのサウンド機能のみをaudio.device経由でサポートしていた。サードパーティーのオーディオカードのサポートはベンダー任せだったが、デファクトスタンダードとしてAHI[8]が採用されるようになった。AHIは68k系のAmigaOS 2.0以降でOSとは別にインストール可能である[9]。AmigaOS自体がMIDIをサポートしたのは3.1になってからで、Roger Dannenbergのcamd.libraryが標準MIDI APIとして採用された。コモドール版のcamd.libraryにはシリアルポート用ドライバも組み込まれている。後にKjetil Matheussenが公開したオープンソース版camd.libraryにはシリアルポート用ドライバがないが、代わりに外部ドライバを提供している。
音声合成
[編集]Amigaには当初からSoftvoice, Inc.[10]の開発した音声合成ソフトウェアがあった。これは大まかに3つの部分に分けられる。アメリカ英語で使用するすべての音素を音響信号に変換するnarrator.device、英文テキストをアメリカ英語の音素列に変換するtranslator.library、コマンドラインのユーザーが出力を音声にリダイレクトできるSPEAK:ハンドラである。
AmigaOS 1.xにはユーティリティとしてSayプログラムがあり、AmigaBASICで音声を出力するデモプログラムが付属していた。
音声合成機能はサードパーティーのプログラムでも使われ、特に教育ソフトでの利用が多かった。ワープロソフトのProwriteと Excellence!には文書を読み上げる機能があった。
narrator.deviceの扱える音素には限界があったが、Francesco Devittは任意の言語を音素列に変換するtranslator.libraryを開発した。ただし対象言語には規則群を設定する必要があり、限定的な多言語音声合成を可能とした[11]。
Workbench 2.0まで音声合成がサポートされていたが、2.1以降は音声合成ソフトウェアが省かれている[5]。
ARexx
[編集]AmigaOSは、ARexx (Amiga Rexx) と呼ばれるREXX言語をサポートしている。REXXはスクリプト言語で、AppleScriptのようにOSのスクリプティングにも使え、Microsoft OfficeでのVBAのようにアプリケーション内のスクリプティングにも使え、プログラム間の通信にも使える。ユーザーにとっては1つのスクリプト言語であらゆることができるため、便利である。
プログラムは「ARexxポート」の文字列メッセージを待ち受けることができる。このメッセージをユーザーがマウスでボタンを押下したのと似たような形でプログラムが解釈できる。例えば、電子メールプログラム内で表示中の電子メールを読み取るARexxスクリプトを動作させ、外部のプログラムを起動して電子メールの内容を渡して処理するといったことができる。これを使えばアプリケーション間で一時ファイルを経由することなくメモリ上でデータをやりとりできる。
RAMディスク
[編集]AmigaOSには動的に大きさの変わるRAMディスクがあり、内容によって自動的にサイズが変化する。AmigaOS 2.x以降、ブート時にシステム設定ファイルがRAMディスクにロードされ、OSの高速化を図っている。他のファイルもRAMディスクにコピーでき、アクセスを高速化できる。また、AmigaOS 2.x以降からRAMディスク上のファイルの更新を検知して通知する機能をサポートした。
固定サイズのRAMディスクもサポートしており、中身を退避させて立ち上げ時に再ロードできる。これは通常「RADディスク」と呼ばれており、(ブートセクタがあれば)ブートデバイスとしても使える。
ブートブロック
[編集]Kickstartは立ち上げ時にブート可能デバイス(一般にフロッピーディスクまたはハードディスク)からのブートを試みる。フロッピーディスクの場合、ディスクの先頭の2セクタ(ブートブロック)をまず読み込み、そこに格納されているブート命令列を実行する。通常このコードはOS(AmigaDOSとGUI)をロードしてそれに制御を渡し、そのディスクをブートボリュームとして使用する。このようなディスクは他にどういう中身が格納されていても「ブートディスク」または「ブータブルディスク」と呼ばれる。"install" コマンドを使えば、ブランクディスクにブートブロックを書き込むことができる。ゲームなどのソフトウェアの媒体には独自のブートブロックが書かれている。そのためゲームやデモといったアプリケーションでは、AmigaOSを使わずにメモリやハードウェアを直接制御することになる。
ブートブロックはコンピュータウイルス作者の格好の攻撃対象となった。ブートブロックがウイルスに感染するとブートコードが書き換えられるため、ブートディスクはうまく起動できなくなる。そのような初期のウイルスとしてSCA virusがある。
技術概要
[編集]ライブラリとデバイス
[編集]AmigaOSのモジュール化技法は動的読み込みの共有ライブラリが中心であり、ディスク上の ".library
" という拡張子のついたファイルとして格納されているものと、Kickstart ROM内に格納されているものがある。ライブラリ関数へのアクセスは全て間接ジャンプテーブルを経由して行い、ジャンプテーブルにはライブラリのベースポインタからのオフセットが格納されている。そのため、全てのライブラリ関数に実行時にパッチをあてたりフックをしかけることができ、これはROMに格納されたライブラリでも同様である。
AmigaOSで最も重要なライブラリはexec.libraryであり、ライブラリであると同時にマイクロカーネルExecと見なすことができる。システム上で動作するタスク群のスケジューリングを行い、優先度付きのラウンドロビン・スケジューリングでプリエンプティブ・マルチタスクを実現する。Exec は他のライブラリへのアクセスを提供し、メッセージ・パッシングによる高度なプロセス間通信を提供する。一般にマイクロカーネル実装はメッセージをアドレス空間の間でコピーする必要があるため、性能に問題が生じる。しかし、AmigaOSは1つのアドレス空間しか持たないため、Exec によるメッセージパッシングは非常に効率的である。AmigaOS内で唯一の固定アドレス(アドレス4番地)にはexec.libraryへのポインタが格納されており、これを使って他のライブラリにアクセスすることができる。Exec はカール・サセンラスが設計・実装した。
それまでのOSとは異なり、Execカーネルは特権モードになっていない。当時の68kファミリ向けのOS(Atari TOS、SunOSなど)はトラップ命令でカーネルの機能を呼び出していた。それにより、カーネル機能は68kの「スーパーバイザモード」で動作し、ユーザーソフトウェアは特権のない「ユーザーモード」で動作する。68k上の Mac OS でさえスーパーバイザモードを使っていた。それに対して Exec ではユーザーモードでジャンプテーブル経由で機能を呼び出す。スーパーバイザモードが必要なときは(スーパーバイザモードでないと実行できない命令がある)、カーネルであってもユーザープログラムであってもライブラリ関数のSupervisor()またはSuperState()を使う。
デバイスドライバもライブラリになっているが、標準化されたインタフェースを実装している。アプリケーションは通常、デバイスドライバをライブラリとして直接呼び出すことはなく、exec.libraryのI/O機能を経由して間接的にアクセスする。デバイスドライバも、ディスク上のファイルの形で格納されているもの(拡張子は ".device
")とKickstart ROMに格納されているものがある。
Datatypes
[編集]DatatypesはAmiga上のデータファイルを扱う独特の手法である。一連の "datatype" を扱う集中型システムであり、対応するdatatypeが存在する任意のデータファイルを読み書き、ロード/セーブできる一連の小さなプログラムの集合体と見ることができる。
ペイントプログラムなどのAmigaの生産性ソフトウェアは、存在する様々な画像ファイルを扱うためにそれぞれの記述子を埋め込む必要がない。Amiga向けソフトウェアの開発においては、Datatypesを扱うコードを埋め込めばよく、そうすることでDatatypesシステムが扱えるあらゆる画像ファイルをオープンしたりセーブしたりできるようになる。
例えば、jpeg.datatype
とtiff.datatype
はそれぞれ対応するファイルフォーマット(JPEGとTIFF画像ファイル)があり、Datatypesに対応したプログラムであれば、これらのdatatypeに対応した機能を自動的にロードして使うことができる。
datatypeのコードを書いて追加することもでき、新たに登場したファイルフォーマットにも対応可能である。
ハンドラとファイルシステム
[編集]デバイスおよびリソース管理の上位層はライブラリとは異なるタスク型のハンドラ (handler) で制御され、メッセージ・パッシングでやり取りする。
重要な種類のハンドラとしてファイルシステム・ハンドラがある。AmigaOSではハンドラを書きさえすれば任意のファイルシステムを使用できる。これを利用したプログラムとしてAmiga以外のフロッピーディスクを扱えるようにした CrossDOS があり、OFSとFFSというAmigaOSの標準ファイルシステム以外のファイルシステムも少数ながら存在する。これを使えば、ジャーナリングやファイルパーミッションなど標準では存在しない機能を追加することもできる。
ハンドラはDOSに対して「デバイス名」で提示されることが多く、それを使ってそのハンドラに対応する周辺機器にアクセスできる。
例えば、SPEAK:ハンドラにはテキストを送ることができる。そのハンドラはtranslator.libraryを使ってテキストを音素列に変換し、それらをnarrator.deviceに送ると音素列が音声信号に変換され、そこからaudio.deviceに音声信号を送ってAmigaのオーディオ・ハードウェアで音声を再生する。
デバイス名は大文字と小文字を区別しない文字列で表され(通常、大文字で表現)、その後ろにコロンが付く。コロンの後に規則子 (specifier) を付けることができ、それによって「何」に「どのように」アクセスするのかという情報を補足できる。ファイルシステムの場合、規則子としてそのファイルシステム内のファイルのパス名を指定することが多い。他のハンドラの場合、使いたい入出力チャンネルの指定などを規則子で行う。例えばシリアルポート SER: の場合、規則子にビットレート、スタートビット、ストップビットなどといった情報を指定する。
ファイルシステムではデバイス名として「ドライブ名」を提示する。例えばDF0:はデフォルトでは1台目のフロッピーディスクドライブを指す。多くのシステムではDH0:が1台目のハードディスクドライブを指す。
ファイルシステムはデバイス名と同様の形式で「ボリューム名」でも指定できる。この場合、対象周辺機器に挿入されている特定の媒体を識別できる。例えばDF0:に挿入されているフロッピーディスクの名前が "Workbench" なら、Workbench:とボリューム名を指定することでDF0:にある特定のフロッピーディスクを指定できる。
DF0:ドライブに "Work" というディスクがあり、そのファイルシステムの "Win" というディレクトリにある "Amp" というファイルにアクセスしたい場合、
DF0:Win/Amp
または
Work:Win/Amp
とする。ただし、これらは完全に同じではない。後者の場合、ボリューム名が指定されているので、DF0:に "Work" というボリュームがない場合はDF0:にアクセスしない。その場合、"Work" というボリュームを入れるよう促すようなメッセージが表示される。
プログラムは、絶対位置(ドライブ、ボリュームなど)が不明なファイルにアクセスしなければならないことがある。その場合わかっているのは「論理パス」だけであり、そのファイルがライブラリなのか文書ファイルなのか、あるいはプログラムのメッセージの翻訳なのかなどということしかわからない。
このような場合、AmigaOSでは「アサイン (assign)」を使う。アサインもデバイス名と同じ形式だが、特定のファイルシステムのディレクトリを指している。1つのアサインが指す場所はユーザーが好きなようにいつでも変更できる。これはMS-DOSのsubstコマンドと似ているが、同一ではない。アサインはまた、1つで複数の物理的位置を同時に示すこともでき、物理的に別々の実体のあるものを論理的にまとめることもできる。AmigaOSシステムで標準的に使われているアサインとして以下のものがある。
- SYS:
- ブートドライブのルートディレクトリを指す。
- C:
- シェルのコマンド群があるディレクトリを指す。ブート時、もしあればSYS:Cであり、さもなくばSYS:と同じである。従ってコマンドパスのデフォルトはC:とカレントディレクトリである。C:に実行ファイルを置いておけば、単にファイル名をタイプするだけで実行できる。
- DEVS:
- システムのデバイス群のあるディレクトリを指す。ブート時、もしあればSYS:Devsであり、さもなくばSYS:と同じである。
- L:
- AmigaDOSのハンドラとファイルシステムのあるディレクトリを指す。ブート時、もしあればSYS:Lであり、そのディレクトリがない場合L:は自動生成されない。
- LIBS:
- システムのライブラリのあるディレクトリを指す。ブート時、もしあればSYS:Libsであり、さもなくばSYS:と同じである。
- S:
- スクリプトのあるディレクトリを指し、特にブート時に(もしあれば)自動実行されるスクリプトであるstartup-sequenceのあるディレクトリを指す。ブート時、もしあればSYS:Sであり、そのディレクトリがない場合S:は自動生成されない。
- PROGDIR:
- 現在実行中の実行ファイルが存在するディレクトリを常に指している特殊なアサイン。したがって "SYS:Tools/Multiview" と "SYS:System/Format" を実行中なら、MultiviewにとってはPROGDIR:はSYS:Toolsを指し、同時にFormatコマンドにとってはSYS:Systemを指している。この機能はWorkbench 2.0で導入された。
ページングメモリとスワップパーティション
[編集]AmigaOS 4.0の最新アップデート版では、物理メモリを割り当て、システムが不活発なときにデフラグメンテーションを行う新たな知的システムを導入した。スラブアロケーション方式に基づくもので、ページングメモリを扱う機能もあり、AmigaOSでも物理メモリの内容を二次記憶装置に退避させスワップする一種の仮想記憶が可能となった[12][13]。その後、ページング方式が評価され AmigaOS 4.1で最終的に実装された。AmigaOS 4.0では物理メモリの操作にバディ・システム・アルゴリズムを使っている。
AmigaOS 4.1では、オプションで任意の大きさのスワップパーティションを作成でき、OSインストール時に独立したパーティションとしてフォーマットする。スワップメモリは、デフラグメンテーションを行ってもメモリ要求を満たせないときに自動的に使われる。スワップメモリを使うかどうかは AmigaOS システムの Preferences にあるオプションボタンで指定でき、任意の時点で物理メモリのみで動作するよう設定できる。
他のOSへの影響
[編集]クローン
[編集]AmigaOSからは少なくとも2つの「クローン」オペレーティングシステムが生まれている。
- AROS Research Operating System (AROS)
- AmigaOSのAPIを移植性のあるオープンソースのオペレーティングシステムとしたクローン。AmigaOSとは(68k上で動作させない限り)バイナリ互換ではないが、ユーザーによればソース互換性は高いという。
- MorphOS
- PowerPC向けのオペレーティングシステムだが、一部のAmigaハードウェアでも動作する。行儀のよいAmigaOS用アプリケーション(つまり、Amigaのハードウェアに直接アクセスしようとしないもの)についてはバイナリ互換を保っている。
その他の影響
[編集]- DragonFly BSD
- 厳密にはAmigaとは関係ないが、FreeBSD 4.8からフォークしたDragonFly BSDはFreeBSDの開発者でAmigaのプログラマだったMatt Dillonが開発した。DragonFly BSDはFreeBSDのカーネルをよりAmigaOSにアーキテクチャ的に近くしたもので、カーネル内のメッセージパッシング機能があり、非常に効率的なほぼ排他制御を使わないSMPサポートが可能である。
- BeOS
- AmigaOSのDatatypesを基本として受け継いでおり、OS全体があらゆる種類のファイル(テキスト、音声、動画、文書など)を標準のファイル記述子から認識できる。Datatypeシステムは、全システムと生産性ツールが様々なファイルをロードする機能を持つ必要をなくし、標準のファイルローダーやセーバーを提供する。
- AtheOS
- AmigaOSに着想を得たOSで、当初はAmigaOSのクローンを意図していた[14]。AtheOSからフォークしたSyllableもAmigaOSとBeOSの機能を一部受け継いでいる。
- 3DO Interactive Multiplayer
- AmigaOSとよく似ており、AmigaOSの Intuition のUIを開発した RJ Mical[15] が開発した[16]。
イースターエッグ
[編集]AmigaOSの一部バージョンには著作権メッセージがイースター・エッグになっていて、ちょっとしたトリッキーなアクセスで表示できる。
- バージョン1.xでは、両側のシフトキーと両側のAltキーとファンクションキーのF1からF10までを押下すると、タイトルバーに著作権メッセージが表示される。例えば F10 を押下すると "Moral support: Joe Pillow and the Dancing Fools" と表示される。Joe Pillowとは、Amigaのプロトタイプをコンピュータショーに出展するために旅客機の座席に載せて運んだときのチケット予約の名前である[17]。
- バージョン2.xと3.0では、Workbenchのメニューから "About..." を繰り返し選択し、ダイアログボックスをいくつも開く。そのダイアログボックスを20個ほど同時に表示させると、通常とは異なるダイアログボックスが出てきて、そこに秘密のメッセージが表示される。バージョン3.1では、単に "About..." のダイアログボックスを開けば、そこにそのメッセージも同時に表示されるようになった。
- Amiga 1000のAmigaDOS 1.0向けのKickstartマスターフロッピーディスクは複製しても消去されず、そこにソースコードなどのファイルの残骸が残っていた。
脚注・出典
[編集]- ^ From PC Magazine, October 22, 1996 Inside Track By John C. Dvorak
- ^ 注 - Macintoshはライバルだったが、当時のWindowsはまだ発展途上で販売実績は小さく競争相手ではなかった。
- ^ [1]
- ^ [2]
- ^ a b “Amiga Workbench 2.1”. 2008年11月23日閲覧。
- ^ http://uk.aminet.net/misc/antiq/ARP_13.readme
- ^ “Amiga ReTargetable Graphics”. 2011年3月17日閲覧。 090427 amigau.com
- ^ AHI — Retargetable Audio for AmigaOS et al.
- ^ http://arp2.berlios.de/ahi/#binaries 2010-11-19
- ^ http://www.text2speech.com/#aboutsv
- ^ http://uk.aminet.net/util/libs/translator42.readme
- ^ Frieden brothers (2007年). “AmigaOS4.0 Memory Allocation”. Hyperion Entertainment. 2008年11月2日閲覧。 [リンク切れ]
- ^ Frieden brothers (2007年). “AmigaOS 4.0 new memory system revisited”. Hyperion Entertainment. 2008年11月2日閲覧。 [リンク切れ]
- ^ “AtheOS comments”. ANN.lu (2000年5月5日). 2008年12月1日閲覧。
- ^ Mical Page
- ^ A history of the Amiga, part 3: The first prototype: Page 3
- ^ Article about Joe Pillow on AmigaU http://www.amigau.com/aig/pillow.html
関連項目
[編集]外部リンク
[編集]- AMIGA (英語)
- www.chiptune.com (JavaScriptによるAmigaDOS1.3のエミュレート)
- AmigaOS Support homepage
- The Workbench Nostalgia Page – AmigaOSの各バージョンの非常に詳細な情報
- Reference Library
- Amiga Developer Help Site
- Famous Amiga Uses