(57)【要約】【課題】  ファイルに対する複数のハードリンクを特定して、複数のハードリンクとファイルの間の関係を表示することを含むファイルシステムにおける、ファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法、装置、およびコンピュータプログラムを提供する。【解決手段】  いくつかの実施例は、ファイルをネームスペースに直接に写像するファイルに対するリンクを有するハードリンクを含む。また、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイは、ファイルに対するハードリンクのリストを提供し、ファイルにおいてリストに対するポインタを提供することを含む。また、いくつかの実施例は、複数のハードリンクを有するファイルを削除し、ファイルに対するハードリンクをリネームし、ファイルに対するハードリンクのパス名を表示することを含む。【選択図】  図５
2007035030.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステムにおいてファイルに対する階層的ハードリンクをグラフィカルに表示する方法であって、
ファイルに対する複数のハードリンクを特定するステップと、
前記複数のハードリンクと前記ファイルとの間の関係を表示するステップと、
を有する方法。
【請求項２】
ハードリンクが、ファイルに対するリンクであって、前記ファイルをネームスペースに直接に写像するリンクを有する請求項１に記載の方法。
【請求項３】
前記複数のハードリンクと前記ファイルとの間の関係を表示するステップが、前記ファイルを表し、かつ前記ファイルに対するハードリンクの個数を表す、少なくとも１つのアイコンを表示するステップを更に有する、請求項１に記載の方法。
【請求項４】
前記複数のハードリンクと前記ファイルとの間の関係を表示するステップが、複数のハードリンクを有する前記ファイルに対する各ハードリンクを表す特有のアイコンを表示するステップを更に有する、請求項１に記載の方法。
【請求項５】
ファイルに対する複数のハードリンクを特定するステップが、
複数のハードリンクを有するファイルから前記ファイルに対するハードリンクのリストまでポインタに追随するステップと、
前記リストを横断するステップと
を更に有する、請求項１に記載の方法。
【請求項６】
前記ファイルに対するハードリンクのリストを提供するステップと、
前記ファイルの中に前記リストに対するポインタを提供するステップと
を更に有する、請求項１に記載の方法。
【請求項７】
ファイルに対する複数のハードリンクを特定するステップが
階層的ネームスペースを横断するステップと、
各ハードリンクに対して、前記ハードリンクが他のハードリンクを指し示すかどうかを判定するステップと
を更に有する、請求項１に記載の方法。
【請求項８】
複数のハードリンクを有するファイルを削除するステップを更に有し、
複数のハードリンクを有する前記ファイルから前記ファイルに対するハードリンクのリストまでポインタに追随するステップと、
前記リストの中の前記すべてのハードリンクを削除するステップと
を有する、請求項１に記載の方法。
【請求項９】
前記ファイルに対する前記ハードリンクをリネームするステップを更に有し、
ユーザから新しいファイル名を受け取るステップと、
複数のハードリンクを有する前記ファイルから前記ファイルに対するハードリンクのリストまでポインタに追随するステップと、
前記リストの中の前記ハードリンクに前記新しい名前を割り当てるステップと
を有する、請求項１に記載の方法。
【請求項１０】
前記ファイルに対する前記ハードリンクのパス名を表示するステップを更に有し、
複数のハードリンクを有する前記ファイルから前記ファイルに対するハードリンクのリストまでポインタに追随するステップと、
前記リストの中の各ハードリンクについて、前記ハードリンクから名前を検索するステップと、
前記リストの中の各ハードリンクに対する前記ハードリンクのパスを検索するために、そのルートに対する前記階層を横断するステップと
を有する、請求項１に記載の方法。
【請求項１１】
ファイルシステムにおいてファイルに対する階層的ハードリンクをグラフィカルに表示するための装置であって、前記システムは、
コンピュータプロセッサと、
前記コンピュータプロセッサと作動的に接続された計算機メモリであって、その中に
ファイルに対する複数のハードリンクを特定でき、かつ
前記複数のハードリンクと前記ファイルとの間の関係を表示することができる
計算機プログラム命令を配設した前記計算機メモリと、
を備える、装置。
【請求項１２】
前記複数のハードリンクと前記ファイルとの間の関係を表示することができる前記計算機プログラム命令が、前記ファイルを表し、かつ前記ファイルに対するハードリンクの個数を表す、少なくとも１つのアイコンを表示することができる計算機プログラム命令を更に備える、請求項１１に記載の装置。
【請求項１３】
前記複数のハードリンクと前記ファイルの間の関係を表示することができる前記計算機プログラム命令が、複数のハードリンクを有する前記ファイルに対する各ハードリンクを表す特有のアイコンを表示することができる計算機プログラム命令を更に備える、請求項１１に記載の装置。
【請求項１４】
ファイルに対する複数のハードリンクを特定することができる前記計算機プログラム命令が、
複数のハードリンクを有するファイルから前記ファイルに対するハードリンクのリストまでポインタに追随することと、
前記リストを横断することと
が可能な計算機プログラム命令を更に備える、請求項１１に記載の装置。
【請求項１５】
ファイルに対する複数のハードリンクを特定することができる前記計算機プログラム命令が、
階層的ネームスペースを横断することと、
各ハードリンクに対して、前記ハードリンクが他のハードリンクを指し示すかどうかを判定することと
が可能な計算機プログラム命令を更に備える、請求項１１に記載の装置。
【請求項１６】
ファイルシステムにおいてファイルに対する階層的ハードリンクをグラフィカルに表示するためのコンピュータ・プログラムであって、
信号保持媒体に配設され、
ファイルに対する複数のハードリンクを特定する計算機プログラム命令と、
前記複数のハードリンクと前記ファイルの間の関係を表示する計算機プログラム命令と
を有する、コンピュータ・プログラム。
【請求項１７】
前記複数のハードリンクと前記ファイルの間の関係を表示する計算機プログラム命令が、前記ファイルを表し、かつ前記ファイルに対するハードリンクの個数を表す、少なくとも１つのアイコンを表示する計算機プログラム命令を更に有する、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記複数のハードリンクと前記ファイルとの間の関係を表示する計算機プログラム命令が、複数のハードリンクを有する前記ファイルに対する各ハードリンクを表す特有のアイコンを表示する計算機プログラム命令を更に有する、請求項１６に記載のコンピュータ・プログラム。
【請求項１９】
ファイルに対する複数のハードリンクを特定する計算機プログラム命令が、
複数のハードリンクを有するファイルから前記ファイルに対するハードリンクのリストまでポインタに追随する計算機プログラム命令と、
前記リストを横断する計算機プログラム命令と
を更に有する、請求項１６に記載のコンピュータ・プログラム。
【請求項２０】
ファイルに対する複数のハードリンクを特定する計算機プログラム命令が、
階層的ネームスペースを横断する計算機プログラム命令と、
各ハードリンクに対して、前記ハードリンクが他のハードリンクを指し示すかどうかを判定する計算機プログラム命令と
を更に有する、請求項１６に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、さらに詳細には、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法、装置、および製品である。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣコンピュータシステムの開発が、コンピュータ時代の始まりとしてよく引用される。その時以来、コンピュータシステムは、非常に複雑な装置に発展してきた。今日のコンピュータは、ＥＤＶＡＣのような初期のシステムと比較して、はるかに高性能である。通常、コンピュータシステムは、ハードウェアおよびソフトウェア部品の組合せ、アプリケーションプログラム、オペレーティングシステム、プロセッサ、バス、メモリ、入出力装置などを含む。半導体プロセスおよびコンピュータアーキテクチャの進歩がコンピュータの高性能化をますます推し進めるにつれて、ハードウェアの、より高い性能を駆使するために、より洗練されたコンピュータソフトウェアが発展し、その結果、ほんの２、３年前に比べても、今日のコンピュータシステムは、はるかに強力なものとなっている。
【０００３】
コンピュータは、オペレーティングシステムと呼ばれるソフトウェアの基礎階層を有し、このオペレーティングシステムは、ファイルを保存し、かつ組織化し、アプリケーションが計算機資源にアクセスするために、このオペレーティングシステムを利用する。オペレーティングシステムでは、ファイルのようなオブジェクトが命名され、保存され、組織化される全体的な構造が、ファイルシステムと呼ばれる。ファイルシステムは、ファイルシステムで保存されたオブジェクトにアクセスするために用いられる、パス名の集合からなるネームスペースにおいて組織化されることが多い。パス名は、ファイルを特定するシンボルおよび名前の列である。ネームスペースの中のあらゆるファイルはファイル名と呼ばれる名前を有するため、最も簡単な種類のパス名は、ただファイル名だけからなる。ディレクトリの中のファイルにアクセスするために、パス名は、作業ディレクトリから始まる、またはファイルに対するルートディレクトリから始まるファイルへのパスを特定する。様々なオペレーティングシステムは、パス名を指定する異なった規則を有する。例えば、ＤＯＳシステムでは、ルートディレクトリは‘&#9586;’と命名され、各サブディレクトリは、バックスラッシュを付加することにより区切られる。ＵＮＩＸ（Ｒ）では、ルートディレクトリは‘&#9585;’と命名され、各サブディレクトリのあとにスラッシュが続いている。マッキントッシュ環境では、ディレクトリは、コロンにより区切られる。これらのパス名は、オブジェクトをネームスペースに‘写像する’、または‘リンクする’。オブジェクトをネームスペースに直接に写像するリンクは‘ハードリンク’と呼ばれる。
【０００４】
今日のオペレーティングシステムは、ファイルシステムのファイルおよびディレクトリを参照して、操作するために、グラフィカル・ユーザ・インターフェース（「ＧＵＩ」）を提供する。通常、従来のＧＵＩは、ファイルシステムネームスペースをユーザに示すため、ファイルシステムオブジェクトを、コンテナオブジェクトまたはデータオブジェクトとして分類することをその手段としている。ディレクトリまたはフォルダのようなコンテナオブジェクトは、他のコンテナオブジェクトまたはディレクトリを含むことができ、通常、ファイルシステム用のＧＵＩの左側に配設されている。ファイルに対するハードリンクのようなデータオブジェクトは、他のオブジェクトを含まず、通常、ファイルシステム用のＧＵＩの右側に配設されている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通常、ハードリンクのようなデータオブジェクトは、データオブジェクトが表すファイルシステムの中の下位ファイル（ｕｎｄｅｒｌｙｉｎｇ  ｆｉｌｅ）と１対１の関係を有する。しかしながら、ファイルシステムの中の単一のファイルに対して複数のハードリンクがあるとき、従来のＧＵＩは、そのハードリンクを、ファイルに対する他のハードリンクが存在することを示す表示のないデータオブジェクトとして、ファイルシステムＧＵＩの右側に表示する。従来のファイルシステムＧＵＩでは、複数のハードリンクを有するファイルと、単一のハードリンクを有するファイルとの間に差異が無いために、混乱を生じ、複数のハードリンクを有するファイルの管理を困難にさせる。
【０００６】
例えば、ファイルシステムからファイルを除去しようとするユーザは、ファイルに対する単一のハードリンクであるように見えるものを削除すればよい。ファイルが、実際には、ネームスペースの全体にわたって複数のハードリンクを有するとき、ユーザは、ファイルシステムから下位ファイルを除去する代わりに、ハードリンクの１つを除去しただけであろう。ユーザが従来のファイルシステムＧＵＩを用いてファイルシステムからファイルを除去するためには、ユーザは、手作業でファイルシステムの全ネームスペースを検索して、そのファイルに関連するすべてのハードリンクを手作業で削除しなければならない。ファイルシステムＧＵＩの中の複数のハードリンクを有するファイルを効率的に参照し、操作することができないと、ユーザにとって時間の浪費につながる。
【課題を解決するための手段】
【０００７】
ファイルに対する複数のハードリンクを特定して、複数のハードリンクとファイルの間の関係を表示することを含むファイルシステムにおける、ファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法、装置、およびコンピュータ・プログラムを提供する。また、いくつかの実施例は、ファイルをネームスペースに直接に写像するファイルに対するリンクを有するハードリンクを含む。また、通常、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイは、ファイルに対するハードリンクのリストを提供し、ファイルの中にリストに対するポインタを提供することを含む。また、いくつかの実施例は、複数のハードリンクを有するファイルを削除し、ファイルに対するハードリンクをリネームし、ファイルに対するハードリンクのパス名を表示することを含む。
【０００８】
また、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための実施例に基づいて、複数のハードリンクとファイルの間の関係を表示することは、ファイルを表現し、かつファイルに対するハードリンクの個数を示す少なくとも１つのアイコンを表示し、複数のハードリンクを有するファイルに対する各ハードリンクを表す特有のアイコンを表示することを含んでもよい。
【０００９】
また、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための実施例に基づいて、ファイルに対する複数のハードリンクを特定することが、階層的ネームスペースを横断し、各ハードリンクに対して、そのハードリンクが他のハードリンクを指し示すかどうかを判定し、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随し、リストを横断することを含んでもよい。
【００１０】
また、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための実施例に基づいて、複数のハードリンクを有するファイルを削除することが、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随し、リストの中のすべてのハードリンクを削除することを含んでもよい。
【００１１】
また、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための実施例に基づいて、ファイルに対するハードリンクをリネームすることが、ユーザから新しいファイル名を受け取り、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随し、リストの中のハードリンクに新しい名前を割り当てることを含んでもよい。
【００１２】
また、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための実施例に基づいて、ファイルに対するハードリンクのパス名を表示することが、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随し、リストの中の各ハードリンクに対するハードリンクから名前を検索し、リストの中の各ハードリンクに対するハードリンクのパスを検索するために、そのルートに対する階層を横断することを含んでもよい。
【００１３】
本発明の、前述および他の目的、特徴、および利点は、添付図面で示されたような本発明の例示的な実施例についての下記のさらに具体的な説明から明らかとなるであろう。添付図面では、全体を通して類似の参照番号は本発明の例示的な実施例の類似の部分を表す。
【発明を実施するための最良の形態】
【００１４】
本発明は、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法に関して、本明細書においてその大部分が説明される。しかしながら、当業者は、開示された方法に従って作動する好適なプログラミング手段を含む任意のコンピュータシステムが、本発明の範囲内にあることを認識するであろう。好適なプログラミング手段は、本発明の方法のステップを実行処理するようにコンピュータシステムに指示する任意の手段を含み、この任意の手段は、例えば、処理装置、および計算機メモリと結合された論理演算回路からなる、計算機メモリに保存する能力を有するシステムを含み、この計算機メモリは、データ、およびプログラム命令、処理装置により実行処理するための本発明の方法のプログラミングされたステップを保存するように構成された電子回路を含む。
【００１５】
また、任意の好適なデータ処理システムと共に使用するために、ディスケット、または他の記録媒体のようなコンピュータ・プログラムにおいて、本発明を具現化できる。磁気媒体、光学媒体、または他の好適な記憶媒体を含む、機械可読情報用の任意の記録媒体を用いて、コンピュータ・プログラムの実施例を実行することができる。好適なプログラミング手段を有する任意のコンピュータシステムが、プログラムで具現されるように本発明の方法のステップを実行処理できるであろうことを、当業者は直ちに認識するであろう。本明細書で説明された例示的な実施例の大部分はまた、コンピュータハードウェアにインストールされて、コンピュータハードウェア上で実行処理するソフトウェアに関するものではあるが、ファームウェアとして、またはハードウェアとして実現された他の実施例が本発明の範囲内にあることを、当業者は直ちに認識するであろう。
【００１６】
図１から順に添付図面を参照しながら、本発明の実施例の、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための例示的な方法、装置、および製品について説明する。図１は、本発明の実施例の、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのために有用なシステム例を図解するネットワーク図を示す。図１のシステムの各装置（１０８、１１２、１０４、１１０、１０２、１２６、および１０６）は、本発明の実施例の、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイの能力を有し、その手段として、ファイルに対する複数のハードリンクを特定して、複数のハードリンクとファイルの間の関係を表示する方法を採用している。
【００１７】
図１のシステムは、広域網（「ＷＡＮ」）（１０１）、およびローカルエリア網（「ＬＡＮ」）（１０３）を含む。図１のアーキテクチャのネットワーク結合態様は、あくまで説明のために示したに過ぎず、限定しようとするものではない。実際には、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのためのシステムは、ＬＡＮ、ＷＡＮ、イントラネット、ネットワーク間、インターネット、ウェブ、ワールド・ワイド・ウェブ自体、または当業者が想起するであろう他の接続として接続されうる。このようなネットワークは、全体的なデータ処理システム内で共に接続された様々な装置およびコンピュータ間のデータ通信接続を提供するために用いることができる媒体である。
【００１８】
図１の例では、サーバ（１０６）は、ＬＡＮ（１０３）とＷＡＮ（１０１）の間のゲートウェイ、ルータ、またはブリッジを実行する。図１の例では、ＰＤＡ（１１２）、計算機ワークステーション（１０４）、携帯電話（１１０）、およびパーソナルコンピュータ（１０８）を含む数個の例示的な装置が、ＷＡＮ（１０１）に接続されている。ネットワーク可能な携帯電話（１１０）は、無線リンク（１１６）を介してＷＡＮ（１０１）に接続し、ＰＤＡ（１１２）は、無線リンク（１１４）を介してＷＡＮ（１０１）に接続する。図１の例では、パーソナルコンピュータ（１０８）は、有線接続（１２０）を介してネットワーク（１０１）に接続し、計算機ワークステーション（１０４）は、有線接続（１２２）を介してネットワーク（１０１）に接続する。図１の例では、（１２６）は、無線リンク（１１８）を介してＬＡＮ（１０３）に接続し、パーソナルコンピュータ（１０２）は、有線接続（１２４）を介してＬＡＮ（１０３）に接続する。
【００１９】
図１のシステムでは、各装置例（１０８、１１２、１０４、１１０、１２６、１０６、および１０２）は、コンピュータプロセッサ、およびデータ送受信のためにプロセッサと接続された計算機メモリを含む。図１の各コンピュータの計算機メモリは、その中に、ファイルシステム、およびグラフィカルハードリンク・ディスプレイモジュールを含む計算機プログラム命令を配設する。グラフィカルハードリンク・ディスプレイモジュールは、一般に、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイの能力を有し、その手段として、ファイルに対する複数のハードリンクを特定して、複数のハードリンクとファイルの間の関係を表示する方法を採用している。
【００２０】
また一般に、グラフィカルハードリンク・ディスプレイモジュールは、ファイルを表現し、かつファイルに対するハードリンクの個数を示す少なくとも１つのアイコンを表示し、複数のハードリンクを有するファイルに対する各ハードリンクを表す特有のアイコンを表示することができる。また、一般に、グラフィカルハードリンク・ディスプレイモジュールは、階層的ネームスペースを横断し、各ハードリンクに対して、そのハードリンクが他のハードリンクを指し示すかどうかを判定し、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随し、リストを横断することができる。一般に、グラフィカルハードリンク・ディスプレイモジュールは、ファイルに対するハードリンクのリストを提供し、ファイルの中にリストに対するポインタを提供することができる。また、一般に、グラフィカルハードリンク・ディスプレイモジュールは、複数のハードリンクを有するファイルを削除することができ、その手段として、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随し、リストの中のすべてのハードリンクを削除する方法を採用している。一般に、グラフィカルハードリンク・ディスプレイモジュールは、ファイルに対するハードリンクをリネームすることができ、その手段として、ユーザから新しいファイル名を受け取り、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随し、リストの中のハードリンクに新しい名前を割り当てる方法を採用している。一般に、グラフィカルハードリンク・ディスプレイモジュールは、ファイルに対するハードリンクのパス名を表示することができ、その手段として、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随し、リストの中の各ハードリンクに対するハードリンクから名前を検索し、リストの中の各ハードリンクに対するハードリンクのパスを検索するために、そのルートに対する階層を横断する方法を採用している。
【００２１】
図１で図解されたシステム例を構成するサーバおよび他の装置の配置は、説明のためのものであり、限定するものではない。本発明の様々な実施例に基づく有用なデータ処理システムは、当業者が想起しうる、図１に示していない付加的なサーバ、ルータ、他の装置、およびピア・ツー・ピア・アーキテクチャを含んでもよい。このようなデータ処理システムのネットワークは、例えば、ＴＣＰ（伝送制御プロトコル）、ＩＰ（インターネット・プロトコル）、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、ＷＡＰ（無線アクセスプロトコル）、ＨＤＴＰ（ハンドヘルド・デバイス・トランスポート・プロトコル）、および当業者が想起しうる他のプロトコルを含む多くのデータ通信プロトコルをサポートできる。図１で図解されたもの以外の種々のハードウェアプラットフォーム上で、本発明の様々な実施例を実行できる。
【００２２】
本発明に基づく、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイは、一般に、コンピュータにおいて、すなわち、自動演算機械において実行される。図１のシステムでは、例えば、すべてのノード、サーバ、および通信装置は、ある程度までは、少なくともコンピュータとして実行される。したがって、詳細な説明のために、図２は、本発明の実施例の、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイにおいて有用なコンピュータ例（１５２）による自動演算機械のブロック図を示す。図２のコンピュータ（１５２）は、少なくとも１つのコンピュータプロセッサ（１５６）または‘ＣＰＵ’とともに、システムバス（１６０）を介して、プロセッサ（１５６）、およびコンピュータの他の構成要素に接続されるランダムアクセスメモリ（１６８）（「ＲＡＭ」）を含む。
【００２３】
ＲＡＭ（１６８）には、オペレーティングシステム（１５４）が保存されている。本発明の実施例のコンピュータで有用なオペレーティングシステムには、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、マイクロソフトＷｉｎｄｏｗｓ  ＮＴ（Ｒ）、ＡＩＸ（Ｒ）、ＩＢＭのｉ５／ＯＳ（Ｒ）、および当業者が想起しうる他のオペレーティングシステムがある。図２のオペレーティングシステム（１５４）は、ファイルシステム（２１０）を含む。ファイルシステムは、ファイルシステムオブジェクトを命名し、保存し、組織化する全体的な構造を提供する。ファイルシステムは、ファイル、ディレクトリ、およびこれらのアイテムを位置付けして、かつアクセスするために必要とされる情報を含んでもよい。本発明の実施例のコンピュータで有用なファイルシステムには、高性能ファイルシステム（「ＨＰＦＳ」）、ＮＴファイルシステム（「ＮＴＦＳ」）、ＨＦＳプラス、Ｕｎｉｘファイルシステム（「ＵＦＳ」）、第２拡張ファイルシステム（「ｅｘｔ２」）」、および当業者が想起しうる他のファイルシステムがある。
【００２４】
また、図２のオペレーティングシステム（１５４）は、グラフィカルハードリンク・ディスプレイモジュール（２００）、すなわち、本発明の実施例のファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための計算機プログラム命令を含む。グラフィカルハードリンク・ディスプレイモジュールは一般に、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイの能力を有し、その手段として、ファイルに対する複数のハードリンクを特定し、複数のハードリンクとファイルの間の関係を表示する方法を採用している。図２の例では、オペレーティングシステム（１５４）、ファイルシステム（２１０）、グラフィカルハードリンク・ディスプレイモジュール（２００）は、ＲＡＭ（１６８）の中に示されているが、通常、このようなソフトウェアの多くの構成要素は、不揮発性メモリ（１６６）の中にも保存される。図２の例では、グラフィカルハードリンク・ディスプレイモジュール（２００）はオペレーティングシステム（１５４）のサブシステムとして示されているが、これは説明のためであり、限定するものではない。また、本発明のグラフィカルハードリンク・ディスプレイモジュールを、アプリケーションとしてオペレーティングシステム（１５４）の外部に装備することができる。
【００２５】
図２のコンピュータ（１５２）は、システムバス（１６０）を介して、プロセッサ（１５６）、およびコンピュータ（１５２）の他の構成要素と接続された不揮発性計算機メモリ（１６６）を含む。不揮発性計算機メモリ（１６６）を、ハードディスク・ドライブ（１７０）、光ディスク・ドライブ（１７２）、電気消去可能プログラマブル読出し専用メモリスペース（いわゆる‘ＥＥＰＲＯＭ’または‘フラッシュ’メモリ）（１７４）、ＲＡＭドライブ（図示せず）として、または当業者が想起しうる任意の他の種類の計算機メモリとして実現することができる。
【００２６】
図２のコンピュータの例は、１つ以上の入出力インターフェース・アダプタ（１７８）を含む。コンピュータの入出力インターフェース・アダプタは、例えば、コンピュータディスプレイ画面のような表示装置（１８０）への出力とともに、キーボードおよびマウスのようなユーザ入力装置（１８１）からのユーザ入力を制御するソフトウェアドライバおよびコンピュータハードウェアを介して、ユーザ指向の入出力を実行する。
【００２７】
図２のコンピュータ例（１５２）は、他のコンピュータ（１８２）とのデータ通信（１８４）を実行する通信アダプタ（１６７）を含む。このようなデータ通信は、ＲＳ−２３２接続を介してシリアルに、ＵＳＢのような外部バスを介して、ＩＰネットワークのようなデータ通信網を介して、および当業者が想起しうる他の方法で実行されうる。通信アダプタは、１つのコンピュータが、直接に、またはネットワークを介して他のコンピュータにデータ通信を送出するためのデータ通信のハードウェアレベルを実現する。本発明の実施例に基づく、送出先の可用性を判定するために有用な通信アダプタの例は、有線ダイヤルアップ通信用モデム、有線ネットワーク通信用イーサネット（ＩＥＥＥ８０２．３）アダプタ、および無線ネットワーク通信用８０２．１１ｂアダプタを含む。
【００２８】
詳細な説明のために、図３は、本発明の実施例の、ファイルシステム（２１０）におけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解するフローチャートを示し、この方法例は、ファイル（３０２）に対する複数のハードリンク（３１２）を特定し（３１０）、複数のハードリンク（３１２）とファイル（３０２）の間の関係を表示すること（３２０）を含む。上述したように、ネームスペースで実行されたファイルシステム例（２１０）は、ＮＴＦＳ、ＨＰＦＳ、ＵＦＳ、および当業者が想起しうる他のファイルシステムを含む。本明細書では、本発明の実施例のファイルシステム（２１０）におけるファイルに対する階層的ハードリンクのグラフィカルディスプレイは、主にＵｎｉｘファイルシステムに関して説明される。これは、説明のためであり、それに限定しようとするものではない。実際には、本発明の実施例のファイルシステム（２１０）におけるファイルに対する階層的ハードリンクのグラフィカルディスプレイは、当業者が想起しうる複数のハードリンクを有するファイルをサポートするネームスペースを有する多数のファイルシステムで実行されうる。
【００２９】
上述したように、通常、ファイルシステムは、オブジェクトを命名し、保存し、組織化する。例えば、Ｕｎｉｘファイルシステムのような典型的なファイルシステムは、２つの主なファイルシステムオブジェクト、すなわち、ファイルおよびディレクトリをサポートする。Ｕｎｉｘファイルシステムでは、各オブジェクトは‘ｉノード（ｉ−ｎｏｄｅ）’と呼ばれるデータ構造により表される。ｉノードは、オブジェクトの種類、所有者、グループ、モード、サイズ、リンクの個数、最後のアクセス時間、および最後の更新時間のようなオブジェクトに関する情報を保存する。また、ｉノードは、オブジェクトの中身を保存するために用いられたすべてのデータブロックの物理ディスクアドレスを含む。ファイルシステム（２１０）のあらゆるオブジェクトは、オブジェクトの新規作成時点で、一意的なｉノードを割り当てられる。すなわち、１つのｉノードが、ファイルシステム（２１０）の中の各ファイルに対して存在する。ファイルシステム（２１０）が作成されると、ファイルシステム（２１０）のすべてのｉノードが割り当てられて、各ｉノードは、一意的な‘ｉ番号（ｉ−ｎｕｍｂｅｒ）’を割り当てられる。
【００３０】
図３のネームスペース（３００）は、ファイルシステム（２１０）に保存されたファイルにアクセスするために用いられたパス名の集合を表す。Ｕｎｉｘファイルシステムでは、パス名は、ファイルシステム（２１０）の中のファイル（３０２）に対して、パス名およびｉ番号を関連づけることによりファイルに写像される。ネームスペース（３００）の中のファイル名とファイル（３０２）自体の間の各直接写像は‘ハードリンク（ｈａｒｄｌｉｎｋ）’と呼ばれて、ファイル（３０２）を表すｉノードのリンクカウントを増加させる。また、間接的にパス名をファイルに写像できる。これらの間接的な写像は‘ソフトリンク（ｓｏｆｔｌｉｎｋ）’と呼ばれる。通常、このようなソフトリンクは、ファイル（３０２）自体の代わりに他のハードリンクにパス名を写像する。
【００３１】
ファイルシステム（２１０）の中のファイルをネームスペース（３００）に写像することにより、ディレクトリは  全体としてファイルシステム（２１０）に構造を課す。ディレクトリは、いくつかの個数のハードリンク、または他のディレクトリを含んでもよい。オペレーティングシステムは‘ルート’ディレクトリと呼ばれる各ファイルシステム（２１０）に対して１つの特別なディレクトリを保持する。このディレクトリは、ファイルシステム（２１０）階層のルートとして機能する。ファイルシステム（２１０）の中の他のあらゆるファイルまたはディレクトリは、ルートディレクトリに従属する。ルートを基点としてディレクトリの連鎖を通るパスを指定することにより、ネームスペース（３００）を介して、ファイルシステム（２１０）の中の任意のファイルを位置付けることができる。
【００３２】
上述したように、通常、ファイルシステムは、ファイルのようにオブジェクトを命名し、保存し、組織化する。ファイル（３０２）は、ファイルシステム（２１０）に保存されたデータの任意の集合である。ファイルの例は、スプレッドシート、ワープロ文書、画像、アプリケーション形態、または当業者が想起しうる他の任意の種類のデータの集合を含む。上述したように、Ｕｎｉｘファイルシステムでは、ファイル（３０２）は単一のｉノードにより表される。しかしながら、ネームスペース（３００）を介して２つ以上のハードリンクによりファイル（３０２）にアクセスできる。したがって、図３の例は、ファイル（３０２）に対する複数のハードリンク（３１２）を特定すること（３１０）を含む。図３の方法に基づいて、ファイル（３０２）に対する複数のハードリンク（３１２）を特定すること（３１０）は、以下で図４を参照してさらに詳細に説明されるように、階層的ネームスペース（３００）を横断し、各ハードリンクに対して、そのハードリンクが他のハードリンクを指し示すかどうかを判定し、複数のハードリンクを有するファイルからファイル（３０２）に対するハードリンクのリストまでポインタに追随し、リストを横断することにより実行されうる。
【００３３】
また、図３の方法は、複数のハードリンク（３１２）とファイル（３０２）の間の関係を表示すること（３２０）を含む。図３の例に基づいて、複数のハードリンク（３１２）とファイル（３０２）の間の関係を表示すること（３２０）は、グラフィカル・ユーザ・インターフェース（「ＧＵＩ」）においてファイルナビゲーション用ウィンドウ（３４０）を提供することにより実行されうる。図３の例では、ウィンドウ（３４０）は、ファイルシステム（２１０）の中の他のオブジェクトに関して、コンテナオブジェクト（３３３、３４２）、およびファイルに対する複数のハードリンク（３１４、３１５、３１６）を階層的に表示する。上述したように、コンテナオブジェクトは、他のオブジェクトへの経路としての機能を果たす。例えば、ディレクトリが、ファイルおよび他のディレクトリのような他のオブジェクトを含むため、ディレクトリはコンテナオブジェクトである。図３の複数のハードリンク（３１４、３１５、３１６）は、ファイル（３０２）に対応する単一つのハードリンク（３４４）を示す。また、図３のウィンドウ（３４０）は、複数のハードリンクを有するファイルを操作するボタン（３４８）を含む。図３のボタン（３４８）は、ユーザが、ファイル（３０２）に関連するすべてのハードリンクを削除し、ファイル（３０２）に関連するすべてのハードリンクをリネームし、ファイル（３０２）に関連する別名を参照して、一覧表示することを可能とする。
【００３４】
また、図３の方法例では、複数のハードリンク（３１２）とファイル（３０２）の間の関係を表示すること（３２０）は、ファイルを表現し、かつファイル（３０２）に対するハードリンクの個数を示す少なくとも１つのアイコン（３３０）を表示すること（３２２）を含む。図３の例では、ファイルを表現し、かつファイル（３０２）に対するハードリンクの個数を示すアイコンは、ファイルを表現するドキュメントのアイコンであり、アイコン（３３０）は、ファイルシステム（２１０）がファイル（３０２）に関連するネームスペース（３００）の中に３つのハードリンクを含むことを表すための数字‘３’を含む。
【００３５】
図３の例は、その中にファイルに対するハードリンクの個数を表すための数字を有するアイコンを含むが、これは説明のためのものであり、それに限定するものではない。ファイル（３０２）に対するハードリンクの個数は、任意のアイコン（３３０）、またはアイコンの色、アイコンの形、アイコンの大きさ、アイコンの動画化のようなアイコンの属性、もしくは当業者が想起しうる他の任意の方法により表される。
【００３６】
図３の例では、単一のアイコン（３３０）は、ファイル、およびファイルに対するハードリンクの個数を表す。この場合も先と同様に、説明のためであり、これに限定しようとするものではない。実際には、ファイル（３０２）を表現して、ファイル（３０２）に対するハードリンクの個数を示すために、２つ以上のアイコンを用いることができる。ファイル（３０２）を表現し、かつファイル（３０２）に対するハードリンクの個数を示す少なくとも１つのアイコン（３３０）を有することにより、ユーザが、ウィンドウ（３４０）で示されうる多数のファイルの中で、どのファイルが複数のハードリンクを有するのかを目視により判断できるようになるために都合が良い。
【００３７】
また、図３の方法例では、複数のハードリンク（３１２）とファイル（３０２）の間の関係を表示すること（３２０）は、複数のハードリンクを有するファイル（３０２）に対する各ハードリンク（３１４、３１５、３１６）をそれぞれ表す、２つの特有のアイコン（３３２、３３４）を表示すること（３２４）を含む。図３の例では、２つの特有のアイコン（３３２、３３４）は、複数のハードリンクを有するファイル（３０２）に対する各ハードリンクを表す。複数のハードリンクを有するファイルに対する図３の第１の特有のアイコン（３３２）は、他のコンテナオブジェクトと共に、ウィンドウ（３４０）において、各ハードリンク（３１４、３１５、３１６）の名前と一緒に表示される。図３の特有のアイコン（３３２）は、ファイルシステム（２１０）の中のディレクトリを表すアイコン（３３３）と区別されており、特有のアイコン（３３２）が、複数のハードリンクを有するファイルに対するハードリンクを表すことを示している。図３のもう一方の特有のアイコン（３３４）は、ウィンドウ（３４０）の複数のハードリンク（３１４、３１５、３１６）から、ファイル（３０２）を表す単一つのハードリンク（３４４）までの点線矢印で与えられている。
【００３８】
図３では、両方の特有のアイコン（３３２および３３４）は、複数のハードリンクを有するファイル（３０２）に対する各ハードリンク（３１４、３１５、３１６）を表す特有のアイコンを表示する（３２４）ために用いられる。２つの特有のアイコン（３３２、３３４）を用いることは、それに限定するものではなく、説明のためである。実際には、本発明の複数のハードリンクを有するファイル（３０２）に対する各ハードリンク（３１４、３１５、３１６）を表す特有のアイコンを表示する（３２４）ために、任意の個数の特有のアイコンを用いることができる。
【００３９】
ファイルシステム（２１０）は、ファイル（３０２）に対する多数のハードリンクと関連することが多いため、複数のハードリンクを有するファイルに対する各ハードリンクを表す、すべての特有のアイコンを表示すること（３２４）は、ファイルナビゲータ・ウィンドウ（３４０）を乱雑なものにし、非常に見づらくなる場合がある。複数のハードリンク（３１２）の間の関係を表示する（３２０）ウィンドウ（３４０）は、複数のハードリンクを有するファイルに対する各ハードリンクを表す特有のアイコンの個数を限定して表示することができる。
【００４０】
‘Ｈ’を含む図３の特有のアイコン（３３２）、および点線矢印で構成された特有のアイコン（３３４）は、それに限定するものではなく、説明のためのものである。実際には、ハードリンクを表す特有のアイコンと、ファイルナビゲータ・ウィンドウ（３４０）の左側（３４２）のフォルダとを区別するために、図３の例において、例えば、異なった形、大きさ、色、強調表示、または当業者が想起しうる他の任意の変更などを用いることができる。
【００４１】
詳細な説明のために、図４は、ファイルに対する複数のハードリンク（３１２）を特定する（３１０）方法例を図解するフローチャートを示す。図４の方法に基づいて、ファイルに対する複数のハードリンク（３１２）を特定すること（３１０）は、階層的ネームスペースを横断し（４４０）、各ハードリンクに対して、そのハードリンクが他のハードリンクを指し示すかどうかを判定することを含む。図４の方法例では、通常、階層的ネームスペースの横断（４４０）は、ルートディレクトリを起点としており、ディレクトリ構成を走査してハードリンクを探すことにより実行される。Ｕｎｉｘファイルシステムでは、例えば‘&#9585;’は、ネームスペースのルートディレクトリを表し、ルートディレクトリのすべてのエントリを含むディレクトリ構成と関連する。上述したように、ハードリンクは、ネームスペースのファイル名を、ファイルを表すｉノードに直接に写像するディレクトリエントリである。ハードリンクを作成する各ディレクトリエントリは、‘ｕｓｅｒ．ｄａｔ’のようなファイル名、および特定のｉノードに関連するｉ番号を含む。また、上述したように、ディレクトリエントリは、サブディレクトリへのリンクを作成することができる。サブディレクトリにリンクするディレクトリエントリは、サブディレクトリのエントリが保存されている位置のリファレンス（ｒｅｆｅｒｅｎｃｅ）を含む。Ｕｎｉｘファイルシステムは、ｉノードでサブディレクトリを表すが、これらのｉノードは、ファイルを表すｉノードとは異なった構造を含む。階層的ネームスペースを横断すること（４４０）は、反復アルゴリズムまたは再帰的なアルゴリズムを用いて、ネームスペースのルートディレクトリ、およびすべての従属するディレクトリを横断し、各ディレクトリエントリから、階層的ネームスペースの中のハードリンクを特定することにより実行される。
【００４２】
図４の方法例では、各ハードリンクに対して、そのハードリンクが他のハードリンクを指し示すかどうかの判定（４４１）は、各ハードリンクの‘ネクストリンクポインタ’フィールドを走査することにより実行されうる。‘ネクストリンクポインタ’フィールドがヌル値を含むとき、ハードリンクは他のハードリンクを指し示さない。‘ネクストリンクポインタ’フィールドの非ヌル値は、ファイルに対する複数のハードリンクが存在することを示す。
【００４３】
ハードリンクが他のハードリンクを指し示さないとき、図４の方法は、階層的ネームスペースが横断されたかどうかの判定（４４３）を含む。ネームスペースが横断されていないとき、図４の方法は、階層的ネームスペースの横断（４４０）を継続する。
【００４４】
ハードリンクが他のハードリンクを指し示すとき、図４の方法は、複数のハードリンクを有するファイルからハードリンクのリストまでポインタに追随すること（４４２）を含む。図４の方法の、複数のハードリンクを有するファイルからハードリンクのリストまでポインタに追随すること（４４２）は、各ハードリンクに対して、そのハードリンクが、そのハードリンクが表すファイルに対する他のハードリンクを指し示すかどうかを判定する（４４１）間に、見つけられたハードリンクの‘ファイルポインタ’フィールドに追随することにより実行されうる。また、図４の方法例では、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随すること（４４２）は、ファイルに関連するマスタハードリンクに対する、ファイルの‘マスタ・ハードリンク・ポインタ’フィールドに追随することにより実行されうる。
【００４５】
複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随（４４２）した後、図４の方法は、リストを横断すること（４４４）により継続する。図４の例のリストを横断すること（４４４）は、ファイルに関連する他のハードリンクに対する、ファイルに関連するハードリンクにおける‘ネクストファイルポインタ’フィールドに追随することにより実行されうる。リストを横断すること（４４４）は、横断された現在のハードリンクが、横断された第１のハードリンクと一致するまで、ハードリンクリストの中の１つのハードリンクから他のハードリンクまで‘ネクストファイルポインタ’フィールドに追随することにより実行されうる。横断された現在のハードリンクが、横断された第１のハードリンクと一致するかどうかを判定する１つの方法は、横断された現在のハードリンクと横断された第１のハードリンクのポインタを比較することを含む。横断された現在のハードリンクと横断された第１のハードリンクに対するポインタが一致するとき、全体のハードリンクリストが横断されたことになる。図４では、横断された現在のハードリンクと横断された第１のハードリンクに対するポインタが一致しないとき、リストのを横断（４４４）は継続する。
【００４６】
リストを横断（４４４）した後に、図４の方法は、ネームスペースが横断されたかどうかの判定（４４３）を含む。ネームスペースが横断されていないとき、図４の方法は、階層的ネームスペースの横断（４４０）を継続する。通常、図４の方法は、ネームスペースのすべての部分が横断されるまで継続する。
【００４７】
詳細な説明のために、図５は、図４について上述された、ファイルに対する複数のハードリンクを特定する方法の態様を図解する線画を示す。上述したように、通常、ファイルに対する複数のハードリンクを特定することは、階層的ネームスペースを横断し、各ハードリンクに対して、そのハードリンクが他のハードリンクを指し示すかどうかを判定することを含む。各ハードリンクに対して、そのハードリンクが他のハードリンクを指し示すかどうかの判定は、各ハードリンクの‘ネクストリンクポインタ’フィールドを走査することを含みうる。図５の例は、各ハードリンクに対して、そのハードリンクが他のハードリンクを指し示すかどうかを判定する（４４１）際に有用な、各ハードリンク（４１２、４２２、４３２）の‘ネクストリンクポインタ’フィールド（４１４、４２４、４３４）を示す。図５では、各‘ネクストリンクポインタ’フィールド（４１４、４２４、４３４）は、ファイル（３０２）に関連する他のハードリンクのリファレンスを含む。図５の例では、‘ネクストリンクポインタ’（４１４）は、ハードリンク（４２２）を参照し、‘ネクストリンクポインタ’（４２４）は、ハードリンク（４３２）を参照し、‘ネクストリンクポインタ’（４３４）は、ハードリンク（４１２）を参照する。ハードリンク（４１２、４２２、４３２）で構成されたこの連鎖リスト構造は、ファイル（３０２）に対するハードリンクのリスト（４１０）を提供する。このハードリンクリスト（４１０）は、ファイルシステム（２１０）のネームスペース（３００）にファイル（３０２）を写像するすべてのハードリンクを含む。‘ネクストリンクポインタ’フィールドがヌル値を含むとき、図５の例のハードリンクは、他のハードリンクを指し示さない。しかしながら、‘ネクストリンクポインタ’フィールドの非ヌル値は、ファイルに対する複数のハードリンクが存在することを示す。
【００４８】
また、上述したように、通常、ファイルに対する複数のハードリンクを特定することは、ハードリンクが他のハードリンクを指し示すとき、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随することを含む。複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随することは、ハードリンクの‘ファイルポインタ’フィールドに追随することにより実行されうる。図５の例は、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随する（４４２）際に有用な、各ハードリンク（４１２、４２２、４３２）の‘ファイルポインタ’フィールド（４１６、４２６、４３６）を示す。‘ファイルポインタ’フィールド（４１６、４２６、４３６）は、各ハードリンク（４１２、４２２、４３２）とファイル（３０２）を関連づけるファイル（３０２）のリファレンスを含む。Ｕｎｉｘファイルシステムでは、ハードリンクからファイル（３０２）へのリファレンス（４１６、４２６、４３６）は、ファイル（３０２）に関連するｉ番号である。また、図５の例は、ファイル（３０２）に含まれた‘マスタ・ハードリンク・ポインタ’フィールド（４００）を示す。マスタハードリンク（４１２）は、複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随する際に有用である。図５の例では、ファイル（３０２）の‘マスタ・ハードリンク・ポインタ’フィールド（４００）は、ファイルシステム（２１０）のネームスペース（３００）の中のファイル（３０２）を表すマスタハードリンク（４１２）のリファレンスを含む。‘マスタ・ハードリンク・ポインタ’フィールド（４００）は、本発明の実施例による、ファイル（３０２）に対する複数のハードリンクを特定すること（３１０）を容易にするハードリンクリスト（４１０）へのポインタ（４００）を、ファイル（３０２）に有利に提供する。図５の‘マスタ・ハードリンク・ポインタ’（４００）は、ファイル（３０２）からハードリンクリスト（４１０）へのエントリーポイントとしての機能を果たすため、ハードリンクは‘マスタハードリンク’（４１２）と呼ばれる。
【００４９】
複数のハードリンクを有するファイルからファイルに対するハードリンクのリストまでポインタに追随した後に、ファイルに対する複数のハードリンクを特定することは、通常、リストを横断することにより継続する。リストの横断は、ファイルに関連する他のハードリンクに対する、ファイルに関連するハードリンクにおける‘ネクストファイルポインタ’フィールドに追随することにより実行されうる。図５の例は、リストを横断する（４４４）際に有用な、ハードリンク（４１２、４２２、４３２）の‘ネクストファイルポインタ’フィールド（４１４、４２４、４３４）を示す。図５では、ハードリンク（４１２、４２２、４３２）の各‘ネクストファイルポインタ’フィールド（４１４、４２４、４３４）は、ハードリンクリスト（４１０）中の次のハードリンクを参照する。
【００５０】
リストを横断することは、横断された現在のハードリンクが、横断された第１のハードリンクと一致するまで、ハードリンクリストの中の１つのハードリンクから他のハードリンクまで‘ネクストファイルポインタ’フィールドに追随することにより実行されうる。横断された現在のハードリンクが、横断された第１のハードリンクと一致するかどうかを判定する１つの方法は、横断された現在のハードリンクと横断された第１のハードリンクのポインタを比較することを含む。横断された現在のハードリンクと横断された第１のハードリンクに対するポインタが一致するとき、全体のハードリンクリストが横断されたことになる。
【００５１】
複数のハードリンクを有するファイルを特定したとき、ファイルに対する複数のハードリンクのうちの１つ以上を削除することが有利な場合がある。したがって、詳細な説明のために、図６は、複数のハードリンクを有するファイル（３０２）を削除すること（５０２）を含む、本発明の実施例の、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解するフローチャートを示す。図６の例の、複数のハードリンクを有するファイル（３０２）を削除すること（５０２）は、複数のハードリンクを有するファイル（３０２）からファイル（３０２）に対するハードリンクのリスト（４１０）までポインタ（４００）に追随し（５０４）、リスト（４１０）の中のすべてのハードリンクを削除すること（５０６）を含む。
【００５２】
図６の方法例では、ファイルナビゲータ・ウィンドウ（３４０）は、単一のハードリンクを位置付ける（ｕｐｏｎ  ｌｏｃａｔｉｎｇ）と、ユーザがファイル（３０２）に対するすべてのハードリンク（４１２、４２２、４３２）を削除するのに都合の良い‘すべて削除’ボタン（５００）を含む。図６の‘すべて削除’ボタン（５００）は、ネームスペース全体にわたり検索しファイル（３０２）に対する各ハードリンクを個別に削除することは行わない。
【００５３】
図６の方法例では、複数のハードリンクを有するファイル（３０２）からファイル（３０２）に対するハードリンクのリスト（４１０）までポインタ（４００）に追随すること（５０４）は、ファイル（３０２）に関連するマスタハードリンク（４１２）に対する、ファイル（３０２）の‘マスタ・ハードリンク・ポインタ’フィールド（４００）に追随することにより実行されうる。上述したように、マスタハードリンク（４１２）は、ネームスペースの中のファイル（３０２）を表すすべてのハードリンクを含むハードリンクリスト（４１０）の要素である。マスタハードリンク（４１２）は、ファイル（３０２）からハードリンクリスト（４１０）へのエントリーポイントとしての機能を果たす。図６では、ハードリンクリスト（４１０）は、マスタハードリンク（４１２）、ハードリンク（４２２）、およびハードリンク（４３２）の３つのハードリンクを含む。
【００５４】
図６の方法例では、リスト（４１０）の中のすべてのハードリンクを削除すること（５０６）は、ファイル（３０２）自体から、ハードリンクに関連する各ファイル名をアンリンクすることにより実行されうる。ファイル（３０２）からファイル名をアンリンクすることは、ハードリンクを含むディレクトリからハードリンクエントリを除去する。ファイル（３０２）自体から、ハードリンクに関連する各ファイル名をアンリンクすることは、例えば、次の擬似コード関数‘ｒｅｍｏｖｅ（）’と類似の関数を利用するハードリンクリスト（４１０）を横断する反復アルゴリズムにより実行されうる。
intremove(const char *path);
【００５５】
上記の例示的なｒｅｍｏｖｅ（）関数は、‘パス’と呼ばれるディレクトリエントリを除去して、ファイルを表すｉノードのリンクカウントを減少させる。ファイルを表すｉノードのリンクカウントがゼロになると、ファイルにより占有されたファイルシステムの中のスペースは割り当て解除されて、ファイルは消滅する。
【００５６】
複数のハードリンクを有するファイルを特定したとき、ファイルに対する複数のハードリンクのうちの１つ以上をリネームすることが有利な場合がある。したがって、詳細な説明のために、図７は、ファイル（３０２）に対するハードリンクをリネームすること（６０２）を含む、本発明の実施例の、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解するフローチャートを示す。図７の方法例の、ファイル（３０２）に対するリンクをリネームすること（６０２）は、ユーザから新しいファイル名（６０１）を受け取り（６０４）、複数のハードリンクを有するファイル（３０２）からファイル（３０２）に対するハードリンクのリスト（４１０）までポインタ（４００）に追随し（６０６）、リスト（４１０）の中のハードリンクに新しい名前（６０１）を割り当てること（６０７）を含む。
【００５７】
図７の方法例では、ファイルナビゲータ・ウィンドウ（３４０）は、１つのハードリンクを位置付ける（ｕｐｏｎ  ｌｏｃａｔｉｎｇ）と、ユーザが、ファイル（３０２）に対するすべてのハードリンク（４１２、４２２、４３２）をリネームするのに都合の良い‘すべてリネーム’ボタン（６００）を含む。図７の‘すべてリネーム’ボタン（６００）は、ネームスペース全体を通して検索し、ファイル（３０２）に対する各ハードリンクを個別にリネームすることは行わない。
【００５８】
図７の方法例では、ユーザから新しいファイル名（６０１）を受け取ること（６０４）は、新しいファイル名（６０１）となる文字の入力を可能とするテキストボックスをユーザに提供することにより実行されうる。また、図７の例の、ユーザから新しいファイル名（６０１）を受け取ること（６０４）は、新しいファイル名（６０１）が、ファイルシステムの要求条件に適合することを確保するために、新しいファイル名（６０１）となる文字を確認することを含みうる。また、図７の例では、ユーザから新しいファイル名（６０１）を受け取ること（６０４）は、新しいファイル名（６０１）を電子記憶装置に保存することを含みうる。
【００５９】
図７の方法例では、複数のハードリンクを有するファイル（３０２）からファイル（３０２）に対するハードリンクのリスト（４１０）までポインタ（４００）に追随すること（６０６）は、ファイル（３０２）に関連するマスタハードリンク（４１２）に対する、ファイル（３０２）の‘マスタ・ハードリンク・ポインタ’フィールド（４００）に追随することにより実行されうる。上述したように、マスタハードリンク（４１２）は、ネームスペースの中のファイル（３０２）を表すすべてのハードリンクを含むハードリンクリスト（４１０）の要素である。マスタハードリンク（４１２）は、ファイル（３０２）からハードリンクリスト（４１０）へのエントリーポイントとしての機能を果たす。図７では、ハードリンクリスト（４１０）は、マスタハードリンク（４１２）、ハードリンク（４２２）、およびハードリンク（４３２）の３つのハードリンクを含む。
【００６０】
図７の方法例では、リスト（４１０）の中のハードリンクに新しい名前（６０１）を割り当てること（６０７）は、ハードリンクリスト（４１０）の中のハードリンク（４１２、４２２、４３２）に関連する各ファイル名をリネームすることを含みうる。ハードリンクに関連するファイル名をリネームすることは、ハードリンクの‘名前’フィールドの値に、新しいファイル名（６０１）の値を割り当てることを含みうる。図７の例の、リスト（４１０）の中のハードリンクに新しい名前（６０１）を割り当てること（６０７）は、例えば、次の擬似コード関数‘ｒｅｎａｍｅ（）’と類似の関数を利用するハードリンクリスト（４１０）を横断する反復アルゴリズムにより実行されうる。
intrename(const char *old, const char *new);
【００６１】
例示的ななｒｅｎａｍｅ（）関数は、‘ｏｌｄ（旧）’の中に含まれるファイルの名前を、‘ｎｅｗ（新）’の中に含まれる名前に変更する。図７の例では、現時点で各ハードリンク（４１２、４２２、４３２）に関連するファイル名は‘旧’を表し、新しいファイル名（６０１）は‘新’を表す。
【００６２】
複数のハードリンクを有するファイルを特定したとき、ファイルに対する複数のハードリンクのうちの１つ以上を表示することが有利な場合がある。詳細な説明のために、図８は、ファイル（３０２）に対するハードリンクのパス名を表示すること（７０２）を含む、本発明の実施例の、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解するフローチャートを示す。図８の方法例の、ファイル（３０２）に対するハードリンクのパス名（７０９）を表示すること（７０２）は、複数のハードリンクを有するファイル（３０２）からファイル（３０２）に対するハードリンクのリスト（４１０）までポインタ（４００）に追随し（７０６）、リスト（４１０）の中の各ハードリンクに対するハードリンクから名前を検索し（７０７）、リスト（４１０）の中の各ハードリンクに対するハードリンクのパスを検索するために、そのルートに対する階層を横断すること（７０８）を含む。
【００６３】
図８の方法例では、ファイルナビゲータ・ウィンドウ（３４０）は、ユーザが、ファイル（３０２）に対するハードリンク（４１２、４２２、４３２）のパス名（７０９）のすべてのテキスト表現（７１０）表示を参照するのに都合の良い‘別名一覧’ボタン（７００）を含む。ハードリンク（４１２、４２２、４３２）のパス名のすべてのテキスト表現（７１０）を表示することにより、ユーザは、ファイル（３０２）を表すハードリンクのネームスペースの中の他の位置を容易に見つけることができる。
【００６４】
また、図８の方法例では、ファイルナビゲータ・ウィンドウ（３４０）は、ユーザが、ファイル（３０２）に対するハードリンク（４１２、４２２、４３２）のパス名（７０９）の図的表現（７１２）を表示するのに都合の良い‘別名表示’ボタン（７０１）を含む。ハードリンク（４１２、４２２、４３２）のパス名の図的表現（７１２）を表示することにより、ユーザが、ファイル（３０２）を表すハードリンクのネームスペースの中の他の位置を視覚的に把握することを支援する。
【００６５】
図８の方法例では、複数のハードリンクを有するファイル（３０２）からファイル（３０２）に対するハードリンクのリスト（４１０）までポインタ（４００）に追随すること（７０６）は、ファイル（３０２）に関連するマスタハードリンク（４１２）に対する、ファイル（３０２）の‘マスタ・ハードリンク・ポインタ’フィールド（４００）に追随することにより実行されうる。上述したように、マスタハードリンク（４１２）は、ネームスペースの中のファイル（３０２）を表すすべてのハードリンクを含むハードリンクリスト（４１０）の要素である。マスタハードリンク（４１２）は、ファイル（３０２）からハードリンクリスト（４１０）へのエントリーポイントとしての機能を果たす。図８では、ハードリンクリスト（４１０）は、マスタハードリンク（４１２）、ハードリンク（４２２）、およびハードリンク（４３２）の３つのハードリンクを含む。
【００６６】
図８の方法例では、リスト（４１０）の中の各ハードリンクに対するハードリンクから名前を検索すること（７０７）は、ハードリンクリスト（４１０）の中の各ハードリンク（４１２、４２２、４３２）の‘名前’フィールド（４１８、４２８、４３８）の値を走査することを含んでもよい。図８の例の、リスト（４１０）の中の各ハードリンクに対するハードリンクから名前を検索すること（７０７）は、例えば、次の擬似コード構成および関数を利用するハードリンクリスト（４１０）を横断する反復アルゴリズムにより実行されうる。
void readhardlink(struct dirent *hardlink);
struct dirent {
long d_inode;
char *d_name;
structdirent *next_link;
};
【００６７】
例示的なｒｅａｄｈａｒｄｌｉｎｋ（）関数は、‘ｓｔｒｕｃｔ  ｄｉｒｅｎｔ’タイプのハードリンクリスト（４１０）の中のハードリンクに対するディレクトリエントリを読み取る。‘ｄ＿ｉｎｏｄｅ’フィールドの構成は、ファイル（３０２）を表すｉノードに関連するハードリンク（４１２、４２２、４２３）のｉ番号を含む。‘ｄ＿ｎａｍｅ’フィールドの構成は、各ハードリンク（４１２、４２２、４２３）に対するファイル名（４１８、４２８、４３８）を含む。‘ｎｅｘｔ＿ｌｉｎｋ’フィールドは、ハードリンクリスト（４１０）の中のハードリンクに対する次のディレクトリエントリへのポインタを含む。
【００６８】
図８の方法例では、リスト（４１０）の中の各ハードリンクに対するハードリンクのパスを検索するために、そのルートに対する階層を横断すること（７０８）は、リスト（４１０）の中の各ハードリンク（４１２、４２２、４３２）に対して、カレントディレクトリを走査して‘．．’エントリを探し、親ディレクトリへの‘．．’エントリに追従し、前のディレクトリの名前を読み取ることを含みうる。Ｕｎｉｘファイルシステムにおける各ディレクトリは、それ自身に対するエントリ（‘．’）およびその親に対するエントリ（‘．．’）を含む。‘．’エントリは、ディレクトリ自身を表すｉノードに対するｉ番号、および‘．．’エントリは、親ディレクトリを表すｉノードに対するｉ番号を含む。ルートディレクトリの‘．’および‘．．’エントリは、両方ともルートディレクトリに対するｉノードを参照する。図８の例に従って、カレントディレクトリを走査して‘．．’エントリを探し、親ディレクトリへの‘．．’エントリに追従し、前のディレクトリの名前を読み取ることは、‘．’および‘．．’エントリが同一のｉ番号を参照するまで、反復または再帰的なアルゴリズムを用いて実行されうる。図８の例の、前のディレクトリの名前を読み取ることは、各々の反復または再帰呼び出しの間に、ファイル名およびディレクトリ名を連結することによりパス名（７０９）を作成することを含んでもよい。
【００６９】
図８の方法例では、パス名（７０９）を表示すること（７０２）は、ファイルナビゲータ・ウィンドウ（３４０）にテキスト形式（７１０）でパス名（７０９）を表示することにより実行されうる。また、図８の例の、パス名（７０９）を表示すること（７０２）は、ネームスペースにハードリンク（４１２、４２２、４３２）の位置を視覚的に表示する画像形式（７１２）でパス名（７０９）を表示することにより実行されうる。
【００７０】
本発明の例示的な実施例は、主に、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための完全に機能的なコンピュータシステムとの関連の中で説明される。しかしながら、当技術分野の技能を有する読者は任意の好適なデータ処理システムと共に使用するために、信号保持媒体に配設されたコンピュータ・プログラムにおいて本発明を具現化できることを、認識するであろう。このような信号保持媒体は、伝送媒体、もしくは磁気媒体、光媒体、または他の好適な媒体を含む、機械可読情報用の書き込み可能媒体でありうる。書き込み可能媒体の例は、ハードドライブの磁気ディスクまたはディスケット、光ドライブ用コンパクトディスク、磁気テープ、およびその他の当業者が想起しうるものを含む。伝送媒体の例は、音声通信用の電話網と、例えば、イーサネット（R）、ならびにインターネット・プロトコルおよびワールド・ワイド・ウェブを用いて通信するネットワークのようなデジタルデータ通信ネットワークを含む。好適なプログラミング手段を有する任意のコンピュータシステムが、プログラムで具現されるように本発明の方法のステップを実行処理できるであろうことを、当業者は直ちに認識するであろう。本明細書で説明された例示的な実施例のいくつかは、コンピュータハードウェアにインストールされて、コンピュータハードウェア上で実行処理するソフトウェアに関するものであるが、それにもかかわらず、ファームウェアとして、またはハードウェアとして実現された他の実施例が本発明の範囲内にあることを、当業者は直ちに認識するであろう。
【００７１】
上述の説明により、本発明の真の要旨を逸脱することなく、本発明の様々な実施例において修正および変更をなしうることが理解されるであろう。本明細書の説明は、あくまで例を示すためのものに過ぎず、制限を意味するものと解釈されるべきではない。本発明の範囲は、以下のクレームの文言によってのみ制限される。
【図面の簡単な説明】
【００７２】
【図１】ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのためのシステム例を図解するネットワーク図である。
【図２】ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイにおいて有用なコンピュータ例による、自動演算機械のブロック図である。
【図３】ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのためのを図解するフローチャートである。
【図４】ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解する他のフローチャートである。
【図５】本発明の実施例の、ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解する線画である。
【図６】ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解する他のフローチャートである。
【図７】ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解する他のフローチャートである。
【図８】ファイルシステムにおけるファイルに対する階層的ハードリンクのグラフィカルディスプレイのための方法例を図解する他のフローチャートである。
【図１】
2007035030.tif 000003
【図２】
2007035030.tif 000004
【図３】
2007035030.tif 000005
【図４】
2007035030.tif 000006
【図５】
2007035030.tif 000007
【図６】
2007035030.tif 000008
【図７】
2007035030.tif 000009
【図８】
2007035030.tif 000010