ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
ダウンロード
ブラウザよりも高速アクセス!
 

テスト・アンド・セット

索引 テスト・アンド・セット

テスト・アンド・セット(Test-and-Set、TAS)命令は、あるメモリ位置へアトミックに書き込みを行うコンピュータの命令である。値をセットする前に何らかのテストを行い(例えば、そのメモリ位置の内容が指定された値と等しいかどうかなど)、テストが失敗した場合は値のセットは行われない。複数のプロセスが同じメモリ位置にアクセスする可能性があり、ひとつのプロセスがテスト・アンド・セットを実行中であれば、他のプロセスは最初のプロセスの命令が完了するまで、テスト・アンド・セット命令を実行開始することができない。CPUは他の電子部品(例えば、デュアルポートRAM; DPRAM)を使用してテスト・アンド・セット命令を実現していることもあるし、CPU自身で実現していることもある。.

20 関係: 不可分操作ミューテックスマルチプロセッシングブーリアン型プログラミング言語ビジーウェイトデュアルポートRAMフェッチ・アンド・アッドアンチパターンキャッシュコヒーレンシクリティカルセクションコンペア・アンド・スワップコンピュータスピンロックセマフォ割り込み (コンピュータ)CPU短絡評価Load-Link/Store-Conditional擬似コード

不可分操作

不可分操作(ふかぶんそうさ)あるいはアトミック操作 (atomic operation) とは、情報工学においていくつかの操作を組み合わせたもので、システムの他の部分から見てそれらがひとつの操作に見えるものをいう。.

新しい!!: テスト・アンド・セットと不可分操作 · 続きを見る »

ミューテックス

ミューテックス (Mutex) とは、コンピュータプログラミングにおける技術用語。クリティカルセクションでアトミック性を確保するための排他制御や同期機構の一種である。Mutexという語はMUTual EXclusion (相互排他、排他制御) の省略形である。ここでは、狭義の排他制御について述べる。.

新しい!!: テスト・アンド・セットとミューテックス · 続きを見る »

マルチプロセッシング

マルチプロセッシング(multi processing)とは、(本来は)ひとつのプロセスだけではなく複数の並行プロセスを同一システム内で使用することを意味する。 マルチタスクと同様ひとつのCPUを複数のプロセスが共有することも示すが、ひとつのシステム内の複数のCPUが複数のスレッドを動作させることも意味する。マルチプロセッサと言う場合は一般に後者のみを指す。.

新しい!!: テスト・アンド・セットとマルチプロセッシング · 続きを見る »

ブーリアン型

ブーリアン型(ブーリアンがた、Boolean datatype)は、真理値の「真.

新しい!!: テスト・アンド・セットとブーリアン型 · 続きを見る »

プログラミング言語

プログラミング言語(プログラミングげんご、programming language)とは、コンピュータプログラムを記述するための形式言語である。なお、コンピュータ以外にもプログラマブルなものがあることを考慮するならば、この記事で扱っている内容については、「コンピュータプログラミング言語」(computer programming language)に限定されている。.

新しい!!: テスト・アンド・セットとプログラミング言語 · 続きを見る »

ビジーウェイト

ビジーウェイト(Busy Waiting)とは、プロセスが条件が成り立つかどうかを定期的にチェックする手法の一種。例えば、キーボードからの入力を待ったり、ロックが獲得できるのを待ったりするのに使われる。ある時間だけ遅延させて何かを実行するのに使うこともある。 古いコンピュータでは特定の長さの時間だけ待つ方法がなかったため、何もしないループで時間をつぶした。しかし、最近のコンピュータはプロセッサの速度がそれぞれ異なるため、この種の時間遅延は不正確なことが多く、(ビジーウェイトをこの目的で使用しているプログラムは)プログラミングに不慣れなことを示す印でもある。 ビジーウェイトは特定の状況では正当な手法と言える。特にSMPシステム向けのオペレーティングシステム内のスピンロックの実装などがそうである。しかし、一般にはビジーウェイトすべきでない。CPU時間を費やして待つ時間があれば、他のスレッドを動作させるほうが効率的である。.

新しい!!: テスト・アンド・セットとビジーウェイト · 続きを見る »

デュアルポートRAM

デュアルポートRAM(Dual-ported RAM: DPRAM、デュアルポートメモリ)は、Random Access Memoryの一種である。 一度に一つだけのアクセスを許可するシングルポートRAMとは異なり、複数の読み取りや書き込みを同時またはほぼ同時に行うことができる。 ビデオRAMまたはVRAMはデュアルポートDynamic Random Access Memoryの一般的な形態である。 主にビデオメモリに使用され、CPUはビデオハードウェアが画面に読み出すと同時に、画像を描画することを可能にする。 Category:記憶装置.

新しい!!: テスト・アンド・セットとデュアルポートRAM · 続きを見る »

フェッチ・アンド・アッド

フェッチ・アンド・アッド(Fetch-and-Add)は、アトミックに指定されたメモリ位置の内容を更新する特別なCPU命令。マルチプロセッサシステムでのミューテックスや並列処理アルゴリズムを実装するのに使われる。 シングルプロセッサシステムでは、クリティカルセクションの前に割り込み不可とするだけで十分である。しかし、マルチプロセッサシステムでは全プロセッサの割り込みを不可とするだけでは不十分で、複数のプロセッサが同時に同じメモリ位置にアクセスするのを防ぐことはできない。フェッチ・アンド・アッド命令はプロセッサがアトミックに指定されたメモリ位置の値をイクリメントするもので、複数プロセッサによる衝突を防ぐ。 Maurice Herlihy (1993年)は、フェッチ・アンド・アッドがコンペア・アンド・スワップよりも劣っていることを証明した。.

新しい!!: テスト・アンド・セットとフェッチ・アンド・アッド · 続きを見る »

アンチパターン

アンチパターン (anti-pattern) とは、ある問題に対する、不適切な解決策を分類したものである 。語源は、ソフトウェア工学におけるデザインパターンである。 主に失敗した開発プロセスに焦点を当てて失敗に陥るパターンを類型化する。そうすることで、そのような事例の早期発見と対応策に関しての提案を目的とする。 競合状態が発生するソフトウェア開発や保守性の低いソースコードなどが主な例である。 アンチパターンという呼び方は、が1995年に作り出したもので、後に書籍The patterns handbookで再掲された。 ギャング・オブ・フォーの書籍『オブジェクト指向における再利用のためのデザインパターン』からヒントを得て、書籍AntiPatternsが出版され、3年後には「アンチパターン」という単語はソフトウェアの設計から一般的な社会の相互作用についても広く用いられるようになった。AntiPatternsの著者によれば、アンチパターンと単なる悪癖、悪習などと区別するには二つの要素があるという。.

新しい!!: テスト・アンド・セットとアンチパターン · 続きを見る »

キャッシュコヒーレンシ

リソースを共有する複数のキャッシュの概念図 キャッシュコヒーレンシ(英: cache coherency)とは、共有リソースに対する複数のキャッシュの一貫性を意味する。キャッシュコヒーレンシはメモリ一貫性の一種である。 複数のクライアントが共有メモリリソースのキャッシュを保持するとき、キャッシュ間のデータの不一致という問題が生じる。この問題は特にマルチプロセッシングシステムのCPU間で顕著である。右図において、上のクライアントがメモリのある部分を以前に読み込んでいてキャッシュ上にコピーを保持しているとき、下のクライアントが同じメモリ部分を更新すると、更新を何らかの方法で伝えない限り上のクライアントのキャッシュの内容は不正となる。キャッシュコヒーレンシはそのような状況に対処し、キャッシュとメモリの間の一貫性を保つことである。.

新しい!!: テスト・アンド・セットとキャッシュコヒーレンシ · 続きを見る »

クリティカルセクション

リティカルセクション(Critical section)とは、計算機上において、単一のリソースに対して、複数の処理が同時期に実行されると、破綻をきたす部分を指す。クリティカルセクションにおいては、排他制御を行うなどしてアトミック性を確保する必要がある。 リソースの同一性が保証されなくなる可能性がある場合は、クリティカルセクションでは常に排他制御を行う必要がある。 クリティカルセクションの排他制御ではデッドロックに注意する必要がある。.

新しい!!: テスト・アンド・セットとクリティカルセクション · 続きを見る »

コンペア・アンド・スワップ

ンペア・アンド・スワップ(Compare-and-Swap、CAS)とは、アトミックに、あるメモリ位置の内容と指定された値を比較し、等しければそのメモリ位置に別の指定された値を格納するCPUの特別な命令の一種である。この操作の結果、置換が行われたかどうかを示す必要があり、単純な真理値を返すか、そのメモリ位置から読み込んだ内容(書き込んだ内容ではない)を返す。 CAS命令はマルチプロセッサシステムでセマフォなどを実装するのに使われる。 また、マルチプロセッサシステムでLock-freeとWait-freeアルゴリズムを実装するのにも使われる。Maurice Herlihy(1993年)はこれが単なるリード、ライトやテスト・アンド・セットでは実装できないことを示した。 CAS命令を利用したアルゴリズムは、一般にあるキーとなるメモリ位置を読み取り、その古い値を記憶しておく。その古い値に基づいて、新しい値を計算する。その後、CAS命令でそのメモリ位置に新しい値を格納するが、そのときにCAS命令の比較によって計算に用いた古い値が置換時にもそのまま入っていることを確認する。CAS命令が比較に失敗した場合、最初から処理をやり直す。メモリ位置を再度読み取って、値を計算し、CAS命令を再実行するのである。 このようなアルゴリズムは False Positive(偽陽性)という問題(あるいは ABA問題)に対処しなければならない。古い値を読み取った後、CAS命令を実行するまでの間に、そのメモリ位置の内容が複数回書き換えられて偶然もとの古い値と同じビットパターンになっている可能性がある。CAS命令だけではこの事実を検出できない。その値はパターンは同じでも全く異なった意味かもしれない。 CAS命令はシングルプロセッサのシステムには不要である。その場合、単に割り込みを不可にすることでアトミック性が達成される。しかし、マルチプロセッサシステムでは同時に全てのプロセッサで割り込みを不可とすることは困難だし、不十分でもある。他のプロセッサでも同じメモリ位置にアクセスしようとしているかもしれない。CAS命令はそのようなプロセッサ間の衝突を防ぎ、アトミックにメモリ位置をチェックして変更することを可能にする。.

新しい!!: テスト・アンド・セットとコンペア・アンド・スワップ · 続きを見る »

コンピュータ

ンピュータ(Computer)とは、自動計算機、とくに計算開始後は人手を介さずに計算終了まで動作する電子式汎用計算機。実際の対象は文字の置き換えなど数値計算に限らず、情報処理やコンピューティングと呼ばれる幅広い分野で応用される。現代ではプログラム内蔵方式のディジタルコンピュータを指す場合が多く、特にパーソナルコンピュータやメインフレーム、スーパーコンピュータなどを含めた汎用的なシステムを指すことが多いが、ディジタルコンピュータは特定の機能を実現するために機械や装置等に組み込まれる組み込みシステムとしても広く用いられる。電卓・機械式計算機・アナログ計算機については各項を参照。.

新しい!!: テスト・アンド・セットとコンピュータ · 続きを見る »

スピンロック

ピンロック(Spinlock)とは、ソフトウェア工学におけるロックの一種で、スレッドがロックを獲得できるまで単純にループ(スピン)して定期的にロックをチェックしながら待つ方式。スレッドはその間有益な仕事を何もせずに動作し続けるため、これは一種のビジーウェイト状態を発生させる。獲得されたスピンロックは明示的に解放するまでそのまま確保されるが、実装によってはスレッドがブロック(スリープ)したときに自動的に解放される場合もある。 スレッドが短時間だけブロックされるなら、スピンロックは効率的であり、オペレーティングシステムのプロセススケジューリングのオーバヘッドを防ぐことにもなる。このため、スピンロックはカーネル内でよく使われる。しかし、確保期間が長くなるとスピンロックは無駄が多くなり、他のスレッドの処理を妨害するだけでなく、再スケジューリングが必要になることもある。スレッドがロックを保持する時間が長くなればなるほど、ロックを持った状態でOSスケジューラによって割り込まれる可能性が高くなる。もしそうなると、ロックを保持しているスレッドがロックを解放することがないにも関わらず、他のスレッドはスピン(ロックを繰り返し獲得しようとする)し続けてしまう。その結果、ロックを保持するスレッドがロックを解放するまで、他のスレッドは先に進むことができない(indefinite postponement状態になる)。これはシングルプロセッサシステムには特に当てはまる。というのも、他のスレッドが並行して動く事は決してないので、いったんスピンし始めるとタイムスライスを使い切るまでスピンし続けることになるのである。 スピンロックを正しく実装することは難しい。なぜなら、競合状態を避けるためにロックの同時アクセスの可能性を考慮しなければならないからである。一般に、これは特別なアセンブリ言語の命令(アトミックなテスト・アンド・セット操作など)を使う必要があり、高級言語やアトミック命令をサポートしていない言語では簡単には実装できない。 アトミック命令をサポートしないアーキテクチャや、高級言語で実装しなければならない場合、ピーターソンのアルゴリズムといったアトミックでないロックアルゴリズムを用いることができるかもしれない。ただし、スピンロックより多くのメモリが必要になるかもしれないし、アウト・オブ・オーダー実行が許される場合は高級言語では実装できないかもしれない。.

新しい!!: テスト・アンド・セットとスピンロック · 続きを見る »

セマフォ

マフォ(semaphore)とは、計算機科学において、並列プログラミング環境での複数の実行単位(主にプロセス)が共有する資源にアクセスするのを制御する際の、単純だが便利な抽象化を提供する変数または抽象データ型である。 ある資源が何個使用可能かを示す記録と考えればわかりやすく、それにその資源を使用する際や解放する際にその記録を「安全に」(すなわち競合状態となることなく)書き換え、必要に応じて資源が使用可能になるまで待つ操作が結びついている。セマフォは競合状態を防ぐ便利なツールであるが、セマフォを使うことでプログラムにおける競合状態がなくなると保証するものではない。任意個の資源を扱うセマフォをカウンティングセマフォ、値が0と1に制限されている(ロック/アンロック、使用可能/使用不可の意味がある)セマフォをバイナリセマフォと呼ぶ。後者はミューテックスと同等の機能を持つ。 セマフォの概念はオランダ人計算機科学者エドガー・ダイクストラが考案した。今ではさまざまなオペレーティングシステムで採用されている。 「semaphore」の本来の語義は「視覚による通信・信号」全般を指し、腕木通信や、それから派生した鉄道の腕木信号(や自動車の方向指示器)、手旗信号などが含まれる。日本語でのセマフォは、本用途(コンピュータ、プログラミング関連)に限られる。 語源の腕木式信号機.

新しい!!: テスト・アンド・セットとセマフォ · 続きを見る »

割り込み (コンピュータ)

割り込み(わりこみ)とは、コンピュータがその周辺機器などから受け取る要求の一種である。現在の多くのCPUは、割り込みを処理するための機能を備えている。.

新しい!!: テスト・アンド・セットと割り込み (コンピュータ) · 続きを見る »

CPU

Intel Core 2 Duo E6600) CPU(シーピーユー、Central Processing Unit)、中央処理装置(ちゅうおうしょりそうち)は、コンピュータにおける中心的な処理装置(プロセッサ)。 「CPU」と「プロセッサ」と「マイクロプロセッサ」という語は、ほぼ同義語として使われる場合も多いが、厳密には以下に述べるように若干の範囲の違いがある。大規模集積回路(LSI)の発達により1個ないしごく少数のチップに全機能が集積されたマイクロプロセッサが誕生する以前は、多数の(小規模)集積回路(さらにそれ以前はディスクリート)から成る巨大な電子回路がプロセッサであり、CPUであった。大型汎用機を指す「メインフレーム」という語は、もともとは多数の架(フレーム)から成る大型汎用機システムにおいてCPUの収まる主要部(メイン)、という所から来ている。また、パーソナルコンピュータ全体をシステムとして見た時、例えば電源部が制御用に内蔵するワンチップマイコン(マイクロコントローラ)は、システム全体として見た場合には「CPU」ではない。.

新しい!!: テスト・アンド・セットとCPU · 続きを見る »

短絡評価

短絡評価(たんらくひょうか、short-circuit evaluation)または最小評価(さいしょうひょうか、minimal evaluation)とは、多くのコンピュータプログラミング言語の論理演算子における左辺(第一引数)と右辺(第二引数)の式の評価法の評価法を(意味、意味論を)表す語である。.

新しい!!: テスト・アンド・セットと短絡評価 · 続きを見る »

Load-Link/Store-Conditional

load-link(ロード・リンク、LL、他に load-linked(ロードリンクト) または load and reserve(ロード・アンド・リザーヴ))と store-conditional(ストア・コンディショナル) (SC) は組み合わせて使用されるコンピュータの命令。これによりロックなしのアトミックなリード・モディファイ・ライト操作が可能となる。(リード・モディファイ・ライトとは、あるメモリ位置の内容を読み取って、変更を加えて、書き戻す一連の操作を意味する) load-link 命令は指定されたメモリ位置の現在の内容を返す。その後の store-conditional 命令は同じメモリ位置へ新たな値を書き込むが、前回の load-link 命令以降にそのメモリ位置の内容が書き換えられていないときだけ書き込みが行われる。何らかの更新がなされていたら、たとえ load-link 命令で読み取った値と同じ内容が書かれていたとしても store-conditional 命令は失敗する。従って、LL/SC命令はコンペア・アンド・スワップ (CAS) 命令のような false positive(フォールス・ポジティヴ)(偽陽性)問題を発生しない。.

新しい!!: テスト・アンド・セットとLoad-Link/Store-Conditional · 続きを見る »

擬似コード

擬似コード (ぎじコード、pseudocode)とは、アルゴリズムなどを、架空の非常に高水準なプログラミング言語(擬似言語)で記述したものである。Pascal、Fortran、C言語などの既存のプログラミング言語の構文と、自然言語に近い表現を組み合わせて記述することが多い。.

新しい!!: テスト・アンド・セットと擬似コード · 続きを見る »

ここにリダイレクトされます:

テストアンドセット

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »