デュアルモードリーダライタロックのためのコンピュータ実装方法であって、前記コンピュータ実装方法は、オリジナルロックの使用におけるコンテンション状態を定めるステップであって、前記オリジナルロックはデータ処理システムにおいて利用可能なリソースに対応し、前記オリジナルロックは前記データ処理システムにおいて実行する複数のプロセスによる前記リソースへの読取りアクセスおよび書込みアクセスを管理する、ステップと、前記オリジナルロックとともに使用するための拡張ロックの組を作成するステップであって、前記オリジナルロックおよび前記拡張ロックの組は前記デュアルモードリーダライタロックを形成し、前記デュアルモードリーダライタロックは前記リソースへの前記読取りアクセスおよび書込みアクセスを管理するように動作する、ステップと、前記オリジナルロック内の索引を用いて前記拡張ロックの組の各拡張ロックに索引を付けることによって、前記索引を用いて各拡張ロックを位置付けできるようにするステップと、前記オリジナルロックおよび前記拡張ロックの組にわたって、前記複数のプロセスによる前記リソースへの前記読取りアクセスおよび書込みアクセスを取得および解除するための要求を分散させることによって、前記コンテンション状態を解決するステップとを含む、コンピュータ実装方法。前記オリジナルロックは既存のリーダライタロックの変更形であることによって、前記既存のリーダライタロックは前記拡張ロックの組とともに動作において使用可能な識別子の組を保持でき、前記コンピュータ実装方法はさらに、前記拡張ロックの組の中の拡張ロックをリーダロックとして指定することによって、前記指定された拡張ロックが前記リソースに対する読取りロックのみを取得、保持および解除するために使用可能になるステップを含む、請求項1に記載のコンピュータ実施方法。前記リソースに対する読取りロックのi取得およびii解除のうち一方のための要求をプロセスから受け取るステップと、前記要求を前記デュアルモードリーダライタロック内の拡張ロックに割り当てるステップとをさらに含む、請求項1または2に記載のコンピュータ実装方法。前記プロセスからの、前記リソースに対する書込みロックのi取得およびii解除のうち一方のための第2の要求は前記オリジナルロックに割り当てられる、請求項3に記載のコンピュータ実装方法。前記拡張ロックは、前記プロセスに関連する識別子から索引値を算出することによって、前記拡張ロックの組から選択され、前記索引値は前記拡張ロックを決定する、請求項3または4に記載のコンピュータ実装方法。前記拡張ロックは、前記拡張ロックが前記データ処理システムのプロセッサとの親和性を有するように前記拡張ロックの組から選択される、請求項3、4または5に記載のコンピュータ実装方法。前記リソースに対する書込みロックのi取得およびii解除のうち一方のための要求を受け取るステップと、前記要求を前記デュアルモードリーダライタロック内の前記オリジナルロックに割り当てるステップとをさらに含む、先行する請求項のいずれかに記載のコンピュータ実装方法。前記デュアルモードリーダライタロックは、前記コンテンション状態が存在しないときには前記オリジナルロックのみを用いる第1のモードで動作し、前記デュアルモードリーダライタロックは、前記コンテンション状態が存在するときには前記オリジナルロックおよび前記拡張ロックの組を用いる第2のモードで動作し、前記デュアルモードリーダライタロックは、前記コンテンション状態が生じたときに前記第1のモードから前記第2のモードに切り替わり、前記デュアルモードリーダライタロックは、前記コンテンション状態が中止されたときに前記第2のモードから前記第1のモードに切り替わる、先行する請求項のいずれかに記載のコンピュータ実装方法。前記第1のモードから前記第2のモードに前記切り替わるステップによって、前記リソースに対するロックに対する複数の原子動作を、i前記オリジナルロックおよび前記拡張ロックの組の中の拡張ロック、ならびにii前記拡張ロックの組の中の2つの拡張ロック、のうちの一方に対して同時に実行させることによって、前記コンテンション状態を取り除く、請求項8に記載のコンピュータ実装方法。メモリ内の領域をロックとして用いるために割り当てるステップであって、前記拡張ロックの組を前記作成するステップは、前記領域における前記拡張ロックの組に対するスペースの組を指定する、ステップをさらに含む、先行する請求項のいずれかに記載のコンピュータ実装方法。デュアルモードリーダライタロックのためのコンピュータ使用可能コードを含むコンピュータ使用可能記憶媒体を含むコンピュータ使用可能プログラム製品であって、前記コンピュータ使用可能コードは、オリジナルロックの使用におけるコンテンション状態を定めるためのコンピュータ使用可能コードであって、前記オリジナルロックはデータ処理システムにおいて利用可能なリソースに対応し、前記オリジナルロックは前記データ処理システムにおいて実行する複数のプロセスによる前記リソースへの読取りアクセスおよび書込みアクセスを管理する、コンピュータ使用可能コードと、前記オリジナルロックとともに使用するための拡張ロックの組を作成するためのコンピュータ使用可能コードであって、前記オリジナルロックおよび前記拡張ロックの組は前記デュアルモードリーダライタロックを形成し、前記デュアルモードリーダライタロックは前記リソースへの前記読取りアクセスおよび書込みアクセスを管理するように動作する、コンピュータ使用可能コードと、前記オリジナルロック内の索引を用いて前記拡張ロックの組の各拡張ロックに索引を付けることによって、前記索引を用いて各拡張ロックを位置付けできるようにするためのコンピュータ使用可能コードと、前記オリジナルロックおよび前記拡張ロックの組にわたって、前記複数のプロセスによる前記リソースへの前記読取りアクセスおよび書込みアクセスを取得および解除するための要求を分散させることによって、前記コンテンション状態を解決するためのコンピュータ使用可能コードとを含む、コンピュータ使用可能プログラム製品。前記オリジナルロックは既存のリーダライタロックの変更形であることによって、前記既存のリーダライタロックは前記拡張ロックの組とともに動作において使用可能な識別子の組を保持でき、前記コンピュータ使用可能プログラム製品はさらに、前記拡張ロックの組の中の拡張ロックをリーダロックとして指定することによって、前記指定された拡張ロックが前記リソースに対する読取りロックのみを取得、保持および解除するために使用可能になるためのコンピュータ使用可能コードを含む、請求項11に記載のコンピュータ使用可能プログラム製品。前記リソースに対する読取りロックのi取得およびii解除のうち一方のための要求をプロセスから受け取るためのコンピュータ使用可能コードと、前記要求を前記デュアルモードリーダライタロック内の拡張ロックに割り当てるためのコンピュータ使用可能コードとをさらに含む、請求項11または12に記載のコンピュータ使用可能プログラム製品。前記プロセスからの、前記リソースに対する書込みロックのi取得およびii解除のうち一方のための第2の要求は前記オリジナルロックに割り当てられる、請求項13に記載のコンピュータ使用可能プログラム製品。前記拡張ロックは、前記プロセスに関連する識別子から索引値を算出することによって、前記拡張ロックの組から選択され、前記索引値は前記拡張ロックを決定する、請求項13または14に記載のコンピュータ使用可能プログラム製品。前記拡張ロックは、前記拡張ロックが前記データ処理システムのプロセッサとの親和性を有するように前記拡張ロックの組から選択される、請求項13、14または15に記載のコンピュータ使用可能プログラム製品。前記リソースに対する書込みロックのi取得およびii解除のうち一方のための要求を受け取るためのコンピュータ使用可能コードと、前記要求を前記デュアルモードリーダライタロック内の前記オリジナルロックに割り当てるためのコンピュータ使用可能コードとをさらに含む、請求項11から16のいずれか1項に記載のコンピュータ使用可能プログラム製品。前記デュアルモードリーダライタロックは、前記コンテンション状態が存在しないときには前記オリジナルロックのみを用いる第1のモードで動作し、前記デュアルモードリーダライタロックは、前記コンテンション状態が存在するときには前記オリジナルロックおよび前記拡張ロックの組を用いる第2のモードで動作し、前記デュアルモードリーダライタロックは、前記コンテンション状態が生じたときに前記第1のモードから前記第2のモードに切り替わり、前記デュアルモードリーダライタロックは、前記コンテンション状態が中止されたときに前記第2のモードから前記第1のモードに切り替わる、請求項11から17のいずれか1項に記載のコンピュータ使用可能プログラム製品。前記第1のモードから前記第2のモードに前記切り替わるステップによって、前記リソースに対するロックに対する複数の原子動作を、i前記オリジナルロックおよび前記拡張ロックの組の中の拡張ロック、ならびにii前記拡張ロックの組の中の2つの拡張ロック、のうちの一方に対して同時に実行させることによって、前記コンテンション状態を取り除く、請求項18に記載のコンピュータ使用可能プログラム製品。メモリ内の領域をロックとして用いるために割り当てるステップをさらに含み、前記拡張ロックの組を前記作成するステップは、前記領域における前記拡張ロックの組に対するスペースの組を指定する、請求項11から19のいずれか1項に記載のコンピュータ使用可能プログラム製品。前記コンピュータ使用可能コードはデータ処理システム内のコンピュータ可読記憶媒体に保存され、前記コンピュータ使用可能コードは遠隔データ処理システムからネットワーク上を送信される、請求項11から20のいずれか1項に記載のコンピュータ使用可能プログラム製品。前記コンピュータ使用可能コードはサーバデータ処理システム内のコンピュータ可読記憶媒体に保存され、前記コンピュータ使用可能コードはネットワーク上で遠隔データ処理システムにダウンロードされて、前記遠隔データ処理システムに関連するコンピュータ可読記憶媒体において使用される、請求項11から21のいずれか1項に記載のコンピュータ使用可能プログラム製品。デュアルモードリーダライタロックのためのデータ処理システムであって、前記データ処理システムは、記憶媒体を含む記憶装置であって、前記記憶装置はコンピュータ使用可能プログラムコードを保存する、記憶装置と、プロセッサであって、前記プロセッサは前記コンピュータ使用可能プログラムコードを実行する、プロセッサとを含み、前記コンピュータ使用可能プログラムコードは、オリジナルロックの使用におけるコンテンション状態を定めるためのコンピュータ使用可能コードであって、前記オリジナルロックはデータ処理システムにおいて利用可能なリソースに対応し、前記オリジナルロックは前記データ処理システムにおいて実行する複数のプロセスによる前記リソースへの読取りアクセスおよび書込みアクセスを管理する、コンピュータ使用可能コードと、前記オリジナルロックとともに使用するための拡張ロックの組を作成するためのコンピュータ使用可能コードであって、前記オリジナルロックおよび前記拡張ロックの組は前記デュアルモードリーダライタロックを形成し、前記デュアルモードリーダライタロックは前記リソースへの前記読取りアクセスおよび書込みアクセスを管理するように動作する、コンピュータ使用可能コードと、前記オリジナルロック内の索引を用いて前記拡張ロックの組の各拡張ロックに索引を付けることによって、前記索引を用いて各拡張ロックを位置付けできるようにするためのコンピュータ使用可能コードと、前記オリジナルロックおよび前記拡張ロックの組にわたって、前記複数のプロセスによる前記リソースへの前記読取りアクセスおよび書込みアクセスを取得および解除するための要求を分散させることによって、前記コンテンション状態を解決するためのコンピュータ使用可能コードとを含む、データ処理システム。前記オリジナルロックは既存のリーダライタロックの変更形であることによって、前記既存のリーダライタロックは前記拡張ロックの組とともに動作において使用可能な識別子の組を保持でき、前記データ処理システムはさらに、前記拡張ロックの組の中の拡張ロックをリーダロックとして指定することによって、前記指定された拡張ロックが前記リソースに対する読取りロックのみを取得、保持および解除するために使用可能になるためのコンピュータ使用可能コードを含む、請求項23に記載のデータ処理システム。前記リソースに対する読取りロックのi取得およびii解除のうち一方のための要求をプロセスから受け取るためのコンピュータ使用可能コードと、前記要求を前記デュアルモードリーダライタロック内の拡張ロックに割り当てるためのコンピュータ使用可能コードとをさらに含む、請求項23または24に記載のデータ処理システム。前記プロセスからの、前記リソースに対する書込みロックのi取得およびii解除のうち一方のための第2の要求は前記オリジナルロックに割り当てられる、請求項25に記載のデータ処理システム。前記拡張ロックは、前記プロセスに関連する識別子から索引値を算出することによって、前記拡張ロックの組から選択され、前記索引値は前記拡張ロックを決定する、請求項25または26に記載のデータ処理システム。前記拡張ロックは、前記拡張ロックが前記データ処理システムのプロセッサとの親和性を有するように前記拡張ロックの組から選択される、請求項25、26または27に記載のデータ処理システム。前記リソースに対する書込みロックのi取得およびii解除のうち一方のための要求を受け取るためのコンピュータ使用可能コードと、前記要求を前記デュアルモードリーダライタロック内の前記オリジナルロックに割り当てるためのコンピュータ使用可能コードとをさらに含む、請求項23から28のいずれか1項に記載のデータ処理システム。前記デュアルモードリーダライタロックは、前記コンテンション状態が存在しないときには前記オリジナルロックのみを用いる第1のモードで動作し、前記デュアルモードリーダライタロックは、前記コンテンション状態が存在するときには前記オリジナルロックおよび前記拡張ロックの組を用いる第2のモードで動作し、前記デュアルモードリーダライタロックは、前記コンテンション状態が生じたときに前記第1のモードから前記第2のモードに切り替わり、前記デュアルモードリーダライタロックは、前記コンテンション状態が中止されたときに前記第2のモードから前記第1のモードに切り替わる、請求項23から29のいずれか1項に記載のデータ処理システム。前記第1のモードから前記第2のモードに前記切り替わるステップによって、前記リソースに対するロックに対する複数の原子動作を、i前記オリジナルロックおよび前記拡張ロックの組の中の拡張ロック、ならびにii前記拡張ロックの組の中の2つの拡張ロック、のうちの一方に対して同時に実行させることによって、前記コンテンション状態を取り除く、請求項30に記載のデータ処理システム。メモリ内の領域をロックとして用いるために割り当てるステップをさらに含み、前記拡張ロックの組を前記作成するステップは、前記領域における前記拡張ロックの組に対するスペースの組を指定する、請求項23から31のいずれか1項に記載のデータ処理システム。例示的な実施形態は、デュアルモードリーダライタロックのための方法、システムおよびコンピュータ使用可能プログラム製品を提供する。本発明のある実施形態は、オリジナルロックの使用におけるコンテンション状態を定める。オリジナルロックはデータ処理システムにおいて利用可能なリソースに対応する。オリジナルロックは、データ処理システムにおいて実行するいくつかのプロセスによるリソースへの読取りアクセスおよび書込みアクセスを管理する。この実施形態は、オリジナルロックとともに用いるための拡張ロックの組を作成する。オリジナルロックと拡張ロックの組とがデュアルモードリーダライタロックを形成する。デュアルモードリーダライタロックは、リソースへの読取りアクセスおよび書込みアクセスを管理するように動作する。この実施形態は、オリジナルロック内の索引を用いて拡張ロックの組の各拡張ロックに索引を付けることによって、各拡張ロックを索引によって位置付けできるようにする。この実施形態は、オリジナルロックおよび拡張ロックの組にわたって、いくつかのプロセスによるリソースへの読取りアクセスおよび書込みアクセスを取得および解除するための要求を分散させることによって、コンテンション状態を解決する。別の実施形態において、オリジナルロックは既存のリーダライタロックの変更形であることによって、既存のリーダライタロックは拡張ロックの組とともに動作において使用可能な識別子の組を保持できる。この実施形態はさらに、拡張ロックの組の中の拡張ロックをリーダロックとして指定する。このように指定することによって、指定された拡張ロックはリソースに対する読取りロックのみを取得、保持および解除するために使用可能になる。別の実施形態はさらに、リソースに対する読取りロックを取得または解除するための要求をプロセスから受け取る。この実施形態は、その要求をデュアルモードリーダライタロック内の拡張ロックに割り当てる。別の実施形態において、リソースに対する書込みロックを取得または解除するためのプロセスからの第2の要求は、オリジナルロックに割り当てられる。別の実施形態において、拡張ロックは、プロセスに関連する識別子から索引値を算出することによって、拡張ロックの組から選択される。索引値は拡張ロックを決定する。別の実施形態において、拡張ロックは、その拡張ロックがデータ処理システムのプロセッサとの親和性を有するように拡張ロックの組から選択される。別の実施形態はさらに、リソースに対する書込みロックを取得または解除するための要求を受け取る。この実施形態は、その要求をデュアルモードリーダライタロック内のオリジナルロックに割り当てる。別の実施形態において、デュアルモードリーダライタロックは、コンテンション状態が存在しないときにはオリジナルロックのみを用いる第1のモードで動作する。コンテンション状態が存在するときには、デュアルモードリーダライタロックはオリジナルロックおよび拡張ロックの組を用いる第2のモードで動作する。コンテンション状態が生じたときに、デュアルモードリーダライタロックは第1のモードから第2のモードに切り替わる。コンテンション状態が中止されたときに、デュアルモードリーダライタロックは第2のモードから第1のモードに切り替わる。別の実施形態においては、第1のモードから第2のモードに切り替わることによって、リソースに対するロックに対するいくつかの原子動作を、オリジナルロックおよび拡張ロックの組の中の拡張ロック、または拡張ロックの組の中の2つの拡張ロックに対して同時に実行させることによって、コンテンション状態が取り除かれる。別の実施形態はさらに、メモリ内の領域をロックとして用いるために割り当てる。拡張ロックの組の作成は、その領域における拡張ロックの組に対するスペースの組を指定する。本発明の特徴と考えられる新規の特徴が添付の請求項に示される。しかしながら、本発明自体、ならびにその好ましい使用モード、さらなる目的および利点は、添付の図面とともに読まれるときの例示的実施形態の以下の詳細な説明を参照することによって最もよく理解されるであろう。特定の状況下では、いくつかのプロセスまたはスレッドからのロックを取得または解除するための各要求に対するいくつかの原子動作がデータ処理システム内で保留中になることがある。本発明は、RWLに対するいくつかの原子動作がデータ処理システムに殺到することがデータ処理システムの性能に悪影響をもたらし得ることを認識している。説明を明確にするために、プロセスはプロセスまたはプロセスのスレッドを意味するために用いられる。本発明の範囲内で、プロセスに関する動作はスレッドにも同様に適用可能であり、スレッドに関する動作はプロセスにも同様に適用可能である。本発明はさらに、特定の他の状況下では、ロックのデータ構造が飽和してそれ以上のロック要求を収容できないことがあることを認識している。たとえば、2ビットの仮想サイズのデータワードは、もし4つのスレッドが関連リソースに対する読取りロックをすでに保持していれば飽和する。なぜなら、2ビットは0から4だけをカウントするために用いられ得るからである。読取りロックを要求する第5のスレッドは、読取りロックを保持する他の4つのプロセスの1つがその読取りロックを解除するまで収容されることができない。本発明は、データ処理システム内のRWLに対する実行を待っている原子動作のバックログもデータ処理システムの性能に悪影響をもたらし得ることを認識している。これらの状況は、データ処理システムにおいてRWLに対するコンテンションが生じるシナリオの例である。本発明は、RWLを争うプロセスまたはスレッドの数が閾値数よりも増えたときにデータ処理システム内でRWLに対するコンテンションが起こるであろうことを認識している。本発明はさらに、たとえばマルチプロセッサデータ処理システムまたは論理区画などのように、データ処理システム内のプロセッサの数が増えるにつれてプロセスおよびスレッドの数も増えてRWLコンテンションにつながることを認識している。本発明を説明するために用いられる例示的実施形態は、一般的にRWLに関する上述の問題およびその他の問題に対処して解決するものである。例示的実施形態は、デュアルモードリーダライタロックのための方法、コンピュータ使用可能プログラム製品、およびデータ処理システムを提供する。本発明の実施形態は、原子動作の数が閾値数に達したときに、データ処理システムが現在構成されるデータ処理システムよりもシステム性能に対する影響を低くしながらRWLに対する原子動作を処理することを可能にしてもよい。たとえば、単一のRWLに対して行なわれる同数の原子動作に対して、本発明の実施形態を実装するデータ処理システムは、この実施形態なしのデータ処理システムよりも良好なシステム性能を示し得る。本発明の実施形態は、現在構成されるデータ処理システムよりもシステム性能に対する悪影響を減少させながら、より多くのプロセスおよびスレッドがロックを同時に取得および解除することも可能にしてもよい。たとえば、同じシステム性能に対して、本発明の実施形態を用いるデータ処理システムは、この実施形態なしのデータ処理システムよりも多くのプロセスがリソースに対する読取りロックを取得することを可能にしてもよい。例示的実施形態は、単なる例としてのデータ、データ構造および識別子に関して説明される。こうした説明が本発明を限定することは意図されていない。たとえば、64ビットのデータワードに関して説明される例示的実施形態は、本発明の範囲内で128ビットのデータワードを用いて類似の態様で実装されてもよい。さらに、例示的実施形態はあらゆるタイプのデータ処理システムに関して実装されてもよい。たとえば、マルチプロセッサスタンドアロンデータ処理システムに関して説明される例示的実施形態は、本発明の範囲内でマルチプロセッサ論理区画システムにおいて実装されてもよい。例示的実施形態はさらに、単なる例としての特定のパラメータ、属性および構成に関して説明される。こうした説明が本発明を限定することは意図されていない。本発明の実施形態は、たとえばあらゆるタイプのクライアントシステム、サーバシステム、プラットフォーム、またはその組み合わせなど、あらゆるタイプのデータ処理システムに関して実装されてもよい。実施形態を実装するアプリケーションは、データオブジェクト、コードオブジェクト、カプセル化命令、アプリケーションフラグメント、サービス、およびデータ処理環境において利用可能な他のタイプのソフトウェア実装の形を取ってもよい。たとえばJavaR仮想マシンVirtualMachineJVMR、JavaRオブジェクト、エンタープライズJavaビーンEnterpriseJavaBean:EJBR、サーブレット、またはアプレットなどは、それに関して、その中で、またはそれを用いて本発明を実装してもよいアプリケーションを表してもよい。Java、JVM、EJBおよびその他のJava関連の用語は、米国およびその他の国におけるサンマイクロシステムズ社の登録商標である。例示的実施形態は、ハードウェア、ソフトウェアまたはその組み合わせにおいて実装されてもよい。本開示における例は説明を明確にするためにのみ用いられ、例示的実施形態を限定するものではない。本開示から、類似の目的のために付加的な、または異なる情報、データ、動作、アクション、タスク、アクティビティ、および操作が考えられ、それらは例示的実施形態の範囲内で予期される。例示的実施形態は、単なる例としての特定のコード、データ構造、ファイルシステム、設計、アーキテクチャ、レイアウト、概略図、およびツールを用いて説明され、これらは例示的実施形態を限定するものではない。さらに、例示的実施形態はいくつかの場合に、説明を明確にするための単なる例としての特定のデータ処理環境を用いて説明される。例示的実施形態は、他の同等の、または類似の目的を有する構造、システム、アプリケーション、またはアーキテクチャとともに用いられてもよい。本明細書において挙げられるあらゆる利点は単なる例であって、例示的実施形態を限定することは意図されていない。特定の例示的実施形態によって付加的な利点または異なる利点が実現されてもよい。さらに、特定の例示的実施形態は上に挙げられた利点のうちのいくつか、またはすべてを有していてもよいし、どれも有さなくてもよい。図面を参照し、特に図1および図2を参照すると、これらの図面は例示的実施形態を実装し得るデータ処理環境の例を示す図である。図1および図2は単なる例であり、異なる実施形態を実装し得る環境に関するいかなる限定を主張または暗示することも意図されていない。以下の説明に基づいて、特定の実装がここに示される環境に多くの変更を加えてもよい。図1は、例示的実施形態を実装し得るデータ処理システムのネットワークを表す図である。データ処理環境100は、その中で例示的実施形態を実装し得るコンピュータのネットワークである。データ処理環境100はネットワーク102を含む。ネットワーク102は、データ処理環境100内でともに接続されているさまざまなデバイスおよびコンピュータ間の通信リンクを提供するために用いられる媒体である。ネットワーク102は、たとえばワイヤ、無線通信リンク、または光ファイバケーブルなどの接続を含んでもよい。サーバ104およびサーバ106は、記憶装置108とともにネットワーク102に結合している。データ処理環境100内のあらゆるコンピュータ上でソフトウェアアプリケーションが実行されてもよい。加えて、クライアント110、112および114がネットワーク102に結合している。データ処理システム、たとえばサーバ104もしくは106、またはクライアント110、112もしくは114などはデータを含んでもよく、さらにそこで実行されるソフトウェアアプリケーションまたはソフトウェアツールを有してもよい。サーバ104は複数のプロセッサ105を含んでもよい。図示される他のデータ処理システムも類似の態様で2つ以上のプロセッサを含んでもよい図示せず。サーバ104はさらにDML107を含んでもよい。DML107は本発明の実施形態に従うDMLであってもよい。DML107は、限定なしに他のRWLとともにサーバ104内で実装されてもよい。さらに、DML107はサーバ104以外のデータ処理システム、たとえばサーバ106などにおいて構成されてもよく、ネットワーク102上でサーバ104に対してアクセス可能であってもよい。サーバ104および106、記憶装置108、ならびにクライアント110、112および114は、有線接続、無線通信プロトコル、またはその他の好適なデータ接続性を用いてネットワーク102に結合してもよい。クライアント110、112および114は、たとえばパーソナルコンピュータまたはネットワークコンピュータなどであってもよい。図示される例において、サーバ104はたとえばブートファイル、オペレーティングシステムイメージ、およびアプリケーションなどのデータをクライアント110、112および114に提供してもよい。この例において、クライアント110、112および114はサーバ104に対するクライアントであってもよい。クライアント110、112、114、またはその何らかの組み合わせは、それら自身のデータ、ブートファイル、オペレーティングシステムイメージ、およびアプリケーションを含んでもよい。データ処理環境100は、図示されない付加的なサーバ、クライアントおよびその他のデバイスを含んでもよい。図示される例において、データ処理環境100はインターネットであってもよい。ネットワーク102は、伝送制御プロトコル/インターネットプロトコルTransmissionControlProtocol/InternetProtocol:TCP/IPおよびその他のプロトコルを用いて互いに通信するネットワークおよびゲートウェイの集合体を表してもよい。インターネットの中心部は主要ノードまたはホストコンピュータの間のデータ通信リンクのバックボーンであり、そこにはデータおよびメッセージを送る何千もの商業用、政府用、教育用およびその他のコンピュータシステムが含まれる。もちろんデータ処理環境100は、たとえばイントラネット、ローカルエリアネットワークlocalareanetwork:LAN、または広域ネットワークwideareanetwork:WANなどのいくつかの異なるタイプのネットワークとして実装されてもよい。図1は例として意図されるものであり、異なる例示的実施形態に対するアーキテクチャの限定として意図されるものではない。他の使用の中でも特に、データ処理環境100は、例示的実施形態を実装し得るクライアントサーバ環境を実装するために用いられてもよい。クライアントサーバ環境は、ソフトウェアアプリケーションおよびデータがネットワーク全体に分散されることを可能にすることによって、クライアントデータ処理システムとサーバデータ処理システムとの間の双方向性を用いることによってアプリケーションが機能する。さらにデータ処理環境100はサービス指向アーキテクチャを用いてもよく、ここではネットワーク全体に分散された相互運用可能なソフトウェア構成要素がコヒーレントビジネスアプリケーションとしてともにパッケージ化されてもよい。図2を参照すると、この図面は例示的実施形態を実装し得るデータ処理システムのブロック図を示す。データ処理システム200は、たとえば図1におけるサーバ104またはクライアント110などのコンピュータの例であり、ここには例示的実施形態のためにプロセスを実装するコンピュータ使用可能プログラムコードまたは命令が位置付けられていてもよい。図示される例において、データ処理システム200は、ノースブリッジおよびメモリコントローラハブNorthBridgeandmemorycontrollerhub:NB/MCH202と、サウスブリッジおよび入力/出力I/Oコントローラハブsouthbridgeandinput/outputI/Ocontrollerhub:SB/ICH204とを含むハブアーキテクチャを用いる。処理装置206、メインメモリ208、およびグラフィックスプロセッサ210は、ノースブリッジおよびメモリコントローラハブNB/MCH202に結合される。処理装置206は1つまたはそれ以上のプロセッサを含んでもよく、1つまたはそれ以上の異種プロセッサシステムを用いて実装されてもよい。特定の実装において、グラフィックスプロセッサ210はアクセラレーテッドグラフィックスポートacceleratedgraphicsport:AGPを通じてNB/MCHに結合されてもよい。図示される例において、ローカルエリアネットワークLANアダプタ212はサウスブリッジおよびI/OコントローラハブSB/ICH204に結合される。オーディオアダプタ216、キーボードおよびマウスアダプタ220、モデム222、読取り専用メモリreadonlymemory:ROM224、ユニバーサルシリアルバスuniversalserialbus:USBおよびその他のポート232、ならびにPCI/PCIeデバイス234は、バス238を通じてサウスブリッジおよびI/Oコントローラハブ204に結合される。ハードディスクドライブHarddiskdrive:HDD226およびCD-ROM230は、バス240を通じてサウスブリッジおよびI/Oコントローラハブ204に結合される。PCI/PCIeデバイスは、たとえばイーサネットアダプタ、アドインカード、およびノート型コンピュータ用のPCカードなどを含んでもよい。PCIはカードバスコントローラを用いるのに対し、PCIeは用いない。ROM224は、たとえばフラッシュバイナリ入力/出力システムbinaryinput/outputsystem:BIOSなどであってもよい。ハードディスクドライブ226およびCD-ROM230は、たとえば統合ドライブエレクトロニクスintegrateddriveelectronics:IDEまたはシリアルアドバンスドテクノロジアタッチメントserialadvancedtechnologyattachment:SATAインタフェースなどを用いてもよい。スーパーI/OsuperI/O:SIOデバイス236がサウスブリッジおよびI/OコントローラハブSB/ICH204に結合されてもよい。オペレーティングシステムは処理装置206上で実行される。オペレーティングシステムは、図2のデータ処理システム200内のさまざまな構成要素を調整してその制御を提供する。オペレーティングシステムは、たとえばマイクロソフトRウィンドウズRマイクロソフトおよびウィンドウズは、米国およびその他の国におけるマイクロソフト社の登録商標である、またはリナックスRリナックスは、米国およびその他の国におけるリーナストーバルズの登録商標であるなどの商業的に入手可能なオペレーティングシステムであってもよい。JavaRプログラミングシステムなどのオブジェクト指向プログラミングシステムがオペレーティングシステムとともに実行されてもよく、データ処理システム200において実行中のJavaRプログラムまたはアプリケーションからオペレーティングシステムへの呼出しを提供するJavaは、米国およびその他の国におけるサンマイクロシステムズ社の登録商標である。オペレーティングシステム、オブジェクト指向プログラミングシステム、およびアプリケーションまたはプログラムに対する命令は、ハードディスクドライブ226などの記憶装置に位置付けられており、処理装置206による実行のためにメインメモリ208にロードされてもよい。例示的実施形態のプロセスは、たとえばメインメモリ208、読取り専用メモリ224などのメモリ、または1つもしくはそれ以上の周辺デバイスなどに位置付けられてもよいコンピュータ実装命令を用いて、処理装置206によって行なわれてもよい。図1~2におけるハードウェアは、実装によって変動してもよい。図1~2に示されるハードウェアに加えて、またはその代わりに、たとえばフラッシュメモリ、同等の不揮発性メモリ、または光ディスクドライブなど、他の内部ハードウェアまたは周辺デバイスが用いられてもよい。加えて、この例示的実施形態のプロセスがマルチプロセッサデータ処理システムに適用されてもよい。いくつかの実例において、データ処理システム200はパーソナルデジタルアシスタントpersonaldigitalassistant:PDAであってもよく、これは一般的にフラッシュメモリによって構成されることによって、オペレーティングシステムファイルもしくはユーザ生成データまたはその両方を保存するための不揮発性メモリを提供する。バスシステムは、たとえばシステムバス、I/Oバス、およびPCIバスなどの1つまたはそれ以上のバスを含んでもよい。もちろんバスシステムは、ファブリックまたはアーキテクチャに取付けられた異なる構成要素またはデバイス間のデータ転送を提供するようなあらゆるタイプの通信ファブリックまたはアーキテクチャを用いて実装されてもよい。通信装置は、データを送信および受信するために用いられる1つまたはそれ以上のデバイス、たとえばモデムまたはネットワークアダプタなどを含んでもよい。メモリは、たとえばメインメモリ208またはキャッシュ、たとえばノースブリッジおよびメモリコントローラハブ202内にみられるキャッシュなどであってもよい。処理装置は1つまたはそれ以上のプロセッサまたはCPUを含んでもよい。図1~2に示される例および上述の例は、アーキテクチャの限定を暗示することを意味するものではない。たとえばデータ処理システム200は、PDAの形を取ることに加えて、タブレットコンピュータ、ラップトップコンピュータ、または電話装置であってもよい。図3を参照すると、この図面は例示的実施形態を実装し得るデータ処理システムにおけるRWLを用いた動作のブロック図を示す。プロセス302、304および306は、データ処理システム内のプロセスまたはスレッド、たとえば図1におけるサーバ104などであってもよい。プロセス302、304および306は、ロックワード308を用いて実装されるRWLを取得または解除するために争っていてもよい。ロックワード308のRWLは、プロセス302、304および306が読取りまたは書込みを争い得るリソース310に関連していてもよい。ロックワード308のRWLは、現在利用可能なオペレーティングシステムにおいて用いられるようなRWLであってもよい。たとえば、プロセス302はリソース310に対する読取りロックの取得を要求していてもよい。プロセス304はリソース310に対する書込みロックの取得を要求していてもよい。プロセス306はリソース310に対して前に取得した読取りロックの解除を要求していてもよい。リソース310に対するロックを取得または解除するための各要求によって、ロックワード308で原子動作が実行されるか、または実行をスケジュールされる。原子更新atomicupdate312は、ロックワード308におけるこうした原子動作の1つまたはそれ以上を表す。ロックワード308を実装して原子更新312を実行するオペレーティングシステムは、プロセス302、304および306と類似のもっと多くのプロセスまたはスレッドがロックワード308によって表されるRWLの取得または解除を要求すると、性能が低下すると考えられる。たとえば、図3に示されるとおりに動作するデータ処理システムの許容できる性能は、性能計量metricが閾値以上に残っていることによって定められてもよい。一実施形態において、プロセス302、304および306と類似のプロセスの総数がプロセスの閾値数を超えることは、データ処理システムの性能を許容できないものにすると解釈され得る。たとえば、構成例の1つにおいて、合計5000のスレッドまたはプロセスがさまざまなRWLに対する原子動作を実行するために争うことは、データ処理システムの性能を許容できないものにすると解釈され得る。別の実施形態において、プロセス302、304および306と類似のプロセスの総数が特定のRWLに対するプロセスの閾値数を超えることは、データ処理システムの性能を許容できないものにすると解釈され得る。たとえば、構成例の1つにおいて、1000以上のスレッドがロックワード308を用いるロックを取得または解除するために争うことは、性能低下の原因と考えられ得る。別の実施形態において、プロセス302、304および306と類似のプロセスの総数がプロセッサ数に対するプロセスの閾値比率を超えることは、データ処理システムの性能を許容できないものにすると解釈され得る。たとえば、構成例の1つにおいて、プロセッサ当り1000以上のスレッドがRWLを取得または解除するために争うことは、性能低下の原因と考えられ得る。図4を参照すると、この図面は例示的実施形態に従うDMLのブロック図を示す。実施形態に従うDML400は、オリジナルロック402を含む。オリジナルロック402は、たとえば図3におけるロックワード308など、現存するRWLを表すために用いられるものなどのロックワードであってもよく、本発明の実施形態に従って修正されて、DML400に拡張可能になっている。オリジナルロック402は含有ロックcontaininglockまたはロックの含有要素containingelementとも呼ばれる。DML400はさらに、拡張ロック404、406、408および410を含む。オリジナルロック402ならびに拡張ロック404、406、408および410は、RWLがDML400に変換される前に現存するRWLによって管理されていたリソースに対して単一のロックとして動作する。言換えると、オリジナルロック402と、拡張ロック404、406、408および410の各々とが単一ロックのロック要素を形成する。たとえばオペレーティングシステムの構成要素などのロック管理機構は、同じリソースに対するロックを管理するために、各ロック要素に対して別々に、個々に、かつ同じロックすなわちDML400における他のロック要素に対する動作とは独立に動作できる。拡張ロック404~410の各々は、ロック情報を保存するために使用可能なメモリスペースであってもよい。たとえば一実施形態においては、起動の際にオペレーティングシステムが、ロックワードを作成および保存するため、またはRWLもしくはDMLと組み合わせた他の使用のために確保される好適なサイズの好適なメモリ領域を指定してもよい。拡張ロックは拡張要素またはリーダロック要素とも呼ばれる。拡張ロック404~410は、こうして指定されたメモリ領域内の同サイズまたは異なるサイズのメモリスペースであってもよい。たとえば一実施形態において、拡張ロック404~410の各々は単一ワードのサイズであってもよい。別の実施形態において、拡張ロック404~410のいくつかは1ワードのサイズであってもよく、一方拡張ロック404~410の他の拡張ロックは特定の実装に好適であるようにもっと大きいかまたは小さいサイズであってもよい。別の実施形態において、拡張ロック404~410を保存するためにあらゆるメモリ領域が使用可能であってもよい。たとえば、分散データ処理環境において、拡張ロック404~410のいくつかの拡張ロックは1つのプロセッサに近いメモリ領域に位置付けられてもよく、他の拡張ロックは異なるプロセッサに近い異なるメモリ領域に位置付けられてもよい。言換えると、拡張ロック404~410は、プロセッサとの親和性もしくはデバイスとの近さを考慮して、または他の考慮によって、メモリのあらゆる領域に分散されてもよい。図4においては、説明を明確にするための単なる例として4つの拡張ロックが示される。本発明の範囲内で、あらゆる数の拡張ロックが作成されてもよく、異なるオリジナルロックが異なる態様で拡張されてもよい。たとえば1つのRWLを拡張するために、ある実装が例示的実施形態の態様で4つの拡張ロックを作成してもよい。別のRWLを拡張するために、その実装が8個、16個、またはあらゆる他の数の拡張ロックを作成してもよい。加えて、オリジナルロック402および拡張ロック404~410は論理的ビューとしてのみ隣接して示されており、本発明を図示されるとおりに限定することは意図されていない。オリジナルロック402および拡張ロック404~410の各々は、本発明の範囲内で特定の実装に好適であるように所与のメモリ内のどこに位置付けられてもよい。例示的実施形態に従うと、オリジナルロック402は拡張ロック404~410を用いて拡張される。オリジナルロック402をこの態様で拡張することによって、ロックのデータがメモリスペースの2つ以上のロックワードにわたって維持および操作されることが可能になる。ここではロックがオリジナルロック402および拡張ロック404~410によって集合的に表される。このように表されたDML400に関する原子動作は、オリジナルロック402または拡張ロック404~410のいずれかのメモリスペースに関して別々に進行できる。たとえば、オリジナルロック402および拡張ロック404~410の各々が1データワードのサイズであると仮定する。特定のプロセスがオリジナルロック402のデータワードを用いてDML400を取得または解除してもよい。こうしたロック動作に関連する原子動作は、オリジナルロック402を表すデータワードに対して実行される。特定の他のプロセスが拡張ロック406のデータワードを用いて同様にDML400を取得または解除してもよい。こうしたロック動作に関連する原子動作は、一般的に拡張ロック406を表すデータワードに対して実行される。他のプロセスも同様にオリジナルロック402または拡張ロック404~410の1つに割り当てられてもよい。本開示の他の場所に説明されるとおり、特定の状態によって、1つの拡張ロックに割り当てられたプロセスがオリジナルロックまたは異なる拡張ロックに対して動作を実行することがある。さらに、すべての書込みロックはオリジナルロック402を用いるあらゆるプロセスによって取得され、保持され、解除される。さまざまなプロセスによって取得され、保持され、解除される読取りロックは、本発明の実施形態の態様でオリジナルロック402および拡張ロック404~410のいずれかにわたって分散されてもよい。現在、RWLを操作するための2つまたはそれ以上の原子動作が、現在使用されているRWLのメモリスペースにおいて順次実行を待つ必要がある。この実施形態に従ってRWLをDML400に拡張することによって、オペレーティングシステムが同じDMLに関連する異なるメモリスペースにおいてこうした2つまたはそれ以上の原子動作を実行することが有利に可能になる。DML400は2つのモードで動作する。リソースに対するロックのコンテンションが閾値よりも低いとき、DML400は拡張ロック404~410を用いずにオリジナルロック402のみを用いて動作してもよい。こうした状況においては、リソースに対するすべての読取りおよび書込みロックがオリジナルロック402を用いて取得され、保持され、解除される。ロックに対するコンテンションが閾値に達するか、または閾値を超えるとき、DML400は拡張してあらゆる数の拡張ロック404~410を用い、実施形態の態様で動作する。図5を参照すると、この図面は例示的実施形態に従って拡張ロックを使用するためのDMLの構成のブロック図を示す。DML500は図4のDML400と類似であってもよい。含有ロックまたはオリジナルロック502は、図4のオリジナルロック402と同様に用いられてもよい。拡張ロック504の部分は、図4の拡張ロック404~410の対応部分と同様に用いられてもよい。オリジナルロック502はロックカウント506を含む。ロックカウント506は、あらゆる所与の時間にオリジナルロック502に保持されているロックの数を保存するビットの組である。ビットの組は1ビットまたはそれ以上のビットである。オリジナルロック502はインジケータの組をさらに含む。インジケータは特定の状態またはある状態の特定の値を示すビットの組である。インジケータの組は1つまたはそれ以上のインジケータである。ある規則が実行される必要があること、または実行されたことを定めるためにインジケータが用いられてもよい。インジケータの例は1ビットだけの長さであってもよく、デバイスのオン/オフ状態、データまたはオプションの利用可能性/利用不可能性、およびその他の類似の状態を示すためにセットまたはリセットされてもよい。インジケータの別の例は数ビットの長さであってもよく、たとえば2ビットであることによって特定の状態の0から4のカウントを保存してもよい。ロックカウント506は、こうしたマルチビットインジケータの例であってもよい。オリジナルロック502はさらに、読取りモードインジケータ508と、インターロックインジケータ510と、アップグレードインジケータ512と、拡張インジケータ514と、拡張可能インジケータ516と、拡張ロックの索引518とを含んでもよい。インジケータ508~516はインジケータの組の例を形成し、本発明の範囲に対する限定なしに例示的実施形態を説明するために選択されたものである。読取りモードインジケータ508は、オリジナルロック502が読取りロックのみを保持するために用いられているのか、それとも読取りロックおよび書込みロックの両方を保持するために用いられているのかを示すために用いられてもよい。たとえば、読取りモードインジケータ508が単一ビットインジケータとして実装されるとき、ビット値0は、オリジナルロック502がロックカウント506に書込みロックカウントを保持している状態を示してもよい。さらにビット値0は、オリジナルロック502がロックカウント506にまったくどのロックも保持しておらず、あらゆるタイプのロックを保持するために利用可能であることを示してもよい。反対にビット値1は、オリジナルロック502がロックカウント506に少なくとも1つの読取りロックカウントを保持している状態を示してもよい。インターロックインジケータ510は、本開示の他の場所に説明されるとおり、DML500の使用中に起こる特定の状態に対処するために用いられてもよい。たとえば、オリジナルロック502の特定の状態をもたらすような原子動作によってオリジナルロック502が更新されるとき、その動作の前にインターロックインジケータ510をセットする必要があることを規則が求めてもよい。拡張インジケータ514は、DML500が拡張ロック504を使用しているかどうかをプロセスに示してもよい。たとえば、拡張インジケータ514が単一ビットインジケータとして実装されるとき、ビット値0は、DML500が拡張ロック504を使用していない状態を示してもよい。反対にビット値1は、DML500が拡張されて拡張ロック504の1つまたはそれ以上の拡張ロックを使用する状態を示してもよい。アップグレードインジケータ512は、過去にロックに対するコンテンション状態が起こったために単純なRWLがDML500に変形し、ロックがDML500の形で存在することを示すために用いられてもよい。言換えると、アップグレードインジケータ512は、DML500が2つのモードのうちのどちらで動作しているかをプロセスに知らせるために用いられてもよい。たとえば、アップグレードインジケータ512が単一ビットインジケータとして実装されるとき、ビット値0は、DML500がオリジナルロック502のみを用いて動作している状態を示してもよい。反対にビット値1は、DML500がオリジナルロック502とともに拡張ロック504を使用している状態を示してもよい。拡張可能インジケータ516は、DML500が拡張可能か、または拡張ロック504を使用できるかどうかを示してもよい。たとえば、拡張可能インジケータ516が単一ビットインジケータとして実装されるとき、ビット値0は、DML500が拡張ロック504を使用できない状態を示してもよい。反対にビット値1は、DML500が拡張されて拡張ロック504の1つまたはそれ以上の拡張ロックを使用し得る状態を示してもよい。たとえば、特定のRWLは拡張された形よりも拡張されない形の方が好ましいことがあり、その選択を行なうために拡張可能インジケータ516が用いられてもよい。一実施形態において、拡張可能インジケータ516は任意であってもよい。実施形態において用いられるとき、拡張可能インジケータ516は、実装が何らかの理由ですべてのロックを拡張しないことを選ぶ場合のスイッチとして用いられてもよい。拡張可能インジケータ516をこの態様で用いることによって、実施形態は特定のロックに対する拡張を選択的に禁じることが可能になる。拡張可能インジケータ516を伴わない実施形態において、その実施形態はすべてのロックが拡張可能であるとみなしてもよい。拡張ロックの索引518は、拡張ロック504内のあらゆる数の拡張ロックの各々に対する参照を保持するように構成されてもよい。索引518を用いて、ロックの取得または解除を要求するプロセスはオリジナルロック502から拡張ロック504内のあらゆる拡張ロックを横断し、そこで要求に応じた動作を行なってもよい。図6Aを参照すると、この図面は例示的実施形態に従うDMLの代替的実施形態のブロック図を示す。DML550は図5のDML500と類似であってもよい。DML550のオリジナルロック552は図5のオリジナルロック502と類似であってもよい。この図面の実施形態は、オリジナルロック552が書込みロックを保存するために用いられているときに使用可能であってもよい。書込みロックを保存するためにDML550を用い得るスレッドに関連する識別子を保持するために、図5のロックカウント506が用いられてもよい。こうしたスレッドは書込みロックのオーナとなる。したがって、ロックカウントまたは書込みロックオーナ識別子554を保存するために、図5のロックカウント506の一部またはすべてのビットが用いられてもよい。図6Bを参照すると、この図面は例示的実施形態に従うDMLの別の代替的実施形態のブロック図を示す。DML570は図5のDML500と類似であってもよい。DML570のオリジナルロック572は図5のオリジナルロック502と類似であってもよい。この図面の実施形態は、オリジナルロック572が書込みロックを保存するために用いられているときに代替的に使用可能であってもよい。ロックカウント574は図5のロックカウント506と類似であってもよい。オリジナルロック572は書込みロックオーナ識別子576をさらに含んでもよい。識別子576は、書込みロックを保存するためにDML570を用い得るスレッドに関連する識別子を保持するために用いられてもよい。ロックカウント574は、図5のロックカウント506と類似の値を保持し続けてもよい。図7を参照すると、この図面は例示的実施形態に従う拡張ロックまたはリーダロック要素の構成の例のブロック図を示す。拡張ロック602は、図5の拡張ロック504内のいずれかの拡張ロックと同様に実装されてもよい。拡張ロック602はロックカウント604を含む。ロックカウント604は、拡張ロック602内に保持されるロックの数を把握している。ロックカウント604のビットは、図5のロックカウント506のビットと類似の態様で動作して使用可能である。たとえば図7の拡張ロック602を用いる図5のDML500などのDMLの実装において、あらゆる所与の時間にDMLが保持するロックの総数は、オリジナルロックと、その時間に使用中である各拡張ロックとのロックカウントの値の合計である。拡張ロック602はインジケータの組をさらに含む。拡張ロック602のインジケータの組は、図5のオリジナルロック502におけるインジケータの組と同様に修正されるか、または伸長されてもよい。読取りモードインジケータ606は、拡張ロック602内のインジケータであってもよい。一実施形態において、読取りモードインジケータ606は、図5の読取りモードインジケータ508と類似の態様で動作してもよい。別の実施形態において、読取りモードインジケータ606は、拡張ロック602が読取りロックのみを保持するために使用されているのか、それとも異なるタイプのロックの組み合わせを保持するのかを示すために用いられてもよい。拡張ロック602はさらにアップグレードインジケータ608を含んでもよい。一実施形態において、アップグレードインジケータ608は図5のオリジナルロック502のアップグレードインジケータ512に対応していてもよく、拡張ロック602が図5のオリジナルロック502のアップグレードにおける拡張ロックであることを示してもよい。別の実施形態において、アップグレードインジケータ608は拡張ロック602自体のアップグレードを示すために用いられてもよい。たとえば、拡張ロック602が拡張ロックの組とともに拡張されることによって、拡張ロック602の使用中に起こり得るあらゆるコンテンションに対処してもよい。拡張ロックの組は1つまたはそれ以上の拡張ロックである。本開示から明らかになり得る他のインジケータの例として、拡張ロック602の実装はマルチビットのロック番号インジケータ610を任意に含んでもよい。ロック番号インジケータ610は、拡張ロック602を参照するために図5の拡張ロックの索引518の代わりに用いられても、またはそれに加えて用いられてもよい。図5のオリジナルロック502および図7の拡張ロック602は、記載された情報をすべて保存するためにあらゆるビット数を含んでもよい。オリジナルロック502または拡張ロック602は、あらゆる特定の情報を保存するためにあらゆるビット数をさらに用いてもよい。たとえば、インジケータのいずれか、たとえば読取りモードインジケータまたは拡張可能インジケータなどが2ビット以上を用いて保存されてもよい。オリジナルロックおよび拡張ロックにおいて類似のインジケータが用いられるとき、類似のインジケータの値を保持するために異なるビット数が用いられてもよい。さらに、例示的実施形態の範囲内で類似の機能を行なうためにこれらのインジケータが修正、補足、増補、増強されるか、または別様で変更されてもよい。これらのインジケータはインジケータの限定的な組となることは意図されておらず、本明細書において例示的実施形態を明確にするためにのみ選択されて記載されるものである。本開示から付加的なインジケータが明らかとなるだろうし、それらは本発明の範囲内で予期されるものである。図5および図7に示されるインジケータの組は、本発明の範囲内であらゆる特定のインジケータが占有し得るビット位置を限定することなく例示的なやり方で配置されている。これらのインジケータおよびあらゆる他のインジケータは、本発明の範囲から逸脱することなくあらゆる順序で図5のオリジナルロック502または図7の拡張ロック602のメモリスペース内であらゆる好適なビットを占有してもよい。図8を参照すると、この図面は例示的実施形態に従うDML内の特定のオリジナルロックまたは拡張ロックにプロセスまたはスレッドを割り当てる方法の例のブロック図を示す。ロック番号702は、DML内のオリジナルロックまたは特定の拡張ロックに関連する番号または索引であってもよい。たとえばロック番号702は、図5に示されるDML500の拡張ロック504内の特定の拡張ロックを参照し得る、拡張ロックの索引518におけるエントリであってもよい。スレッド704は、DMLを用いてロックの取得または解除を要求している実例プロセスのスレッドの例であってもよい。スレッド704は例示的実施形態の説明を明確にするためにのみ用いられるものであって、本発明を限定することは意図されていない。スレッド704はスレッド、プロセス、またはデータ処理環境においてロックを取得および解除できるあらゆるその他の機構であってもよい。スレッド704は自身に関連付けられた識別子を有してもよく、その識別子はスレッド704が実行され得るデータ処理システムにおいてスレッド704を一意に識別するために使用されてもよい。スレッド識別子706はこうした識別子の1つであってもよい。実施形態例の1つにおいては、スレッド識別子706からロック番号702が算出708されることによって、スレッド704と、ロック番号702に関連するオリジナルロックまたは拡張ロックとの間の結合、親和性、関係または割り当てが形成されてもよい。たとえば、DMLの例は所与の場合に1つのオリジナルロックと4つの拡張ロックとを使用していてもよい。スレッド識別子706がハッシュ化されて0から4の間の数が得られてもよい。ハッシュ値が0であれば、スレッド704はオリジナルロックに割り当てられてもよく、そのスレッド704が関連リソースとともに行なうロックの取得または解除のすべてがオリジナルロックを用いて追跡される。同様に、ハッシュ値が1、2、3または4であれば、スレッド704はそれぞれ拡張ロック1、2、3または4に割り当てられてもよい。一実施形態において、ハッシュ値は読取りロックを保存するためにどの拡張ロックを用いるかを示してもよく、書込みロックはオリジナルロックに保存されていてもよい。言換えると、ロックがアップグレードされていて、読取りロックを保存すべき拡張ロックを識別するためにハッシュ値が用いられているときは、読取りロックはオリジナルロックに保存されていない。たとえばハッシュ値0は、拡張ロック0、1、2および3が存在し得るときに、読取りカウントを保存するためにリーダロック0を用いることを示してもよい。ハッシュ化は計算708の例としてのみ説明される。計算708は、DML内のオリジナルロックまたは拡張ロックの索引、番号または識別子にスレッド704を一意に関連付けるために使用可能なあらゆる好適な計算であってもよい。図9を参照すると、この図面は例示的実施形態に従うDMLを用いて読取りおよび書込みロックを管理することのブロック図を示す。スレッド802は図8のスレッド704と類似であってもよい。オリジナルロック804および拡張ロック806は、図8の説明において用いられたDMLの対応する構成要素であってもよい。拡張ロック806は、図8のロック番号702によって参照、索引付けまたは番号付けされてもよい。図9に示される構成のときに、スレッド802はそのロック番号を用いて拡張ロック806にマップされるか、または別様で関連付けられている。実施形態に従うと、スレッド802が書込みロック808の取得を要求するとき、書込みロック808に対するその要求はオリジナルロック804に向けられる。書込みロック808の解除の要求もオリジナルロック804に向けられる。書込みロック808の取得または解除に関するすべての原子動作は、オリジナルロック804を用いて行なわれる。スレッド802が読取りロック810の取得を要求するとき、読取りロック810に対する要求はオリジナルロック804または拡張ロック806に向けられ得る。読取りロック810の解除の要求は、オリジナルロック804、拡張ロック806、または別の拡張ロック812に向けられ得る。読取りロック810の取得または解除に関するすべての原子動作は、好ましくは拡張ロック806を用いて行なわれる。本開示の別の場所に説明されるとおり、拡張ロック806に関する特定の状態が存在するときは、読取りロック810の取得または解除に関する原子動作がオリジナルロック804または別の拡張ロック812を用いて行なわれてもよい。図10を参照すると、この図面は例示的実施形態に従うDMLを作成するプロセスの例の流れ図を示す。プロセス900は、たとえばオペレーティングシステムまたはその構成要素などのデータ処理システムにおいてロックを管理するアプリケーションにおいて実装されてもよい。プロセス900は、オリジナルロックに対するコンテンション状態を検出することによって始まるステップ902。ステップ902におけるオリジナルロックは現在使用されているRWLであってもよいし、実施形態に従うDMLにおいて使用可能であり得るオリジナルロックであってもよい。ステップ902のオリジナルロックが現在使用されているRWLであれば、プロセス900の付加的なステップ図示せずが、現在使用されているRWLを例示的実施形態によって使用可能であり得るオリジナルロックに変換してもよい。プロセス900は、オリジナルロックとともに用いるための拡張ロックの好適な数を定めるステップ904。プロセス900は、拡張ロックとして使用するためのメモリの1つまたは部分を指定するステップ906。プロセス900は、オリジナルロック内に拡張ロックの索引を作成するステップ908。その後プロセス900は終了する。ステップ908の一実施形態において、プロセス900はオリジナルロックの拡張ロックの索引の中に、拡張ロックが作成されたさまざまなメモリ場所のアドレスの順序付けされたリストを保存してもよい。別の実施形態において、プロセス900はステップ908においてあらゆる別のタイプの索引を保存してもよい。たとえば、ステップ908は拡張ロックの1つもしくはそれ以上のこうしたアドレス、または拡張ロックの順序、またはその組み合わせを明らかにするために変換され得る値のリストを作成してもよい。図11を参照すると、この図面は例示的実施形態に従って拡張ロックに対するメモリスペースを割り当てるプロセスの流れ図を示す。プロセス1000は、図10のプロセス900とともに実装されてもよい。一実施形態において、ロックとして使用するためのメモリスペースは、図10のプロセス900の開始より前に、たとえば起動時にオペレーティングシステムによってすでに割り当てられていてもよい。こうした実施形態において、プロセス900は図10のプロセス900のステップ906において、拡張ロックとして使用するための予め割り当てられたメモリの特定の部分を指定するだけでよい。別の実施形態において、図10のプロセス900はプロセス1000に先行されてもよい。プロセス1000は、ロックとして使用するためのメモリの領域を割り当てることによって始まるステップ1002。次いでプロセス1000は、図10のプロセス900をステップ906で実行してもよく、図10のプロセス900の終了とともに終了してもよい。プロセス900において、図10のステップ906は、ステップ1002において割り当てられたメモリの領域から、拡張ロックとして使用するためのメモリの1つまたはそれ以上の部分を指定するか、または割り当ててもよい。図12を参照すると、この図面は例示的実施形態に従って特定の拡張ロックを特殊化するプロセスの流れ図を示す。プロセス1100は、図10のプロセス900とともに実装されてもよい。図10のステップ908の後に、プロセス900はプロセス1100を実行してもよい。プロセス1100は、拡張ロックの1つまたはそれ以上をリーダロックとして指定することによって始まるステップ1102。その後プロセス1100は終了する。たとえば、プロセス1100は1つまたはそれ以上の拡張ロックの中に読取りモードインジケータビットをセットすることによって、それらの拡張ロックが関連リソースに対する読取りロックのみを保持するために用いられることを示してもよい。図13を参照すると、この図面は例示的実施形態に従ってDML内の特定のオリジナルロックまたは拡張ロックにスレッドまたはプロセスを割り当てるプロセスを示す。プロセス1200は、たとえばオペレーティングシステムまたはその構成要素などのデータ処理システムにおいてロックを管理するアプリケーションにおいて実装されてもよい。プロセス1200は、DMLを用いてリソースに対するロックを要求しているスレッドまたはプロセスに関連する識別子を検出することによって始まるステップ1202。プロセス1200は、その要求が読取りロックに関係するか、書込みロックに関係するかを定めるステップ1204。もしその要求が読取りロックを取得または解除することであればステップ1204の読取り経路、プロセス1200はそのロック要求に対して用いるためのロック番号またはロック索引を算出するステップ1206。たとえば、プロセス1200はステップ1202からの識別子をハッシュ化して、そのリソースに対するオリジナルロックおよび拡張ロックの総数を最大とする番号を得てもよい。プロセス1200はスレッドの要求を、算出されたロック番号または索引に対応するロックに割り当てるステップ1208。その後プロセス1200は終了する。ステップ1208において割り当てられたロックの特定の状態では、本開示の他の場所に説明されるとおり、プロセス1200は付加的なステップを行なうか、または別のプロセスを実行してもよい。こうした付加的なステップまたは別のプロセスは、割り当てられたロック以外のオリジナルロックまたは拡張ロックを用いてロック動作を行なってもよい。ステップ1204に戻って、もしその要求が書込みロックに関係していればステップ1204の書込み経路、プロセス1200はそのスレッドの要求をオリジナルロックに割り当てるステップ1210。その後プロセス1200は終了する。上述のブロック図の中の構成要素および流れ図の中のステップは、例としてのみ説明されるものである。これらの構成要素およびステップは、説明を明確にするために選択されたものであり、本発明の例示的実施形態を限定するものではない。たとえば、特定の実装は例示的実施形態の範囲から逸脱することなくこれらの構成要素またはステップのいずれかの組み合わせ、省略、さらなる細分、修正、増補、低減、または代替的な実装を行なってもよい。さらに、上述のプロセスのステップは、本発明の範囲内で異なる順序で行なわれてもよい。すなわち、例示的実施形態において、デュアルモードリーダライタロックのためのコンピュータに実装される方法、装置、およびコンピュータプログラム製品が提供される。本発明の実施形態を用いて、データ処理システムはロックコンテンション状態において効率を改善させて動作できる。この実施形態を用いて、データ処理システムはRWLが飽和してそれ以上のロックを保持できないときにも効率を改善させて動作できる。実施形態に従うDMLは、ロックに対する要求が閾値よりも低いときには、現在使用されるRWLと同様にオリジナルロック構成のみを用いて動作できる。ロックに対する要求が閾値に達するかまたは閾値を超えるとき、すなわちロックに対するコンテンション状態が存在するとき、DMLは変形して拡張ロックを用いて動作できる。言換えると、実施形態に従うDMLは、ロックに対する要求によってアップグレードされて拡張モードで動作することも、ダウングレードされてオリジナルモードで動作することもできる。一実施形態において、現存するRWLは1データワード未満のスペースを占有してもよい。こうした実施形態においては、例示的実施形態の範囲内でオリジナルロックと1つまたはそれ以上の拡張ロックとを1データワード以内に収容できる。本発明の単なるいくつかの実施形態例として、拡張ロックがリーダロックを保持すると説明した。好適な修正の際には、拡張ロックが書込みロックを含むロックのタイプの組み合わせを保持するために用いられ得る。本発明の実施形態は、現存するロック管理アプリケーションと協働し得る。この実施形態は、現存するアプリケーションおよびプロセスが現在使用されるRWLを使用するためにのみ構成されているときに、それらがDMLを透過的に用いることも可能にできる。さらにDMLモードは使用中に、DMLを使用しているアプリケーションおよびプロセスにこうした遷移を気付かせることなく変化できる。本発明は、完全にソフトウェアの実施形態、またはハードウェアおよびソフトウェア要素の両方を含む実施形態の形を取り得る。好ましい実施形態において、本発明は、ファームウェア、常駐ソフトウェア、およびマイクロコードを含むがそれに限定されないソフトウェアまたはプログラムコードにおいて実装される。さらに本発明は、コンピュータもしくはあらゆる命令実行システムによる使用、またはそれに関連する使用のためのプログラムコードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からのアクセスが可能なコンピュータプログラム製品の形を取り得る。この説明の目的のために、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置またはデバイスによる使用、またはそれに関連する使用のためのプログラムを含有、保存、通信、伝播、または移送できるあらゆる実体的装置であってもよい。その媒体は電子、磁気、光学、電磁気、赤外、もしくは半導体のシステムもしくは装置もしくはデバイスまたは伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体またはソリッドステートメモリ、磁気テープ、取外し可能なコンピュータディスケット、ランダムアクセスメモリrandomaccessmemory:RAM、読取り専用メモリread-onlymemory:ROM、剛性磁気ディスク、および光ディスクを含む。光ディスクの現行例は、コンパクトディスク-読取り専用メモリcompactdisk-readonlymemory:CD-ROM、コンパクトディスク-読取り/書込みcompactdisk-read/write:CD-R/WおよびDVDを含む。さらに、コンピュータ記憶媒体はコンピュータ可読プログラムコードを含有または保存することによって、そのコンピュータ可読プログラムコードがコンピュータ上で実行されるときに、このコンピュータ可読プログラムコードの実行によってそのコンピュータが通信リンクを通じて別のコンピュータ可読プログラムコードを送信するようにさせてもよい。この通信リンクは、限定的でなくたとえば物理的または無線などである媒体を用いてもよい。プログラムコードを保存もしくは実行またはその両方を行うために好適なデータ処理システムは、システムバスを通じてメモリ要素に直接的または間接的に結合された少なくとも1つのプロセッサを含むだろう。メモリ要素は、プログラムコードの実際の実行の際に用いられるローカルメモリ、大容量記憶媒体、および実行中に大容量記憶媒体からコードを検索しなければならない回数を減らすために少なくともいくつかのプログラムコードの一時的記憶を提供するキャッシュメモリを含んでもよい。データ処理システムは、サーバデータ処理システムまたはクライアントデータ処理システムとして動作してもよい。サーバおよびクライアントデータ処理システムは、たとえばコンピュータ可読であるなどコンピュータ使用可能であるデータ記憶媒体を含んでもよい。サーバデータ処理システムに関連するデータ記憶媒体は、コンピュータ使用可能コードを含んでもよい。クライアントデータ処理システムはそのコンピュータ使用可能コードをダウンロードして、たとえばそのクライアントデータ処理システムに関連するデータ記憶媒体に保存したり、そのクライアントデータ処理システムにおいて使用したりしてもよい。同様にサーバデータ処理システムは、クライアントデータ処理システムからコンピュータ使用可能コードをアップロードしてもよい。例示的実施形態のコンピュータ使用可能プログラム製品実施形態からもたらされるコンピュータ使用可能コードは、この態様でサーバおよびクライアントデータ処理システムを用いてアップロードまたはダウンロードされてもよい。入力/出力またはI/Oデバイスキーボード、ディスプレイ、ポインティングデバイスなどを含むがそれに限定されないは、システムに直接結合されるか、または介在するI/Oコントローラを通じて結合されてもよい。加えて、データ処理システムが介在する私的または公的ネットワークを通じて他のデータ処理システムまたは遠隔のプリンタもしくは記憶装置に結合されることを可能にするために、システムにネットワークアダプタが結合されてもよい。モデム、ケーブルモデムおよびイーサネットカードは、現在利用可能なネットワークアダプタのタイプのうちのほんのいくつかである。本発明の説明は例示および説明の目的のために提供されたものであって、網羅的になったり、本発明を開示される形に限定したりすることは意図されていない。通常の当業者には多くの修正および変更が明らかになるだろう。実施形態は、本発明の原理および実際の適用を説明し、他の通常の当業者が予期される特定の使用に好適であるようなさまざまな修正を伴うさまざまな実施形態に対して本発明を理解できるようにするために選択されて説明されたものである。