Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
プロセスの生成 fork編
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoru Takeuchi
PRO
December 28, 2024
Technology
98
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プロセスの生成 fork編
以下動画のテキストです。
https://youtu.be/d65eCrW5wY0
Satoru Takeuchi
PRO
December 28, 2024
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
74
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
100
あなたの知らないバージョン命名規則
sat
PRO
3
910
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
67
Machine Check Exception
sat
PRO
2
68
バイナリダンプの模様を読む
sat
PRO
0
95
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
95
114-ファイルのshallow_copy.pdf
sat
PRO
2
59
113-Btrfsのスナップショット.pdf
sat
PRO
0
42
Other Decks in Technology
See All in Technology
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
170
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
700
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
660
DORA_Metrics.pdf
wagnerfusca
1
140
形式手法を使って仕様をコーディングしよう
mikanichinose
0
160
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
150
SQL Server 2025 最適化されたロック
odashinsuke
0
120
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
210
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
490
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
380
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
2.7k
猫でもわかるKiro Web
kentapapa
1
160
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Evolving SEO for Evolving Search Engines
ryanjones
0
300
Visualization
eitanlees
153
17k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
260
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
450
Exploring anti-patterns in Rails
aemeredith
4
520
For a Future-Friendly Web
brad_frost
183
10k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
860
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Transcript
プロセスの生成 fork編 Dec. 28th, 2024 Satoru Takeuchi X: satoru_takeuchi 1
はじめに • Linuxで新しいプロセスを生成する関数, forkについて説明 • 備考 ◦ forkは難しい。初見でわからなくても問題ない ◦ Linuxの実際のforkの挙動ではなく、その簡略版の説明をしている
▪ ここで説明するコピーオンライトの仕組みを使わないもの ▪ コピーオンライトも一気に説明するのは消化不良になりそうなので、そっちは後日説明 2
fork()とは • プロセスを生成する関数 • プロセスの生成といえば「bashがechoプログラムを新規作成」というようなイメージ を持つと思うが、forkがやることは異なる • forkがやるのは「実行中のプログラムの複製」 ◦ 実行の流れを分岐させるので
forkという名前が付いている • 「bashがechoプログラムを新規作成」ということをしたければfork()の後にexec()を 呼び出す ◦ exec()については後日説明 3
fork(): CPU上で動作する処理の観点 • CPU0上で動く親プロセスがfork()を呼ぶ • fork()後にCPU0上で親プロセスが、CPU1上で子プロセスが動く 4 CPU0 CPU1 fork()呼び出し
fork()から復帰 fork()から復帰 親プロセス カーネル 親プロセス 子プロセス 処理が分岐(fork)
fork: 物理メモリの観点 5 親プロセスの メモリ (1) fork呼び出し時 カーネルの メモリ 親プロセスの
メモリ カーネルの メモリ 親プロセスの メモリ カーネルの メモリ コピー 子プロセスの メモリ 子プロセスの メモリ CPU0上で 実行中のコード (2) カーネルによるfork()の処理 (3) fork()復帰後 CPU0上で 実行中のコード CPU0上で 実行中のコード CPU1上で 実行中のコード
コード: fork.py #!/usr/bin/python3 import os, sys ret = os.fork() if
ret == 0: print("子プロセス: pid={}, 親プロセスのpid={}".format(os.getpid(), os.getppid())) exit() elif ret > 0: print("親プロセス: pid={}, 子プロセスのpid={}".format(os.getpid(), ret)) exit() sys.exit(1) 6
まとめ • Linuxではfork()関数でプロセスを生成する • 全く別のプログラムからプロセスを生み出すのではなく、同じプロセスを複製する ◦ 別プログラムの実行には exec()を使う 7