JP2005196286A - リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法 - Google Patents
リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法 Download PDFInfo
- Publication number
- JP2005196286A JP2005196286A JP2003435554A JP2003435554A JP2005196286A JP 2005196286 A JP2005196286 A JP 2005196286A JP 2003435554 A JP2003435554 A JP 2003435554A JP 2003435554 A JP2003435554 A JP 2003435554A JP 2005196286 A JP2005196286 A JP 2005196286A
- Authority
- JP
- Japan
- Prior art keywords
- real
- shared library
- time
- device driver
- kernel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
【課題】RTOS機能およびリアルタイムアプリケーションを実装する共有ライブラリをカーネル空間にロードし起動するデバイスドライバを提供することを課題とする。
【解決手段】RTOS機能およびリアルタイムアプリケーションを共有ライブラリとして構成し、カーネル空間に共有ライブラリ、およびその共有ライブラリが参照する他の共有ライブラリをロードし、リロケーション情報に基づいてアドレス情報を調整し、外部参照を解決すること、および起動関数を示すシンボル情報を取り出し起動関数を起動する。
【選択図】図1
【解決手段】RTOS機能およびリアルタイムアプリケーションを共有ライブラリとして構成し、カーネル空間に共有ライブラリ、およびその共有ライブラリが参照する他の共有ライブラリをロードし、リロケーション情報に基づいてアドレス情報を調整し、外部参照を解決すること、および起動関数を示すシンボル情報を取り出し起動関数を起動する。
【選択図】図1
Description
本発明は、リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法であり、特にアプリケーションプログラムとカーネルのメモリ空間がそれぞれ異なるメモリ空間として設定され、入出力装置を制御するデバイスドライバが前記カーネルメモリ空間に実装されるオペレーティングシステムにおけるリアルタイムアプリケーションプログラムの制御に関するものである。
従来、アプリケーションプログラムとカーネルのメモリ空間がそれぞれ異なるメモリ空間として設定され、入出力装置を制御するデバイスドライバが前記カーネルメモリ空間に取りこまれて実装されるオペレーティングシステムは、リアルタイム制御基本ソフトウェア機能(以下、RTOS機能と記す)を有していない場合が多い。従って、このようなオペレーティングシステム上においてのみ動作する有用なアプリケーションプログラムが多数存在していても、RTOS機能がなければRTOS機能を必要とするアプリケーション、すなわちリアルタイムアプリケーションをこのようなオペレーティングシステム上で動作させることができず、他の有用なアプリケーションと共にRTOS機能を必要とするアプリケーションを利用することができなかった。
このようなオペレーティングシステムにRTOS機能を施す場合、RTOS機能をデバイスドライバとして実装することがある。この場合、デバイスドライバの交換はオペレーティングシステムにより管理されているために、オペレーティングシステムの課す制約条件を満たさなければデバイスドライバを交換できず、すなわちRTOS機能を容易に交換できないという問題があった。
また、カーネル空間にアプリケーションソフトウェアをロードして実行することは、このようなオペレーティングシステムでは考慮されていない。このためRTOS機能を利用するリアルタイムアプリケーションをカーネル空間へロードし、起動するための手段が必要となる。このような機能は、本来RTOS機能ではなく、RTOS機能とは分けて実現されることが望ましい。
本発明は上述のような問題に鑑みてなされたもので、アプリケーションプログラムとカーネルのメモリ空間が異なるメモリ空間とされ、入出力装置を制御するデバイスドライバが前記カーネルメモリ空間に取りこまれて実装されるオペレーティングシステムにおいて、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションを共有ライブラリとして構成し、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションをカーネル空間に読み込み、再配置し、外部参照を解決し、および起動する共有ライブラリをロードするデバイスドライバを提供し、RTOS機能を有しないオペレーティングシステムにおいて、RTOS機能を利用可能とするとともに、RTOS機能およびリアルタイムアプリケーションを共有ライブラリとして構成することで複数の共有ライブラリに分けて実装可能とするオペレーティングシステム及びその制御方法を提供する。
また、共有ライブラリが外部参照するシンボルを含むライブラリがロードされていない場合、その共有ライブラリを読み込み、再配置し、外部参照を解決し、および起動することで、自動的に必要な共有ライブラリをロードする方法を提供する。
更に、本発明は、上記とは別に、ロードする共有ライブラリの一覧をリストとして指定し、指定された共有ライブラリを読み込み、再配置し、外部参照を解決し、およびリストで指定された順番で起動することで、必要な共有ライブラリのロードおよび起動順序を明示的に指定可能なロード機能を実現することを特徴とする。なお、ここでのリストは、データ構造としてのリストとは限らず、配列であってもよい。
更に、また外部参照を解決するにあたって、リアルタイム制御基本ソフトウェアおよび特定のリアルタイムアプリケーションに対してのみオペレーティングシステムのカーネルが持つシンボルを参照可能とし、リアルタイムアプリケーションが本来呼び出してはならないオペレーティングシステムのカーネル機能を呼び出してしまうことを防止することを特徴とする。
更に、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションをカーネル空間に読み込んだ後に、命令コードおよび読み出し専用初期化済データセクションのロードされたカーネルメモリ空間の領域を読み出し専用として、誤った書き込みから保護することを特徴とする。
本発明におけるデバイスドライバは、カーネル空間に共有ライブラリ、およびその共有ライブラリが参照する他の共有ライブラリを読み込み、リロケーション(再配置)情報に基づいてアドレス情報を調整し、外部参照を解決すること、および起動関数を示すシンボル情報を取り出し起動関数を起動することを特徴とする。
更に、本発明のデバイスドライバは、リアルタイム制御基本ソフトウェアおよび特定のリアルタイムアプリケーションであるかどうかを判定し、それに該当するものであれば、オペレーティングシステムのカーネルのシンボルを参照可能とする、すなわちカーネル機能を呼び出し可能とすることを特徴とする。
更に、本発明のデバイスドライバは、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションをカーネル空間にロードした後に、命令コードおよび読み出し専用初期化済データセクションのロードされたカーネルメモリ空間の領域をメモリ管理テーブルを操作して読み出し専用領域に設定することを特徴とする。
更に、本発明のデバイスドライバは、媒体に記録される。
本発明の共有ライブラリをロードするデバイスドライバでは、RTOS機能およびリアルタイムアプリケーションを共有ライブラリとして構成し、カーネル空間に共有ライブラリ、およびその共有ライブラリが参照する他の共有ライブラリを読み込み、リロケーション(再配置)情報に基づいてアドレス情報を調整し、外部参照を解決し、起動関数を示すシンボル情報を取り出し起動関数を起動するので、RTOS機能およびリアルタイムアプリケーションを共有ライブラリとして構築すればよく、それらの構築が容易になる。
また、参照する共有ライブラリを選択し再帰的にロードするので、もっとも上位のリアルタイムアプリケーションの共有ライブラリを指定してロードするだけで、その参照する共有ライブラリが自動的にロードされ、個々の共有ライブラリを指定する手順を省略でき、かつ適当な順序での起動が行われる利点がある。
一方、ロードする共有ライブラリを厳密に管理したい場合には、予めロードすべきすべての共有ライブラリを指定してロードでき、かつその起動順序を指定できるので、想定外の順序で起動されてしまったために生じる不具合を未然に防止することができる。
図1は本発明によるアプリケーションメモリ空間1、カーネルメモリ空間8、およびそこに配置されるソフトウェアを示す図である。これらのメモリ空間は図2にブロック図で示すコンピューターシステムのRAM103上に設けられるものである。なお、図2には図示していないが、アプリケーションプログラムとカーネルのメモリ空間を異なるメモリ空間とするために、CPU101はメモリ管理ユニット(MMU)を備えている必要がある。図1は、本発明に関係する要素のみを記してあるが、実際にはカーネル機能を実現する本体、各種のデバイスドライバ機能などが配される。
図1において、カーネルメモリ空間8内には、本発明による共有ライブラリロードデバイスドライバ3が配置され、また、共有ライブラリロードデバイスドライバ3により確保された共有ライブラリ記憶領域7が設けられている。共有ライブラリ記憶領域7に共有ライブラリロードデバイスドライバ3により指定されてロードされた共有ライブラリ4、指定されてロードされた共有ライブラリ4から参照される2次の共有ライブラリ5、2次の共有ライブラリ5から参照される3次の共有ライブラリ6が設けられている。
図2には、例えば工作機械の主軸あるいは送り軸機構などをNC制御するためのコンピューターシステムを示し、サーボモータ112はサーボ制御部111によって制御され、主軸その他の送り軸の位置は位置検出器113によって検出され、サーボ制御部111が高精度に位置制御を行っている。サーボ制御部111はシステムバス106を介してCPU101と接続され、このシステムバス106には操作パネルI/F部109及び表示制御部107が繋がっている。操作パネルI/F部109は工作機械のオペレータが操作する操作器110と接続され、CPU101に所望の加工指令を送る。工作機械による加工状況は表示制御部107から表示装置108に送られ、現在のNC制御の状況をオペレータが常時監視することができる。
前述したシステムバス106には、更に、ROM102、RAM103、ハードディスクI/F104が接続されており、このハードディスクI/F104はハードディスク105を読み書きし、CPU101の命令に応じて各メモリ装置から所望の制御データが読み出され、あるいは必要な過去データが書き込まれている。前述した様に、本発明は、図2におけるCPU101とRAM103とによって制御されるオペレーティングシステムに関するものである。
図3は、マイクロソフト社の共有ライブラリ(DLL: Dynamic Link Library)の構造を示す図であり、”Microsoft Portable Executable and Common Object File Format Specification”(マイクロソフト社)から抜粋、要約したものである。以下この共有ライブラリ構造に基づいて説明を行う。
共有ライブラリは始めハードディスク(HD)105にファイルとして記憶される。通常共有ライブラリはアプリケーションプログラムから参照され、アプリケーションメモリ空間にロードされるもので、通常このロードの作業はオペレーティングシステム、あるいはオペレーティングシステムに備えつけのライブラリによって行われるが、本発明の共有ライブラリロードデバイスドライバ3は、これらをカーネルメモリ空間8に取り込み、起動関数の起動を行う。
図4は、共有ライブラリロードデバイスドライバ3が共有ライブラリをロードする手続きを示すフローチャートである。以下、このフローチャートに従って、共有ライブラリロードデバイスドライバ3の動作を説明する。
共有ライブラリロードデバイスドライバ3は、共有ライブラリロードデバイスドライバ制御ソフトウェア2からの指示を受けて動作を開始する(S1)。
始めに指定された共有ライブラリのPEヘッダ202(図3)を共有ライブラリ記憶領域7に読み込む(S2)。PEヘッダにはセクションの数、オプションヘッダのサイズなどが記憶されている。オプションヘッダはPEヘッダの一部であり、共有ライブラリを適切にロードするために必要な情報として、バージョン情報、スタックメモリのサイズ、エクスポートテーブルのファイル内の位置、インポートテーブルのファイル内の位置などの情報が収められている。
次にセクションヘッダ部203を読み込む(S3)。セクションヘッダとはイメージ部204に記憶されるインポート情報、エクスポート情報、リロケーション情報など各セクションのセクション名、サイズなどを記憶している。次にイメージ部204を読み込む(S4)。イメージ部はセクションに分かれており、各セクションごとにメモリ103上の適切な空き領域に読み込む。以上によりPEヘッダ202,セクションヘッダ203,イメージ204が読み込まれて、共有ライブラリ記憶領域7に、指定されてロードされた共有ライブラリ4のロードがなされる。なお、イメージ部のうち.textセクション(命令コード。“.text”はセクション名、以下同様))、.rdataセクション(読出し専用初期化済データ)については、前述のMMUの管理するメモリ管理テーブルを操作して、読み出し専用とする。こうすることで、これらの領域に対する誤った書き込みが行われるのを検出し適切な処置を可能とする。
次に、.relocセクションに記憶されるリロケーション情報をもとに .text セクションに記憶される命令コード、.dataセクションに記憶される初期化済データ、.rdataセクションに記憶される読出し専用初期化済データに含まれるアドレス情報をリロケートする(S5)。リロケートとは共有ライブラリが作成されたときに仮定されたアドレスと実際にメモリ103上にロードされたアドレスの差違を調整するもので、アドレスの差をアドレス情報が含まれるメモリの内容に加算または減算する。図5リロケーション情報の構造を示す。リロケーション情報としては、リロケーションテーブルが存在するのみである。リロケーションテーブルの構造は、第1列がリロケーション方法を示すタイプ、第2列がリロケーションを行うメモリアドレスを示すオフセット値で、リロケーションが必要な箇所の個数と同じ行数がある。
次に、.edataセクションに記憶されるエクスポート情報を登録し、他の共有ライブラリからのシンボル参照を可能にする(S6)。図6はエクスポート情報の構造を示す図である。エクスポートテーブルアドレス、アドレステーブル、名前ポインタテーブル、序数テーブル、名前テーブルからなる。エクスポートテーブルアドレスは、後続のテーブル群がどこに配置されているかを示す情報である。アドレステーブルはエクスポートするアドレスを序数の順序に従って記憶するテーブルである。名前ポインタテーブルと序数テーブルは対になっており、外部に公開するシンボル(名前)を記憶する名前ポインタテーブルから、名前を検索し、見つかった名前の配列添数を序数テーブルの添数として序数を読出し、この序数をもとにアドレステーブルを読み出すことで、シンボルに対応するアドレスを読み出すことができる。なお、アドレステーブルに記憶するアドレス情報は、リンク時に仮定されたアドレスであり、.relocセクション(リロケーション情報)で説明したように、実際にメモリ103上に読み込まれたアドレスに差違を調整する必要がある。
次に、.idataセクションに記憶されるインポート情報をもとにインポート処理を行う(S7)。図7はインポート情報の構造を示す図である。インポート処理は共有ライブラリが、他の共有ライブラリのエクスポートするシンボルを参照している場合、参照テーブルのアドレス情報をエクスポートされているシンボルに対応付いたアドレスに修正するものである。この時、他の共有ライブラリがまだロードされていない場合、その共有ライブラリのエクスポート情報が未登録であり、シンボルを参照することができない。従って、その共有ライブラリをロードしなければならない。この処理は、他の共有ライブラリに対しステップS1から実行する、すなわち再帰呼び出し処理により実現される。この場合、他の共有ライブラリは補助記憶装置であるハードディスク105上の所定の場所を検索して、共有ライブラリを探し出しロードを行う。従って、参照される(依存する)共有ライブラリは、ロードすることを指定しなくても自動的にロードされる。
なお、再帰呼び出し処理が行われた結果、指定されてロードされた共有ライブラリ4から直接参照される共有ライブラリは2次の共有ライブラリ5として、2次の共有ライブラリから参照される共有ライブラリは3次の共有ライブラリ6として、n次の共有ライブラリから参照されるn+1次の共有ライブラリとして、共有ライブラリ記憶領域7にロードがなされる。なお、図1において指定されてロードされた共有ライブラリ4、2次の共有ライブラリ5、3次の共有ライブラリ6は、並べて図示しているが、実際には離れたアドレス領域にロードされることもありうる。
共有ライブラリロードデバイスドライバ制御ソフトウェア2から指定された共有ライブラリがリアルタイムアプリケーションである場合、参照する共有ライブラリの1つとしてRTOS機能を有する共有ライブラリが含まれる。このため、リアルタイムアプリケーションとともにRTOS機能を有する共有ライブラリがロードされる。
これとは別に、共有ライブラリロードデバイスドライバ制御ソフトウェア2は、リアルタイムアプリケーションをロードする前にRTOS機能を有する共有ライブラリを指定して共有ライブラリロードデバイスドライバ3を駆動させ、リアルタイムアプリケーションよりも前にRTOS機能を有する共有ライブラリをロードおよび起動させてもよい。このようにするとRTOS機能が先に動作を開始してシステムを安定させてから、リアルタイムアプリケーションのロード及び起動が可能になる。
なおロードしようとする共有ライブラリがリアルタイム制御基本ソフトウェアあるいは特定のリアルタイムアプリケーションである場合、オペレーティングシステムのカーネル機能のシンボルテーブル9を参照可能とする。こうすることで、通常は呼び出すことの許されないオペレーティングシステムのカーネル機能を、リアルタイム制御基本ソフトウェアおよび限られたリアルタイムアプリケーションに対してのみ許可し、それ以外のリアルタイムアプリケーションについては誤った機能呼び出しが行われることを防ぐことができる。
最後にロードし終わった共有ライブラリの開始アドレスを登録する(S8)。共有ライブラリのエクスポート情報から外部に公開するmainというシンボルを探し出して、そのシンボルに対応するアドレスを開始アドレスとする。なおシンボル名は必ずしもmainでなくてもよく、他のシンボル名であってもよい。また、このシンボルが見つからなかった場合には、起動する必要がないため、開始アドレスの登録を行わなくてもよい。これで共有ライブラリのロードが終了する(S9)。
以上のステップS1からS9により、指定された共有ライブラリおよびその共有ライブラリが参照する2次の共有ライブラリ、n次(n=2,3,4…)の共有ライブラリから参照されるn+1次の共有ライブラリがロードされることを説明した。なお、指定された共有ライブラリ、またはn次のライブラリが参照するライブラリが複数ある場合には、n+1次の共有ライブラリは複数存在することになる。
次に起動関数を示すシンボル情報を取り出し、共有ライブラリをロードした順序とは逆順に起動関数を起動する手順について、図8のフローチャートを用いて説明する。すべての共有ライブラリがロードされた後で、共有ライブラリの起動が開始される(S11)。初めにロードの際のステップS8で最初に登録された開始アドレスを取り出す(S12)。次にS12で読み出した開始アドレスから実行を開始させる(S13)。これは関数呼び出しで、起動関数は直ちに終了する。ステップS8で登録されたすべての開始アドレスについて完了しているかどうかを判定し、完了していたら終了する(S14)。完了していなければ、ステップS8で次に登録された開始アドレスを取り出し(S15)、再びステップS13へ戻って繰返す。ここでステップS8に登録された順序は、共有ライブラリのロードされた逆順になっていて、この順に起動すると、ロードした逆順で起動することになる。これは、依存されるものほど早く起動され、準備が整えられることになる。以上により、共有ライブラリをロードする第1のデバイスドライバの動作を説明した。なお、すべての共有ライブラリがロードされた後に起動するのは、共有ライブラリが相互に依存している可能性があるためで、すべての共有ライブラリのロードが完了する前に起動すると、ロードの完了していないライブラリの機能を呼び出してしまう可能性がある。
次に、以上とは異なる手続きで、共有ライブラリをロードする第2のデバイスドライバの動作を図9のフローチャートを使って説明する。
共有ライブラリロードデバイスドライバ3は、共有ライブラリロードデバイスドライバ制御ソフトウェア2からの指示を受けて動作を開始すると(S21)、共有ライブラリロードデバイスドライバ制御ソフトウェア2から共有ライブラリのリストとして引き渡された、指定された共有ライブラリの最初のものの名前を変数dllに格納する(S22)。この共有ライブラリのリストに、リアルタイムアプリケーションおよびRTOS機能を指定することで、リアルタイム制御機能を実現される。
次に変数dllで指定された共有ライブラリのPEヘッダを読み込み(S23)、セクションヘッダを読み込み(S24)、イメージを読み込み(S25)、リロケーションを行い(S26)、エクスポート情報の登録を行う(S27)。以上のステップS23〜S27はステップS2〜S6に対応しており、動作はそれらと同じであるので、ここでの説明は省略する。
指定された共有ライブラリをロードし終わっていれば、ステップS30へ移る。さもなければ、変数dllに指定の共有ライブラリの次のものの名前を設定し(S29)、再びステップS23へ戻って共有ライブラリのロードを行う。
次のステップS30〜S33にて、すべての共有ライブラリのインポート処理を行う。ステップS31のインポート処理はステップS7のインポート処理と同様であるが、他の共有ライブラリがエクスポートするシンボルを参照している場合、他の共有ライブラリはリストに従ってロード済みであるので、他の共有ライブラリを再帰的にロードすることはない。ステップS30,S32,S33はすべての共有ライブラリに対しインポート処理を行うためのループ制御の処理である。
次にステップS34〜S37にて、すべての共有ライブラリの起動関数の開始アドレスから実行開始する。ステップS35は、共有ライブラリdllのエクスポート情報から外部に公開するmainというシンボルを探し出して、そのシンボルに対応するアドレスを開始アドレスとして、実行を開始させる。ステップS36,S37はすべての共有ライブラリに対し起動関数の開始アドレスから実行開始するためのループ制御の処理である。以上により、第2のデバイスドライバの動作を説明した。なお、第1のデバイスドライバの場合と同様に、命令コードや読み出し専用初期化済データセクションのメモリを読み出し専用としてもよい。
1 アプリケーションメモリ空間、2 共有ライブラリロードデバイスドライバ制御ソフトウェア、3 共有ライブラリロードデバイスドライバ、4 指定されてロードされた共有ライブラリ、5 2次の共有ライブラリ、6 3次の共有ライブラリ、7 共有ライブラリ記憶領域、8 カーネルメモリ空間、9 オペレーティングシステムカーネル機能のシンボルテーブル、101 CPU、102 ROM、103 RAM、104 ハードディスクインターフェース、105 ハードディスク(補助記憶装置)、106 システムバス、107 表示制御部、108 表示装置、201 MS−DOSスタブ部、202 PEヘッダー部、203 セクションヘッダー部、204 イメージ部。
Claims (8)
- アプリケーションプログラムとカーネルのメモリ空間がそれぞれ異なるメモリ空間として設定され、入出力装置を制御するデバイスドライバが前記カーネルメモリ空間に実装されるオペレーティングシステムにおいて、
リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションが共有ライブラリとして構成され、
デバイスドライバが、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションをカーネル空間に読み込み、再配置し、外部参照を解決し、および起動することを特徴とするリアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム。 - アプリケーションプログラムとカーネルのメモリ空間がそれぞれ異なるメモリ空間として設定され、入出力装置を制御するデバイスドライバが前記カーネルメモリ空間に実装されるオペレーティングシステムの制御方法において、
リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションを共有ライブラリとして構成し、
デバイスドライバは、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションをカーネル空間に読み込み、再配置し、外部参照を解決し、および起動して、リアルタイムアプリケーションプログラムを動作させることを特徴とするオペレーティングシステムの制御方法。 - 請求項2記載の制御方法において、デバイスドライバは、リアルタイム制御基本ソフトウェアをカーネル空間に読み込み、再配置し、外部参照を解決し、起動した後に、リアルタイムアプリケーションをカーネル空間に読み込み、再配置し、外部参照を解決し、および起動することを特徴とする共有ライブラリのロード方法。
- 請求項1記載のオペレーティングシステムにおいて、リアルタイム制御基本ソフトウェアまたはリアルタイムアプリケーションの外部参照を解決するにあたって、ロードされていない共有ライブラリのシンボルを含む場合、ロードされていない共有ライブラリについてカーネル空間に読み込み、再配置し、外部参照を解決し、および起動することを特徴とする共有ライブラリをロードするデバイスドライバ。
- 請求項2記載の制御方法において、デバイスドライバは、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションのリストに従って、カーネル空間に読み込み、再配置し、外部参照を解決した後に、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションのリストの順に従って起動することを特徴とする共有ライブラリのロード方法。
- 請求項2記載の制御方法において、デバイスドライバは、外部参照を解決するにあたって、リアルタイム制御基本ソフトウェアおよび特定のリアルタイムアプリケーションに対してのみオペレーティングシステムのカーネルが持つシンボル参照を可能とし、それ以外のリアルタイムアプリケーションには参照不可能とすることを特徴とする共有ライブラリのロード方法。
- 請求項2記載の制御方法において、デバイスドライバは、リアルタイム制御基本ソフトウェアおよびリアルタイムアプリケーションをカーネル空間に読み込んだ後に、少なくとも命令コードセクションおよび読み出し専用初期化済データセクションのロードされたカーネルメモリ空間の領域を読み出し専用とすることを特徴とする共有ライブラリのロード方法。
- 請求項2,3,5,6,7のいずれか1に記載のデバイスドライバを記録した媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003435554A JP2005196286A (ja) | 2003-12-26 | 2003-12-26 | リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法 |
DE102004061597A DE102004061597A1 (de) | 2003-12-26 | 2004-12-21 | Betriebssystem, das den Lauf von Echtzeitprogrammen ermöglicht, Steuerungsverfahren hierfür sowie Verfahren zum Laden von DLLs |
US11/018,538 US20050144608A1 (en) | 2003-12-26 | 2004-12-21 | Operating system allowing running of real-time application programs, control method therefor, and method of loading dynamic link libraries |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003435554A JP2005196286A (ja) | 2003-12-26 | 2003-12-26 | リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005196286A true JP2005196286A (ja) | 2005-07-21 |
Family
ID=34697807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003435554A Pending JP2005196286A (ja) | 2003-12-26 | 2003-12-26 | リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20050144608A1 (ja) |
JP (1) | JP2005196286A (ja) |
DE (1) | DE102004061597A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377086C (zh) * | 2006-03-31 | 2008-03-26 | 浙江大学 | 嵌入式系统中直接从文件系统运行程序的实现方法 |
JP2012014637A (ja) * | 2010-07-05 | 2012-01-19 | Fujitsu Ltd | 起動処理方法、情報処理装置、起動処理プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体 |
JP2012048617A (ja) * | 2010-08-30 | 2012-03-08 | Yokogawa Electric Corp | リアルタイム制御システム |
JP2022538512A (ja) * | 2019-05-03 | 2022-09-05 | ライン プラス コーポレーション | メモリ上に実行可能イメージをロードする方法およびシステム |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112798B2 (en) * | 2005-11-09 | 2012-02-07 | Microsoft Corporation | Hardware-aided software code measurement |
US7756893B2 (en) * | 2005-11-09 | 2010-07-13 | Microsoft Corporation | Independent computation environment and data protection |
US7987512B2 (en) * | 2006-05-19 | 2011-07-26 | Microsoft Corporation | BIOS based secure execution environment |
US20080005560A1 (en) * | 2006-06-29 | 2008-01-03 | Microsoft Corporation | Independent Computation Environment and Provisioning of Computing Device Functionality |
JP2008158591A (ja) * | 2006-12-20 | 2008-07-10 | Denso Corp | 情報処理装置及び制御プログラム |
US7900217B2 (en) * | 2007-03-29 | 2011-03-01 | Microsoft Corporation | Dynamic DLL cycle resolution |
US8707283B2 (en) * | 2007-03-29 | 2014-04-22 | Microsoft Corporation | Parallel DLL tree initialization |
US8732236B2 (en) * | 2008-12-05 | 2014-05-20 | Social Communications Company | Managing network communications between network nodes and stream transport protocol |
KR100938672B1 (ko) * | 2007-11-20 | 2010-01-25 | 한국전자통신연구원 | 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법 |
US8621606B1 (en) * | 2007-12-31 | 2013-12-31 | Symantec Corporation | Systems and methods for identifying external functions called by untrusted applications |
JP5721634B2 (ja) * | 2008-12-05 | 2015-05-20 | ソーシャル・コミュニケーションズ・カンパニー | リアルタイムカーネル |
WO2012118917A2 (en) | 2011-03-03 | 2012-09-07 | Social Communications Company | Realtime communications and network browsing client |
US8726258B2 (en) * | 2011-04-14 | 2014-05-13 | Phoenix Technologies Ltd. | Supporting multiple hardware components in UEFI |
KR101570701B1 (ko) * | 2011-12-26 | 2015-11-20 | 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 | 인스턴트 메시징 소프트웨어에 기반한 플러그인 업그레이드를 구현하는 방법 및 장치 |
CN103246524A (zh) * | 2012-02-01 | 2013-08-14 | 上海野火网络科技有限公司 | 基于arm芯片的多个程序段同时运行的动态加载方法 |
JP5987501B2 (ja) * | 2012-06-29 | 2016-09-07 | 富士通株式会社 | 分岐アドレス管理プログラム、方法、及び装置 |
US10430245B2 (en) | 2017-03-27 | 2019-10-01 | Hong Kong Applied Science And Technology Research Institute Co., Ltd. | Systems and methods for dynamic low latency optimization |
CN109828758A (zh) * | 2018-12-05 | 2019-05-31 | 苏州蜗牛数字科技股份有限公司 | 一种so文件的解析方法 |
CN111984342B (zh) * | 2020-09-03 | 2023-04-07 | 科大讯飞股份有限公司 | 一种加载动态链接库的方法和相关装置 |
CN114489827B (zh) * | 2020-11-13 | 2023-11-03 | 上海华为技术有限公司 | 动态库加载方法、核部署的调整方法及相关装置 |
CN112363780A (zh) * | 2020-11-29 | 2021-02-12 | 王志平 | 一种软件动态链接的实现方法 |
CN114237742B (zh) * | 2021-12-10 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 一种动态库的加载编译方法、装置、终端及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05282160A (ja) * | 1992-03-31 | 1993-10-29 | Yokogawa Electric Corp | リアルタイム・シミュレーション開発機構 |
JPH1021094A (ja) * | 1996-07-08 | 1998-01-23 | Mitsubishi Electric Corp | リアルタイム制御方式 |
JPH11249873A (ja) * | 1998-03-02 | 1999-09-17 | Mitsubishi Electric Corp | ドライバ機能の動的管理方式及び動的管理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5889988A (en) * | 1995-01-03 | 1999-03-30 | Intel Corporation | Debugger for debugging tasks in an operating system virtual device driver |
US6173438B1 (en) * | 1997-08-18 | 2001-01-09 | National Instruments Corporation | Embedded graphical programming system |
US6961765B2 (en) * | 2000-04-06 | 2005-11-01 | Bbx Technologies, Inc. | System and method for real time monitoring and control of networked computers |
-
2003
- 2003-12-26 JP JP2003435554A patent/JP2005196286A/ja active Pending
-
2004
- 2004-12-21 US US11/018,538 patent/US20050144608A1/en not_active Abandoned
- 2004-12-21 DE DE102004061597A patent/DE102004061597A1/de not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05282160A (ja) * | 1992-03-31 | 1993-10-29 | Yokogawa Electric Corp | リアルタイム・シミュレーション開発機構 |
JPH1021094A (ja) * | 1996-07-08 | 1998-01-23 | Mitsubishi Electric Corp | リアルタイム制御方式 |
JPH11249873A (ja) * | 1998-03-02 | 1999-09-17 | Mitsubishi Electric Corp | ドライバ機能の動的管理方式及び動的管理方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377086C (zh) * | 2006-03-31 | 2008-03-26 | 浙江大学 | 嵌入式系统中直接从文件系统运行程序的实现方法 |
JP2012014637A (ja) * | 2010-07-05 | 2012-01-19 | Fujitsu Ltd | 起動処理方法、情報処理装置、起動処理プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体 |
JP2012048617A (ja) * | 2010-08-30 | 2012-03-08 | Yokogawa Electric Corp | リアルタイム制御システム |
JP2022538512A (ja) * | 2019-05-03 | 2022-09-05 | ライン プラス コーポレーション | メモリ上に実行可能イメージをロードする方法およびシステム |
JP7348701B2 (ja) | 2019-05-03 | 2023-09-21 | ライン プラス コーポレーション | メモリ上に実行可能イメージをロードする方法およびシステム |
Also Published As
Publication number | Publication date |
---|---|
DE102004061597A1 (de) | 2005-08-04 |
US20050144608A1 (en) | 2005-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005196286A (ja) | リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法 | |
US6363436B1 (en) | Method and system for loading libraries into embedded systems | |
US5355498A (en) | Method and apparatus for booting a computer system without loading a device driver into memory | |
US5136709A (en) | Method for generating an operating system by a static link-editor | |
CN100501678C (zh) | 在多引导系统中控制存储访问 | |
US5553286A (en) | System and method for preparing a computer program for execution | |
JP2005032259A (ja) | 共有ライブラリーシステム及び前記システム構築方法 | |
US20070294683A1 (en) | Methods of generating, linking and updating component-based software and information storage medium having such software recorded thereon | |
JPH1185526A (ja) | プログラムロード方法 | |
JP2005284491A (ja) | 計算機の起動時間短縮方式 | |
JPH01183729A (ja) | メモリの自動初期化機能を備えたプリンタ | |
US7046574B2 (en) | Memory system | |
JP3535266B2 (ja) | 外字拡張利用方式 | |
KR20010079730A (ko) | 프로세서의 작업 메모리내에서 스와핑된 프로그램 모듈을칩카드상에 링킹하기 위한 방법 | |
EP0554975A2 (en) | Device independent interface for graphics display devices | |
JP2006202233A (ja) | コントローラ、そのプログラム | |
JP4760607B2 (ja) | プログラマブルコントローラ | |
US20020083291A1 (en) | Nonvolatile semiconductor memory | |
JP7126637B1 (ja) | プログラミング支援プログラム、プログラミング支援方法及びプログラミング支援装置 | |
WO2000070454A1 (fr) | Procede pour faciliter le partage de donnees entre des programmes d'application et des acces a des appareils peripheriques a programmes d'application au moyen d'adresses partagees | |
KR100654477B1 (ko) | 프로세서 동작 방법 | |
JP2021091034A (ja) | ロボット制御装置 | |
JPWO2004057457A1 (ja) | 印刷制御装置及び印刷制御方法 | |
JP2006018759A (ja) | 制御装置及び方法 | |
JP2664168B2 (ja) | 情報処理装置の起動方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090727 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100126 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100525 |