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

ロック (情報工学)

索引 ロック (情報工学)

情報工学におけるロック (lock) とは、計算機システム内に複数の動作主体(プロセス,スレッド等)のある環境で、データやデバイスなどのリソースへのアクセス制限を課す同期機構。ロックは並行性制御ポリシーを実施する手法のひとつである。アクセス制限を課す動作を「ロックする」,「ロックを取得する」などと表現する.また対義語として,制限を解除することをunlock(アンロック,ロック解放,ロック解除)と言う..

64 関係: 同期 (計算機科学)不可分操作並行性制御例外処理ミューテックスマルチプロセッシングマイクロソフトハードウェアポリシーメソッド (計算機科学)モニタ (同期)ロールバックトランザクショントランザクション処理トレードオフプログラミング言語プロセスピーターソンのアルゴリズムツーフェーズロックテスト・アンド・セットデバッグデータデータベース管理システムデッドロックデッカーのアルゴリズムファイルロックフェッチ・アンド・アッドアプリケーションプログラミングインタフェースアセンブリ言語オペレーティングシステムオーバーヘッドオブジェクト (プログラミング)クリティカルセクションコンペア・アンド・スワップスレッド (コンピュータ)スピンロックスケジューリングセマフォソフトウェアトランザクショナルメモリサン・マイクロシステムズ優先順位の逆転割り込み (コンピュータ)C SharpC++11C言語Component Object ModelCPU競合状態計算資源Java...Lock-freeとWait-freeアルゴリズムMicrosoft Visual Basic .NETMicrosoft Visual C++Microsoft WindowsObjective-COpenMPPOSIXスレッドPythonRubyX86排他制御楽観的並行性制御情報工学悲観的並行性制御 インデックスを展開 (14 もっと) »

同期 (計算機科学)

同期(どうき、Synchronization)とは、コンピュータ関係(コンピュータ科学でも重要なテーマであるが、話題の広がりとしてはそれに留まらない)では、プロセスなどといった複数のエージェントの動作について、時系列的にタイミングを合わせる制御のことや、複数個所に格納された同一であるべき情報を同一に保つことである。.

新しい!!: ロック (情報工学)と同期 (計算機科学) · 続きを見る »

不可分操作

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

新しい!!: ロック (情報工学)と不可分操作 · 続きを見る »

並行性制御

情報技術および計算機科学における並行性制御(へいこうせいせいぎょ、Concurrency Control)または同時実行制御(どうじじっこうせいぎょ)とは、特にプログラミングとOSとマルチプロセッシングとデータベースにおいて、並行処理の結果が可能な限り素早くかつ正しく得られることを保証することである。 コンピュータシステムは、ソフトウェアもハードウェアも、モジュールまたはコンポーネントで構成される。各コンポーネントは何らかの一貫性規則に従って正しく動作するよう設計されている。コンポーネント間でメッセージをやり取りするか(記憶装置内で)データを共有して並行動作する際、あるコンポーネント間の一貫性が他のコンポーネントによって妨害されることがある。並行性制御の一般的な領域は、同時並行的に相互作用しながら動作するコンポーネント間の一貫性を保つための規則、技法、設計方法論、理論を提供し、結果としてシステム全体の一貫性と正確性を提供する。並行性制御をシステムに導入することは、一般に若干の性能低下を生じる操作上の制約を適用することを意味する。操作一貫性と正確性は、妥当な以上の性能低下を伴わずに可能な限り効率的に達成されるべきである。.

新しい!!: ロック (情報工学)と並行性制御 · 続きを見る »

例外処理

例外処理(れいがいしょり)とは、プログラムの上位の処理から呼び出されている下位の処理で継続不能、または継続すれば支障をきたす異常事態に陥ったとき、制御を呼び出し元の上位の処理に返し安全な状態になるよう回復処理をすること。その際に発生した異常のことを例外と呼ぶ。 継続不能や継続すると問題になる様な状態としては、次のようなものが挙げられる。.

新しい!!: ロック (情報工学)と例外処理 · 続きを見る »

ミューテックス

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

新しい!!: ロック (情報工学)とミューテックス · 続きを見る »

マルチプロセッシング

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

新しい!!: ロック (情報工学)とマルチプロセッシング · 続きを見る »

マイクロソフト

マイクロソフト()は、アメリカ合衆国ワシントン州に本社を置く、ソフトウェアを開発・販売する会社である。1975年4月4日にビル・ゲイツとポール・アレンらによって設立された。.

新しい!!: ロック (情報工学)とマイクロソフト · 続きを見る »

ハードウェア

ハードウェア (hardware) とは、システムの物理的な構成要素を指す一般用語である。日本語では機械、装置、設備のことを指す。ソフトウェアとの対比語であり、単に「ハード」とも呼ばれる。.

新しい!!: ロック (情報工学)とハードウェア · 続きを見る »

ポリシー

ポリシー(英語:policy).

新しい!!: ロック (情報工学)とポリシー · 続きを見る »

メソッド (計算機科学)

メソッド あるいは メンバー関数 (-かんすう) とはオブジェクト指向プログラミング言語において、あるクラスないしオブジェクトに所属するサブルーチンを指す。.

新しい!!: ロック (情報工学)とメソッド (計算機科学) · 続きを見る »

モニタ (同期)

モニタ(Monitor)は、リソース(何らかのハードウェア機器や変数群)を共有する複数のタスクの同期を実現する手法である。 Per Brinch Hansen が発明し、Concurrent Pascal 言語に最初に実装され、Solo Operating System でのプロセス間通信方式として使われた。.

新しい!!: ロック (情報工学)とモニタ (同期) · 続きを見る »

ロールバック

ールバック (rollback、巻き戻し) はコンピュータ用語では、データ更新などで障害が起こったときに、その前の状態にまで戻ることをいう。後進復帰とも言う。 データベースでは、更新前のジャーナルファイルを使い、更新前の正常な状態に戻す。 コンピュータ用語以外では、過去の良い状態に戻ることなどを指す。ロールバック(長期低価格)商品、ロールバックマラリア(マラリア撃退)計画など。.

新しい!!: ロック (情報工学)とロールバック · 続きを見る »

トランザクション

トランザクション (transaction) とは、データベース管理システム(または類似のシステム)内で実行される、分けることのできない一連の情報処理の単位である。トランザクション内では、ユーザインタフェース、アプリケーションプログラム、永続性記憶資源、各種I/Oが実行される。 ユーザインタフェースには、トランザクション実行の有無を明確に表示する必要がある。 永続性記憶資源には、自分自身のローカルトランザクションを管理するトランザクショナルなファイルやデータベースが使われる。その理由は、複数の不揮発性データが更新の途中で処理が中断した場合に不揮発性データ値が中途半端な状態で残ってしまい、データを正常値に戻すことができなくなるためである。 永続性記憶資源の管理には、複数のデータ項目の更新操作列をすべて実行するか、まったく実行しないように制御する必要がある。これをアトミック実行という。バッチジョブのような処理形態でも、出力結果はアトミック実行の概念を満たさなければならない。たとえば、月末の領収証の一括印刷処理を行っているときにプリンタエラーでジョブが中断した場合でも、安易な位置から再実行してはならない。 また、分散トランザクションとは、ユーザインターフェイス端末、各種処理サーバ、永続性記憶資源、I/O装置を複数の遠隔装置として構成する処理形態である。論理的な狭義では、複数の永続性記憶資源の管理を使うトランザクション処理の事を指す。ユーザインターフェイス端末が永続性記憶域を分担しないで集中処理サーバにつながっている形態は、単にオンライントランザクション処理 (OLTP) と呼ぶ。 トランザクションが満たすべき技術的要件にACID特性がある。.

新しい!!: ロック (情報工学)とトランザクション · 続きを見る »

トランザクション処理

トランザクション処理 (Transaction Processing) とは、トランザクションと呼ばれる不可分な操作から構成される情報処理の形態。.

新しい!!: ロック (情報工学)とトランザクション処理 · 続きを見る »

トレードオフ

トレードオフ()とは、一方を追求すれば他方を犠牲にせざるを得ないという状態・関係のことである。トレードオフのある状況では具体的な選択肢の長所と短所をすべて考慮したうえで決定を行うことが求められる。.

新しい!!: ロック (情報工学)とトレードオフ · 続きを見る »

プログラミング言語

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

新しい!!: ロック (情報工学)とプログラミング言語 · 続きを見る »

プロセス

プロセスとは、情報処理においてプログラムの動作中のインスタンスを意味し、プログラムのコードおよび全ての変数やその他の状態を含む。オペレーティングシステム (OS) によっては、プロセスが複数のスレッドで構成される場合があり、命令を同時並行して実行する。.

新しい!!: ロック (情報工学)とプロセス · 続きを見る »

ピーターソンのアルゴリズム

ピーターソンのアルゴリズムは、通信のために共有メモリだけを使い「2個」のプロセス間でリソースを競合することなく共有する相互排他のためのアルゴリズムである。これは、1981年、ロチェスター大学の Gary Peterson が定式化した。(注:"Operating Systems Review, January 1990 ('Proof of a Mutual Exclusion Algorithm', M Hofri)" で議論されているように、ピーターソンのアルゴリズムは2個以上のプロセスに一般化できる) ハードウェアレベルでは一般に、アトミックなアクセスを達成するのにピーターソンのアルゴリズムを必要とすることはない。プロセッサにはテスト・アンド・セット命令などが装備されていて、同時並行的アクセスを実現できる。特殊なソフトウェアの技術は必要ではない。.

新しい!!: ロック (情報工学)とピーターソンのアルゴリズム · 続きを見る »

ツーフェーズロック

ツーフェーズロック (Two-Phase Locking) あるいは2相ロッキングとは、並列処理システム(特にデータベース管理システム (DBMS) や関係データベース)で使用されるロック手法である。ツーフェーズロックは以下のように分類される。.

新しい!!: ロック (情報工学)とツーフェーズロック · 続きを見る »

テスト・アンド・セット

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

新しい!!: ロック (情報工学)とテスト・アンド・セット · 続きを見る »

デバッグ

デバッグ(debug)とは、コンピュータプログラムや電気機器中のバグ・欠陥を発見および修正し、動作を仕様通りのものとするための作業である。サブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出すので、バグの修正がより困難となる。.

新しい!!: ロック (情報工学)とデバッグ · 続きを見る »

データ

データ(data)とは、事実や資料をさす言葉。言語的には複数形であるため、厳密には複数の事象や数値の集まりのことを指し、単数形は datum(データム)である。.

新しい!!: ロック (情報工学)とデータ · 続きを見る »

データベース管理システム

right データベース管理システム(データベースかんりシステム、DBMS; )とは、コンピュータのデータベースを構築するために必要なデータベース運用、管理のためのシステム、およびそのソフトウェアのことである。データベースマネジメントシステムとも呼ばれる。.

新しい!!: ロック (情報工学)とデータベース管理システム · 続きを見る »

デッドロック

デッドロック (英: deadlock) とは、特に計算機科学において、2つ以上のスレッドあるいはプロセスなどの処理単位が互いの処理終了を待ち、結果としてどの処理も先に進めなくなってしまうことを言う。 また、合弁契約書などにおいてパートナーと利害関係がぶつかるような問題が生じた場合の解決方法を定めた条項を「デッドロック条項(Deadlock Clause)」と言う。 英語ではもともと行き詰まりの意味である。.

新しい!!: ロック (情報工学)とデッドロック · 続きを見る »

デッカーのアルゴリズム

デッカーのアルゴリズムはオランダ人数学者 T・J・デッカーの考案した相互排他のためのアルゴリズムである。これにより、共有メモリによる通信のみで、2つのプロセスが1つのリソースを競合することなく共有することができる。 厳密に交互にとっていく素朴なアルゴリズムを避けて発明された世界初の相互排他アルゴリズムの1つである。 ふたつのプロセスが同時に同じクリティカルセクションにアクセスしようとしたとき、このアルゴリズムはどちらのプロセスがアクセス権を得るかを決定する。もしもう一方のプロセスが既にクリティカルセクションに変更を加えていたら、その完了を待つ。.

新しい!!: ロック (情報工学)とデッカーのアルゴリズム · 続きを見る »

ファイルロック

ファイルロックとは、コンピュータのファイルへのアクセスを一時的に1人のユーザーや1つのプロセスに制限する機構。このロックの目的はいわゆる 「仲裁更新 interceding update」のシナリオを防ぐことである。.

新しい!!: ロック (情報工学)とファイルロック · 続きを見る »

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

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

新しい!!: ロック (情報工学)とフェッチ・アンド・アッド · 続きを見る »

アプリケーションプログラミングインタフェース

アプリケーションプログラミングインタフェース(、)とは、広義の意味ではソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。 APIには、サブルーチン、データ構造、オブジェクトクラス、変数などの仕様が含まれる。APIには様々な形態があり、POSIXのような国際規格、マイクロソフトのWindows APIのようなベンダーによる文書、プログラミング言語のライブラリ(例えば、C++のStandard Template Libraryやなど)がある。 商業的に使われる狭義の意味ではOSやミドルウェアやWebサービス等サービスを利用するアプリケーション(Application)を作成する(Programming)ためのインターフェース(Interface)である。こちらの意味ではサービスから提供されないStandard Template Libraryなど言語の標準ライブラリーは含まない。 APIはApplication Binary Interface (ABI) とは異なる。APIはソースコードベースだが、ABIはバイナリインタフェースである。例えば、POSIXはAPIだが、Linux Standard Base (LSB) はABIである(LSBはいろいろな規定の集合なので、正確には「LSBには、ABIにまで踏み込んでいる部分もある」)。.

新しい!!: ロック (情報工学)とアプリケーションプログラミングインタフェース · 続きを見る »

アセンブリ言語

モトローラ MC6800 のアセンブリ言語のソースコード アセンブリ言語(アセンブリげんご、英: assembly language)とは、コンピュータ、マイクロコントローラ、その他のプログラム可能な機器を動作させるための機械語を人間にわかりやすい形で記述する、代表的な低水準言語である。なお、英語の assembly とは「組立」という意味である。.

新しい!!: ロック (情報工学)とアセンブリ言語 · 続きを見る »

オペレーティングシステム

ペレーティングシステム(Operating System、OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)のために、ソフトウェアの中でも基本的、中核的位置づけのシステムソフトウェアである。通常、OSメーカーが組み上げたコンピュータプログラムの集合として、作成され提供されている。 オペレーティングシステムは通常、ユーザーやアプリケーションプログラムとハードウェアの中間に位置し、ユーザーやアプリケーションプログラムに対して標準的なインターフェースを提供すると同時に、ハードウェアなどの各リソースに対して効率的な管理を行う。現代のオペレーティングシステムの主な機能は、ファイルシステムなどの補助記憶装置管理、仮想記憶などのメモリ管理、マルチタスクなどのプロセス管理、更にはGUIなどのユーザインタフェース、TCP/IPなどのネットワーク、などがある。オペレーティングシステムは、パーソナルコンピュータからスーパーコンピュータまでの各種のコンピュータや、更にはスマートフォンやゲーム機などを含む各種の組み込みシステムで、内部的に使用されている。 製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 OSの中で、タスク管理やメモリ管理など特に中核的な機能の部分をカーネル、カーネル以外の部分(シェルなど)をユーザランドと呼ぶ事もある。 現代の主なOSには、Microsoft Windows、Windows Phone、IBM z/OS、Android、macOS(OS X)、iOS、Linux、FreeBSD などがある。.

新しい!!: ロック (情報工学)とオペレーティングシステム · 続きを見る »

オーバーヘッド

ーバーヘッド(overhead)は、直訳すると「頭上」「頭上の」と言う意味になるが、転じて自分の頭よりも遥か高いところや上空なども指す。エレベーターなどの昇降機の場合、最上階のレベルから、昇降路の頂部の構造体(スラブ又は梁)下端までの寸法を指す。.

新しい!!: ロック (情報工学)とオーバーヘッド · 続きを見る »

オブジェクト (プログラミング)

ブジェクト(object)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象を抽象化する概念である。.

新しい!!: ロック (情報工学)とオブジェクト (プログラミング) · 続きを見る »

クリティカルセクション

リティカルセクション(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命令はそのようなプロセッサ間の衝突を防ぎ、アトミックにメモリ位置をチェックして変更することを可能にする。.

新しい!!: ロック (情報工学)とコンペア・アンド・スワップ · 続きを見る »

スレッド (コンピュータ)

レッド(thread)とは、CPU利用の単位。プロセスに比べて、プログラムを実行するときのコンテキスト情報が最小で済むので切り替えが速くなる。スレッドは、thread of execution(実行の脈絡)という言葉を省略したものである。 プログラミングの観点からみると、アプリケーションの処理の「実行の脈絡」は1つでないことが多い。これをシングルスレッドで実現しようとするとシグナルやタイマーを駆使してコーディングすることになる。また、複数のプロセスに分割してプロセス間通信で協調動作させるという方法もある。しかし、いずれの場合もそれらの機能を使うための余分な、本来のアルゴリズムと関係ないコーディングが必要となる。スレッドを使用したプログラミングは本来のアルゴリズムに集中しやすくなり、プログラムの構造が改善されるという効果がある。.

新しい!!: ロック (情報工学)とスレッド (コンピュータ) · 続きを見る »

スピンロック

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

新しい!!: ロック (情報工学)とスピンロック · 続きを見る »

スケジューリング

計算機科学においてスケジューリングは、スレッドやプロセスやデータの流れについて、システム資源(例えば、プロセッサ時間、通信帯域など)へのアクセスを与える方法である。システムを効果的に負荷分散するため、あるいはターゲットの Quality of Service を保証するためになされる。スケジューリングアルゴリズムは、マルチタスク(同時に複数のプロセスを実行)や多重化(複数のデータの流れを同時に転送)の発展とともに進化してきた。 スケジューラの主な関心事は以下の通りである。.

新しい!!: ロック (情報工学)とスケジューリング · 続きを見る »

セマフォ

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

新しい!!: ロック (情報工学)とセマフォ · 続きを見る »

ソフトウェアトランザクショナルメモリ

計算機科学において、ソフトウェアトランザクショナルメモリ(software transactional memory, STM)は、データベーストランザクションに似た並行性制御機構であり、並列計算を行う際の共有メモリへのアクセス法である。この機構はロックベースの同期を用いた並行性制御の代替手段として機能し、ノンブロッキングな方法で実装される物もある。ここでいうトランザクションとは、共有メモリに対する一連の読み出しと書き込みを実行するコードを意味する。論理的にはこれらの読み出しと書き込みは、時間的なある一点で行われ、他のトランザクションからはその間の状態は見えない。トランザクションを行うためにハードウェアにサポートさせるアイデア(ハードウェアトランザクショナルメモリ)は、1986年に Tom Knight により論文と特許として出された。そのアイデアを普及させたのが Maurice Herlihy と J.Eliot B. Moss である。1995年、Nir Shavit と Dan Touitou がこのアイデアをソフトウェアのみで行うトランザクショナルメモリ (STM) に拡張した。STM は近年非常に研究が進み、実用的な実装も進展している。.

新しい!!: ロック (情報工学)とソフトウェアトランザクショナルメモリ · 続きを見る »

サン・マイクロシステムズ

ン・マイクロシステムズ本社 サン・マイクロシステムズ(Sun Microsystems)は、アメリカ合衆国カリフォルニア州サンタクララに本社を置いていたコンピュータの製造・ソフトウェア開発・ITサービス企業である。2010年1月27日にオラクルにより吸収合併され、独立企業・法人としては消滅した。.

新しい!!: ロック (情報工学)とサン・マイクロシステムズ · 続きを見る »

優先順位の逆転

優先順位の逆転(ゆうせんじゅんいのぎゃくてん、Priority Inversion)とは、スケジューリングにおいて優先順位の高いタスクが必要としているリソースを優先順位の低いタスクが占有しているときに発生する状態である。低い優先順位のタスクがそのリソースを解放するまで高い優先順位のタスクが実行をブロックされるため、実質的に二つのタスクの優先順位が逆転する。他の中程度の優先順位のタスクがその途中で動作するなら、そのタスクは高優先順位のタスクと低優先順位のタスクの両方に優先して動作していることになる。 運が良ければ、優先順位の逆転があっても被害をまぬがれるかもしれない。優先順位の高いタスクの遅延により致命的な何かが起きる前に、運良く、低優先順位のタスクがリソースを解放して、それで間に合うかもしれないからである。しかし一方、優先順位の逆転が深刻な問題の原因となる状況も多々ある。もし高優先順位のタスクがリソーススタベーションの原因となっているのにブロックされているなら、システム全体の誤動作を引き起こすかもしれないし、事前に定義された矯正手段(例えば、ウォッチドッグタイマによるシステム全体のリセット)の引き金となる可能性もある。火星探査船「マーズ・パスファインダー」で発生した問題は、リアルタイムシステムでの優先順位の逆転が引き起こした典型的な例である(#外部リンク参照)。 優先順位の逆転はシステムの見た目の性能も低下させる。低優先順位のタスクは迅速に処理しなくてもよいから低優先順位に設定されている(例えばそれはバッチ処理かもしれないし、他の非対話型処理かもしれない)。同様に、高優先順位のタスクは時間的制限が問題となるから高優先順位に設定される。対話的にユーザーにデータを提供している場合もあるし、何らかのリアルタイムな応答を保証した処理をしているかもしれない。優先順位の逆転は低優先順位のタスクが高優先順位のタスクをブロックしてしまうので、システムの応答性能の低下を招き、保証された応答性能の違反となる可能性もある。 この問題は1970年代から知られているが、この状況を予測する確実な方法はない。様々な解決策は存在している。最も一般的な解決策は次のようなものである。.

新しい!!: ロック (情報工学)と優先順位の逆転 · 続きを見る »

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

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

新しい!!: ロック (情報工学)と割り込み (コンピュータ) · 続きを見る »

C Sharp

C#(シーシャープ)は、アンダース・ヘルスバーグが設計(デザイン)したプログラミング言語であり、構文(syntax)は(名前にもある通り)C言語や、C言語風に構文が設計されたC++やJavaなどの影響があるが、構文以外についてはヘルスバーグが以前の所属であるBorlandで設計したDelphiからの影響がある。 Microsoftによる謳い文句としては、マルチパラダイムプログラミング言語、強い型付け、命令型、宣言型、手続き型、関数型、ジェネリック、オブジェクト指向の要素を持つ、などといった点が強調されている。 CLIといった周辺も含め、Microsoftのフレームワーク「.NET Framework」の一部である他、VJ++で「非互換なJava」をJavaに持ち込もうとしたような以前のMicrosoftとは異なり、その多くの仕様を積極的に公開し標準化機構に託して自由な利用を許す(ECMA-334、ISO/IEC 23270:2003、JIS X 3015)など、同社の姿勢の変化があらわれている一面でもある(実際に「Mono」という、フリーソフトウェアの定義に合致したライセンスの、コミュニティによる実装がある)。.

新しい!!: ロック (情報工学)とC Sharp · 続きを見る »

C++11

C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。.

新しい!!: ロック (情報工学)とC++11 · 続きを見る »

C言語

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。.

新しい!!: ロック (情報工学)とC言語 · 続きを見る »

Component Object Model

Component Object Model(COM、コンポーネント オブジェクト モデル)とは、マイクロソフトが提唱するソフトウェアの再利用を目的とした技術のことである。アプリケーションソフトウェア間での通信や、オペレーティングシステムとアプリケーションソフトウェアとのAPIに用いられる。 COMを使用して開発されたソフトウェア部品をCOMコンポーネントと呼ぶ。COMコンポーネントは、特定の開発言語に依存せず、C言語やC++、Visual Basic、Smalltalk、Javaなど、様々な言語により開発を行うことができる。COMという用語はソフトウェア開発の世界ではOLE、OLEオートメーション、ActiveX、COM+、DCOMをカバーする包括的な用語としてよく使われる。COMコンポーネントは、他ソフトウェアと通信するためのインタフェースを有している。アプリケーションソフトウェアは、公開されているインタフェースを介してCOMコンポーネントと通信をし、それらを組み合わせることでサービスを提供する。言語によるメモリやその他計算資源の割り付けの違いは、参照カウントを利用してオブジェクトの生成と破棄をそのオブジェクト自身の責任とすることにより解決する。オブジェクトの異なるインタフェース間のキャストはQueryInterface関数で行う。メソッド呼び出しをデリゲート(委譲)する形でサブオブジェクトの集合(アグリゲーションと呼ぶ)を生成する方法がCOM内における最適な継承方法である。 COMは主としてMicrosoft Windows上で使用されるが、UNIXやMac OSでも使用することができる。COMの前身はOLEである。COMは.NET Frameworkに置き換えられているものも多い。たとえば.NETはDCOMの代替として、Windows Communication Foundation (WCF) を通じてWebサービスをサポートする。WCFがXMLベースのSOAPメッセージを利用するのに対し、ネットワークで接続されたDCOMはバイナリの独自仕様フォーマットを利用する。しかし、Microsoft DirectXなどに代表されるように、ネイティブC++での利用を前提としたパフォーマンス重視のAPIは、依然として.NETではなくCOMが使われる傾向にある。 COMはまたソフトウェアコンポーネントシステムとしてCORBAやJava Beansと競合関係にある。.

新しい!!: ロック (情報工学)とComponent Object Model · 続きを見る »

CPU

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

新しい!!: ロック (情報工学)とCPU · 続きを見る »

競合状態

合状態(きょうごうじょうたい、Race Condition、レースコンディション、またはRace Hazard、レースハザード)は、システムや処理過程の問題であり、処理過程の出力結果がイベントなどの順序やタイミングと予期しない(かつ危険な)依存関係にある場合をいう。本来の意味は、2つの電気信号が競合していずれかが出力に影響を与える状態である。 競合状態は設計の不十分な電子工学システム、特に論理回路で発生するが、コンピュータソフトウェアでもよく発生する。.

新しい!!: ロック (情報工学)と競合状態 · 続きを見る »

計算資源

計算資源(けいさんしげん、英語: computational resource)とは、コンピュータ科学などで、計算機(具体的なコンピュータ、そこで動くプロセスやジョブ、あるいは抽象的な計算模型)が「計算量」のために費す、具体的あるいは抽象的な「資源」である。計算機資源と言うこともあるが、その場合はプロセッサ時間や記憶装置などコンピュータのハードウェアの占有量のような具体的なものを指していることが多い。 その他に、アプリケーションプログラムの設定データのような情報をデスクトップ環境などのシステムが保存しているものを「リソース」と呼ぶことがある。詳細は、最後の#その他の節のリンク先を参照のこと。.

新しい!!: ロック (情報工学)と計算資源 · 続きを見る »

Java

Java(ジャバ)は、狭義ではプログラミング言語Javaを指す。広義では言語仕様以外にも、仕様が与えられているJavaクラスライブラリやJava仮想マシン、さらにはJDKやJREなどの公式のものをはじめとする、場合によってはサードパーティのものなどを含め曖昧にJavaプラットフォームと総称されるようなものなどのエコシステムなどを指すこともある。構文についてはJavaの文法の記事を参照。.

新しい!!: ロック (情報工学)とJava · 続きを見る »

Lock-freeとWait-freeアルゴリズム

Lock-freeとWait-freeアルゴリズムとは、共有データにロックをかけてアクセスを防ぐアルゴリズムとは違い、複数のスレッドが同時並行的に、ある対象データを壊すことなしに読み書きすることを可能にするアルゴリズムである。Lock-free とはスレッドがロックしないことを意味しており、全てのステップにおいてシステムが必ず進行する。これはLock-free ではミューテックスやセマフォといった、排他制御のためのプリミティブを使ってはならないことを意味する。なぜならロックを持っているスレッドの実行が中断した場合、全体の進行を阻止しうるからである。Wait-free とは、他のスレッドの動作に関係なく、スレッドがいかなる操作も有限のステップで操作を完了させられることを指す。あるアルゴリズムがLock-freeであるがWait-freeでないことはありうる。Wait-free なアルゴリズムは Lock-free である。.

新しい!!: ロック (情報工学)とLock-freeとWait-freeアルゴリズム · 続きを見る »

Microsoft Visual Basic .NET

Visual Basic.NET (ヴィジュアル ベーシック ドットネット)はマイクロソフトが開発したプログラミング言語およびその処理系。VB.NETと略されて呼ばれることが多い。.NETに対応していない旧来のMicrosoft Visual Basic(バージョン6.0まで、VB6)の後継である。 なおVisual Studio 2005以降では、「Visual Basic.NET」や「VB.NET」という呼称ではなく、従来のように「Visual Basic」という呼称が用いられるようになっているが、6.0以前との互換性はなく、また.NETベースであることには変わりない。.

新しい!!: ロック (情報工学)とMicrosoft Visual Basic .NET · 続きを見る »

Microsoft Visual C++

Visual C++ (マイクロソフト ビジュアル シープラスプラス;マイクロソフト ヴィジュアル シープラスプラス)とはマイクロソフト製のC、C++、C++/CLI用統合開発環境 (IDE) であり、コンパイラやデバッガを含む。通称VCあるいはVC++、MSVCなど。前身はMicrosoft C/C++などである。.

新しい!!: ロック (情報工学)とMicrosoft Visual C++ · 続きを見る »

Microsoft Windows

Microsoft Windows(マイクロソフト ウィンドウズ)は、マイクロソフトが開発・販売するオペレーティングシステム (OS) の製品群。グラフィカルユーザインタフェース (GUI)を採用している。.

新しい!!: ロック (情報工学)とMicrosoft Windows · 続きを見る »

Objective-C

Objective-C(オブジェクティブ シー)は、プログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語である。 Objective-CはNeXT、macOSのOSに標準付属する公式開発言語である。macOSのパッケージ版に開発環境がDVDで付属するほか、ユーザ登録をすれば無償でダウンロードできる(Xcodeの項目参照)。現在では主にアップルのmacOSやiOS上で動作するアプリケーションの開発で利用される。.

新しい!!: ロック (情報工学)とObjective-C · 続きを見る »

OpenMP

OpenMPは、並列コンピューティング環境を利用するために用いられる標準化された基盤。OpenMPは主に共有メモリ型並列計算機で用いられる。 MPIでは明示的にメッセージの交換をプログラム中に記述しなければならないが、OpenMPはOpenMPが使用できない環境では無視されるディレクティブを挿入することによって並列化を行う。このため並列環境と非並列環境でほぼ同一のソースコードを使用できるという利点がある。 また、プラットフォーム固有のスレッドAPIを使わず、コンパイラによって暗黙的に生成されたスレッドプールを利用してタスクを振り分けることになるため、並列プログラムを簡潔に記述できるだけでなく、複数の環境に移植しやすくなる。 MPIとの比較では、OpenMPは異なるスレッドが同一のデータを同じアドレスで参照できるのに対して、MPIでは明示的にメッセージ交換を行わなければならない。そのためSMP環境においては大きなデータの移動を行なわずにすむので高い効率が期待できる。ただし並列化の効率はコンパイラに依存するのでチューニングによる性能改善がMPIほど高くならないという問題がある。また、。 現在FORTRANとC/C++について標準化が行われている。.

新しい!!: ロック (情報工学)とOpenMP · 続きを見る »

POSIXスレッド

POSIXスレッド は、スレッドのPOSIX標準である。スレッド生成やスレッド操作の API を定義している。 POSIXスレッド標準を実装したライブラリは Pthreads と呼ばれることが多い。Pthreads は主にUnix系POSIXシステム(Linux や Solaris)で使われているが、Microsoft Windows 用実装も存在する。例えば、pthreads-w32 は Pthreads の API のサブセットをサポートしている。.

新しい!!: ロック (情報工学)とPOSIXスレッド · 続きを見る »

Python

Python(パイソン)は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。.

新しい!!: ロック (情報工学)とPython · 続きを見る »

Ruby

Ruby(ルビー)は、まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語であり、スクリプト言語が用いられてきた領域でのオブジェクト指向プログラミングを実現する。 また日本で開発されたプログラミング言語としては初めて国際電気標準会議で国際規格に認証された事例となった。.

新しい!!: ロック (情報工学)とRuby · 続きを見る »

X86

x86(エックスはちろく)は、Intel 8086、およびその後方互換性を持つマイクロプロセッサの命令セットアーキテクチャの総称。16ビットの8086で登場し、32ビット拡張の80386(後にIA-32と命名)、64ビット拡張のx64、広義には更にAMDなどの互換プロセッサを含む。 なおインテルのIA-64は全く異なる。.

新しい!!: ロック (情報工学)とX86 · 続きを見る »

排他制御

排他制御せずに ''i'' と ''i+1'' という2つのノードを同時に連結リストから外す操作を行うと、結果として ''i+1'' のノードが外れないという状態になりうる。 排他制御(はいたせいぎょ)とは、コンピュータ・プログラムの実行において、複数のプロセスが利用出来る共有資源に対し、複数のプロセスからの同時アクセスにより競合が発生する場合に、あるプロセスに資源を独占的に利用させている間は、他のプロセスが利用できないようにする事で整合性を保つ処理の事をいう。相互排除または相互排他(mutual exclusion)ともいう。最大k個のプロセスが共有資源にアクセスして良い場合を k-相互排除という。 換言すれば1つのクリティカルセクションに複数のプロセス(またはスレッド)が同時に入ることを防ぐことである。クリティカルセクションとは、プロセスが共有メモリなどの共有資源にアクセスしている期間を指す。排他制御の問題は1965年、エドガー・ダイクストラが Solution of a problem in concurrent programming control(並行プログラミング制御における問題の解法)と題した論文で扱ったのが最初であるTaubenfeld.

新しい!!: ロック (情報工学)と排他制御 · 続きを見る »

楽観的並行性制御

楽観的並行性制御(らっかんてきへいこうせいせいぎょ、optimistic concurrency control)とは、並行性制御(ロック)の手段の種別の一種である。楽観的ロックの概念である。他の処理と競合してはならないトランザクションにおいて、開始時には特に排他処理など行なわず、完了する際に他からの更新がされたか否かを確認し、もし他から更新されてしまっていたら自らの更新処理を破棄し、エラーとする。対照的に悲観的並行性制御がある。.

新しい!!: ロック (情報工学)と楽観的並行性制御 · 続きを見る »

情報工学

情報工学(じょうほうこうがく)は情報分野についての工学である。語感としては、情報科学という語がもっぱらおおまかに「科学」という語が指す範囲を中心としているのに対し、「工学」的な分野に重心があるが、内実としてはどれもたいして変わらないことが多い(たとえば、大学の学部学科名などに関しては、個々の大学の個性による違いのほうが、名前による違いより大きい)。日本で、大学の工学部などにコンピュータ科学ないし情報関係の学科を設置する際に、「工学」部という語との整合のためだけに便利に使われた、という面が大きい(情報工学科の記事を参照)。 なお英語の information engineering はソフトウェア工学における一手法であり、日本語の「情報工学」とは対応しない。また似た言葉に情報学がある。.

新しい!!: ロック (情報工学)と情報工学 · 続きを見る »

悲観的並行性制御

悲観的並行性制御(ひかんてきへいこうせいせいぎょ、pessimistic concurrency control)とは、並行性制御(ロック (情報工学))の手段の種別の一種である。悲観的ロックの概念である。他の処理と競合してはならないトランザクションにおいて、開始時に更新の抑止がされていないことを確認後(抑止されている場合は解除されるまで待機するか、エラーとして処理をあきらめる)他からの更新を抑止し(排他制御)、完了する際に抑止情報を解除する。対照的に楽観的並行性制御がある。.

新しい!!: ロック (情報工学)と悲観的並行性制御 · 続きを見る »

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