タグ付けされた質問 「memory」

コンピューティングでは、メモリは、何らかの物理構造でアクティブに保たれているため、コンピューティングシステムの状態情報を指します。

1
ファイルテーブルはファイルシステムまたはメモリにありますか?
オペレーティングシステムの制御テーブルのコンテキストで、「ファイルテーブル」という用語は、ファイルシステムの一部であるか、メインメモリ内にあるデータ構造を指しますか(この場合、開いているファイルへの参照しか持たないと想定しています)。 ?私の教科書1は、 これらの表は、ファイルの存在、2次メモリ上のファイルの場所、現在のステータス、およびその他の属性に関する情報を提供します。すべてではないにしても、この情報の多くはファイル管理システムによって維持および使用される場合があります。その場合、OSはファイルに関する知識がほとんどないか、まったくありません。 また、ファイル管理システムとは何ですか?それはファイルシステムを意味しますか? 1ストール、オペレーティングシステム、第 7 版、p。127


3
カーネルmmap操作のメモリサイズ
Linuxがメインメモリにファイルをmmapsする方法(私のコンテキストでは実行するためですが、mmapプロセスは書き込みと読み取りでも同じだと思います)とそれが使用するサイズに興味があります。 したがって、Linuxが通常4kBのページサイズでページングを使用していることを知っています(カーネル内でこのサイズを見つけることができますか?)。しかし、これは割り当てられたメモリに対して正確に何を意味するのでしょう。数千バイトのサイズのバイナリがあると仮定し、5812Bとだけ言って実行します。カーネルで何が起こるか:2 * 4kBを割り当ててから、5812Bをこのスペースにコピーし、2ページ目で3KBを超えるメインメモリを浪費していますか? ページサイズが定義されているカーネルソース内のファイルをだれかが知っているとすばらしいでしょう。 私の2番目の質問も非常に単純だと思います。ファイルサイズとして5812Bを想定しました。このサイズは単にiノードから取得されるのは正しいのでしょうか。
9 kernel  memory  inode  mmap 

2
.dtorsは書き込み可能に見えますが、segfaultを書き込もうとします
これはUbuntu 9.04、2.6.28-11-server、32ビットx86です。 $ cat test.c main() { int *dt = (int *)0x08049f18; *dt = 1; } $ readelf -S ./test ... [18] .dtors PROGBITS 08049f14 000f14 000008 00 WA 0 0 4 ... $ ./test Segmentation fault $ 開始されていない場合:gccは、終了.dtors後に呼び出されるelf実行可能ファイルにデストラクタセグメントを作成しmain()ます。このテーブルは長い間書き込み可能readelfでしたが、私の場合はそうであるように見えます(出力を参照)。ただし、テーブルに書き込もうとすると、セグメンテーション違反が発生します。 最近読み取り専用の.dtors、pltに移行する動きがあったことは承知していますが、私が理解していないのはreadelfとsegfaultの不一致です。

1
MMAPについて
ここでMMAPに関するドキュメントを調べていて、これを使用して実装しようとしました その実装について、いくつか疑問があります。 MMAPはファイルのマッピングを提供し、物理メモリ内のその場所のポインターを返しますか、それともマッピングテーブルのアドレスを返しますか?そして、そのファイルにもスペースを割り当ててロックしますか? ファイルがメモリ内のその場所に保存されたら、munmapが呼び出されるまでファイルはそのまま残りますか? ファイルはメモリに移動されますか、それともリダイレクトとして機能する単なるマッピングテーブルであり、ファイルは実際には仮想メモリ(ディスク)にありますか? メモリに移動されたと仮定すると、他のプロセスがアドレスを持っている場合、そのスペースにアクセスしてデータを読み取ることができますか?

2
スワップは使用されていないようです[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、 Unix&Linux Stack Exchangeのトピックとなるようにしてください。 2年前休業。 (私は現在Ubuntu 14.04 LTS、GNOME環境を使用しています) tl; drどのようにすれば、より多くのメモリスワッピングを強制できますか(swappinessはすでに100)。 最近、システムのフリーズ/クラッシュが多数発生しています。頻繁に忙しいウェブサイトにアクセスするとき。私はttyにhtopをロードしているので、それが起こっているので、それに切り替えてブラウザーを終了できます(GUIが応答しないため)。ただし、REISUBを使用する必要がある場合があります。 私のDebianシステムには問題がないので、GNOMEはUnityよりもうまく機能するかもしれないと思っていました。 私は私のfree -m今日を見て、私のスワップが0の使用を示していることに気づきました。出力: total used free shared buffers cached Mem: 1821 1673 148 221 40 643 -/+ buffers/cache: 989 832 Swap: 1933 0 1933 一時的に100にスワップしました(sudo sysctl vm.swappiness=100)。結果は同じままでした(最大システムメモリ使用量に達した後でも0が使用されています)。 私はこの答えを見ました: システムがスワップしているかどうかを確認するにはどうすればよいですか? 残念ながら、これを書いていると、システムが更新され、パッケージがロックされているため、これをインストールできません(sar)。また、これが含まれているパッケージを確認できないため、別の出力を提供します。 fstabを調べたところ、スワップパーティションが正しく使用されています。 # swap was on /dev/sda3 during …
9 memory  swap 

1
カーネルに断片化されたメモリを圧縮させる方法
私は走っていFedora 26ます。 これは、アルゴリズムの教授から与えられた非常に奇妙な割り当てです。割り当ては言う: Cでのメモリの断片化: 以下を実行するCプログラムを設計、実装、および実行します。これは、3mそれぞれ800,000要素のサイズの配列のシーケンスにメモリを割り当てます。次に、すべての偶数番号の配列を明示的に割り当て解除し、mそれぞれサイズが900,000要素の配列のシーケンスを割り当てます。プログラムが最初のシーケンスの割り当てと2番目のシーケンスの割り当てに必要な時間を測定します。mプログラムで使用できるメインメモリのほぼすべてを使い果たすことを選択してください。」 これの全体的な目標は、メモリを断片化してから、連続したチャンクとして利用できる量よりもわずかに多くを要求し、オペレーティングシステムにメモリの最適化または最適化を強制することです。 クラスでは、メモリが視覚化されており、実際には隣接していないため、これをどのように行うべきかを尋ねました。彼は「[仮想メモリ]をオフにする必要があります」と答えました。他の何人かの学生は、クラスでこの「ガベージコレクション」に到達したときにどのように知るべきかを尋ね、彼は次のように述べました。 少し調べたところ、仮想メモリを無効にするのに最も近いのは、でスワップメモリ​​を無効にすることでしたswapoff -a。デスクトップ環境を無効にして、ネイティブターミナルからプログラムをコンパイルして実行しました(他のプロセス、特にデスクトップ環境のような重いプロセスからの干渉を避けるため)。私はこれをm行い、2番目の割り当てのタイミングが最初の割り当てよりも大きくなるポイントに到達するまで、プログラムを増やしながら実行しました。 私は増加してプログラムを実行し、m最終的に2番目の割り当ての時間が最初の割り当ての時間よりも多くなるポイントを見つけました。しかし途中で、2番目の割り当ての前にプロセスが強制終了されるポイントに到達しました。私dmesgはそれをチェックして、それがoom-killer によって殺されたことを確認しました。私はoom-killer に関するいくつかの記事を見つけて読み、カーネルによるメモリの過剰割り当てを無効にできることを発見しました。 私はこれを実行してプログラムを再度実行しましたが、今回のみm、2番目のタイミングが最初のタイミングよりも高いようなものを見つけることができませんでした。結局、mを大きくすると(割り当て超過が有効になっている場合よりもはるかに小さくなりますが)、mallocが失敗し、プログラムが終了します。 3つの質問があります。最初の質問はそれほど重要ではありません。 ガベージコレクションはこれの正しい用語ですか?私の教授はこれはガベージコレクションであると言っていますが、ガベージコレクションはプログラミング言語によって行われるものであり、これはより最適化されていると考えられると思い込んでいました。 Linuxシステムで彼が望んでいるような圧縮は可能ですか? スワップを無効にしても、メモリの割り当て超過が有効になっているときに、2番目の割り当ての時間が最初の割り当てよりも長くなる点に到達できたのはなぜですか?圧縮は実際に行われましたか?もしそうなら、メモリの割り当て超過を無効にした後、圧縮が発生するポイントに到達できなかったのはなぜですか?

4
ファイルがメモリマップされているかどうかを確認するにはどうすればよいですか?
メモリマップファイルについて混乱しているので、いくつか質問があります。手伝っていただけるとありがたいです。 ファイルシステムのディレクトリを参照し、このディレクトリにファイルがあるとします。このファイルがディスクの領域を指すのではなく、メインメモリの領域を指すことは可能ですか? これが可能であれば、これを「メモリマップファイル」と呼びますか? そのようなファイルをファイルシステム内で移動mvする(つまり、そのようなファイルをディレクトリから別のディレクトリに移動する)意味は何ですか?私が理解しているのは、ファイルがメモリマップされているため、ファイルとやり取りするプロセスは常にメインメモリの事前定義された領域に書き込み、そのファイルを(たとえばを使用してvim)開くと、メインのその領域を読み取ります。メモリ(つまり、ディスクは含まれません)。したがって、ファイルをどこに移動しても、常に正しく機能しますか?はいの場合、ファイルシステム内でファイルを移動することには意味がありますか? ファイルがメモリマップされているかどうかを確認するコマンドはありますか? 最後に、メモリマップファイルをvimで開いて変更し、保存して閉じるとvim、どうなりますか?変更は単にメインメモリに書き込まれますか?その場合、このファイルを使用する他のプロセスは、今行った変更を確認できますか?私の経験では、他のプロセスは、でファイルに変更を加えたときに、ファイルに加えた変更を認識しませんでしたvim。これの理由は何ですか?
8 files  memory 

2
特定のユーザーが使用しているメモリの量
マルチユーザーLinuxマシンで使用しているメモリ容量を調べることはできますか?大量のメモリを使用していて、他の人に迷惑をかけているかどうかを知りたいので、必要に応じてプロセスをシャットダウンできます。 それをsa -m行うかもしれない別の質問で見ましたが、どうやら私はこのサーバーでそのコマンドにアクセスできません。 編集: sudoアクセス権がないため、インストールできません。サーバーはCentOSです。
8 users  memory 

1
/ proc / pid / mapsの共有ライブラリマッピング
/proc/pid/maps同じライブラリのいくつかのレコードが含まれているのはなぜですか?次に例を示します。 7fae7db9f000-7fae7dc8f000 r-xp 00000000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7dc8f000-7fae7de8f000 ---p 000f0000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7de8f000-7fae7de97000 r--p 000f0000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7de97000-7fae7de99000 rw-p 000f8000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 これは何を意味するのでしょうか ?

1
メモリの断片化と、システムでスワップが有効になっているかどうかには関係がありますか?
回答の一つドI必要スワップ領域Iは、RAMのに十分な量以上のものを持っている場合は?によって測定されたメモリの断片化とcat /proc/buddyinfo スワップが使用されているかどうかの間に関係があるかどうか疑問に思いました。より具体的には、スワップを利用してメモリの断片化を減らすことができるかどうか疑問に思っています。通常の日は、私のシステムでswap offを使って作業していますが、次のようになっています。 tvbox@tvbox-G31M-ES2L:~$ cat /proc/buddyinfo Node 0, zone DMA 3 3 4 14 16 6 2 0 0 1 0 Node 0, zone Normal 1564 1052 462 356 240 109 33 21 6 1 0 Node 0, zone HighMem 43 1972 839 285 183 109 98 34 16 …
8 memory  swap 

1
キャッシュに存在するすべてのファイルを一覧表示します
この質問は、キャッシュの一部を見つける方法に関する質問への回答です。ただし、fincore実行可能ファイルでは、ファイル名を渡して、それがキャッシュの一部であるかどうかを確認する必要があります。 ファイル名を渡さずにキャッシュされたメモリの一部であるすべてのエントリを見つけるツールまたは方法はありますか? PS:組み込みシステムで実行しており、forループを実行してすべてのファイルをfincore自分自身に渡すことは、より多くの時間とメモリ消費プロセスです。したがって、私は他の方法を探しています。
8 linux  files  memory  cache 

2
スワップアウト-どうなりますか?
512 MBのRAMと348 MBのスワップを備えたDebian VMマシンで、1 GBのファイルをエディターで開いてメモリが不足するとどうなりますか? システムをクラッシュさせますか?そうでない場合、Linuxはこれをどのように処理しますか? Swapspaceをインストールして、必要に応じて自動的かつ動的に十分なスワップを作成するのは賢明ではないでしょうか? sudo apt-get install swapspace

3
Linuxで最速の `uniq`ツール
大きなテキストファイル(1.5 G)があります。 Linuxで最も高速で信頼性の高いツールを教えてください。 私は通常使用します: awk '!x[$0]++' file.txt しかし、htopコマンドを使用すると、メモリ使用量が増加していることがわかります。 巨大なファイルで最も速くて信頼性の高いものを知りたい。 uniq? sort? sed? awk? どうして?
8 sed  awk  memory  sort  uniq 

4
カーネル:/ dev / kmemおよび/ dev / memを無効にする
私はそれを理解/dev/kmemし、/dev/memシステムのメモリ(すなわち生RAM)へのアクセスを提供します。また/dev/kmem、カーネルで完全に無効にすることができ、のアクセスを制限できることも知っています/dev/mem。 メモリに直接アクセスできることは、開発者やハッカーにとって役立つ場合がありますが、なぜからメモリにアクセスする必要があるのでしょうか/dev/mem。私の知る限り、(とは異なり/dev/kmem)カーネルで無効にすることはできません。悪用されたり悪用されたりする可能性のある未加工のメモリにアクセスすることは、問題を求めているように思えます。 実用的な使い方はありますか?ユーザープログラムで正しく機能するために必要ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.