SlideShare a Scribd company logo
POSIX Threads
2015/10/06
0x64 Tales
#01 Parallel / Concurrent
Livesense Inc.
HORINOUCHI Masato
pthread ってなに? (1)
• 正式名称は POSIX Threads で、その名の通り POSIX 標準の非同
期処理(thread)の API 群。
• 仕様は IEEE Std 1003.1c-1995 で定義している。
• API 群なので使用する言語は問わない。
• 基本的に C言語向けのライブラリーを各言語に移植。
pthread ってなに? (2)
• あくまで API を規定しているだけなので、どのような実装かは
OS (正確には Kernel と Library) による。
• POSIX準拠のシステムであれば使用できるのはもちろん、
Win32 実装もあったりする。
• ただし 3rd party 製(現状 RedHat)。
Linux のスレッド
• ところで "Linux kernel のスレッドって結局はプロセス" って話
を聞いたことないですかね。
• 今回はこの点を簡単に説明することにします。
pthread デモ
• 食事する哲学者の問題 を問いてみよう。
• source は Sun Studio 12 のページ から持ってきました。
• din_philo.c はデッドロックの可能性あり。
• din_philo_fix1.c はトークン (セマフォ) を用いてデッド
ロックを解決している。
ps -Lf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
horinou+ 21135 1804 21135 0 6 16:51 pts/1 00:00:00 ./din_philo
horinou+ 21135 1804 21136 0 6 16:51 pts/1 00:00:00 ./din_philo
horinou+ 21135 1804 21137 0 6 16:51 pts/1 00:00:00 ./din_philo
horinou+ 21135 1804 21138 0 6 16:51 pts/1 00:00:00 ./din_philo
horinou+ 21135 1804 21139 0 6 16:51 pts/1 00:00:00 ./din_philo
horinou+ 21135 1804 21140 0 6 16:51 pts/1 00:00:00 ./din_philo
• PID (process ID) が同一で LWP (thread ID) が違うスレッドを 5
つ生成できた。
Linux の pthreads 実装
• モダンな Linux + glibc では Na/ve POSIX Threads Library
(NPTL) が用いられる。
• 初期の Linux 2.6 では LinuxThreads が用いられていた。
• より前はユーザーランドで実装していた (名称不明)。
• Lightweight Process (LWP) を使用して実装している。
• LWP は複数の LWP同士でリソースを共有することが可能。
NPTL
• LWP とスレッドが 1:1 の実装、いわゆる 1:1 モデルを採用。
• それぞれのスレッドが Kernel スケジュール実体に 1:1 マッピ
ングとなる。
• プロセスもスレッド (LWP) も task_struct 構造体で管理し、
プロセススケジューリングは同一のキューで行なう。
• 要するにプロセスとスレッドの違いはほとんとない。
プロセスとスレッドのメモリ管理
• プロセス
• fork 時に新しく仮想アドレス空間を生成し親のメモリを子に
コピー。
• スレッド
• 複数のスレッドが 1つの仮想アドレス空間を共有。
プロセスの仮想アドレス空間
マルチスレッドのコンテキスト切り替えに伴うコスト から引用。
スレッドの仮想アドレス空間
マルチスレッドのコンテキスト切り替えに伴うコスト から引用。
NPTL の利点
• kernel からはスレッドもプロセス(1:1モデル)として扱えるの
で…
• 1つのプロセススケジューラーだけで管理するのでシンプ
ル。
• SMP システムでも複数のコアでスレッドの並列処理をするの
が簡単。
Linux 以外だと
• ちなみに Linux 以外の POSIX システムは M:N モデル採用例が
多い。
• FreeBSD
• Kernel Scheduler En;;es (KSE)
• Solaris
• Solaris Lightweight Process (LWP)
ご清聴ありがとうございました

More Related Content

What's hot

Reading kernel org
Reading kernel orgReading kernel org
Reading kernel org
Kai Sasaki
 
圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題
Hiroshi Miura
 
Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解する
Norimasa FUJITA
 
Lispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとかLispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとか
たけおか しょうぞう
 
Lisp_chibi_machine 190427
Lisp_chibi_machine 190427Lisp_chibi_machine 190427
Lisp_chibi_machine 190427
たけおか しょうぞう
 
qpstudy05 lignhing talk - virtio
qpstudy05 lignhing talk - virtioqpstudy05 lignhing talk - virtio
qpstudy05 lignhing talk - virtio
Takeshi HASEGAWA
 
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
shimadah
 
32bit UEFIマシンで遊ぶ
32bit UEFIマシンで遊ぶ32bit UEFIマシンで遊ぶ
32bit UEFIマシンで遊ぶ
shimadah
 
x86_64向け自作OSの紹介
x86_64向け自作OSの紹介x86_64向け自作OSの紹介
x86_64向け自作OSの紹介
Yuma Ohgami
 
ターミナル上でのSwift運用 ver.1.1
ターミナル上でのSwift運用 ver.1.1ターミナル上でのSwift運用 ver.1.1
ターミナル上でのSwift運用 ver.1.1
HarutakaMatsumoto
 
ターミナル上でのSwift運用
ターミナル上でのSwift運用ターミナル上でのSwift運用
ターミナル上でのSwift運用
HarutakaMatsumoto
 
VAEで遊んでみる
VAEで遊んでみるVAEで遊んでみる
VAEで遊んでみる
超史 宮崎
 
Lispマシン・シミュレータの紹介
Lispマシン・シミュレータの紹介Lispマシン・シミュレータの紹介
Lispマシン・シミュレータの紹介
たけおか しょうぞう
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
Takaaki Hoyo
 
UEFI向け自作OSの紹介
UEFI向け自作OSの紹介UEFI向け自作OSの紹介
UEFI向け自作OSの紹介
Yuma Ohgami
 
TUI作業で便利なソフト2題
TUI作業で便利なソフト2題TUI作業で便利なソフト2題
TUI作業で便利なソフト2題
shimadah
 

What's hot (17)

Reading kernel org
Reading kernel orgReading kernel org
Reading kernel org
 
圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題
 
Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解する
 
Lispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとかLispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとか
 
IPv6 in Java
IPv6 in JavaIPv6 in Java
IPv6 in Java
 
Lisp_chibi_machine 190427
Lisp_chibi_machine 190427Lisp_chibi_machine 190427
Lisp_chibi_machine 190427
 
qpstudy05 lignhing talk - virtio
qpstudy05 lignhing talk - virtioqpstudy05 lignhing talk - virtio
qpstudy05 lignhing talk - virtio
 
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
ここんとーく in 大分 (opencoconのご紹介と次期バージョンの予告)
 
32bit UEFIマシンで遊ぶ
32bit UEFIマシンで遊ぶ32bit UEFIマシンで遊ぶ
32bit UEFIマシンで遊ぶ
 
x86_64向け自作OSの紹介
x86_64向け自作OSの紹介x86_64向け自作OSの紹介
x86_64向け自作OSの紹介
 
ターミナル上でのSwift運用 ver.1.1
ターミナル上でのSwift運用 ver.1.1ターミナル上でのSwift運用 ver.1.1
ターミナル上でのSwift運用 ver.1.1
 
ターミナル上でのSwift運用
ターミナル上でのSwift運用ターミナル上でのSwift運用
ターミナル上でのSwift運用
 
VAEで遊んでみる
VAEで遊んでみるVAEで遊んでみる
VAEで遊んでみる
 
Lispマシン・シミュレータの紹介
Lispマシン・シミュレータの紹介Lispマシン・シミュレータの紹介
Lispマシン・シミュレータの紹介
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
 
UEFI向け自作OSの紹介
UEFI向け自作OSの紹介UEFI向け自作OSの紹介
UEFI向け自作OSの紹介
 
TUI作業で便利なソフト2題
TUI作業で便利なソフト2題TUI作業で便利なソフト2題
TUI作業で便利なソフト2題
 

Similar to POSIX Threads

OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
Takuya ASADA
 
DevConf.cz 2020参加報告
DevConf.cz 2020参加報告DevConf.cz 2020参加報告
DevConf.cz 2020参加報告
Hitachi, Ltd. OSS Solution Center.
 
最小セットOS Ssp fun
最小セットOS Ssp fun最小セットOS Ssp fun
最小セットOS Ssp fun
Kiyoshi Ogawa
 
Bsd suki
Bsd sukiBsd suki
Bsd suki
yamori813
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回
Ryuichi Ueda
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)Kazuko Itoda
 
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
Satoshi imai
 
Delphi Countdown
Delphi CountdownDelphi Countdown
Delphi Countdown
Hikaru Fukushi
 
OpenRTM-aistおよび RTコンポーネントプログラミングの概要
OpenRTM-aistおよび RTコンポーネントプログラミングの概要OpenRTM-aistおよび RTコンポーネントプログラミングの概要
OpenRTM-aistおよび RTコンポーネントプログラミングの概要
openrtm
 
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
Masakazu Asama
 
Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
Naruto TAKAHASHI
 
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallOSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/Fall
Takuya ASADA
 
産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会Hirotaka Kawata
 
200923 01jp
200923 01jp200923 01jp
200923 01jp
openrtm
 
ZFS on Linux @ZFS Day 2011.10
ZFS on Linux @ZFS Day 2011.10ZFS on Linux @ZFS Day 2011.10
ZFS on Linux @ZFS Day 2011.10
Kazuhisa Hara
 
RaspberryPi(OSH)の産業利用の現状
RaspberryPi(OSH)の産業利用の現状RaspberryPi(OSH)の産業利用の現状
RaspberryPi(OSH)の産業利用の現状
Device WebAPI Consortium
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
uchan_nos
 
プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版
信之 岩永
 
20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門
Hiyou Shinnonome
 

Similar to POSIX Threads (20)

OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
 
DevConf.cz 2020参加報告
DevConf.cz 2020参加報告DevConf.cz 2020参加報告
DevConf.cz 2020参加報告
 
最小セットOS Ssp fun
最小セットOS Ssp fun最小セットOS Ssp fun
最小セットOS Ssp fun
 
Bsd suki
Bsd sukiBsd suki
Bsd suki
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)LPICレベル1技術解説セミナー(2012/11/11)
LPICレベル1技術解説セミナー(2012/11/11)
 
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
 
Delphi Countdown
Delphi CountdownDelphi Countdown
Delphi Countdown
 
OpenRTM-aistおよび RTコンポーネントプログラミングの概要
OpenRTM-aistおよび RTコンポーネントプログラミングの概要OpenRTM-aistおよび RTコンポーネントプログラミングの概要
OpenRTM-aistおよび RTコンポーネントプログラミングの概要
 
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
 
Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
 
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/FallOSvのご紹介 in OSC2014 Tokyo/Fall
OSvのご紹介 in OSC2014 Tokyo/Fall
 
産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会産学間連携推進室(AC部屋) 2012 成果報告会
産学間連携推進室(AC部屋) 2012 成果報告会
 
200923 01jp
200923 01jp200923 01jp
200923 01jp
 
ZFS on Linux @ZFS Day 2011.10
ZFS on Linux @ZFS Day 2011.10ZFS on Linux @ZFS Day 2011.10
ZFS on Linux @ZFS Day 2011.10
 
RaspberryPi(OSH)の産業利用の現状
RaspberryPi(OSH)の産業利用の現状RaspberryPi(OSH)の産業利用の現状
RaspberryPi(OSH)の産業利用の現状
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
 
プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版
 
20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門
 

More from Masato HORINOUCHI

Church Numerals
Church NumeralsChurch Numerals
Church Numerals
Masato HORINOUCHI
 
CPS & CTO
CPS & CTOCPS & CTO
FM synthesis
FM synthesisFM synthesis
FM synthesis
Masato HORINOUCHI
 
Inside mml2wav.rb
Inside mml2wav.rbInside mml2wav.rb
Inside mml2wav.rb
Masato HORINOUCHI
 
A440
A440A440
Scheme Interpreter in Ruby
Scheme Interpreter in RubyScheme Interpreter in Ruby
Scheme Interpreter in Ruby
Masato HORINOUCHI
 
Clock / Timer
Clock / TimerClock / Timer
Clock / Timer
Masato HORINOUCHI
 
Hash Tree
Hash TreeHash Tree
Elixir紹介
Elixir紹介Elixir紹介
Elixir紹介
Masato HORINOUCHI
 

More from Masato HORINOUCHI (9)

Church Numerals
Church NumeralsChurch Numerals
Church Numerals
 
CPS & CTO
CPS & CTOCPS & CTO
CPS & CTO
 
FM synthesis
FM synthesisFM synthesis
FM synthesis
 
Inside mml2wav.rb
Inside mml2wav.rbInside mml2wav.rb
Inside mml2wav.rb
 
A440
A440A440
A440
 
Scheme Interpreter in Ruby
Scheme Interpreter in RubyScheme Interpreter in Ruby
Scheme Interpreter in Ruby
 
Clock / Timer
Clock / TimerClock / Timer
Clock / Timer
 
Hash Tree
Hash TreeHash Tree
Hash Tree
 
Elixir紹介
Elixir紹介Elixir紹介
Elixir紹介
 

Recently uploaded

生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
Osaka University
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
Takuya Minagawa
 
Kotest を使って 快適にテストを書こう - KotlinFest 2024
Kotest を使って 快適にテストを書こう - KotlinFest 2024Kotest を使って 快適にテストを書こう - KotlinFest 2024
Kotest を使って 快適にテストを書こう - KotlinFest 2024
Hirotaka Kawata
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
Seiya Shimabukuro
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
iPride Co., Ltd.
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
ssuserfcafd1
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
Hideo Kashioka
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 

Recently uploaded (13)

生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
 
Kotest を使って 快適にテストを書こう - KotlinFest 2024
Kotest を使って 快適にテストを書こう - KotlinFest 2024Kotest を使って 快適にテストを書こう - KotlinFest 2024
Kotest を使って 快適にテストを書こう - KotlinFest 2024
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 

POSIX Threads

  • 1. POSIX Threads 2015/10/06 0x64 Tales #01 Parallel / Concurrent Livesense Inc. HORINOUCHI Masato
  • 2. pthread ってなに? (1) • 正式名称は POSIX Threads で、その名の通り POSIX 標準の非同 期処理(thread)の API 群。 • 仕様は IEEE Std 1003.1c-1995 で定義している。 • API 群なので使用する言語は問わない。 • 基本的に C言語向けのライブラリーを各言語に移植。
  • 3. pthread ってなに? (2) • あくまで API を規定しているだけなので、どのような実装かは OS (正確には Kernel と Library) による。 • POSIX準拠のシステムであれば使用できるのはもちろん、 Win32 実装もあったりする。 • ただし 3rd party 製(現状 RedHat)。
  • 4. Linux のスレッド • ところで "Linux kernel のスレッドって結局はプロセス" って話 を聞いたことないですかね。 • 今回はこの点を簡単に説明することにします。
  • 5. pthread デモ • 食事する哲学者の問題 を問いてみよう。 • source は Sun Studio 12 のページ から持ってきました。 • din_philo.c はデッドロックの可能性あり。 • din_philo_fix1.c はトークン (セマフォ) を用いてデッド ロックを解決している。
  • 6. ps -Lf UID PID PPID LWP C NLWP STIME TTY TIME CMD horinou+ 21135 1804 21135 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21136 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21137 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21138 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21139 0 6 16:51 pts/1 00:00:00 ./din_philo horinou+ 21135 1804 21140 0 6 16:51 pts/1 00:00:00 ./din_philo • PID (process ID) が同一で LWP (thread ID) が違うスレッドを 5 つ生成できた。
  • 7. Linux の pthreads 実装 • モダンな Linux + glibc では Na/ve POSIX Threads Library (NPTL) が用いられる。 • 初期の Linux 2.6 では LinuxThreads が用いられていた。 • より前はユーザーランドで実装していた (名称不明)。 • Lightweight Process (LWP) を使用して実装している。 • LWP は複数の LWP同士でリソースを共有することが可能。
  • 8. NPTL • LWP とスレッドが 1:1 の実装、いわゆる 1:1 モデルを採用。 • それぞれのスレッドが Kernel スケジュール実体に 1:1 マッピ ングとなる。 • プロセスもスレッド (LWP) も task_struct 構造体で管理し、 プロセススケジューリングは同一のキューで行なう。 • 要するにプロセスとスレッドの違いはほとんとない。
  • 9. プロセスとスレッドのメモリ管理 • プロセス • fork 時に新しく仮想アドレス空間を生成し親のメモリを子に コピー。 • スレッド • 複数のスレッドが 1つの仮想アドレス空間を共有。
  • 12. NPTL の利点 • kernel からはスレッドもプロセス(1:1モデル)として扱えるの で… • 1つのプロセススケジューラーだけで管理するのでシンプ ル。 • SMP システムでも複数のコアでスレッドの並列処理をするの が簡単。
  • 13. Linux 以外だと • ちなみに Linux 以外の POSIX システムは M:N モデル採用例が 多い。 • FreeBSD • Kernel Scheduler En;;es (KSE) • Solaris • Solaris Lightweight Process (LWP)