Submit Search
Upload
[Basic 9] 並列処理 / 排他制御
•
1 like
•
2,545 views
Yuto Takei
Follow
早稲田大学 高度データ関連人材育成コンソーシアム D-DATa ブロックチェーン エンジニアリング 基礎編 第9回 2018/3/1
Read less
Read more
Education
Report
Share
Report
Share
1 of 28
Download now
Download to read offline
Recommended
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル
裕士 常田
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
Recommended
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル
裕士 常田
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
Crfと素性テンプレート
Crfと素性テンプレート
Kei Uchiumi
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
Takashi Hoshino
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
RCCSRENKEI
最適輸送の解き方
最適輸送の解き方
joisino
直交領域探索
直交領域探索
okuraofvegetable
マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
幾何コンテスト2013
幾何コンテスト2013
Naoto Mizuno
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
Takuya Akiba
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
catupper
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
Rolling Hashを殺す話
Rolling Hashを殺す話
Nagisa Eto
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
Quine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
エンジニア目線で見る TLA+ と PlusCal - TAKAMI Torao
エンジニア目線で見る TLA+ と PlusCal - TAKAMI Torao
Torao Takami
More Related Content
What's hot
Crfと素性テンプレート
Crfと素性テンプレート
Kei Uchiumi
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
Takashi Hoshino
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
RCCSRENKEI
最適輸送の解き方
最適輸送の解き方
joisino
直交領域探索
直交領域探索
okuraofvegetable
マルチコアを用いた画像処理
マルチコアを用いた画像処理
Norishige Fukushima
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
幾何コンテスト2013
幾何コンテスト2013
Naoto Mizuno
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
Takuya Akiba
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
catupper
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
Rolling Hashを殺す話
Rolling Hashを殺す話
Nagisa Eto
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
Quine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
What's hot
(20)
Crfと素性テンプレート
Crfと素性テンプレート
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
最適輸送の解き方
最適輸送の解き方
直交領域探索
直交領域探索
マルチコアを用いた画像処理
マルチコアを用いた画像処理
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Union find(素集合データ構造)
Union find(素集合データ構造)
幾何コンテスト2013
幾何コンテスト2013
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
冬のLock free祭り safe
冬のLock free祭り safe
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
C++ マルチスレッド 入門
C++ マルチスレッド 入門
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Rolling Hashを殺す話
Rolling Hashを殺す話
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Quine・難解プログラミングについて
Quine・難解プログラミングについて
Similar to [Basic 9] 並列処理 / 排他制御
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
エンジニア目線で見る TLA+ と PlusCal - TAKAMI Torao
エンジニア目線で見る TLA+ と PlusCal - TAKAMI Torao
Torao Takami
Kernel vm study_2_xv6_scheduler_part1_revised
Kernel vm study_2_xv6_scheduler_part1_revised
Toshiaki Nozawa
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
sandai
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016
VirtualTech Japan Inc.
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
Yuichiro Saito
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
DNA Data Bank of Japan center
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
Kohsuke Yuasa
Amazon ElastiCache(初心者向け 超速マスター編)JAWSUG大阪
Amazon ElastiCache(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
sandai
Webサーバのチューニング
Webサーバのチューニング
Yu Komiya
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
Amazon Web Services Japan
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
Hirotaka Kawata
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
Insight Technology, Inc.
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
Satoshi Shimazaki
Similar to [Basic 9] 並列処理 / 排他制御
(20)
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
エンジニア目線で見る TLA+ と PlusCal - TAKAMI Torao
エンジニア目線で見る TLA+ と PlusCal - TAKAMI Torao
Kernel vm study_2_xv6_scheduler_part1_revised
Kernel vm study_2_xv6_scheduler_part1_revised
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
OpenStack本番環境の作り方 - Interop 2016
OpenStack本番環境の作り方 - Interop 2016
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
Amazon ElastiCache(初心者向け 超速マスター編)JAWSUG大阪
Amazon ElastiCache(初心者向け 超速マスター編)JAWSUG大阪
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
Webサーバのチューニング
Webサーバのチューニング
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
More from Yuto Takei
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
Yuto Takei
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
Yuto Takei
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ
Yuto Takei
ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
Yuto Takei
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来
Yuto Takei
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用
Yuto Takei
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
Yuto Takei
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討
Yuto Takei
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
Yuto Takei
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理
Yuto Takei
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
Yuto Takei
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
Yuto Takei
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
Yuto Takei
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
Yuto Takei
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
Yuto Takei
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
Yuto Takei
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
Yuto Takei
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
Yuto Takei
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
Yuto Takei
More from Yuto Takei
(20)
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
開発チームにおける多様性のススメ
開発チームにおける多様性のススメ
ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術者が夢見る未来
ブロックチェーン技術の課題と社会応用
ブロックチェーン技術の課題と社会応用
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
ブロックチェーンの不動産登記への応用に関する検討
ブロックチェーンの不動産登記への応用に関する検討
51% 攻撃の原理とシミュレーション
51% 攻撃の原理とシミュレーション
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 04] ブロックチェーンの動作原理
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 02] シェルの使い方 / Git, GitHub について
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 13] 型推論 / 最適化とコード出力
[Basic 13] 型推論 / 最適化とコード出力
[Basic 12] 関数型言語 / 型理論
[Basic 12] 関数型言語 / 型理論
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
[Basic 10] 形式言語 / 字句解析
[Basic 10] 形式言語 / 字句解析
Recently uploaded
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
inspirehighstaff03
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
inspirehighstaff03
My Inspire High Award 2024 「孤独は敵なのか?」
My Inspire High Award 2024 「孤独は敵なのか?」
inspirehighstaff03
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
inspirehighstaff03
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
inspirehighstaff03
What I did before opening my business..pdf
What I did before opening my business..pdf
oganekyokoi
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
inspirehighstaff03
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
oganekyokoi
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
inspirehighstaff03
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
oganekyokoi
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
inspirehighstaff03
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
inspirehighstaff03
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
inspirehighstaff03
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
inspirehighstaff03
My Inspire High Award 2024 「家族とは何か」
My Inspire High Award 2024 「家族とは何か」
inspirehighstaff03
My Inspire High Award 2024 「正義って存在するの?」
My Inspire High Award 2024 「正義って存在するの?」
inspirehighstaff03
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
inspirehighstaff03
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
shu1108hina1020
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
ssusere0a682
International Politics I - Lecture 1
International Politics I - Lecture 1
Toru Oga
Recently uploaded
(20)
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「孤独は敵なのか?」
My Inspire High Award 2024 「孤独は敵なのか?」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
What I did before opening my business..pdf
What I did before opening my business..pdf
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024 「家族とは何か」
My Inspire High Award 2024 「家族とは何か」
My Inspire High Award 2024 「正義って存在するの?」
My Inspire High Award 2024 「正義って存在するの?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
International Politics I - Lecture 1
International Politics I - Lecture 1
[Basic 9] 並列処理 / 排他制御
1.
第9回 オペレーティング システム 並列処理と排他制御 オペレーティングシステムの概念 Abraham Silberschatz,
Peter Baer Galvin, Greg Gagne (著) ISBN: 9784320122536 画像は https://www.amazon.co.jp/dp/4320122534 より引用 1
2.
近年のコンピュータにおいては、複数の プロセッサ (コアとも) を搭載した
CPU なども登場している 並列コンピューティング Core 0 Core 2 Core 1 Core 3 Memory (右) https://ja.wikipedia.org/wiki/マルチコア より引用 2
3.
レース状態 プログラムが並列実行されるとき、 実行のタイミングによっては、レース 状態 (競合状態) が発生する 例: a[0]++; 上の擬似アセンブラ: load
$v1, a[0] add $v2, $v1, 1 store a[0], $v2 スレッド 1 スレッド 2 i = 100 load $v1, a[0] ($v1 → 100) add $v2, $v1, 1 ($v2 → 101) store a[0], $v2 (i → 101) load $v1, a[0] ($v1 → 100) add $v2, $v1, 1 ($v2 → 101) store a[0], $v2 (i → 101) 3
4.
処理の原子性 (Atomicity) 命令セット アーキテクチャ
(ISA) レベルでは、命令間の依存関係が解析され、原始的に 実行されるのと同じ結果になる レジスタのインクリメント (例): addi $v0, $v0, 1 プログラムの命令は必ずしも他の命令の割り込みを受けずに実行されるとは限らない このような場合はどうすればよいか? 4
5.
クリティカル セクション 複数プロセスが同時に実行することで、データ破損が起こる可能性のある処理をクリ ティカル セクション
(きわどい領域) と呼ぶ。次の性質が要求される ● Mutual Exclusion プロセスがクリティカルセクションにいる間、他のいかなるプロセスもクリティカルセッションを実 行していない ● Progress クリティカル セクションに入ることを要求しているプロセスがいる場合、必ずひとつは実行を許 可される ● Bounded Waiting クリティカル セクションに入ることを要求したプロセスは、必ず一定の時間内に実行を許可され る 5
6.
排他制御 クリティカル セクションの機構を実現するために、以下のような同期プリミティブを用いる ことで排他制御 (Mutual
Exclusion) を実現する必要がある ● ミューテックス (Mutex) 本来は排他制御全般のことを指すが、プログラミングでは1 プロセスだけが実行できる排他制 御機構のことを特にミューテックスと呼ぶ ● セマフォ (Semaphore) 指定された任意の数のプロセスだけが並列実行できるようにする仕組み ● 条件変数 (Condition Variable) / モニタ (Monitor) ビジー ウェイトを避けるため、待ち状態になっているプロセスの一覧を管理するための変数を 条件変数と呼ぶ 6
7.
簡単なロックの試行 全スレッド共通のデータ領域: 個別スレッドでの実装: bool lock =
false; while (lock) { // wait... } lock = true; // Critical section lock = false; この方法には問題がある。 どのような問題か? 7
8.
Test and Set
(TAS) あるブーリアン変数に対して、原始的にその値を読み出してから 1 (true) をセットし読み 出した値を返す処理や関数を、Test and Set (TAS) と呼ぶ atomic bool TAS(bool *lock) { bool ret = *lock; *lock = true; return ret; } 8
9.
TAS を使ったクリティカル セクション 全スレッド共通のデータ領域: 個別スレッドでの実装: bool
lock = false; while (TAS(&lock)) { // wait... } // Critical section lock = false; 9 さきほどの方法で 保護できなかった lock 変数が 正しく保護できる
10.
Compare and Swap
(CAS) TAS より、少し賢いメカニズムとして、整数レジスタを使った Compare and Swap (CAS) も存在する atomic bool CAS(int *pt, int oldVal, int newVal) { if (*pt == oldVal) { *pt = newVal; return true; } else { return false; } } 10
11.
CAS を使ったクリティカル セクション 全スレッド共通のデータ領域: 個別スレッドでの実装: bool
lock = false; while (!CAS(&id, 0, myId)) { // wait... } // Critical section id = 0; 11
12.
ミューテックス (Mutex) TAS や
CAS のようなロックの仕組みを一般化して ● acquire(mutex) ミューテックス変数 mutex で保護されたクリティカルセクションに入る ● release(mutex) 上記クリティカル セクションから抜ける のように簡易に表現することがある C# での例 System.Threading.Mutex オブジェクトには以下のメソッドがある ● WaitOne メソッド ● ReleaseMutex メソッド 12
13.
スピン ロック ロックの実装方式によっては、繰り返し 処理で待ち続けなければならない。この ようなロックを、スピンロック (Spinlock) と呼ぶ この間も計算資源を消費するので、ビジー
ウェイト (Busy wait) である ● ごく短時間 (数サイクル分) でロックが取得できるならば、効率が良い ● レジスタを利用するだけなので、実装が非常に簡単 while (!CAS(&id, 0, myId)) { // wait... } // Critical section id = 0; 13
14.
条件変数 ビジー ウェイトの場合、プロセッサ時間を常に消費することになるので、ロックが取得で きるまではスレッドを sleep
にしておくのが良い。これを実現するのが条件変数 (Condition Variable) である 通常はミューテックスと組み合わせて利用する ● wait(cnd, mtx) ミューテックスを解放し、条件変数の待ち行列に 追加し、スレッドを待ち状態にする ● notify(cnd) 条件変数の先頭のスレッドを、待ち状態から実行 可能状態に復帰させる スレッド 1 スレッド 4 スレッド 5 条件変数の例: ⋮ 14
15.
条件変数 acquire(mtx); while (!condition) { wait(mtx,
cnd); } // critical section release(mtx); condition cnd; mutex mtx; notify(cnd); クリティカル セクション側 全スレッド共通のデータ領域: 再開させるスレッド: 15
16.
(参考) データベースでの並列処理 データベースにはトランザクションと呼ばれる機能がある。高速化のために並列実行されるが、互い の干渉を避けるための一貫性の度合いと、パフォーマンスとの兼ね合いで、その分離レベルを選択 できる ● Serializable
(直列可能) 並列実行ではなく、直列で実行するのと同じ結果。最も高い分離レベル ● Repeatable Read (再現性のある読み込み) 読み込めるデータは常に一貫しているが、新規追加や削除されたデータが見えるファントム リード (Phantom read) が起こる ● Read Committed (コミット済みの読み込み) コミットされたデータだけが読める。非再現読み取り(Non-repeatable read) が起こる ● Read Uncommitted (コミット前の読み出し) 他のトランザクションのコミット前の変更がすべて見える。最も低い分離レベル 16
17.
食事する哲学者問題 並列処理に関する思考実験。5 人の哲学者が円卓 を囲んで、パスタを食べる。左右にはフォークが あり、食事のためには両方のフォークが必要。 どうすれば食事できるか? 簡単なアルゴリズム: 右手のフォークを持ち上げる 左手のフォークを持ち上げる 食べる 左手のフォークを戻す 右手のフォークを戻す https://ja.wikipedia.org/wiki/食事する哲学者の問題 より引用 17
18.
デッドロック 複数のプロセスが、それぞれ複数種類の 資源を要求するとき、プロセスどうしが 互いに、すでに占有している資源どうし を要求したときに、永久的に待ち状態に なってしまうことをデッドロックという 次のような処理を行う ● デッドロックの回避 ● デッドロックの検出 プロセス
1 プロセス 2 資源 1 資源 2 資源 2 資源 1 18
19.
解法 1: 資源に優先順位を持たせる 占有したい資源に対して順序関係をもたせて、その 関係に反しないように占有していく方法 フォーク 1 フォーク 2 フォーク 3 フォーク 4 フォーク 5 哲学者
1 哲学者 3 哲学者 2 哲学者 4 哲学者 5 19
20.
解法 2: 資源管理を別で行う 資源管理を行うモジュールを別途で用意し、デッドロックを回避するように資源の占有を 許可する 資源管理 哲学者
1 哲学者 2 哲学者 3 哲学者 4 哲学者 5 20
21.
デッドロックを検出する ● 静的な解析 (Static
Analysis) プログラムを実行することなく、複数スレッドで実行されたときの状態を仮定して、状 態空間を全探索する。本来同時に実行されるべきでない制御フローを検出する ● 動的な検出 オペレーティング システムの実装において、デッドロックを検出する機構はたいて い存在しない。一方で、データベース エンジンには、そのようなアルゴリズムが備 わっている (参考) https://technet.microsoft.com/library/ms178104.aspx 21
22.
生産者・消費者問題 生産者・消費者問題 (Producer-Consumer Problem)
では、要素を作成する生産者と 消費者がおり、ひとつの記憶領域 (リング バッファ) がある。バッファ境界問題 (Bounded-Buffer Problem) とも ● 生産者は、消費者がまだ読むでいないアイテムを上書きしてはいけない ● 消費者は、生産者が作成していない領域を読んではいけない 10 2 7 5 4 9 消費者 生産者 22
23.
生産者・消費者問題 ソースコードは別途参照 https://gist.github.com/yutopio/dff12406968f6f2ca8d641074d64374d 23
24.
セマフォ (Semaphore) Semaphore では内部にカウンタを持ち、ある資源に対しての次のような排他制御方法 を提供する ●
down(sem) セマフォのカウンタを減少させる。0 未満になるような場合は、待ち行列に入る ● up(sem) セマフォのカウンタを増加させ、待ち行列のスレッドを実行可能にする 24
25.
生産者・消費者問題 簡単な実装例としては、以下のようなものが考え付く process producer() { start: item
= produce(); if (count == Size) sleep(); enqueue(item); count = count + 1; if (count == 1) notify(consumer); goto start; } process consumer() { start: if (count == 0) sleep(); item = dequeue(); count = count - 1; if (count == Size - 1) notify(producer); consume(item); goto start; } 25
26.
生産者・消費者問題 セマフォを使って書き直すと次のようになる procedure producer() { start: item
= produce(); down(empty); enqueue(item); up(filled); } procedure consumer() { start: down(filled); item = dequeue(); up(empty); consume(item); } semaphore filled = 0; semaphore empty = Size; 26
27.
スターベーション (飢餓状態) 複数のプロセスが待機状態から復帰するとき、スケジューラの実装 (や優先度)
によって はいつまでも復帰できないプロセスが出てきてしまう。このような状態を飢餓状態という 一般に、スケジューラは公平性 (Fairness) を考慮 して、待機させるプロセスを選択する必要がある P1 P2 C1 C2 たとえば、優先度が低かったと するといつまでも再開できない 可能性がある 27
28.
第9回 まとめ ● 並列処理と排他制御 ○
クリティカルセクション ○ 同期プリミティブ: Test and Set, Compare and Swap ○ ミューテックス, スピンロック ○ 食事する哲学者問題 , デッドロック, 資源の優先順位に関する説明 ○ セマフォ, 生産者・消費者問題 ○ スターベーションと公平性 28
Download now