• 締切済み

スワップファイル内のデータについて

ファイルはクラスタ番号をドライバに渡すことによりセクタ番号に変換されディスクのどの位置に読み書きをすればよいのかわかりますが スワップファイル上にあるデータの読み書きは どのような値をドライバに渡して、ディスク上の読み書きする位置を割り出してるのでしょうか 論理アドレス値とかをドライバに渡してるのでしょうか?

みんなの回答

noname#129375
noname#129375
回答No.2

No.1です。 スワッピングにはOS、物理メモリ、CPUが関わってくるのでアドレスの割り出しの仕組みを理解するのは難題と思いますが... とりあえずアドレス変換の分かりやすい資料を見つけたのでご参考に。 http://itpro.nikkeibp.co.jp/article/COLUMN/20070816/279802/?P=2 http://rironnew.inf.eng.tamagawa.ac.jp/Download/OS/Prev/Unix071112-16.pdf http://www.iis.it-hiroshima.ac.jp/~nagasaka/lect/os/2002/OHP/13/O13.pdf

全文を見る
すると、全ての回答が全文表示されます。
noname#129375
noname#129375
回答No.1

そのような事は自分で参考書などを調べて学んでください。ソフトウェア開発技術者の資格を取ればおおよその事は理解できると思いますよ。 クラスタ番号はファイル管理上で使われているだけで、仮想記憶の仕組みには通用しません。ページ単位による仮想アドレスと実アドレスのアドレス変換については「DAT(動的アドレス変換構構)」「MMU」「TLB」あたりを自分で調べてみたら。 http://www.ccad.sist.chukyo-u.ac.jp/~mito/syllabi/architect/OS/index.htm http://www.geocities.jp/mickey_son/hardware/memory/memory.htm http://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E8%A8%98%E6%86%B6 http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=Linux%2F%B2%BE%C1%DB%B5%AD%B2%B1%B4%C9%CD%FD http://www-online.kek.jp/~yasu/Kenshu/linux-virtual-address.html あとこれはダメですよ。 >>【ネチケットに反するもの】 >>・[マルチポスト]同一内容の質問を複数投稿すること

hirohiro8888
質問者

お礼

回答ありがとうございます。申し訳ございまん。質問の仕方を変えようと思って、似た感じの質問を重ねてしまいました。失礼しました。  論理的な仕組みと物理的な仕組みが頭の中でごっちゃになっていました、紹介していただいたサイトや、回答者の回答等を読み返してるうちに整理できました!ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ハードディスク上のバイナリデータを検索できるツール

    Windows7を使っていますが 外付けのUSBハードディスクドライブ (データ領域だけでなくMBR,PBSのセクタも含む) 上にある数バイトのバイナリデータを検索できる フリーソフトはありますでしょうか。 例えば、 01 23 45 67 89 AB CD EFというデータが どこかのセクタ上にあるかどうかと、 ある場合には、このデータのあるセクタとその位置を 見つけることできるツールはありますでしょうか。

  • FAT12ファイルシステムに関する問題。

    タイトルに問題と書きましたが、課題や何かじゃないので咎めないでください。 FAT12でフォーマットしたFDにファイルを直接ディスクに書き込もうと思っています。 しかし、FAT16と違ってFATにクラスタ番号を書き込むのが難しいわけです。 環境はC言語で、アルゴリズムだけなので必要は無いかと思いますが、 Win32APIを使用できる環境です。 1.クラスタ番号は12bit長で 0x003 0x004 0x005 0x006 0xFFFをFATに書き込むと 03 40 00 05 60 00 FF 0F と記録されます。 2.ディスクへの書き込みは実装してあるためバッファへの書き込みが出来ればよい。 3.ディスクは初期化された状態で、0番と1番のテーブルは予約済み。2番からクラスタ番号を書き込むこととする。 4.一つのファイルを整列された状態で書き込むこと。初期化されているため、2番から後のテーブルは全て未使用。 5.クラスタサイズは1セクタ(512バイト)である。 6.書き込まれるファイルサイズは規定していないため、ループによる処理が望ましい。 7.ファイルサイズより必要なクラスタ数は求めてある。 typedef unsigned char byte; typedef unsigned short word, *pword; typedef unsigned long dword; byte fat[512];//FATへの書き込みバッファ 0クリアされている。 dword clust;//必要なクラスタ数 既に求めてある。 dword i;//インクリメント 自分で書いたFAT16用のFAT書き込みコード ((pword)fat)[0] = 0xFFF8;//0番目のクラスタ(予約) ((pword)fat)[1] = 0xFFFF;//1番目のクラスタ(予約) if (clust == 1) {//クラスタサイズが1なら     ((pword)fat)[2] = 0xFFFF;//最終クラスタを示す値を書き込む } else {//複数のクラスタに分割されるなら     for (i=0; i<clust-1; i++) {//クラスタサイズの-1個分までインクリメント         ((pword)fat)[i+2] = (word)i+3;//n番(2番から始まる)のクラスタにn+1のクラスタ番号を書き込んでいく     }     ((pword)fat)[i+2] = 0xFFFF;//最終クラスタを示す値を書き込む } 書きかけのFAT12 ((pword)fat)[0] |= 0x0FF0; *((pword)&fat[1]) |= 0xFFF0; if (clust == 1) {     *((pword)&fat[3]) = 0x0FFF; } else {     /*ここに1クラスタを超えたファイルのクラスタ番号をFATに書き込む処理*/ } どなたか、ヒントや情報をいただけると幸いです。 コードは書き直してもいいですし、変数も適当に名前付けて構いません。 他に必要な変数などがあれば追加してください。 また、補足要求があれば何なりとお書きください。 よろしくお願いいたします。

  • 8192バイトのデータが1個の破損ファイルの断面中にあります

    WindowsMEを使っています。最近2週間ほど前業者によりHDDの破損後、交換→1週間後、メモリ増量(64+128)を行いました。 先程、ローカルディスクのエラーチェックを行ったところ、次のような結果が出ましたが、どういう事か分かりません。説明をお願いします。何か大切なものが無くなる可能性があるのでしょうか? エラーローカルディスク(C) 8192バイトのデータが1個の破損ファイルの断面中にあります。破損ファイルの断面中に使用できるファイルのフォルダが含まれる場合もありますが、通常はディスク領域のムダです。 詳細 2個の破損クラスタが1個のチェーンの見つかりました。 破損クラスタは現在ファイルに関連付けられてませんが、ファイルの一部であったデータが含まれています。通常はこのデータは既に削除したファイルのものであるため、破棄しても安全です。特に破損クラスタと破損チェーン数が同じ場合は何も問題ありません。

  • HDDの代替領域とは?

    http://homepage2.nifty.com/ADSN3/ryusyutu.html このページなどに書かれてあるのですが、HDDで代替領域というものがあり、バッドセクタなどが出たときにこの部分の容量を使うことで、 容量を補填するためのもので、DOS/V機ではこの部分にアクセスすることは出来ないため完全消去は出来ないと書かれています。 でもこれって矛盾していませんか? 要はバッドセクタが出ることで、この代替領域というのは使用可能になるわけですが、となるとデータが書き込まれている代替領域というのはすでにバッドセクタが出て、読み書き可能になった領域ということになります。読み書き出来ないクラスタはバッドセクタが出ておらず、まだ何のデータも書き込まれていないということになります。 ということは、普通の物理フォーマットはどうか知りませんが、 単純に0000と書かれたファイルをHDD全体に貼り付ければ、自動的にデータの入った代替領域のデータも削除されるのではないのでしょうか?

  • dドライブをscandiskすると、システムがこわれていると…

    win98seで、c:\にOS、d:\にデータ領域のパーティションを切ってFAT32で使っています。 dドライブをscandiskすると、システム領域のクラスタ検査のところで、 ”このドライブのFATのセクタ1017に対して読み書きが出来ません。このエラーは修復できません。ファイルシステムのこの部分は、ディスクの別のセクションに移動できません。ディスクを取りかえてください。” とでるようになりました。d:\の中を読み書きは出来ます、が、放置しておくと悪いことに成りそうな気がします。またこのパーティションをwin2000で見ることが出来なくなりました。フォーマットされていません、とメッセージがでるようになりました。 この対策法、ご存知のかたいらっしゃいましたら、お教えください。dドライブに関するシステムファイルが壊れているのでしょうか。こわくてフォーマットする気になりません。どうぞ宜しくお願いいたします。

  • FAT16のデータ領域の開始位置について

    FAT16では、ディスク内に(1)FAT領域、(2)ディレクトリエントリ領域、(3)データ領域というそれぞれの領域を持つと聞いています。 さらに「データ領域」への書き込み処理は「クラスタサイズ(例えば、512バイト)」の単位で行われているそうですが、このデータ領域への書き込みに関して疑問点があります。 複数のファイルを書いた場合、それぞれのファイルに対応するデータ領域の先頭アドレスは必ずクラスタサイズの整数倍になるのでしょうか?質問を言い換えれば、データ領域の1つのクラスタ内に複数のファイルのデータが混在することはあるのでしょうか?

  • 不良セクタ上のファイルを検索

    メディアサーバー上のHDD一台(SATA接続 非RAID Seagate製 500GB)をHD Tune ProでError Scanしたところ、 450808MBあたりにエラーが見つかりました。 修復しようとしているのですが、スキャンディスクで強制的にセクタ使用不可にしても データが失われてしまうと思い、当該セクタ上に存在するファイルを調べて、 修復した後にセクタの修復を行いたいと思っているのですが、 当該セクタ上に存在するデータを確認するためにはどのようなソフトを使用すればいいでしょうか? 現在、エラーが見つかったHDDはサーバーからホットスワップしています。 OS:Windows Server 2003 SP2

  • 「アロケーションサイズ≒データの大きさ」が速い?

    Windows 7でアロケーションユニットサイズより小さい大きさのデータを記録する場合は、ハードディスクはその差分の領域も読み書きするのでしょうか。 例えば、アロケーションユニットサイズを64KBにしたハードディスクにファイルサイズ5KBのデータを書き込んだ場合は、差分の59KB (=64-5) の領域にはデータは何も記録されないことになりますが、書き込むときにはこの59KB部分も書き込むのでしょうか。また、このクラスタから読み出す場合は、この59KB部分も読みとるのでしょうか。 もし、ハードディスクが差分の領域も読み書きするのなら、小さいサイズのたくさんのファイルを読み書きするのに大きなアロケーションユニットサイズを設定していると読み書きが確実に遅くなるのではと思って質問しました。 よろしくお願いします。

  • ファイナルデータ8.0について

    すいません。教えてください。 ノートpc(HP pavilion tx2000、vista)が起動しなくなってしまい、どうしても必要なデータがあったのでデータの復旧センターに依頼したところ、見積もり段階で論理損傷と判断されました。ただ金額が100万とかなってしまい、いろいろ調べてノートのHDDを他のデスクトップ(osはxp)にUSB変換ケーブルでつなぎ、ファイナルデータ(8.0復元+OFIICE修復)で復旧を試みている最中です。 論理損傷があったので高度な復元手順で物理ドライブを検索してパーティションの検出を現在行っているみたいです。 はじめての試みなのでセクタ/全セクタのところの全セクタが常に0になっているのが気になります。セクタのところは大体40億くらいになると再び0から検出を始めているようです。検索範囲ははじめから最後までにしました。相当時間がかかるようなことは説明書に書いてあったのですが、全セクタが常に0というのは問題ないのでしょうか? 壊れたHDDには非常に重要なデータが多数入っており、なんとしてもデータを取り出したいです。バックアップを取っていなかった自分が悪いのは重々承知しておりますが、詳しい方、教えていただけないでしょうか?

  • ファイルデータの一部の書き換え

    ファイルデータの一部をバイナリで読みだし、これを修正して(これは自分でできます)再度その位置にバイナリで書き込むにはどうすればよいでしょうか? ファイルの最小単位(クラスタとか何とか?)の方が、処理しやすいと思いますが。具体的な例の記述をお願いします。 目的は写真ファイルの更新日を、撮影日の日付に自動的に書き換えるためです。