| ファイル名拡張子 |
.nlm |
|---|---|
| 魔法の数字 | NetWare ロード可能モジュール |
| 開発者 | ノベル |
| フォーマットの種類 | 実行ファイル、共有ライブラリ |
NetWare Loadable Module [1] [2] [3] ( NLM ) は、Novell の NetWareオペレーティングシステムにロードできるロード可能なカーネルモジュール(バイナリコードモジュール) です。NLM は、ハードウェアドライバ、サーバ機能 (クラスタリングなど)、アプリケーション ( GroupWiseなど)、システムライブラリ、またはユーティリティを実装できます。
NLM は、 Intel 80386ベースのNetWareバージョン 3.xからサポートされました。NetWare の以前のバージョンでは、モノリシックカーネルが使用されており、ハードウェアまたは機能の大幅な変更には、オブジェクト モジュールからカーネルを再リンクする必要がありました。
初期のサードパーティ NLM には安定性の問題があったため、ウイルス対策プログラム、バックアッププログラム、特定のデータベース製品などのいくつかの例外を除いて、サーバー アプリケーション プログラミングで普及することはありませんでした。
機能性
NLM はロード時に、メモリやプロセス スレッドなどのリソースを NetWare カーネルに要求します。NetWare カーネルはこのような要求を追跡し、特定の NLM に割り当てられたメモリやその他のリソースを識別できます。NLM は、自身が依存する他の NLM を自動的にロードする場合があります。
NLM は NetWare カーネルにコマンドを登録し、NetWare コンソール プロンプトで使用できるコマンド語彙を拡張します。
適切にコーディングすると、NLM は再入可能になり、同じコードの複数のインスタンスをロードして実行できるようになります。
プログラミングの問題
当初、Novell はカーネル API ドキュメントとC コンパイラ( Watcom )を含む NLM プログラミング用の開発ツールキットを公開しましたが、NLM 実行可能機能に対するサードパーティのサポートは非常に限られていました。
初期の NetWare バージョン (v4.x より前) では、すべてのプロセスはカーネルアドレス空間で実行され、特別なメモリ保護はありませんでした。そのため、NLM のバグによってカーネルまたは他の NLM のアドレス空間が上書きされ、最終的にサーバーがクラッシュする可能性がありました。メインフレーム由来の Novell 用語では、これは ABEND またはABnormal ENDと呼ばれていました。
さらに、NetWareは非プリエンプティブ、つまり協調型のマルチタスクモデルを使用していたため、NLMは定期的にカーネルに権限を渡す必要がありました。[4]そのため、たとえば無限ループを実行しているNLMを停止することはできませんでした。
NetWare v4.x では、Novell は限定的な形式のメモリ保護を導入し、 NetWare v5.x では保護されたアドレス空間に拡張されました。これらのメカニズムにより、適切にコード化された NLM を独自のアドレス空間にロードすることができ、不正な動作をする NLM がカーネルの整合性を損なうのを防ぐことができます。
コンパイラ
NLM を生成する公式コンパイラは次のとおりです。
- Watcom C/C++ コンパイラ/ OpenWatcom
- Metrowerks CodeWarrior for NetWare [5]
- EPC C/C++
- ノベル NLMLINK.EXE
NLM開発はGNU ccとbinutilsでも可能。[6]詳細はMartin Hinner著のNetWare Loadable Module Programming HOWTOを参照。[7]
NIOS を使用したクライアント側 NLM
Novell は1995 年 3 月にこれを発表し、[8] [9]、 1996 年に新しい 32 ビット DOS/Windows NetWareクライアント (ODI32/NIOS に基づくクライアント 32) [10]を導入し、以前のODI /VLM に基づく 16 ビット クライアントを置き換えました。その NIOS コンポーネント ( NetWare I/O サブシステム[8] [11] [12] ) は、 DPMSに似た技術を使用してNLM を保護モードと拡張メモリで再配置して実行し、クライアントの従来のメモリフットプリントを 2 ~ 5 KB に削減しました。 [13] [11]
参照
- 仮想ロード可能モジュール(VLM)
参考文献
- ^ Dave Kearns (2006 年 10 月 3 日)。「Revelation: 今も存在する NetWare ロード可能モジュール」。Computerworld。
- ^ 「NetWare 用のデータベース サーバーの選択」。Computerworld。
- ^ 「実践:Mac と PC をうまく連携させる方法」。Computerworld。
- ^ Mark Foust (2001). NetWare 管理: NetWare 4.0-6.0 .
- ^ 「Metrowerks ウェブサイト」。2009年1月6日時点のオリジナルよりアーカイブ。
- ^ 「Linux での NLM 開発」。
- ^ 「NetWare ロード可能モジュール プログラミング HOWTO」。
- ^ ab 「Novell が Tuxedo をドレスアップし、32 ビット クライアントを提供」。Network World : 141。1995 年 3 月 27 日。2018年8 月 18 日閲覧。
- ^ 「Network Edition - Cover Story」。PC Magazine : NE27。1995年10月24日。 2018年8月18日閲覧。
- ^ 「Netware 入出力サブシステム」。
- ^ ab Liebing, Edward A. (1996 年 5 月 1 日). 「NetWare Client 32 for DOS/Windows: アーキテクチャと機能の概要」. Novell AppNotes . Novell . 2018 年 8 月 18 日時点のオリジナルよりアーカイブ。2018年8 月 18 日閲覧。
- ^ Hendrick, Ben (1996 年 11 月 1 日). 「Overview of NetWare Client 32 for Windows 95」. Novell AppNotes . Novell . 2018 年 8 月 18 日時点のオリジナルよりアーカイブ。2018 年8 月 18 日閲覧。
- ^ ポール、マティアス R. (1997 年 7 月 30 日)。 NWDOS-TIP — Novell DOS 7 に関するヒントとコツ、詳細、バグ、回避策を含む Blick です。リリース 157 (ドイツ語) (第 3 版)。 2016 年 5 月 22 日のオリジナルからアーカイブ。2012 年1 月 11 日に取得。
{{cite book}}:|work=無視されます (ヘルプ) (注: NWDOSTIP.TXT はNovell DOS 7およびOpenDOS 7.01に関する包括的な作業であり、多くの文書化されていない機能と内部の説明が含まれています。これは、2001 年まで維持され、当時多くのサイトで配布されていた、著者のさらに大規模な MPDOSTIP.ZIP コレクションの一部です。提供されているリンクは、HTML に変換された NWDOSTIP.TXT ファイルの古いバージョンを指しています。)
さらに読む
- Davis, Ralph (1991). NetWare 386 プログラマーズ ガイド. Addison-Wesley . ISBN 978-0-201-57709-9。
- 「Novell 開発者向けドキュメント: Netware Loadable Module」。2009 年 11 月 24 日時点のオリジナルよりアーカイブ。2010年9 月 25 日閲覧。
