排他対象スレッドが共有資源へアクセスすると排他制御が解除されるまで前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理を、記憶領域に格納された前記排他対象スレッドの前記共有資源へのアクセスの試行回数に応じて、オペレーティングシステムが実行するコンピュータが、複数のスレッドのうちの第1のスレッドが、前記排他対象スレッドに前記共有資源へのアクセスが許可されるまで試行させる排他制御処理を実行した場合、前記第1のスレッド以外の前記排他対象スレッドを含む少なくとも一以上の第2のスレッドが、前記共有資源へのアクセスの試行回数を計数する計数処理と、前記計数処理によって計数された試行回数を前記第2のスレッドが、前記記憶領域に格納する格納処理と、を実行することを特徴とする排他制御方法。前記第2のスレッドは、前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理に関する情報、または、前記共有資源へのアクセスが許可されるまで試行させる排他制御処理に関する情報を参照すること、を特徴とする請求項1に記載の排他制御方法。前記排他対象スレッドが前記共有資源へのアクセスが許可されるまで試行する排他制御処理は前記オペレーティングシステムを介することなく試行されること、を特徴とする請求項1または請求項2に記載の排他制御方法。複数のスレッドのうちの第1のスレッドが、排他対象スレッドに共有資源へのアクセスが許可されるまで試行させる排他制御処理を実行した場合、前記第1のスレッド以外の前記排他対象スレッドを含む少なくとも一以上の第2のスレッドが前記共有資源へのアクセスの試行回数を記憶領域に格納する処理を実行するコンピュータが、オペレーティングシステムが、前記記憶領域に格納された前記スレッドの前記共有資源へのアクセスの試行回数を検出する検出処理と、前記オペレーティングシステムが、前記検出処理によって検出された試行回数が所定回数以上であるか否かを判断する判断処理と、前記オペレーティングシステムが、前記判断処理によって前記試行回数が前記所定回数以上であると判断された場合、前記排他対象スレッドが前記共有資源へアクセスすると排他制御が解除されるまで前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理を実行する実行処理と、を実行することを特徴とする排他制御方法。前記オペレーティングシステムは、前記共有資源へのアクセスの試行を禁止する排他制御処理に関する情報を前記複数のスレッドがアクセス可能な領域に設定すること、を特徴とする請求項4に記載の排他制御方法。前記排他対象スレッドが前記共有資源へのアクセスが許可されるまで試行する排他制御処理は前記オペレーティングシステムを介することなく試行されること、を特徴とする請求項4または請求項5に記載の排他制御方法。前記オペレーティングシステムが、前記第2のスレッドが複数ある場合、前記検出処理によって検出された前記第2のスレッドごとの前記試行回数の平均値を算出する算出処理を実行し、前記判断処理は、前記算出処理によって算出された平均値が前記所定回数以上であるか否かを判断し、前記実行処理は、前記判断処理によって前記平均値が前記所定回数以上であると判断された場合、前記排他対象スレッドが前記共有資源へアクセスすると排他制御が解除されるまで前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理を実行することを特徴とする請求項4~6のいずれか一つに記載の排他制御方法。排他対象スレッドに共有資源へのアクセスが許可されるまで試行させる排他制御処理を、前記排他対象スレッドから前記共有資源へのアクセス開始からの経過時間に応じて、複数のスレッドのうちの第1のスレッドが実行するコンピュータが、オペレーティングシステムが、排他対象スレッドが共有資源へアクセスすると排他制御が解除されるまで前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理を実行した場合、前記経過時間が所定時間以上であるか否かを判断する判断処理と、前記オペレーティングシステムが、前記判断処理によって前記経過時間が前記所定時間以上でないと判断された場合、前記排他対象スレッドの前記共有資源へのアクセスの試行の禁止を解除する変更処理と、を実行することを特徴とする排他制御方法。前記オペレーティングシステムが、前記判断処理によって前記経過時間が前記所定時間より長いと判断する場合、前記排他対象スレッドの前記共有資源へのアクセスの試行の禁止を継続すること、を特徴とする請求項8に記載の排他制御方法。排他対象スレッドが共有資源へアクセスすると排他制御が解除されるまで前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理を、記憶領域に格納された前記排他対象スレッドの前記共有資源へのアクセスの試行回数に応じて、オペレーティングシステムが実行するコンピュータに、複数のスレッドのうちの第1のスレッドが、前記排他対象スレッドに前記共有資源へのアクセスが許可されるまで試行させる排他制御処理を実行した場合、前記第1のスレッド以外の前記排他対象スレッドを含む少なくとも一以上の第2のスレッドが、前記共有資源へのアクセスの試行回数を計数する計数処理と、前記計数処理によって計数された試行回数を前記第2のスレッドが、前記記憶領域に格納する格納処理と、を実行させることを特徴とする排他制御プログラム。前記第2のスレッドは、前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理に関する情報、または、前記共有資源へのアクセスが許可されるまで試行させる排他制御処理に関する情報を参照すること、を特徴とする請求項10に記載の排他制御プログラム。前記排他対象スレッドが前記共有資源へのアクセスが許可されるまで試行する排他制御処理は前記オペレーティングシステムを介することなく試行されること、を特徴とする請求項10または請求項11に記載の排他制御プログラム。複数のスレッドのうちの第1のスレッドが、排他対象スレッドに共有資源へのアクセスが許可されるまで試行させる排他制御処理を実行した場合、前記第1のスレッド以外の前記排他対象スレッドを含む少なくとも一以上の第2のスレッドが前記共有資源へのアクセスの試行回数を記憶領域に格納する処理を実行するコンピュータに、オペレーティングシステムが、前記記憶領域に格納された前記スレッドの前記共有資源へのアクセスの試行回数を検出する検出処理と、前記オペレーティングシステムが、前記検出処理によって検出された試行回数が所定回数以上であるか否かを判断する判断処理と、前記オペレーティングシステムが、前記判断処理によって前記試行回数が前記所定回数以上であると判断された場合、前記排他対象スレッドが前記共有資源へアクセスすると排他制御が解除されるまで前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理を実行する実行処理と、を実行させることを特徴とする排他制御プログラム。前記オペレーティングシステムは、前記共有資源へのアクセスの試行を禁止する排他制御処理に関する情報を前記複数のスレッドがアクセス可能な領域に設定すること、を特徴とする請求項13に記載の排他制御プログラム。前記排他対象スレッドが前記共有資源へのアクセスが許可されるまで試行する排他制御処理は前記オペレーティングシステムを介することなく試行されること、を特徴とする請求項13または請求項14に記載の排他制御プログラム。しかしながら、従来技術では排他制御でOSを利用する際の呼び出しコストについては考慮されていないという問題点がある。スピンロックで単純に排他フラグを確認するだけの処理は通常は数命令程度で実現でき、メモリアクセスのコストを考慮しても数十~数百[ナノ秒]程度で一回の排他フラグの確認を行うことができる。しかしながら、排他フラグの更新をOSで行う場合は排他フラグを確認するためにOSを呼び出さなければならない。アプリケーションプログラムからOSの処理を呼び出すためには割り込みを使ってCPUを特権モードに遷移させるなどの処理が行われるため、数十[μ秒]~数百[μ秒]とフラグの確認処理よりも遙かに多くの時間がかかる。図17は、OSの利用による呼び出しコストを示す説明図である。図17のように、スレッドが排他フラグを確認した直後時刻t1、別のCPUによりフラグが開放された場合、OSの機能を利用しない場合左側の図の場合にはスレッドが時刻t2でフラグを獲得して共有資源を使った処理を開始できる。しかしながら、OSの機能を利用した場合右側の図の場合は、OSが割り込みの復帰を行ってからスレッドの処理に戻る。そして、スレッドからの再度排他獲得要求によりOSに処理が移って、OSが排他権を獲得して、またスレッドの処理に戻るなど、OSとスレッドの処理実行を行き来することになり、時刻t2’になるまでスレッドが共有資源を利用した処理を開始できない。たとえば、従来技術のように、トライロックによる排他制御処理とスピンロックによる排他制御処理をOSが切り替えると、OSとスレッドの実行を行き来するために、OSによるオーバーヘッドが生じる問題点があった。本発明は、上述した従来技術による問題点を解消するため、OSによるオーバーヘッドを削減することができる排他制御方法、および排他制御プログラムを提供することを目的とする。上述した課題を解決し、目的を達成するため、本発明の一の側面によれば、排他対象スレッドが共有資源へアクセスすると排他制御が解除されるまで前記排他対象スレッドの前記共有資源へのアクセスの試行を禁止する排他制御処理を、記憶領域に格納された前記排他対象スレッドの前記共有資源へのアクセスの試行回数に応じて、オペレーティングシステムが実行し、複数のスレッドのうちいずれかのスレッドにより、前記排他対象スレッドに前記共有資源へのアクセスが許可されるまで試行させる排他制御処理を実行した場合、前記複数のスレッドのうち前記いずれかのスレッド以外の前記排他対象スレッドとなる残余のスレッドにより、前記共有資源へのアクセスの試行回数を計数し、計数された試行回数を前記残余のスレッドにより、前記記憶領域に格納する排他制御方法、および排他制御プログラムが提案される。本発明の一の側面によれば、OSによるオーバーヘッドを削減することができるという効果を奏する。以下に添付図面を参照して、本発明にかかる排他制御方法、および排他制御プログラムの実施の形態を詳細に説明する。図1は、本発明の一例を示す説明図である。スレッドAとスレッドBとが変数xを共有している。ここでは、排他フラグの状態が空きであり、排他方式フラグがスピンロックを示していることとする。たとえば、スレッドAが、1変数xへアクセスするために排他フラグを利用中に設定すると、スレッドAから変数xへのアクセスが許可される。スレッドBが、変数xへアクセスするために排他フラグを取得すると、すでに利用中に変更されているため、変数xへのアクセスが禁止される。すなわち、スレッドBがスピンロックによる排他制御処理を実行する。スレッドBが、2変数xへのアクセスが許可されるまで排他フラグの取得を繰り返し、アクセス可能か否かを試行する。スレッドBが、たとえば、試行する都度、3試行回数を計数し、4スピンロックカウンタに試行回数を格納する。たとえば、OSが、一定のタイミングで、5スピンロックカウンタの値を検出する。たとえば、OSが、6スピンロックカウンタの値が所定回数以上であるか否かを判断する。たとえば、OSが、スピンロックカウンタの値が所定回数以上である場合、7スレッドBを停止させることにより、スレッドBからのアクセスの試行を禁止する。本排他制御装置はシングルコアシステムであってもマルチコアプロセッサシステムであってもよいが、本実施の形態ではマルチコアプロセッサシステムを例に挙げて説明する。ここで、マルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。マルチコアプロセッサシステムのハードウェア例図2は、実施の形態にかかるマルチコアプロセッサシステムのハードウェア例を示すブロック図である。マルチコアプロセッサシステム200は、CPU201_1と、CPU201_2と、CPU201_3と、ディスプレイ202と、キーボード203と、I/F204InterFaceと、RAM206RandomAccessMemoryと、ROM207ReadOnlyMemoryと、を有している。マルチコアプロセッサシステム200は、フラッシュROM208と、フラッシュROMコントローラ209と、フラッシュROM210と、を有している。CPU201_1~201_3と、ディスプレイ202と、キーボード203と、I/F204と、RAM206と、ROM207と、フラッシュROM208と、フラッシュROMコントローラ209とは、バス211を介して接続されている。ここで、CPU201_1~201_3は、それぞれレジスタとコアとキャッシュを有している。コアは、演算機能を有している。各CPU内のレジスタは、PCProgramCounterやリセットレジスタを有している。CPU201_1はマスタCPUであり、マルチコアプロセッサシステム200の全体の制御を司り、OS221_1を実行する。OS221_1はマスタOSであり、CPU201_1に割り当てられたスレッドを実行する。OS221_1はスケジューラを有し、スケジューラは起動指示を受け付けたアプリケーションをマルチコアプロセッサのうちのいずれのCPUに割り当てるかを制御する機能を有している。スケジューラはCPU201_1に割り当てられたアプリケーションの実行順序を制御する機能を有する。CPU201_2とCPU201_3はスレーブCPUであり、それぞれOS221_2とOS221_3を実行する。OS221_2とOS221_3はスレーブOSであり、それぞれCPU201_2とCPU201_3に割り当てられたスレッドを実行する。OS221_2はスケジューラを有し、スケジューラはCPU201_2に割り当てられたアプリケーションの実行順序を制御する機能を有する。OS221_3はスケジューラを有し、スケジューラはCPU201_3に割り当てられたアプリケーションの実行順序を制御する機能を有する。スレッド231_1~231_3はアプリAに関するスレッドであり、同一の変数を共有することとする。スレッド231_1はCPU201_1に割り当てられ、スレッド231_2はCPU201_2に割り当てられ、スレッド231_3はCPU201_3に割り当てられている。ディスプレイ202は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ202は、たとえば、TFT液晶ディスプレイなどを採用することができる。キーボード203は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード203は、タッチパネル式の入力パッドやテンキーなどであってもよい。I/F204は、通信回線を通じてLANLocalAreaNetwork、WANWideAreaNetwork、インターネットなどのネットワーク205に接続され、ネットワーク205を介して他の装置に接続される。そして、I/F204は、ネットワーク205と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F204には、たとえばモデムやLANアダプタなどを採用することができる。ROM207は、ブートプログラムなどのプログラムを記憶している。RAM206は、各CPUのワークエリアとして使用される。フラッシュROM208は、OS221_1~221_3などのシステムソフトウェアやアプリケーションのプログラムを記憶している。RAM206はフラッシュROM208よりも各CPUからのアクセス速度が速い。各OSがアプリケーションのプログラムをフラッシュROM208からRAM206へロードすることにより、該アプリケーションのコンテキスト情報がRAM206内に展開される。フラッシュROMコントローラ209は、各CPUの制御に従ってフラッシュROM210に対するデータのリード/ライトを制御する。フラッシュROM210は、フラッシュROMコントローラ209の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム200を使用するユーザがI/F204を通して取得した画像データ、映像データなどである。フラッシュROM210は、たとえば、メモリカード、SDカードなどを採用することができる。マルチコアプロセッサシステム200の機能例図3は、マルチコアプロセッサシステム200の機能例を示すブロック図である。マルチコアプロセッサシステム200は、スレッド231_mm=1~3と、OS221_nn=1~3と、を有している。スレッド231_mは、計数部301と格納部302とを有している。OS221_nは、検出部311と、算出部312と、判断部313と、実行部314と、判断部315と、変更部316と、を有している。計数部301と格納部302はスレッド231_mにコーディングされており、スレッド231_mはフラッシュROM208などの記憶装置に記憶されている。CPU201_1~201_3のいずれかのCPUが記憶装置からスレッド231_mを読み出し、コーディングされている処理を実行することにより、計数部301と格納部302が実行される。検出部311から変更部316はOS221_nにコーディングされており、OS221_nはフラッシュROM208などの記憶装置に記憶されている。CPU201_1~201_3が記憶装置からそれぞれOS221_1~221_3を読み出し、コーディングされている処理を実行することにより、検出部311から変更部316が実行される。まず、複数のスレッドのうちいずれかのスレッドが、排他対象スレッドに共有資源へのアクセスが許可されるまで試行させる第2の排他制御処理を実行した場合である。計数部301は、複数のスレッドのうち、いずれかのスレッド以外の排他対象スレッドとなる残余のスレッドが共有資源へのアクセスの試行回数を計数する。ここで、共有資源としては、たとえば、複数のCPUで共有するRAM206、バス211やアプリケーションで共有する変数が挙げられる。ここで、第2の排他制御処理は、たとえば、スピンロックによる排他制御処理である。格納部302は、計数部301によって計数された試行回数をOSが参照可能な記憶領域に格納する。検出部311は、記憶領域に格納された排他対象スレッドの共有資源へのアクセスの試行回数を検出する。判断部313は、検出部311によって検出された試行回数が所定回数以上であるか否かを判断する。算出部312は、残余のスレッドが複数ある場合、検出部311によって検出された残余のスレッドごとの共有資源へのアクセスの試行回数の平均値を算出する。格納部302は、算出部312によって算出された平均値を残余のスレッドが記憶領域に格納する。実行部314は、判断部313によって試行回数が所定回数以上であると判断された場合、排他対象スレッドが共有資源へアクセスすると排他制御が解除されるまで排他対象スレッドの共有資源へのアクセスの試行を禁止する第1の排他制御処理を実行する。また、排他対象スレッドが共有資源へアクセスすると排他制御が解除されるまで排他対象スレッドの共有資源へのアクセスの試行を禁止する第1の排他制御処理を実行した場合において説明する。判断部315は、排他対象スレッドのアクセス開始からの経過時間が所定時間以上であるか否かを判断する。変更部316は、判断部315によって経過時間が所定時間以上でないと判断された場合、排他対象スレッドの共有資源へのアクセスの試行の禁止を解除する。変更部316は、判断部315によって経過時間が所定時間以上でないと判断された場合、排他対象スレッドの共有資源へのアクセスの試行の禁止を継続する。以上を踏まえて詳細に説明する。図4は、排他フラグの生成例を示す説明図である。まず、具体的には、たとえば、スレッド231_1が、1排他フラグ403の領域と排他方式フラグ404との領域をRAM206上のプロセスデータ領域410に確保する。ここで、RAM206上はOSデータ領域411とプロセスデータ領域410とを有している。各OSが取り扱うデータがOSデータ領域411に格納され、各スレッドが取り扱うデータがプロセスデータ領域410に格納される。各スレッドはプロセスデータ領域410にアクセスできない。たとえば、スレッド231_1が、2スレッド231_1が属するアプリケーションの起動予定を含めた総スレッド数をテーブル400から取得する。テーブル400は、アプリ名、総スレッド数のフィールドを有する。アプリ名にはアプリケーションの識別情報が登録され、総スレッド数には、アプリ名に登録された識別情報のアプリケーションの総スレッド数が登録されている。ここでは、スレッド231_1はアプリAに属するスレッドであるため、総スレッド数として3が取得される。たとえば、スレッド231_1が、3取得した総スレッド数分の待ち開始時刻レジスタの領域と総スレッド数分のSCスピンロックカウンタの領域をRAM206上のプロセスデータ領域410に確保する。図4では、SC401_1~401_3と、待ち開始時刻レジスタ402_1~402_3がプロセスデータ領域410内に確保されている。たとえば、スレッド231_1が、4排他フラグ403を0開放状態に設定し、排他方式フラグ404を0スピンロック方式に設定する。たとえば、スレッド231_1が、5SC401_1~401_3に0を設定する。たとえば、スレッド231_1が、6確保したすべての領域の参照情報405をOS221_1に通知する。ここで、参照情報405とはOS221_1からプロセスデータ領域410に確保された領域を参照するための情報であり、参照情報405には、該確保された領域にスレッドがアクセスする際に用いる確保された領域の先頭アドレスが記述されている。たとえば、OS221_1が、スレッド231_1から参照情報405を受け付けると、参照情報405に対応する排他の識別情報を生成する。排他の識別情報は、スレッド231_1が領域を確保した排他に関する情報を識別するための情報である。本実施の形態では1つの排他制御処理のみに着目しているが、実際には複数の排他制御処理があるため、各排他に関する情報に識別するための情報が付される。たとえば、OS221_1が、7排他の識別情報と参照情報405とを関連付けてOSデータ領域411に登録する。たとえば、OS221_1が、いずれかのスレッドから排他の識別情報を受け付けると、受け付けた排他の識別情報に基づいて参照情報405を参照する。たとえば、OS221_1が、参照情報405に記述されている先頭アドレスに応じてプロセスデータ領域410内の確保された領域に記憶されているデータにアクセスすることができる。つぎに、たとえば、OS221_1が、排他の識別情報をスレッド231_1に通知する。たとえば、スレッド231_1が、OS221_1から排他の識別情報を受け付けると、排他の識別情報を、確保された領域と関連付けて記録する。図5は、スレッドが共有資源に関する処理を実行する例を示す説明図である。たとえば、スレッド231_1が、排他フラグ403の状態を取得することにより、排他フラグ403をチェックする。ここでは、排他フラグ403が0であるため、たとえば、スレッド231_1が、排他フラグ403を0開放状態から1利用中に変更する。たとえば、スレッド231_1が、SC401_1に0を設定する。たとえば、スレッド231_2が、排他フラグ403の状態を取得することにより、排他フラグ403をチェックする。ここでは、排他フラグ403が1利用中であるため、スレッド231_2が、排他方式フラグ404の状態を取得することにより、排他方式フラグ404をチェックする。ここでは、排他方式フラグ404が0スピンロックであるため、スレッド231_2が、SC401_2をインクリメントする。これにより、SCの値が1となる。そして、スレッド231_2が、排他フラグ403のチェックと排他方式フラグ404のチェックを繰り返す。排他フラグ403のチェックが1利用中であり、排他方式フラグ404が0スピンロックである間、スレッド231_2がSC401_2のインクリメントを繰り返す。たとえば、スレッド231_3が、排他フラグ403の状態を取得することにより、排他フラグ403をチェックする。ここでは、排他フラグ403が1利用中であるため、スレッド231_3が、排他方式フラグ404の状態を取得することにより、排他方式フラグ404をチェックする。ここでは、排他方式フラグ404が0スピンロックであるため、スレッド231_3が、SC401_3をインクリメントする。これにより、SCの値が1となる。そして、スレッド231_3が、排他フラグ403のチェックと排他方式フラグ404のチェックを繰り返す。排他フラグ403のチェックが1利用中であり、排他方式フラグ404が0スピンロックである間、スレッド231_3がSC401_3のインクリメントを繰り返す。図6は、タイマ割り込みの発生時の例を示す説明図である。OS221_1が、タイマ割り込みを受け付けると、たとえば、複数の排他の識別情報から、一の排他の識別情報を選択する。たとえば、OS221_1が、1選択した一の排他の識別情報の参照情報405に基づいて排他フラグ403の状態を取得することにより、排他フラグ403をチェックする。たとえば、排他フラグ403が1利用中であるため、OS221_1が、2排他方式フラグ404の状態を取得することにより、排他方式フラグ404をチェックする。たとえば、排他方式フラグ404が0スピンロックであるため、OS221_1が、全スピンロックカウンタの値を検出する。OS221_1が、3値が0以外のカウンタの値の平均値を算出する。ここでは、SC401_1の値は0であり、SC401_2の値は300であり、SC401_3の値は296であるため、平均値が298である。たとえば、OS221_1が、4算出した平均値が所定回数以上であるか否かを判断する。ここでは、所定回数を280とする。算出された平均値が所定回数以上であるため、たとえば、OS221_1が、5排他方式フラグ404を0スピンロックから1トライロックに変更する。ここでは、平均値が所定回数以上であると判断しているが、これに限らず、たとえば、中央値が所定回数以上であるか判断してもよいし、所定回数以上のカウンタの値が複数個以上あるかなどの多数決であってもよい。図7は、トライロックされる例を示す説明図である。たとえば、スレッド231_2が、排他フラグ403の状態を取得することにより、排他フラグ403をチェックする。ここでは、排他フラグ403が1利用中であるため、スレッド231_2が、排他方式フラグ404の状態を取得することにより、排他方式フラグ404をチェックする。ここでは、排他方式フラグ404が1トライロックであるため、スレッド231_2が、排他の識別情報を指定してトライロックをOS221_2に依頼する。OS221_2が、スレッド231_2から受け付けた排他の識別情報に対応するフラグ待ちキュー406にスレッド231_2の識別情報を登録する。OS221_2が、現在時刻を取得し、スレッド231_2の待ち開始時刻レジスタ402_2に現在時刻を設定する。待ち開始時刻レジスタ402_2は、15:00:10となる。OS221_2が、再スケジューリングを行う。ここでは、CPU201_2にはスレッド231_2のみが割り当てられているため、CPU201_2は待ち状態となる。たとえば、スレッド231_3が、排他フラグ403の状態を取得することにより、排他フラグ403をチェックする。ここでは、排他フラグ403が1利用中であるため、スレッド231_3が、排他方式フラグ404の状態を取得することにより、排他方式フラグ404をチェックする。ここでは、排他方式フラグ404が1トライロックであるため、スレッド231_3が、排他の識別情報を指定してトライロックをOS221_3に依頼する。OS221_3が、スレッド231_3から受け付けた識別情報に対応するフラグ待ちキュー406にスレッド231_3の識別情報を登録する。OS221_3が、現在時刻を取得し、スレッド231_3の待ち開始時刻レジスタ402_3に現在時刻を設定する。待ち開始時刻レジスタ402_3は15:00:11である。OS221_3が、再スケジューリングを行う。ここでは、CPU201_3にはスレッド231_3のみが割り当てられているため、CPU201_3は待ち状態となる。図8は、スレッド231_1の排他処理の終了例を示す説明図である。たとえば、スレッド231_1が、排他方式フラグ404の状態を取得することにより、1排他フラグ403をチェックする。ここでは、排他方式フラグ404がトライロックであるため、たとえば、スレッド231_1が、2排他の識別情報を指定してOS221_1に開放依頼を通知する。たとえば、OS221_1が、開放依頼通知を受け付けると、現在時刻を取得する。たとえば、OS221_1が、3フラグ待ちキュー406に登録されているスレッドの識別情報を取得する。ここでは、スレッド231_2とスレッド231_3のそれぞれの識別情報が取得される。たとえば、OS221_1が、取得したスレッドの識別情報が示すスレッドの待ち開始時刻レジスタから時刻を検出する。たとえば、OS221_1が、4現在時刻と取得したそれぞれの時刻との差分値待ち時間を算出する。たとえば、OS221_1が、取得した時刻ごとの差分値に基づいて平均待ち時間を算出する。現在時刻が15:10:20である。待ち開始時刻レジスタ402_2の値は15:10:10であり、待ち開始時刻レジスタ402_3の値は15:10:11である。平均待ち時間は、9.5[秒]である。たとえば、OS221_1が、5算出した平均待ち時間が所定時間以下であるか否かを判断する。ここでは、所定時間を3[秒]とする。算出した平均待ち時間が所定時間以下でないため、トライロックのままとなる。ここでは、平均待ち時間が所定時間以下であるか否かを判断しているが、これに限らず、待ち時間の中央値が所定時間以下であるか否かを判断してもよいし、待ち時間が所定時間以下である数が何個であるかの多数決で判断してもよい。また、ここでは例示していないが、算出した平均待ち時間が所定時間以下ある場合、トライロックからスピンロックに変更される。たとえば、OS221_1が、6排他フラグ403を1利用中から0開放状態に変更する。たとえば、OS221_1が、7フラグ待ちキューの先頭に識別情報が登録されているスレッド231_2の実行を再開させる。図9は、スレッド231_2による排他処理の開始例を示す説明図である。たとえば、スレッド231_2が、排他フラグ403の状態を取得することにより、排他フラグ403をチェックする。ここでは、排他フラグ403が1利用中であるため、スレッド231_2が、排他方式フラグ404の状態を取得することにより、排他方式フラグ404をチェックする。ここでは、排他方式フラグ404が1トライロックであるため、スレッド231_2が、排他の識別情報を指定してトライロックをOS221_2に依頼する。OSとスレッドによる排他制御処理手順図10は、OSとスレッドによる排他生成手順の一例を示すフローチャートである。スレッドが、排他フラグ、排他方式フラグ領域を確保しステップS1001、起動予定を含めた総スレッド数を取得しステップS1002、総スレッド数分のスピンロックカウンタと待ち開始時刻レジスタ領域を確保するステップS1003。スレッドが、排他フラグを開放状態に設定しステップS1004、排他方式フラグをスピンロックに設定するステップS1005。ここでは、スピンロックに設定しているが、トライロックに設定しておいてもよい。スレッドが、すべてのスピンロックカウンタに0を設定しステップS1006、確保したすべての領域の参照情報をOSに通知するステップS1007。OSが、参照情報を受け付けると、参照情報に関する排他の識別情報を生成しステップS1008、排他の識別情報と参照情報を記録しステップS1009、排他の識別情報を参照情報の通知元のスレッドへ通知するステップS1010。スレッドが、排他の識別情報を受け付けると、識別情報を記録しステップS1011、一連の処理を終了する。図11は、OSとスレッドによる排他制御開始時の処理手順の一例を示すフローチャートである。スレッドが、共有資源へアクセスを行う、または待ち状態から復帰するか否かを判断するステップS1101。スレッドが、共有資源へのアクセスを開始していない、および待ち状態から復帰していないと判断した場合ステップS1101:No、ステップS1101へ戻る。スレッドが、共有資源へのアクセスを行うまたは待ち状態から復帰したと判断した場合ステップS1101:Yes、排他フラグの状態を取得しステップS1102、排他フラグの状態が利用中であるか否かを判断するステップS1103。スレッドが、排他フラグの状態が利用中でないと判断した場合ステップS1103:No、特殊命令により排他フラグを利用中に変更するステップS1104。スレッドが、変更成功したか否かを判断しステップS1105、変更成功したと判断した場合ステップS1105:Yes、スピンロックカウンタに0を設定するステップS1106。スレッドが、排他フラグの状態が利用中であると判断した場合ステップS1103:Yes、または変更成功していないと判断した場合ステップS1105:No、排他方式フラグの状態を取得するステップS1107。スレッドが、排他方式がスピンロックであるか否かを判断するステップS1108。スレッドが、排他方式がスピンロックであると判断した場合ステップS1108:Yes、スピンロックカウンタをインクリメントしステップS1110、ステップS1101へ戻る。スレッドが、排他方式がスピンロックでないと判断した場合ステップS1108:No、排他の識別情報を指定してトライロック依頼を通知するステップS1109。ステップS1109のつぎに、OSが、スレッドからのトライロック依頼を受け付けると、依頼元スレッドの識別情報を排他の識別情報に対応するフラグ待ちキューに登録するステップS1111。OSが、現在時刻を取得しステップS1112、待ち開始時刻レジスタに現在時刻を記録するステップS1113。OSが、再スケジューリングしステップS1114、実行スレッド切り替え処理を実行するステップS1115。図12は、OSとスレッドによる排他権の解放時の処理手順の一例を示すフローチャートである。まず、スレッドが、排他方式フラグの状態を取得しステップS1201、排他方式がスピンロックであるか否かを判断するステップS1202。スレッドが、排他方式がスピンロックであると判断した場合ステップS1202:Yes、排他フラグを空き状態に変更しステップS1203、一連の処理を終了する。スレッドが、排他方式がスピンロックでないと判断した場合ステップS1202:No、排他の識別情報を指定して開放依頼をOSへ通知するステップS1204。OSが、スレッドから開放依頼を受け付けると、現在時刻を取得するステップS1205。OSが、排他の識別情報に対応するフラグ待ちキューからスレッドの識別情報をすべて取得するステップS1206。OSが、フラグ待ちキューに登録されている識別情報で示されるスレッドの待ち開始時刻を取得しステップS1207、平均待ち時間を算出しステップS1208、平均待ち時間が所定時間以下であるか否かを判断するステップS1209。OSが、平均待ち時間が所定時間以下であると判断した場合ステップS1209:Yes、排他方式フラグの状態をスピンロックに変更するステップS1210。OSが、排他フラグを空き状態に変更しステップS1211、フラグ待ちキューに登録されている識別情報で示されるスレッドをすべて再開させステップS1212、一連の処理を終了する。OSが、平均待ち時間が所定時間以下でないと判断した場合ステップS1209:No、排他フラグを開放状態に変更するステップS1213。OSが、フラグ待ちキューの先頭に登録されている識別情報で示されるスレッドを再開させステップS1214、一連の処理を終了する。図13は、OSによるタイマ割り込み発生時の排他制御処理手順の一例を示すフローチャートである。まず、OSが、タイマ割り込みを受け付けたか否かを判断するステップS1301。OSが、タイマ割り込みを受け付けていないと判断した場合ステップS1301:No、ステップS1301へ戻る。OSが、タイマ割り込みを受け付けたと判断した場合ステップS1301:Yes、登録されている排他情報から未選択の1つを選択するステップS1302。OSが、選択可能な排他情報が無いか否かを判断するステップS1303。OSが、選択可能な排他情報が無いと判断しなかった場合ステップS1303:No、排他フラグの状態を取得するステップS1304。OSが、排他フラグの状態が利用中であるか否かを判断しステップS1305、利用中でないと判断した場合ステップS1305:No、ステップS1302へ戻る。OSが、排他フラグの状態が利用中であると判断した場合ステップS1305:Yes、排他方式フラグの状態を取得しステップS1306、排他方式がスピンロックであるか否かを判断するステップS1307。OSが、排他方式がスピンロックでないと判断した場合ステップS1307:No、ステップS1302へ戻る。OSが、排他方式がスピンロックであると判断した場合ステップS1307:Yes、すべてのスピンロックカウンタの値を取得するステップS1308。OSが、値が0以外のスピンロックカウンタの平均値を算出しステップS1309、平均値が所定回数以上であるか否かを判断するステップS1310。OSが、平均値が所定回数以上でないと判断した場合ステップS1310:No、ステップS1302へ戻る。OSが、平均値が所定回数以上であると判断した場合ステップS1310:Yes、排他方式フラグにトライロックを設定しステップS1311、ステップS1302へ移行する。ステップS1303において、OSが、選択可能な排他情報が無いと判断した場合ステップS1303:Yes、一連の処理を終了する。また、排他制御に関する処理は終了するが、OSは通常のタイマ割り込み処理を行う。以上説明したように、排他制御方法、および排他制御プログラムによれば、排他対象スレッドによるスピンロックでの排他制御処理が実行され、共有資源へのアクセスの試行回数が所定回数以上であれば、OSによるトライロックでの排他制御処理が実行される。スピンロックをOSの機能を利用せずに実現することにより、共有資源が開放されてから獲得までのオーバーヘッドを削減することができる。また、スピンロック時にOSを呼び出さないことで、キャッシュ内のデータのスワップ数を減らすことができる。また、OSが、排他対象スレッドがアクセス可能な記録領域に試行回数を記憶させる記憶領域を確保することで、OSを呼び出さずにスピンロックを行うことができる。また、各排他対象スレッドがスピンロックとトライロックのうちいずれの方式で排他制御処理を利用しているかを、排他方式フラグにより管理することで、方式の切り替えを容易に行うことができる。また、OSが、排他対象スレッドがアクセス可能な記録領域に排他方式フラグを記憶させる記憶領域を確保することで、排他対象スレッドがOSを呼び出さずにスピンロックを行うことができる。また、排他対象スレッドが複数ある場合、共有資源へのアクセスの試行回数の平均値が、所定回数以上であるか否かによって、OSによるトライロックに切り替えるか否かを判断する。排他対象スレッドがどの程度試行しているかを相対的に判断することができる。また、OSによるトライロックでの排他制御処理が実行され、排他対象スレッドが共有資源へアクセスするアクセス開始時刻からの経過時間が所定時間未満であれば、スレッドによるスピンロックでの排他制御処理が実行される。共有資源の排他権の開放が短時間の場合、共有資源に対してスピンロックでの排他制御処理を行うことができる。さらに、スピンロックをOSの機能を利用せずに実現することにより、共有資源が開放されてから他のスレッドによる排他権の獲得までのオーバーヘッドを短くすることができる。また、スピンロック時にOSを呼び出さないことで、キャッシュ内のデータのスワップ数を減らすことができる。また、排他対象スレッドが共有資源へアクセスするアクセス開始時刻からの経過時間が所定時間以上であれば、OSによるトライロックでの排他制御処理が継続して実行される。これにより、共有資源の排他権の開放までに時間がかかる場合、共有資源に対してトライロックでの排他制御処理を行うことができる。なお、本実施の形態で説明した排他制御方法は、予め用意された排他制御プログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本排他制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本排他制御プログラムは、インターネット等のネットワークを介して配布してもよい。