(57)【要約】【課題】共有メモリの利用の最適化を図り、排他漏れが発生した場合のデバックの効率化を図ること。【解決手段】ＭＭＵ３０２によって、排他制御部３０６から割り当てられる排他制御の種類に応じた制御関数を用いて各処理単位３０１のアクセスの許可／禁止を設定する。また、メモリ制御部３０４によって、排他制御部３０６によって決定される処理単位３０１に対する排他制御の種類を用いて、メモリ管理ＤＢ３０５から実行メモリのアドレスを抽出する。アクセスの禁止が設定されている実行メモリに処理単位３０１がアクセスした場合は、アクセスエラー例外を出力し、アクセスエラー発生箇所を検出する。【選択図】図３
2008186429.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリへのアクセスを制限する排他制御の種類に応じて当該共有メモリに設定された複数の実行メモリに対し、任意の処理単位によるアクセスの禁止が設定されている場合、情報処理の対象となる情報処理データの入力を受け付ける入力工程と、
前記入力工程によって入力された情報処理データに応じて、ＯＳによって選択される処理単位に対する排他制御の種類を決定する決定工程と、
前記決定工程によって決定された排他制御の種類に応じた前記実行メモリへのアクセスの禁止／許可を設定する制御関数によって、前記処理単位による前記実行メモリへのアクセスの許可を設定する許可設定工程と、
前記許可設定工程によって前記実行メモリへのアクセスが許可された場合、当該実行メモリにアクセスすることによって前記処理単位を実行する実行工程と、
を含むことを特徴とする情報処理方法。
【請求項２】
前記実行工程によって前記処理単位の実行が終了した場合、前記制御関数によって、前記実行メモリへのアクセスの禁止を再設定する禁止設定工程を含むことを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記決定工程は、
前記処理単位による情報処理の種別に応じて、前記排他制御の種類を決定することを特徴とする請求項１または２に記載の情報処理方法。
【請求項４】
前記許可設定工程による前記実行メモリへのアクセスの許可の設定の前に、前記処理単位によって当該実行メモリへのアクセスが試みられた場合、アクセスエラー例外を出力する出力工程を含むことを特徴とする請求項１に記載の情報処理方法。
【請求項５】
前記出力工程によって出力されたアクセスエラー例外によって、前記処理単位によるアクセスエラー発生箇所を検出する検出工程を含むことを特徴とする請求項４に記載の情報処理方法。
【請求項６】
共有メモリへのアクセスを制限する排他制御の種類に応じて当該共有メモリに設定された複数の実行メモリに対し、任意の処理単位によるアクセスの禁止が設定されている場合、情報処理の対象となる情報処理データの入力を受け付ける入力手段と、
前記入力手段によって入力された情報処理データに応じて、ＯＳによって選択される処理単位に対する排他制御の種類を決定する決定手段と、
前記決定手段によって決定された排他制御の種類に応じた前記実行メモリへのアクセスの禁止／許可を設定する制御関数によって、前記処理単位による前記実行メモリへのアクセスの許可を設定する許可設定手段と、
前記許可設定手段によって前記実行メモリへのアクセスが許可された場合、当該実行メモリにアクセスすることによって前記処理単位を実行する実行手段と、
を備えることを特徴とする情報処理装置。
【請求項７】
共有メモリへのアクセスを制限する排他制御の種類に応じて当該共有メモリに設定された複数の実行メモリに対し、任意の処理単位によるアクセスの禁止が設定されている場合、情報処理の対象となる情報処理データの入力を受け付けさせる入力工程と、
前記入力工程によって入力された情報処理データに応じて、ＯＳによって選択される処理単位に対する排他制御の種類を決定させる決定工程と、
前記決定工程によって決定された排他制御の種類に応じた前記実行メモリへのアクセスの禁止／許可を設定する制御関数によって、前記処理単位による前記実行メモリへのアクセスの許可を設定させる許可設定工程と、
前記許可設定工程によって前記実行メモリへのアクセスが許可された場合、当該実行メモリにアクセスすることによって前記処理単位を実行させる実行工程と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項８】
請求項７に記載の情報処理プログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理に用いられる共有メモリへのアクセスをＭＭＵ（メモリ管理ユニット）機能によって制御して情報処理をおこなう情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
一般的に、情報処理に用いられるメモリには、プロセス、スレッド、ハンドラなどの処理単位ごとに固有の固有メモリと、複数の処理単位がアクセスする共有メモリとがある。ＭＭＵ機能を有するコンピュータ装置では、処理単位ごとの固有メモリに対して、ＭＭＵ機能によって他の処理単位を排他している。しかしながら、共有メモリは、ＭＭＵ機能による排他はおこなわれずに複数の処理単位がアクセスできる構成である。
【０００３】
具体的に、図１８を用いて、従来におけるＭＭＵ機能による排他について説明する。図１８は、従来におけるＭＭＵ機能による排他の一例を示す説明図である。図１８において、ＭＭＵ機能を有するコンピュータ装置１８００は、処理単位ａと、処理単位ｂと、処理単位ｃと、共有メモリ１８０１と、から構成されている。また、各処理単位ａ，ｂ，ｃは、それぞれ固有の固有メモリａ，ｂ，ｃを備えており、各処理単位ａ，ｂ，ｃ間に、ＭＭＵ機能による排他制御の壁１８０２（１８０２ａ，１８０２ｂ）が設けられている。
【０００４】
各処理単位ａ，ｂ，ｃは、それぞれに固有の固有メモリａ，ｂ，ｃや共有メモリ１８０１にアクセスして情報処理をおこなう。すなわち、処理単位ａは、固有メモリａおよび共有メモリ１８０１、処理単位ｂは、固有メモリｂおよび共有メモリ１８０１、処理単位ｃは、固有メモリｃおよび共有メモリ１８０１にアクセスして情報処理をおこなう。
【０００５】
排他制御の壁１８０２は、各処理単位ａ，ｂ，ｃにおける固有メモリａ，ｂ，ｃのアクセスの排他制御する機能を示している。具体的には、たとえば、固有メモリａは、排他制御の壁１８０２ａによって、処理単位ｂ，ｃからのアクセスが排他される。
【０００６】
同様に、固有メモリｂは、排他制御の壁１８０２ａ，ｂによって処理単位ａ，ｃからのアクセスが排他され、固有メモリｃは、排他制御の壁１８０２ｂによって、処理単位ａ，ｂからのアクセスが排他される。また、共有メモリ１８０１へのアクセスは、各処理単位ａ，ｂ，ｃが取り決められた排他制御にしたがうことで競合が発生しないようにしている。
【０００７】
近年では、共有データにアクセスするスレッドごとにロックを設定することで、共有データに対するアクセスについてのロックの違反を検出し、スレッドごとにロックの調停をおこなう提案がされている（たとえば、下記特許文献１参照。）。
【０００８】
具体的には、たとえば、特許文献１の技術では、スレッドが共有データにアクセスする際にＭＭＵ例外が発生し、ロック調停部がそのスレッドにアクセスを許可するか否かを決定する。すなわち、共有データにアクセスしたスレッドは、既に他のスレッドがアクセスしている場合、該他のスレッドのアクセスが終了するまでアクセスを待つことで、共有データへのアクセスが競合を発生しないようにしている。
【０００９】
【特許文献１】特開平７−８４８５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した従来技術では、コンピュータ装置の規模が大きく複雑で、様々な関数が重畳的に存在する場合、共有メモリに対するアクセスの競合を避けるための各処理単位間における所定の排他制御に関する関数の読込が適切におこなわれずに、共有メモリに対するアクセスの競合が起こってしまう。換言すれば、排他されていないアクセスであっても、排他されている関数として設定してしまい、排他処理をおこなわずに共有メモリへのアクセスが競合してしまうことがある。
【００１１】
さらに、共有メモリへのアクセスが競合すると、共有メモリの破壊やシステム内の矛盾などによってシステムダウンなどの障害が発生することがある。このような障害は、デバックが困難かつ莫大な時間が必要となるという問題がある。すなわち、障害を再現するのに時間がかかってしまい、仮に再現できたとしても、障害の原因の特定が困難であることがある。
【００１２】
また、上述した特許文献１の技術では、スレッド間の排他制御をおこなうだけで、処理の中断ができないハンドラなどの割込み処理については考慮されていない。すなわち、特許文献１の技術では、スレッドが共有データにアクセスしている際にハンドラがアクセスする場合であっても、ハンドラによるアクセスを待たせることとなる。したがって、処理の中断ができないハンドラを待たせることで、コンピュータ装置としての動作ができなくなってしまうという問題がある。
【００１３】
この発明は、上述した従来技術による問題点を解消するため、共有メモリの利用の最適化を図り、排他漏れが発生した場合に効率的なデバックができる情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、この発明にかかる情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体は、共有メモリへのアクセスを制限する排他制御の種類に応じて当該共有メモリに設定された複数の実行メモリに対し、任意の処理単位によるアクセスの禁止が設定されている場合、情報処理の対象となる情報処理データの入力を受け付け、入力された情報処理データに応じて、ＯＳによって選択される処理単位に対する排他制御の種類を決定し、決定された排他制御の種類に応じた前記実行メモリへのアクセスの禁止／許可を設定する制御関数によって、前記処理単位による前記実行メモリへのアクセスの許可を設定し、前記実行メモリへのアクセスが許可された場合、当該実行メモリにアクセスすることによって前記処理単位を実行することを特徴とする。
【００１５】
この発明では、共有メモリに設定された実行メモリへのアクセスの許可／禁止を設定する制御関数によって、適切に実行メモリへのアクセスを許可して、処理単位を実行することができる。
【００１６】
また、上記発明において、前記処理単位の実行が終了した場合、前記制御関数によって、前記実行メモリへのアクセスの禁止を再設定することとしてもよい。
【００１７】
この発明では、制御関数によって、実行メモリへのアクセスの禁止を再設定して、つぎの処理単位によるアクセスに備えることができる。
【００１８】
また、上記発明において、前記処理単位による情報処理の種別に応じて、前記排他制御の種類を決定することとしてもよい。
【００１９】
この発明では、情報処理の種別に応じて決定された排他制御に応じた制御関数によって、適切に実行メモリへのアクセスを許可して、処理単位を実行することができる。
【００２０】
また、上記発明において、前記共有メモリに設定された前記実行メモリは、前記排他制御の種類ごとに複数設定されていることとしてもよい。
【００２１】
この発明では、排他制御の種類ごとに設定されている実行メモリに対して、適切にアクセスすることにより、処理単位を実行することができる。
【００２２】
また、上記発明において、前記実行メモリへのアクセスの許可の設定の前に、前記処理単位によって当該実行メモリへのアクセスが試みられた場合、アクセスエラー例外を出力することとしてもよい。
【００２３】
この発明では、実行メモリへのアクセスの禁止が設定されている場合のアクセスによって出力されるアクセスエラー例外によって、不適切な実行メモリへのアクセスを確実に認識することができる。
【００２４】
また、上記発明において、出力されたアクセスエラー例外によって、前記処理単位によるアクセスエラー発生箇所を検出することとしてもよい。
【００２５】
この発明では、アクセスエラー例外によって検出されるアクセスエラー箇所によって、アクセスエラー例外の要因を簡易に特定できる。
【発明の効果】
【００２６】
本発明にかかる情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体によれば、共有メモリの利用の最適化を図り、排他漏れが発生した場合におけるデバックの効率化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２７】
以下に添付図面を参照して、この発明にかかる情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体の好適な実施の形態を詳細に説明する。
【００２８】
（実施の形態）
（情報処理装置のハードウェア構成）
まず、図１を用いて、この発明の実施の形態にかかる情報処理装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかる情報処理装置のハードウェア構成を示すブロック図である。
【００２９】
図１において、情報処理装置１００は、コンピュータ本体１１０と、入力装置１２０と、出力装置１３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク１４０に接続可能である。
【００３０】
コンピュータ本体１１０は、ＣＰＵ，メモリ，インターフェースを有する。ＣＰＵは、情報処理装置１００の全体の制御を司る。メモリは、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリから構成される。メモリはＣＰＵのワークエリアとして使用される。
【００３１】
また、メモリには各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク１１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク１１１およびフラッシュメモリはコンピュータ本体１１０に対し着脱自在である。インターフェースは、入力装置１２０からの入力、出力装置１３０への出力、ネットワーク１４０に対する送受信の制御をおこなう。
【００３２】
また、入力装置１２０としては、キーボード１２１、マウス１２２、スキャナ１２３などがある。キーボード１２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス１２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ１２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体１１０内のメモリに格納される。なお、スキャナ１２３にＯＣＲ機能を持たせてもよい。
【００３３】
また、出力装置１３０としては、ディスプレイ１３１、スピーカ１３２、プリンタ１３３、などがある。ディスプレイ１３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ１３２は、効果音や読み上げ音などの音声を出力する。また、プリンタ１３３は、画像データや文書データを印刷する。
【００３４】
（情報処理装置１００の機能的構成）
つぎに、図２を用いて、この発明の実施の形態にかかる情報処理装置１００の機能的構成について説明する。図２は、この発明の実施の形態にかかる情報処理装置の機能的構成を示すブロック図である。図２において、情報処理装置１００は、入力部２０１と、決定部２０２と、アクセス設定部２０３と、実行部２０４と、出力部２０５と、検出部２０６と、から構成されている。
【００３５】
入力部２０１は、図示しない共有メモリへのアクセスを制限する排他制御の種類に応じて、共有メモリに設定された複数の実行メモリに対して、任意の処理単位によるアクセスの禁止が設定されている場合、情報処理の対象となる情報処理データの入力を受け付ける。
【００３６】
具体的には、たとえば、入力部２０１は、図１に示したキーボード１２１、マウス１２２、スキャナ１２３や、ネットワーク１４０を介して情報処理データの入力を受け付け、情報処理データは、図示しないバッファメモリなどに記録される。また、詳細は図３および図４を用いて説明するが、共有メモリに設定された実行メモリは、排他制御の種類ごとに少なくとも１以上設定されていることとしてもよい。
【００３７】
決定部２０２は、入力部２０１によって入力された情報処理データに応じて、ＯＳ（オペレーティングシステム）によって選択される処理単位に対する排他制御の種類を決定する。また、決定部２０２は、たとえば、処理単位による情報処理の種別に応じて、排他制御の種類を決定することとしてもよい。
【００３８】
具体的には、たとえば、決定部２０２は、ＣＰＵの制御にしたがって、図示しないバッファメモリなどに記録された情報処理データを読み出して、情報処理の種別に応じてＯＳによって選択される処理単位に対する排他制御の種類を決定する。そして、決定された排他制御の種類を、バッファメモリなどに記録する。
【００３９】
アクセス設定部２０３は、決定部２０２によって決定された排他制御の種類に応じた実行メモリへのアクセスの禁止／許可を設定する制御関数によって、処理単位による実行メモリへのアクセスの許可を設定する。また、アクセス設定部２０３は、後述する実行部２０４によって処理単位の実行が終了した場合、制御関数によって、実行メモリへのアクセスの禁止を再設定することとしてもよい。
【００４０】
具体的には、たとえば、アクセス設定部２０３は、ＣＰＵの制御にしたがって、図示しないバッファメモリなどに記録された排他制御の種類に応じた制御関数によって、処理単位の実行メモリへのアクセスの禁止／許可を設定する。
【００４１】
実行部２０４は、アクセス設定部２０３によって、実行メモリへのアクセスが許可された場合、実行メモリにアクセスすることによって処理単位を実行する。具体的には、たとえば、実行部２０４は、ＣＰＵの制御にしたがって、アクセス設定部２０３によってアクセスの許可が設定された実行メモリにアクセスすることにより、情報処理の種別に応じてＯＳによって選択された処理単位を実行する。
【００４２】
出力部２０５は、アクセス設定部２０３による実行メモリへのアクセスの許可の設定の前に、処理単位によって実行メモリへのアクセスが試みられた場合、アクセスエラー例外を出力する。詳細は図５〜図８を用いて説明するが、アクセスエラー例外は、たとえば、アクセスが禁止に設定されている実行メモリに対して、処理単位がアクセスを試みることにより出力される。
【００４３】
具体的には、たとえば、出力部２０５は、ＣＰＵの制御にしたがって、アクセスが禁止に設定されている実行メモリに処理単位がアクセスした場合にアクセスエラー例外を出力し、バッファメモリなどに記録する。
【００４４】
検出部２０６は、出力部２０５によって出力されたアクセスエラー例外によって、処理単位によるアクセスエラー発生箇所を検出する。具体的には、たとえば、検出部２０６は、ＣＰＵの制御にしたがって、バッファメモリなどに記録されたアクセスエラー例外によって、アクセスが禁止に設定されている実行メモリにアクセスを試みた処理単位や、該実行メモリや、発生時刻などを検出する。
【００４５】
また、図２では説明を省略したが、出力部２０５によってアクセスエラー例外が出力された場合は、ＣＰＵの制御にしたがって情報処理装置１００の動作を停止することとしてもよい。このようにすることで、アクセスエラー例外が発生した後に情報処理装置１００の動作を継続させることによるシステムダウンを招くことなく、アクセスエラー発生箇所を検出することで、迅速かつ的確にデバックをおこなうことができる。
【００４６】
（情報処理装置１００の概要）
つづいて、図３を用いて、この発明の実施の形態にかかる情報処理装置１００の概要について説明する。図３は、この発明の実施の形態にかかる情報処理装置の概要を示す説明図である。
【００４７】
図３において、この発明の実施の形態にかかる情報処理装置１００は、処理単位３０１（３０１ａ，３０１ｂ，３０１ｃ）と、ＭＭＵ３０２と、共有メモリ３０３と、メモリ制御部３０４と、メモリ管理ＤＢ（データベース）３０５と、排他制御部３０６と、から構成されている。
【００４８】
処理単位３０１は、ＯＳによって選択される。具体的には、たとえば、処理単位３０１は、プロセス、スレッド、ハンドラなどの処理ルーチンであり、図２に示した入力部２０１によって入力された情報処理データに応じてＯＳによって選択される。
【００４９】
ＭＭＵ３０２は、各処理単位３０１における後述する共有メモリ３０３へのアクセスを管理する。詳細は図５〜図８を用いて説明するが、ＭＭＵ３０２は、後述する排他制御部３０６から割り当てられる排他制御の種類に応じた制御関数を用いて各処理単位３０１のアクセスの許可／禁止を設定する。
【００５０】
また、ＭＭＵ３０２は、アクセスの禁止が設定されている実行メモリに処理単位３０１がアクセスした場合、アクセスエラー例外を出力し、アクセスエラー発生箇所を検出する。すなわち、ＭＭＵ３０２によって、たとえば、図２に示したアクセス設定部２０３、出力部２０５、検出部２０６の機能を実現する。
【００５１】
共有メモリ３０３は、各処理単位３０１がアクセスするメモリである。具体的には、たとえば、共有メモリ３０３には、各処理単位３０１に対する排他制御の種類応じて、実行メモリが設定されている。
【００５２】
詳細は図４を用いて説明するが、共有メモリ３０３は、たとえば、割込み制御によってアクセスする実行メモリＡと、ディスパッチ制御によってアクセスする実行メモリＢと、セマフォ制御によってアクセスする実行メモリＣ−１，Ｃ−２と、排他制御をおこなわないでアクセスする実行メモリＤとから構成されており、各実行メモリの情報は、あらかじめ後述するメモリ管理ＤＢ３０５に記録された各テーブルに記録されている。
【００５３】
そして、各処理単位３０１は、共有メモリ３０３に設定された各実行メモリにアクセスすることで各処理単位３０１を実行する。すなわち、共有メモリ３０３によって、たとえば、図２に示した実行部２０４の機能を実現する。
【００５４】
メモリ制御部３０４は、メモリ管理ＤＢ３０５から処理単位３０１がアクセスする実行メモリのアドレスを抽出する。具体的には、たとえば、メモリ制御部３０４は、排他制御部３０６によって決定される処理単位３０１に対する排他制御の種類を用いて、メモリ管理ＤＢ３０５から実行メモリのアドレスを抽出する。すなわち、メモリ制御部３０４、メモリ管理ＤＢ３０５、排他制御部３０６によって、たとえば、図２に示した決定部２０２の機能を実現する。
【００５５】
（メモリ管理ＤＢ３０５の概要）
ここで、図４を用いて、この発明の実施の形態にかかるメモリ管理ＤＢ３０５の概要について説明する。図４は、この発明の実施の形態にかかるメモリ管理ＤＢの概要を示す説明図である。
【００５６】
図４において、メモリ管理ＤＢ３０５は、あらかじめ各処理単位３０１に対する排他制御の種類応じて設定される実行メモリに関する、割込み制御用メモリ管理テーブル４０１、ディスパッチ制御用メモリ管理テーブル４０２、セマフォ１用メモリ管理テーブル４０３、セマフォ２用メモリ管理テーブル４０４が記録されている。
【００５７】
割込み制御用メモリ管理テーブル４０１は、割込み制御によって、割込み禁止状態に設定されている場合に各処理単位３０１がアクセスする実行メモリＡが設定されている。
【００５８】
ディスパッチ制御用メモリ管理テーブル４０２は、ディスパッチ制御によって、ディスパッチ禁止状態に設定されている場合に各処理単位３０１がアクセスする実行メモリＢが設定されている。
【００５９】
また、セマフォ１用メモリ管理テーブル４０３、セマフォ２用メモリ管理テーブル４０４は、セマフォ制御によって、セマフォ１あるいはセマフォ２の獲得状態に設定されている場合に各処理単位３０１がアクセスする実行メモリＣ−１，Ｃ−２がそれぞれ設定されている。
【００６０】
なお、図４では説明を省略したが、図３に示した排他制御をおこなわないでアクセスする実行メモリＤは、たとえば、共有メモリ３０３における実行メモリＡ、実行メモリＢと、実行メモリＣ−１，Ｃ−２以外に設定する。
【００６１】
各メモリ管理テーブルは、それぞれメモリの識別ＩＤ（ＩＤｅｎｔｉｆｉｅｒ）と、開始アドレスと、メモリサイズとが設定されている。識別ＩＤは、動的メモリや静的メモリなどのメモリの種類の識別に利用される。そして、動的メモリや静的メモリは、それぞれ開始アドレスからメモリサイズ分だけ共有メモリ３０３に設定されている。すなわち、メモリサイズが０である場合、該当するメモリはないことを示す。
【００６２】
ここで、動的メモリは、ＯＳによるメモリ管理によって割り当てられたメモリ領域のことで、制御用に使用されることも多く、排他を条件として処理単位３０１がアクセスすることとしてもよい。また、動的メモリをメモリレベルごとに管理するため、ＯＳがヒープメモリから動的メモリを割り当てる際には、メモリレベルに応じたメモリ領域からメモリを割り当てることとなる。したがって、メモリ要求元は、引数で獲得したいメモリレベルをＯＳに通知する必要がある。
【００６３】
また、静的メモリは、外部変数やｓｔａｔｉｃ変数などのＢＢＳ（ｂｌｏｃｋ  ｓｔａｒｔｅｄ  ｂｙ  ｓｙｍｂｏｌ）領域のことで、複数の処理からアクセスされることが多く、排他を条件として処理単位３０１がアクセスすることとしてもよい。また、静的メモリをメモリレベルごとに設定するためには、メモリレベルごとにファイルを分けて各ファイルにメモリの実体を生成し、リンカの配置機能によりファイル単位でメモリを割り当てることとなる。
【００６４】
（処理単位３０１による実行メモリへのアクセスの概要）
つぎに、図５〜図８を用いて、この発明の実施の形態にかかる情報処理装置１００における処理単位３０１による実行メモリへのアクセスの概要について説明する。図５〜図８では、通常状態（初期状態）、割込み禁止状態、ディスパッチ禁止状態およびセマフォの獲得状態の各排他制御の種類ごとにおける実行メモリへのアクセスについて説明する。
【００６５】
図５は、この発明の実施の形態にかかる通常状態における処理単位の実行メモリへのアクセスの概要を示す説明図である。図５において、情報処理装置１００は、割込み制御部５０１と、ディスパッチ制御部５０２と、セマフォ制御部５０３と、処理単位３０１と、ＭＭＵ３０２と、共有メモリ３０３と、から構成されている。
【００６６】
割込み制御部５０１、ディスパッチ制御部５０２およびセマフォ制御部５０３は、具体的には、たとえば、図３に示した排他制御部３０６の機能を実現し、処理単位３０１の実行メモリへのアクセスにおける排他制御をＭＭＵ３０２に割り当てる。図５に示す通常状態では、実行メモリＡ、実行メモリＢ、実行メモリＣ−１，Ｃ−２は、ＭＭＵ３０２によって、それぞれ処理単位３０１によるアクセスの禁止が設定されている。
【００６７】
図６は、この発明の実施の形態にかかる割込み禁止状態における処理単位の実行メモリへのアクセスの概要を示す説明図である。図６において、実行メモリＡは、割込み制御部５０１によって管理されるメモリに設定されている。
【００６８】
割込み制御部５０１は、排他制御が割込み禁止状態に決定されると、割込み禁止状態に設定するとともに、ＭＭＵ３０２に対して、割込み禁止状態とする排他制御に応じた実行メモリＡのアクセス許可を指示する。このようにして、処理単位３０１が割込み禁止状態である場合、処理単位３０１は、実行メモリＡにアクセスすることができる。
【００６９】
そして、割込み禁止状態が解除されると、割込み制御部５０１は、ＭＭＵ３０２に対して実行メモリＡのアクセスを禁止する。また、処理単位３０１が割込み禁止状態が解除された状態で実行メモリＡにアクセスすると、ＭＭＵ３０２によってＭＭＵ例外が発生して、排他漏れの箇所を迅速に確認することができる。
【００７０】
図７は、この発明の実施の形態にかかるディスパッチ禁止状態における処理単位の実行メモリへのアクセスの概要を示す説明図である。図７において、実行メモリＢは、ディスパッチ制御部５０２によって管理されるメモリに設定されている。
【００７１】
ディスパッチ制御部５０２は、排他制御がディスパッチ禁止状態に決定されると、ディスパッチ禁止状態に設定するとともに、ＭＭＵ３０２に対して、ディスパッチ禁止状態とする排他制御に応じた実行メモリＢのアクセス許可を指示する。このようにして、処理単位３０１がディスパッチ禁止状態である場合、処理単位３０１は、実行メモリＢにアクセスすることができる。
【００７２】
そして、ディスパッチ禁止状態が解除されると、ディスパッチ制御部５０２は、ＭＭＵ３０２に対して実行メモリＢのアクセスを禁止する。また、処理単位３０１がディスパッチ禁止状態が解除された状態で実行メモリＢにアクセスすると、ＭＭＵ３０２によってＭＭＵ例外が発生して、排他漏れの箇所を迅速に確認することができる。
【００７３】
図８は、この発明の実施の形態にかかるセマフォ獲得状態における処理単位の実行メモリへのアクセスの概要を示す説明図である。図８において、実行メモリＣ−１，Ｃ−２は、セマフォ制御部５０３におけるセマフォ１およびセマフォ２によって管理されるメモリごとに設定されている。
【００７４】
セマフォ制御部５０３は、処理単位３０１からセマフォの獲得要求がおこなわれると、処理単位にセマフォ１を割り当てるとともに、ＭＭＵ３０２に対して、セマフォ１応じた実行メモリＣ−１のアクセス許可を指示する。このようにして、処理単位３０１がセマフォ１の獲得状態である場合、処理単位３０１は、実行メモリＣ−１にアクセスすることができる。
【００７５】
そして、処理単位３０１がセマフォ１をセマフォ制御部５０３に返却すると、セマフォ制御部５０３は、ＭＭＵ３０２に対してセマフォ１に応じた実行メモリＣ−１のアクセスを禁止する。また、処理単位３０１がセマフォ１を未獲得の状態で実行メモリＣ−１にアクセスすると、ＭＭＵ３０２によってＭＭＵ例外が発生して、排他漏れの箇所を迅速に確認することができる。
【００７６】
（情報処理装置１００の処理の内容）
つぎに、図９〜図１７を用いて、この発明の実施の形態にかかる情報処理装置１００の処理の内容について説明する。図９は、この発明の実施の形態にかかる情報処理装置の全体の処理の内容を示すフローチャートである。図９のフローチャートにおいて、まず、ＭＭＵ３０２によって、情報処理装置１００の起動時に、メモリ管理ＤＢ３０５に記録されたテーブルを参照して、共有メモリ３０３へのアクセスの禁止を設定する（ステップＳ９０１）。
【００７７】
そして、情報処理装置１００に入力される情報処理データに応じて、ＯＳによって、処理単位３０１に対する排他制御を決定する（ステップＳ９０２）。ステップＳ９０２において決定される排他制御は、たとえば、割込み制御やディスパッチ制御やセマフォ制御などであり、決定される排他制御に応じて、ディスパッチが発生する度に処理単位３０１を切り替ることにより、後述する図１０、図１２、図１４に示す制御処理をおこなう。
【００７８】
（割込み制御処理手順）
まず、図１０を用いて、この発明の実施の形態にかかる情報処理装置１００における割込み制御による排他処理手順について説明する。図１０は、この発明の実施の形態にかかる情報処理装置における割込み制御による排他処理手順を示すフローチャートである。
【００７９】
図１０において、まず、図９に示したステップＳ９０２において決定された排他制御が、割込み制御であった場合、処理単位３０１が実行メモリＡにアクセスするため、ＭＭＵ３０２によって、割込み制御関数（ｅｘｐ＿ｍａｓｋ関数）を呼出し、割込み禁止状態に設定する（ｏｌｄｍａｓｋ＝ｅｘｐ＿ｍａｓｋ（ＡＬＬ）；）（ステップＳ１００１）。割込み制御関数は、たとえば、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリなどのメモリに記録されており、ＣＰＵの制御にしたがって呼出される。
【００８０】
つぎに、ステップＳ１００１において、呼出された割込み制御関数によって実行メモリＡへのアクセス禁止状態が解除されているため、処理単位３０１は、実行メモリＡをアクセスする（ステップＳ１００２）。
【００８１】
そして、ステップＳ１００２におけるアクセスが終了すると、排他を解除するため、ＭＭＵ３０２によって、割込み制御関数（ｅｘｐ＿ｍａｓｋ関数）を呼出し、割込み禁止状態を解除する（ｅｘｐ＿ｍａｓｋ（ｏｌｄｍａｓｋ）；）（ステップＳ１００３）。ステップＳ１００３における割込み禁止状態の解除により、実行メモリＡへのアクセスが禁止状態となる。
【００８２】
その後、ディスパッチ発生まで処理を継続して（ステップＳ１００４）、ディスパッチ発生によって、図９に示したステップＳ９０２へ戻って処理を繰り返す。
【００８３】
ここで、図１１を用いて、この発明の実施の形態にかかる情報処理装置１００における図１０に示したステップＳ１００１およびステップＳ１００３の割込み制御関数を用いた割込み制御の処理手順について説明する。図１１は、この発明の実施の形態にかかる割込み制御関数を用いた割込み制御の処理（図１０のステップＳ１００１，Ｓ１００３）手順を示すフローチャートである。
【００８４】
図１１のフローチャートにおいて、まず、割込み制御関数によって、現在の割込みの状態を記録する（ステップＳ１１０１）。割込みの状態の記録は、たとえば、処理単位３０１によるアクセスの終了後などで復帰する際に変更する前の割込みの状態とするために、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリなどのメモリに記録する。
【００８５】
つぎに、ＯＳによって、現在の状態と設定しようとする状態が違うか否かを判断する（ステップＳ１１０２）。ステップＳ１１０２において、現在の状態と設定しようとする状態が違う場合（ステップＳ１１０２：Ｙｅｓ）は、ＯＳによって割込み禁止状態に変更するか否かを判断する（ステップＳ１１０３）。
【００８６】
ステップＳ１１０３において、割込み禁止状態に変更する場合（ステップＳ１１０３：Ｙｅｓ）は、メモリ制御部３０４によって、メモリ管理ＤＢ３０５に記録されたテーブルを参照して、割込み禁止状態でアクセスを許可するメモリのアドレスを抽出する（ステップＳ１１０４）。
【００８７】
そして、排他制御部３０６によって、ステップＳ１１０４において抽出されたメモリ（実行メモリＡ）のＭＭＵ３０２に対するアクセスの許可設定をおこなう（ステップＳ１１０５）。
【００８８】
つぎに、ＭＭＵ３０２によって、ステップＳ１１０５においておこなわれた許可設定に応じて、割込みを禁止状態に変更し（ステップＳ１１０６）、変更前の状態を復帰値として復帰して（ステップＳ１１０７）、一連の割込み制御の処理を終了する。
【００８９】
また、ステップＳ１１０３において、割込み禁止状態に変更しない場合（ステップＳ１１０３：Ｎｏ）は、メモリ制御部３０４によって、メモリ管理ＤＢ３０５に記録されたテーブルを参照して、割込み禁止状態でアクセスを禁止するメモリのアドレスを抽出する（ステップＳ１１０８）。
【００９０】
そして、排他制御部３０６によって、ステップＳ１１０８において抽出されたメモリ（実行メモリＡ）のＭＭＵ３０２に対するアクセスの禁止設定をおこなう（ステップＳ１１０９）。
【００９１】
つぎに、ＭＭＵ３０２によって、ステップＳ１１０９においておこなわれた禁止設定に応じて、割込みを許可状態に変更し（ステップＳ１１１０）、変更前の状態を復帰値として復帰して（ステップＳ１１０７）、一連の割込み制御の処理を終了する。
【００９２】
また、ステップＳ１１０２において、現在の状態と設定しようとする状態が同一の場合（ステップＳ１１０２：Ｎｏ）は、ステップＳ１１０７へ移行して、現在の状態を変更前の状態とみなし、変更前の状態を復帰値として復帰して（ステップＳ１１０７）、一連の割込み制御の処理を終了する。
【００９３】
（ディスパッチ制御処理手順）
つぎに、図１２を用いて、この発明の実施の形態にかかる情報処理装置１００におけるディスパッチ制御による排他処理手順について説明する。図１２は、この発明の実施の形態にかかる情報処理装置におけるディスパッチ制御による排他処理手順を示すフローチャートである。
【００９４】
図１２において、まず、図９に示したステップＳ９０２において決定された排他制御が、ディスパッチ制御であった場合、処理単位３０１が実行メモリＡにアクセスするため、ＭＭＵ３０２によって、ディスパッチ制御関数（ｔｈｒ＿ｄｉｓｐａｔｃｈ関数）を呼出し、ディスパッチ禁止状態に設定する（ｏｌｄｓｔａｔ＝ｔｈｒ＿ｄｉｓｐａｔｃｈ（ＤＩＳＡＢＬＥ）；）（ステップＳ１２０１）。ディスパッチ制御関数は、たとえば、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリなどのメモリに記録されており、ＣＰＵの制御にしたがって呼出される。
【００９５】
つぎに、ステップＳ１２０１において、呼出されたディスパッチ制御関数によって実行メモリＢへのアクセス禁止状態が解除されているため、処理単位３０１は、実行メモリＢをアクセスする（ステップＳ１２０２）。
【００９６】
そして、ステップＳ１２０２におけるアクセスが終了すると、排他を解除するため、ＭＭＵ３０２によって、ディスパッチ制御関数（ｔｈｒ＿ｄｉｓｐａｔｃｈ関数）を呼出し、ディスパッチ禁止状態を解除する（ｔｈｒ＿ｄｉｓｐａｔｃｈ（ｏｌｄｓｔａｔ）；）（ステップＳ１２０３）。ステップＳ１２０３におけるディスパッチ禁止状態の解除により、実行メモリＢへのアクセスが禁止状態となる。
【００９７】
その後、ディスパッチ発生まで処理を継続して（ステップＳ１２０４）、ディスパッチ発生によって、図９に示したステップＳ９０２へ戻って処理を繰り返す。
【００９８】
ここで、図１３を用いて、この発明の実施の形態にかかる情報処理装置１００における図１２に示したステップＳ１２０１およびステップＳ１２０３のディスパッチ制御関数を用いたディスパッチ制御の処理手順について説明する。図１３は、この発明の実施の形態にかかるディスパッチ制御関数を用いたディスパッチ制御の処理（図１２のステップＳ１２０１，Ｓ１２０３）手順を示すフローチャートである。
【００９９】
図１３のフローチャートにおいて、まず、ディスパッチ制御関数によって、ＯＳによるディスパッチ禁止要求か否かを判断する（ステップＳ１３０１）。ステップＳ１３０１において、ディスパッチ禁止要求である場合（ステップＳ１３０１：Ｙｅｓ）は、図示しないディスパッチ制御カウンタをカウントアップする（ステップＳ１３０２）。
【０１００】
そして、ステップＳ１３０２においてカウントアップされたディスパッチ制御カウンタのカウンタ値から、ＯＳによって、状態の変更が必要か否かを判断する（ステップＳ１３０３）。具体的には、たとえば、ディスパッチ制御カウンタにおけるカウンタ値は、１の状態の場合なら状態の変更が必要と判断し、２以上なら既にディスパッチ禁止状態なので状態の変更が必要ないと判断する。
【０１０１】
ステップＳ１３０３において、状態の変更が必要と判断された場合（ステップＳ１３０３：Ｙｅｓ）は、メモリ制御部３０４によって、メモリ管理ＤＢ３０５に記録されたテーブルを参照して、ディスパッチ禁止状態でアクセスを許可するメモリのアドレスを抽出する（ステップＳ１３０４）。
【０１０２】
そして、排他制御部３０６によって、ステップＳ１３０４において抽出されたメモリ（実行メモリＢ）のＭＭＵ３０２に対するアクセスの許可設定をおこなう（ステップＳ１３０５）。
【０１０３】
つぎに、ＭＭＵ３０２によって、ステップＳ１３０５においておこなわれた許可設定に応じて、ディスパッチを禁止状態に変更し（ステップＳ１３０６）、正常復帰して（ステップＳ１３０７）、一連のディスパッチ制御の処理を終了する。
【０１０４】
また、ステップＳ１３０３において、状態の変更が必要ないと判断された場合（ステップＳ１３０３：Ｎｏ）は、ステップＳ１３０７へ移行して、正常復帰して（ステップＳ１３０７）、一連のディスパッチ制御の処理を終了する。
【０１０５】
ステップＳ１３０１において、ディスパッチ禁止要求でない場合（ステップＳ１３０１：Ｎｏ）は、図示しないディスパッチ制御カウンタをカウントダウンする（ステップＳ１３０８）。換言すれば、ディスパッチ許可要求である場合に、ディスパッチ制御カウンタをカウントダウンする構成である。
【０１０６】
そして、ステップＳ１３０８においてカウントダウンされたディスパッチ制御カウンタのカウンタ値から、ＯＳによって、状態の変更が必要か否かを判断する（ステップＳ１３０９）。具体的には、たとえば、ディスパッチ制御カウンタにおけるカウンタ値は、０の状態の場合なら状態の変更が必要と判断し、１以上なら状態の変更が必要なく、まだディスパッチ禁止状態を継続させると判断する。
【０１０７】
ステップＳ１３０９において、状態の変更が必要と判断された場合（ステップＳ１３０９：Ｙｅｓ）は、メモリ制御部３０４によって、メモリ管理ＤＢ３０５に記録されたテーブルを参照して、ディスパッチ禁止状態でアクセスを禁止するメモリのアドレスを抽出する（ステップＳ１３１０）。
【０１０８】
そして、排他制御部３０６によって、ステップＳ１３１０において抽出されたメモリ（実行メモリＢ）のＭＭＵ３０２に対するアクセスの禁止設定をおこなう（ステップＳ１３１１）。
【０１０９】
つぎに、ＭＭＵ３０２によって、ステップＳ１３１１においておこなわれた禁止設定に応じて、ディスパッチを許可状態に変更し（ステップＳ１３１２）、正常復帰して（ステップＳ１３０７）、一連のディスパッチ制御の処理を終了する。
【０１１０】
また、ステップＳ１３０９において、状態の変更が必要ないと判断された場合（ステップＳ１３０９：Ｎｏ）は、ディスパッチ禁止状態を継続させるため、ステップＳ１３０７へ移行して、そのまま正常復帰して（ステップＳ１３０７）、一連のディスパッチ制御の処理を終了する。
【０１１１】
（セマフォ制御処理手順）
つぎに、図１４を用いて、この発明の実施の形態にかかる情報処理装置１００におけるセマフォ制御による排他処理手順について説明する。図１４は、この発明の実施の形態にかかる情報処理装置におけるセマフォ制御による排他処理手順を示すフローチャートである。
【０１１２】
図１４において、まず、図９に示したステップＳ９０２において決定された排他制御が、セマフォ制御であった場合、処理単位３０１が実行メモリＣ（実行メモリＣ−１，Ｃ−２）にアクセスするため、ＭＭＵ３０２によって、セマフォ獲得関数（ｓｅｍ＿ｗａｉｔ関数）を呼出し、セマフォを獲得する（ｓｅｍ＿ｗａｉｔ（ＩＤ）；）（ステップＳ１４０１）。セマフォ獲得関数は、たとえば、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリなどのメモリに記録されており、ＣＰＵの制御にしたがって呼出される。
【０１１３】
つぎに、ステップＳ１４０１において、呼出されたセマフォ獲得関数によって実行メモリＣへのアクセス禁止状態が解除されているため、セマフォを獲得した処理単位３０１は、実行メモリＣをアクセスする（ステップＳ１４０２）。
【０１１４】
そして、ステップＳ１４０２におけるアクセスが終了すると、排他を解除するため、ＭＭＵ３０２によって、セマフォ解放関数（ｓｅｍ＿ｆｒｅｅ関数）を呼出し、セマフォを解放する（ｓｅｍ＿ｆｒｅｅ（ＩＤ）；）（ステップＳ１４０３）。セマフォ解放関数は、たとえば、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリなどのメモリに記録されており、ＣＰＵの制御にしたがって呼出される。このステップＳ１４０３におけるセマフォの解放により、実行メモリＣへのアクセスが禁止状態となる。
【０１１５】
その後、ディスパッチ発生まで処理を継続して（ステップＳ１４０４）、ディスパッチ発生によって、図９に示したステップＳ９０２へ戻って処理を繰り返す。
【０１１６】
ここで、図１５を用いて、この発明の実施の形態にかかる情報処理装置１００における図１４に示したステップＳ１４０１のセマフォ獲得関数を用いたセマフォ制御の処理手順について説明する。図１５は、この発明の実施の形態にかかるセマフォ獲得関数を用いたセマフォ制御の処理（図１４のステップＳ１４０１）手順を示すフローチャートである。
【０１１７】
図１５のフローチャートにおいて、まず、セマフォ獲得関数によって、セマフォが獲得できるか否かを判断する（ステップＳ１５０１）。具体的には、たとえば、セマフォの獲得は、セマフォ制御部５０３によってセマフォ１やセマフォ２が割り当てられるか否かを判断する。
【０１１８】
ステップＳ１５０１において、セマフォが獲得できるのを待って、獲得できた場合（ステップＳ１５０１：Ｙｅｓ）は、セマフォ制御部５０３におけるセマフォ数を減算する（ステップＳ１５０２）。具体的には、たとえば、セマフォ数の減算は、セマフォ１を割り当てている間は、セマフォ制御部５０３のセマフォはセマフォ２のみとなる。
【０１１９】
つぎに、メモリ制御部３０４によって、メモリ管理ＤＢ３０５に記録されたテーブルを参照して、セマフォ獲得状態でアクセスを許可するメモリのアドレスを抽出する（ステップＳ１５０３）。
【０１２０】
そして、排他制御部３０６によって、ステップＳ１５０３において抽出されたメモリ（実行メモリＣ）のＭＭＵ３０２に対するアクセスの許可設定をおこない（ステップＳ１５０４）、正常復帰して（ステップＳ１５０５）、一連のセマフォ獲得関数を用いたセマフォ制御の処理を終了する。
【０１２１】
つぎに、図１６を用いて、この発明の実施の形態にかかる情報処理装置１００における図１４に示したステップＳ１４０３のセマフォ解放関数を用いたセマフォ制御の処理手順について説明する。図１６は、この発明の実施の形態にかかるセマフォ解放関数を用いたセマフォ制御の処理（図１４のステップＳ１４０３）手順を示すフローチャートである。
【０１２２】
図１６のフローチャートにおいて、まず、セマフォ解放関数によって、セマフォ数を加算する（ステップＳ１６０１）。換言すれば、セマフォ数の加算は、たとえば、セマフォ制御部５０３がセマフォ１を割り当てていた場合、セマフォ１が返却されて、セマフォ制御部５０３のセマフォがセマフォ１とセマフォ２とになる。
【０１２３】
つぎに、メモリ制御部３０４によって、メモリ管理ＤＢ３０５に記録されたテーブルを参照して、セマフォ解放状態でアクセスを禁止するメモリのアドレスを抽出する（ステップＳ１６０２）。
【０１２４】
そして、排他制御部３０６によって、ステップＳ１６０２において抽出されたメモリ（実行メモリＣ）のＭＭＵ３０２に対するアクセスの禁止設定をおこなう（ステップＳ１６０３）。
【０１２５】
その後、セマフォ制御部５０３によって、セマフォ待ちをしている処理単位３０１があるか否かを判断する（ステップＳ１６０４）。ステップＳ１６０４において、セマフォ待ちをしている処理単位３０１がない場合（ステップＳ１６０４：Ｎｏ）は、そのまま正常復帰して（ステップＳ１６０５）、一連のセマフォ解放関数を用いたセマフォ制御の処理を終了する。
【０１２６】
また、ステップＳ１６０４において、セマフォ待ちをしている処理単位３０１がある場合（ステップＳ１６０４：Ｙｅｓ）は、セマフォ待ちをしている処理単位３０１を起動させて（ステップＳ１６０６）、正常復帰して（ステップＳ１６０５）、一連のセマフォ解放関数を用いたセマフォ制御の処理を終了する。
【０１２７】
なお、図１０〜図１６では、各排他制御ごとに処理手順を分けて説明したが、処理単位３０１は、複数の排他制御を組み合わせて排他処理することとしてもよい。具体的には、たとえば、割込み制御処理およびディスパッチ制御処理や、割込み制御処理およびセマフォ制御処理などを組み合わせてもよく、その排他制御の順序は任意としてもよい。
（排他漏れの際の処理手順）
つぎに、図１７を用いて、この発明の実施の形態にかかる情報処理装置１００における排他処理における排他漏れの際の処理手順について説明する。図１７は、この発明の実施の形態にかかる情報処理装置における排他漏れの際の処理手順を示すフローチャートである。
【０１２８】
図１７のフローチャートにおいて、まず、図１０や図１２や図１４に示した排他制御に関する制御関数を呼出さずに、処理単位３０１が実行メモリをアクセスしようとすると、ＭＭＵ３０２によりアクセスが阻止される（ステップＳ１７０１）。具体的には、たとえば、割込み制御関数を呼出さずに実行メモリＡにアクセスしようとしても、実行メモリＡへのアクセスはＭＭＵ３０２によって禁止された状態なので、アクセスできない。
【０１２９】
そして、ステップＳ１７０１において、実行メモリへのアクセスが阻止されると、ＭＭＵ３０２によって、アクセスエラー例外が発生する（ステップＳ１７０２）。
【０１３０】
つぎに、ＯＳによって、ステップＳ１７０２において発生したアクセスエラー例外から、アクセスエラー例外が発生した場所、アクセスできなかったアドレス情報を抽出する（ステップＳ１７０３）。具体的には、たとえば、アクセスエラー例外が発生すると、ＣＰＵのレジスタにアクセスエラー例外が発生した場所やアクセスできなかったアドレス情報が記録され、ＯＳは、レジスタに記録された情報を読み出すこととしてもよい。
【０１３１】
そして、ＣＰＵの制御にしたがって、エラーメッセージとともに取り出した情報を出力して（ステップＳ１７０４）、情報処理装置１００の動作を停止して（ステップＳ１７０５）、一連の処理を終了する。
【０１３２】
ステップＳ１７０４における情報の出力は、たとえば、表示装置などを用いて出力したり、ログファイルに出力することにより情報を記録することとしてもよい。このようにすれば、排他漏れを容易に特定することで、排他漏れに対するデバックを迅速かつ効率的におこなうことができる。
【０１３３】
以上説明したように、この発明の実施の形態によれば、共有メモリに排他制御に応じた実行メモリを設定して、ＭＭＵによって、各処理単位ごとの排他制御の種類に応じた制御関数を用いて実行メモリへのアクセスの禁止／許可を設定できる。したがって、共有メモリへのアクセスの競合を適切に排他することで、共有メモリの利用の最適化を図ることができる。すなわち、ハンドラなどの割込み制御であっても、割込み制御に応じた実行メモリへのアクセスを許可する構成であるため、処理単位による適切な共有メモリの利用を図ることができる。
【０１３４】
また、この発明の実施の形態によれば、制御関数を用いずに共有メモリにアクセスするとアクセスエラー例外が発生して、情報処理装置の動作を停止させることができる。したがって、排他漏れによるアクセスエラー発生箇所を容易に特定して、効率的なデバックを図ることができる。
【０１３５】
なお、本実施の形態で説明した情報処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１３６】
（付記１）共有メモリへのアクセスを制限する排他制御の種類に応じて当該共有メモリに設定された複数の実行メモリに対し、任意の処理単位によるアクセスの禁止が設定されている場合、情報処理の対象となる情報処理データの入力を受け付ける入力工程と、
前記入力工程によって入力された情報処理データに応じて、ＯＳによって選択される処理単位に対する排他制御の種類を決定する決定工程と、
前記決定工程によって決定された排他制御の種類に応じた前記実行メモリへのアクセスの禁止／許可を設定する制御関数によって、前記処理単位による前記実行メモリへのアクセスの許可を設定する許可設定工程と、
前記許可設定工程によって前記実行メモリへのアクセスが許可された場合、当該実行メモリにアクセスすることによって前記処理単位を実行する実行工程と、
を含むことを特徴とする情報処理方法。
【０１３７】
（付記２）前記実行工程によって前記処理単位の実行が終了した場合、前記制御関数によって、前記実行メモリへのアクセスの禁止を再設定する禁止設定工程を含むことを特徴とする付記１に記載の情報処理方法。
【０１３８】
（付記３）前記決定工程は、
前記処理単位による情報処理の種別に応じて、前記排他制御の種類を決定することを特徴とする付記１または２に記載の情報処理方法。
【０１３９】
（付記４）前記共有メモリに設定された前記実行メモリは、前記排他制御の種類ごとに複数設定されていることを特徴とする付記１〜３のいずれか一つに記載の情報処理方法。
【０１４０】
（付記５）前記許可設定工程による前記実行メモリへのアクセスの許可の設定の前に、前記処理単位によって当該実行メモリへのアクセスが試みられた場合、アクセスエラー例外を出力する出力工程を含むことを特徴とする付記１に記載の情報処理方法。
【０１４１】
（付記６）前記出力工程によって出力されたアクセスエラー例外によって、前記処理単位によるアクセスエラー発生箇所を検出する検出工程を含むことを特徴とする付記５に記載の情報処理方法。
【０１４２】
（付記７）共有メモリへのアクセスを制限する排他制御の種類に応じて当該共有メモリに設定された複数の実行メモリに対し、任意の処理単位によるアクセスの禁止が設定されている場合、情報処理の対象となる情報処理データの入力を受け付ける入力手段と、
前記入力手段によって入力された情報処理データに応じて、ＯＳによって選択される処理単位に対する排他制御の種類を決定する決定手段と、
前記決定手段によって決定された排他制御の種類に応じた前記実行メモリへのアクセスの禁止／許可を設定する制御関数によって、前記処理単位による前記実行メモリへのアクセスの許可を設定する許可設定手段と、
前記許可設定手段によって前記実行メモリへのアクセスが許可された場合、当該実行メモリにアクセスすることによって前記処理単位を実行する実行手段と、
を備えることを特徴とする情報処理装置。
【０１４３】
（付記８）共有メモリへのアクセスを制限する排他制御の種類に応じて当該共有メモリに設定された複数の実行メモリに対し、任意の処理単位によるアクセスの禁止が設定されている場合、情報処理の対象となる情報処理データの入力を受け付けさせる入力工程と、
前記入力工程によって入力された情報処理データに応じて、ＯＳによって選択される処理単位に対する排他制御の種類を決定させる決定工程と、
前記決定工程によって決定された排他制御の種類に応じた前記実行メモリへのアクセスの禁止／許可を設定する制御関数によって、前記処理単位による前記実行メモリへのアクセスの許可を設定させる許可設定工程と、
前記許可設定工程によって前記実行メモリへのアクセスが許可された場合、当該実行メモリにアクセスすることによって前記処理単位を実行させる実行工程と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【０１４４】
（付記９）付記８に記載の情報処理プログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【産業上の利用可能性】
【０１４５】
以上のように、本発明にかかる情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体は、ネットワークを介してコンテンツをダウンロードする場合に有用であり、特に、複数のサーバによって同一のコンテンツがダウンロードできる場合におけるダウンロード先の決定に適している。
【図面の簡単な説明】
【０１４６】
【図１】この発明の実施の形態にかかる情報処理装置のハードウェア構成を示すブロック図である。
【図２】この発明の実施の形態にかかる情報処理装置の機能的構成を示すブロック図である。
【図３】この発明の実施の形態にかかる情報処理装置の概要を示す説明図である。
【図４】この発明の実施の形態にかかるメモリ管理ＤＢの概要を示す説明図である。
【図５】この発明の実施の形態にかかる通常状態における処理単位の実行メモリへのアクセスの概要を示す説明図である。
【図６】この発明の実施の形態にかかる割込み禁止状態における処理単位の実行メモリへのアクセスの概要を示す説明図である。
【図７】この発明の実施の形態にかかるディスパッチ禁止状態における処理単位の実行メモリへのアクセスの概要を示す説明図である。
【図８】この発明の実施の形態にかかるセマフォ獲得状態における処理単位の実行メモリへのアクセスの概要を示す説明図である。
【図９】この発明の実施の形態にかかる情報処理装置の全体の処理の内容を示すフローチャートである。
【図１０】この発明の実施の形態にかかる情報処理装置における割込み制御による排他処理手順を示すフローチャートである。
【図１１】この発明の実施の形態にかかる割込み制御関数を用いた割込み制御の処理（図１０のステップＳ１００１，Ｓ１００３）手順を示すフローチャートである。
【図１２】この発明の実施の形態にかかる情報処理装置におけるディスパッチ制御による排他処理手順を示すフローチャートである。
【図１３】この発明の実施の形態にかかるディスパッチ制御関数を用いたディスパッチ制御の処理（図１２のステップＳ１２０１，Ｓ１２０３）手順を示すフローチャートである。
【図１４】この発明の実施の形態にかかる情報処理装置におけるセマフォ制御による排他処理手順を示すフローチャートである。
【図１５】この発明の実施の形態にかかるセマフォ獲得関数を用いたセマフォ制御の処理（図１４のステップＳ１４０１）手順を示すフローチャートである。
【図１６】この発明の実施の形態にかかるセマフォ解放関数を用いたセマフォ制御の処理（図１４のステップＳ１４０３）手順を示すフローチャートである。
【図１７】この発明の実施の形態にかかる情報処理装置における排他漏れの際の処理手順を示すフローチャートである。
【図１８】従来におけるＭＭＵ機能による排他の一例を示す説明図である。
【符号の説明】
【０１４７】
１００  情報処理装置
１１０  コンピュータ本体
１１１  光ディスク
１２０  入力装置
１２１  キーボード
１２２  マウス
１２３  スキャナ
１３０  出力装置
１３１  ディスプレイ
１３２  スピーカ
１３３  プリンタ
１４０  ネットワーク
２０１  入力部
２０２  決定部
２０３  アクセス設定部
２０４  実行部
２０５  出力部
２０６  検出部
３０１（３０１ａ，３０１ｂ，３０１ｃ）  処理単位
３０２  ＭＭＵ
３０３  共有メモリ
３０４  メモリ制御部
３０５  メモリ管理ＤＢ
３０６  排他制御部
【図１】
2008186429.tif 000003
【図２】
2008186429.tif 000004
【図３】
2008186429.tif 000005
【図４】
2008186429.tif 000006
【図５】
2008186429.tif 000007
【図６】
2008186429.tif 000008
【図７】
2008186429.tif 000009
【図８】
2008186429.tif 000010
【図９】
2008186429.tif 000011
【図１０】
2008186429.tif 000012
【図１１】
2008186429.tif 000013
【図１２】
2008186429.tif 000014
【図１３】
2008186429.tif 000015
【図１４】
2008186429.tif 000016
【図１５】
2008186429.tif 000017
【図１６】
2008186429.tif 000018
【図１７】
2008186429.tif 000019
【図１８】
2008186429.tif 000020