Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
POSIX Threads
Search
HORINOUCHI Masato
October 06, 2015
Technology
59
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
POSIX Threads
社内LT大会 0x64物語 #01 Parallel / Concurrent 資料
HORINOUCHI Masato
October 06, 2015
More Decks by HORINOUCHI Masato
See All by HORINOUCHI Masato
balenaCloud
thermes
0
110
Church Numerals
thermes
0
55
CPS & CTO
thermes
0
250
FM synthesis
thermes
0
41
A440
thermes
0
67
Inside mml2wav.rb
thermes
0
93
Scheme Interpreter in Ruby
thermes
0
76
Clock / Timer
thermes
0
190
Hash Tree
thermes
0
83
Other Decks in Technology
See All in Technology
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
2
240
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
230
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
270
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
180
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
300
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
320
振り返りこそエンジニアの本領
negima
0
310
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
240
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
260
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.7k
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
3
720
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Amusing Abliteration
ianozsvald
1
290
Design in an AI World
tapps
1
300
Utilizing Notion as your number one productivity tool
mfonobong
4
570
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
720
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
270
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
440
New Earth Scene 8
popppiees
3
2.5k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Done Done
chrislema
186
16k
Transcript
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)
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠