- ベストアンサー
スレッド?
プロセス間で共有できるメモリの使い方を教えてください。 (システムコールshmget、shmat、shmdt以外で。) 使用例など有りましたら是非お願いします。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- windowsでのプログラミングについてなんですけど。
UNIXの本を読んでると、プログラムはexitシステムコールが呼ばれると、 freeregを呼び出し、malloc済みメモリをすべて開放し、共有メモリについても 参照が0になったら解放するようになっていて、仮にメモリリークする プログラムで会ってもプロセスを殺せば、そのプログラムのリークした分は すべて解放されるんですよ~~~それと同じ感覚で、windowsでプログラム やってる友達に聞いたら、プロセスを殺してもnewでリークしたのしっぱなしに なるっぽいよ~って言ってたんですよ。それって本当なんですか? てか本当ならあえてそうしてるメリットってあるんでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- スレッドの意味
マルチスレッドについて良い資料が見当たらず、教えて下さい。 OSにおけるマルチスレッドと言うと、同一プロセス内でメモリ空間を 共有して独立に動く一連の手続き、と捉えています。(シングルCPU シングルコアだとOSで時分割によって作られた仮想的な並列計算) Javaのようなマルチスレッドのプログラミング言語では「一つの プログラムから作られた二つの一連の手続き」と言うイメージが あります。※裏側の動作ではOSに依頼してJavaのプロセス内で OSのスレッドを生成して処理を渡しているだけ?と思っています。 CPUコアの内部で説明される「マルチスレッド」と言うのは、 どのようなレベルのスレッド(何が並列処理?何処まで並列?) なのでしょうか。
- ベストアンサー
- ハードウェア・サーバー
- Linuxでのスレッド間メッセージについて
Linuxでスレッドを複数生成し、スレッド間でメッセージのやり取りをしたいと思っています。 ネットで色々検索したのですが、欲しい情報にめぐり合えていません。 # WindowsのPostThreadMessage()みたいなものを探しています。 #「プロセス間通信」というものは発見しましたが・・・ 何か方法はありますでしょうか? スレッド間のメッセージのやり取りの方法がない場合は代替案も教えて頂きたいです。 # セマフォを用いて共有メモリアクセスかな?と思っています。
- ベストアンサー
- C・C++・C#
- パフォーマンスモニタのメモリについて
1.パフォーマンスモニタであるPrivate Bytes、Working Setがいまいち理解できませんが、下記の認識であっておりますでしょうか。 (1) 仮想メモリ 物理メモリが不足したときに使用するハードディスク上に設定した仮想メモリ(ページングファイル) (2) Private Bytes : ほかのプロセスから共有されない仮想メモリサイズ (3) Working Set : プロセスが使用している物理メモリサイズ 2.認識があっている場合、Working Setは、他のプロセスと共有されていますでしょうか。 Working Setがほかのプロセス共有されていないとのことでしたら、Private Bytesと Working Setを足した値がそのプロセスが使用しているメモリの合計ということでしょうか。
- ベストアンサー
- その他(ITシステム運用・管理)
- 二重起動チェックについて
Solarisで、プロセスの二重起動チェックを行いたい のですが、システムコールの使用など簡単に行える 方法はないでしょうか? よろしくお願い致します。
- ベストアンサー
- Solaris系OS
- 実行中のプロセスのシステムコールフックについて
表題の通り,実行中のプロセスのシステムコールのフックについて質問があります. 現在,Linux上の全てのプロセスがどんなシステムコールを使って,どんなリソースにアクセスをしているのか調査しているのですが 具体的には以下のURLのソフトと同じものを,Linux上でC言語を用いて作りたいと考えています. [Process Monitor] http://www.microsoft.com/technet/sysinternals/utilities/processmonitor.mspx いろいろ調べていく中で strace http://www.netadmintools.com/html/1strace.man.html を使うと目的としている調査が実装できそうだということでさっそくいじってみたのですが, strace では既に実行されているプロセスのシステムコールの呼び出しをトレースすることはできないようでした. そこで1点質問なのですが,既に実行中のプロセスのシステムコールをフックするにはどのような方法を使えばいいのでしょうか. お分かりになるかたご回答よろしくお願いします. こちらの開発環境は以下です. OS: Debian 4.0 Kernel: 2.6.20-16 gcc: 4.1.2 (3つとも11/9現在の最新版を使用しています)
- ベストアンサー
- Linux系OS
- 共有メモリの同時アクセスについて教えてください。
2つのプロセスが同時に同じ共有メモリにアクセスすることは可能ですか? ミューテックスや、セマフォなどの排他制御を外せばできたりしませんか? 片方のプロセスで共有メモリから、データの一部をHDDに保存しつつ、それと同時に、もう片方のプロセスで共有メモリからデータの中身を表示させたいのですが・・・。
- ベストアンサー
- C・C++・C#
- CPU使用率が100%になってしまいます
ファンの稼動が激しいため、タスクマネージャをみたところ、CPU使用率が100%のまま変わりません。プロセスのiexpore.exeが90~99でメモリ使用量が36104Kになっています。普段は、たしか、System Idle Processが90~99なはずなのですが、このようにCPU使用率が100%の時は、System Idle ProcessのCPUが0で、メモリ使用量は、16Kになってます。CPU使用率を下げる方法はありますでしょうか?
- ベストアンサー
- Windows XP
- 32ビットCPUのメモリについて
32ビットCPUの場合、アドレス空間の制限で1プロセスにつき4GBまでしか使用できないことになっていると思いますが、このうち2GBはシステム用、その他2GBがアプリケーション用と聞いたことがあります。1プロセスで使用する度にOSに2GBほどのメモリを使用することがあるのでしょうか?(プロセスが多くなる度にOSで使用されるメモリ量も増大すると考えてよろしいでしょうか?)
- ベストアンサー
- Windows系OS
- Windowsのメモリ使用量が稼働プロセスと不一致
Windows で使用しているメモリ量をプロセスごとに把握する際に、 検算としてリソースモニタのメモリタブに表示されるプロセスのメモリ量を合計してみましたが、 その容量がリソースモニタで表示されている物理メモリの使用サイズと一致しません。 ■使用マシン OS : Windows Server 2008 R2 Enterprise 64bit 物理メモリ容量 : 16 GB ■リソースモニタでの出力内容 物理メモリ使用量 : 11241 MB リソースモニタに表示されるプロセスの全メモリ合計(ワーキングセット) : 8306 MB リソースモニタに表示されるプロセスの全メモリ合計(コミット) : 9509 MB タスクマネージャや tasklist コマンドで表示されるプロセスのメモリを合計しても、 同様に「物理メモリ使用量」の値に届かないため、プロセス外の何らかのものが メモリを使用していると推測されますが、実際はどうなのでしょうか? (共有メモリなど特定のプロセスに属さないメモリ領域など??) また、そういうものがあった場合、そのメモリ使用量をどのように確認すればよいでしょうか?
- 締切済み
- Windows系OS
お礼
これまでの質問に対する回答大変ありがとうございました。 とても的確で分かりやすい回答でした。 また、何か分からないことがあったら、質問に答えてください。 cloneでゾンビプロセスを回避する方法が分かりました。 __clone(xx, stk+4096, CLONE_VM|CLONE_SIGHAND, (void *)arg); を __clone(xx, stk+4096, CLONE_VM|CLONE_SIGHAND|SIGCHLD, (void *)arg); にすると、クローンのプロセスが終了した時にSIGCHLDシグナルが親プロセスに送信されゾンビプロセスが出来ませんでした。