
NTFSというファイルシステムは、MFT(Master File Table)というところで、ファイル名や作成日時などの属性を保持していると学びました。
エクスプローラでフォルダの中を表示したとき、ファイル名や更新日時が見えますが、MFTから読み込んでいると認識しています。
また、ファイルの中身を変更したとき、更新日時が更新されますが、これはMFTの内容が更新されていると考えています。
そこで疑問に思ったのですが、ファイルの更新とエクスプローラ(または他のプログラム)からのMFTの読み込みがちょうどタイミングよく重なったとき、どうなるのでしょうか?
うまくOSの方で制御していて書き込みまたは読み込みのどちらかが待つようになっているのか、それともどちらかがエラーするのでしょうか?
プログラムを作る上で少し気になったので質問させていただきました。
ご回答よろしくお願いします。
また、ここまでの記述の認識で間違っている部分があったら指摘してください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
NTFSのファイルシステムや、MFTの構造、そのほか、LBLのこと、Microsoftの資料など、
広範囲に調査して理解していく必要があると思います。
MFTと呼ばれるものは、ユーザーファイルのトップに書き出される情報(56バイトとか)も含まれます。
管理テーブルとしてももちろん存在します。何か根本的に誤解しているような。
管理テーブル情報の一部は、ファイルの先頭にもコピーされているという概念ですけど。
一例として、
ファイルシステム
http://jiten.biglobe.ne.jp/j/84/a9/0c/5893b9e90d …
NTFSファイルシステムの構造
http://iss.x0.com/software/useful/ntfs.html
NTFS でマスタ ファイル テーブル (MFT) 用の領域を予約する方法
http://support.microsoft.com/kb/174619/ja
すばやい回答ありがとうございます!
また、わかりやすいリンク先を紹介していただき助かります。
おっしゃるとおり自分が書いてることにはあまり自信がありません。
まわりにそれほど詳しい人もいないですし…。
ファイル名とか更新日時とかがどこにあるのか検索していったらディレクトリエントリ(NTFSだとMFT)と出てきたのでそれに絞って質問させていただきました。
2個目のリンク先にも
(0x30) $FILE_NAME ←こんなのがありましたし。
また3つ目のリンク先に
>注 : dir コマンドで返される結果は、最新の値ではない場合があります。正常にシャットダウンされた後にシステムを起動したときの MFT のサイズが反映されているキャッシュ データが、dir コマンドで報告されるサイズに反映されることがあります。
というのがありましたが、ファイル情報の参照時や更新時のMFTの動作がわかればいいのかなと思いました。
詳しいサイト等ご存知でしたら教えていただけないでしょうか。
本でもいいです。
あと、私の知識不足でいろいろ間違っている部分があると思いますが、そこは遠慮なく指摘して下さい。
私が作ろうとしているのはVBScriptにより、FileSystemObjectのnameプロパティによりファイル名を取得しようとしています。
すぐに返信できないかもしれませんが、必ず拝見させていただきます!
ぜひぜひよろしくお願いします。
No.1
- 回答日時:
> ファイルの更新とエクスプローラ(または他のプログラム)からのMFTの読み込みがちょうど
> タイミングよく重なったとき、どうなるのでしょうか?
OSの方で、制御します。
ファイルアクセス制御といい、OSの基本機能です。
片方が終了したら通知しますかといったような選択もできます。
もしくは、読み込みだけであれば、可能ですよといったメッセージが出ると思います。
実験的に、wordで一つのファイルを開いておき、別なwordで同じファイルを開いてみるとすぐに分かります。
俗に、同期を取るとか、排他制御という言葉で表現します。
しかし、一つのファイルに関しては、OSの方で制御しますが、大きなシステム構築する場合は、
複数のファイルをアクセスする場合が発生し、もっと上のレベルで、同期管理をしないと、
デットロックが発生します。
システムエンジニアの仕事のシステムデザイン時には、このファイル関連図というものを作成し、
デットロックが発生しないような、仕組みを作るのが大事な要素となります。
WEB検索する場合は、「ファイルの排他制御」、もっと専門的には、「Enqueue/Dequeue」といった専門用語になってきます。
回答ありがとうございます。
私の方も少し説明不足だったため、若干教えていただきたい内容とずれがあったように思いますので再度詳細を書きたいと思います。
私がお聞きしたかったのは、ファイル更新時にはファイル更新日時も更新されるため、MFTの情報も更新されると思われますが、そのときにタイミングよくMFTの参照もされる場合、うまく制御されておりエラーしないのか、もっと言えば、プログラム作成時に気にしなくてよいのかということなのです。
ファイル本体を読み書きする場合は、ロックするなり排他制御する必要があると思うのですが、MFT(やディレクトリエントリ)のところは特に何もしなくてもいいのでしょうか。(というより何かする関数等は無い様な気もしますが…)
私が作りたいプログラムは、フォルダ内を検索して該当のファイル名のファイルを探してコピーするものです。
そのフォルダは市販のソフトのフォルダであり、いつどのファイルを使っているかわからないため、私のプログラムでファイル属性の参照をしている時に市販のソフト側でファイルをオープンしているかもしれません。
ファイル属性の参照が何の影響も及ぼさないのかどうか気になっています。
ちなみにコピーしようとしているファイルはログであり、ログができるタイミングでは実行しないようにするので、コピー部分は気にしていません。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- CPU・メモリ・マザーボード BIOSアップデート 3 2022/07/09 22:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedriveの中身を削除したらパ...
-
Winmerge ファイルの中身は同じ...
-
emlをtxtに変換するには?
-
複数ファイルを印刷
-
office365 ファイルを削除したい
-
mrl→midファイルへ
-
教えてください!困ってます。
-
バッチファイルで変数の中身を...
-
共有フォルダ内のファイル使用...
-
MS-DOSのコマンド
-
IPテレビのプレイリストだとお...
-
コマンドプロンプトによるフォ...
-
BAKファイルを非表示にする方法
-
WindowsXP embeddedの開発方法...
-
Androidでダウンロードに失敗し...
-
アーカイブ
-
ファイルの単位
-
ODBCエラー「admin」によってロ...
-
Solaris7のCシェル文字数制限...
-
Linuxにゴミ箱は?…ファイルの復...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Winmerge ファイルの中身は同じ...
-
教えてください!困ってます。
-
emlをtxtに変換するには?
-
onedriveの中身を削除したらパ...
-
同期センターのマークが出てま...
-
コマンドプロンプトによるフォ...
-
ファイルの先頭行を全て削除したい
-
mrl→midファイルへ
-
外字ファイル、eudc.tte と e...
-
バッチファイルで変数の中身を...
-
office365 ファイルを削除したい
-
Windows10 フォルダ内の自動並...
-
ファイルの単位
-
ショートカットアイコンと、元...
-
VScodeでjarファイルを開く方法
-
macのdmgファイル(動画)をMP4...
-
バッチファイルからタスクスケ...
-
フォルダ内の一覧を印刷するには?
-
mac ファイルの詳細情報を編集...
-
Excellにて→ファイルエラー:デ...
おすすめ情報