タグ

ブックマーク / www.nminoru.jp/~nminoru (8)

  • Mostly-Concurrent Mark & Sweep GC のアルゴリズム

    目次 1. 前置き 2. HotSpot VM 1.4.x の GC の種類 3. Mostly-concurrent Mark & Sweep 4. 応用 4.1 世代別 GC との組み合わせ 4.2 カードマーキング (Card Marking) 4.3 並列化 (Parallel GC) 4.4 ビットワイズ・スイープ (Bitwise Sweep) 4.5 インクリメンタル・コンパクション (Incremental Compaction) 5. 参考文献 脚注 コメント 1. 背景 ガーベージコレクション(GC) には色々なアルゴリズムが存在するが、大雑把に言って Stop-the-World (STW) 型 GC と On-the-fly 型 GC に大別される。 STW 型の GC はプログラムの実行中にはガーベージの回収を行わず、メモリが枯渇した時になって始めてガーベージの回

  • C/C Compilers for x86

    What's New (2006.01.12) 情報を更新。 (2005.08.23) Tiny C Compiler の情報を追加。 (2005.07.07) Borland C++ Compiler の情報を更新。 (2003.05.13) 4/18 の日記を元にしてページを作成。 コンテンツ x86 バイナリを生成可能な C/C++ 処理系のリスト 手持ちの処理系の比較 x86 バイナリを生成可能な C/C++ コンパイラ処理系のリスト x86 というか IA-32 命令セットに基づくバイナリを生成可能な C/C++ コンパイラ処理系のリスト。 ただし DOS 時代の 8086 命令を生成するだけのものは省いた。 メーカ 名称 対応OS 備考

    jjzak
    jjzak 2007/07/26
    [][][compiler]x86 で動作する C/C コンパイラ
  • スタックオーバーフローのハンドリング (Stack Overflow Handling)

    作成日:2004.04.12 更新日:2006.02.19 更新記録 (2004.04.12) 3/6、 3/11、 3/13 の日記をまとめて作成。 (2004.05.07) 文章を修正。サンプルコードを追加。 (2005.01.20) alternative → alterante に修正。 (2005.02.13) 追記を記述。 (2006.02.17) linux_stack_info.cpp の実装に誤りがあったので修正。 (2006.02.19) BSD 系OS でのスタック領域情報の取得の仕方を追加 初めに C/C++ でプログラムをしているとつい忘れてしまうのがスレッドのスタックオーバーフローの問題。 最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。 だが、再帰や alloca を積極的に使

  • Network Attached Processing の Pauseless GC

    更新履歴 (2005.11.18) 脚注*2を加筆。 (2005.11.17) 文章を推敲。 (2005.11.14) NMT bit の read barrier について嘘を書いていたので修正。 目次 前置き Pauseless GC Marking Phase Relocation & Remap Phase おしまい 参考文献 Azul Sysmtes (米日) は Java や .NET に特化した専用計算機 Network Attached Processing (NAP) を提唱し、 製品として Azul Compute Appliance を開発した。 Azul Compute Appliance は、 すでに稼動中の Solaris/Linux の J2SE/J2EE システムの Java VM を Azul Systems が提供するスタブ JVM に置き換えるだけで、

  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

  • Amazon Web Services を使ったバーコードによる商品検索

    What's New 2007/1/1 から書籍のバーコードが ISBN-13 (GS1) に以降 (2005/5/31の日記 教育は参考資料) 2004 年の 8/30、 9/4、 11/8、 11/13、 11/14、 11/17 の日記から作成。 1. バーコードリーダー 秋葉原の若松通商でフリーテックの USB 接続 バーコードリーダー FT-005USB を購入(税込み価格 15,540 円)。 このバーコードリーダーは PS/2 接続版(10,290円) が基で、 USB 版はコードの中腹に PS/2 → USB 変換器が入っている。 (PS/2 接続版) + (安い PS/2→USB 変換器) の方がお安くてお得かもしれないが、 コードがごちゃごちゃするのが嫌なので USB 版を選択。 バーコードリーダーは基的には USB 接続されたキーボードとして認識され、 バーコード

  • Arora's Task Stealing Deque

    作成日:2005.11.27 目次 前置き データ構造 操作 擬似コード 動作 問題点 参考文献 脚注 1. 前置き マルチプロセッサ上で行う並列処理を行うプログラムが、 仕事を均等に N 分割できるものは稀だ。 プログラムの処理コストの最大値や平均値を見積もることができても、 実際の処理時間や消費メモリはプログラムの実行内容によって大きく変わっていく。 そのため各プロセッサに割り当てる負荷(ロード)が均一になるように 負荷分散を行うことが重要になる。 負荷分散を行うためには、 プログラムをある程度の粒度に分割し、 プロセッサ間で担当をやり取りできるようにする。 とりあえずプログラムを分割したものをタスクと呼ぶことにしよう。 タスクをやり取りする方法は、 大雑把に言って三つある。 マネージャーがいて、どのプロセッサがどのタスクを行うか制御する。 暇なプロセッサが、タスクを多く抱えたプロセッ

  • NAKAMURA Minoru's Home Page

    Postfix + Dovecot + OpenDKIM の設定メモを作成(2024.07.20) Let's Encryptの設定メモを更新(2024.07.13) Windows で動作する WebDAV クライアントを修正(2019.05.27) PostgreSQL のトランザクション & MVCC & スナップショットの仕組みを修正(2017.04.04) PostgreSQL のバックグラウンドワーカーの使い方を修正 (2017.04.05) PostgreSQL のメモリ管理関数の解説を修正 (2017.04.02) PostgreSQL の基データ型とタプルの扱いを修正(2017.04.01) PostgreSQL のテーブルとブロックのデータ構造を更新 (2017.03.04) PostgreSQL のコーディングスタイルを作成 (2017.01.26) Postgre

  • 1