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&exec編
Search
Satoru Takeuchi
PRO
December 29, 2024
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プロセスの生成 fork&exec編
以下動画のテキストです
https://youtu.be/DLSho8DvdUk
Satoru Takeuchi
PRO
December 29, 2024
Transcript
7 slides
プロセスの生成 fork&exec編 Dec. 29th, 2024 Satoru Takeuchi X: satoru_takeuchi 1
はなすこと • あるプログラムを実行しているプロセスから別のプログラムを別プロセスとして実行 する方法 ◦ 要するに「bashからechoコマンドを実行するコードはどうなっているのか?」ということ • forkの後にexecを呼ぶことで実現する 2
fork&exec: CPU上で動作する処理の観点 1. CPU0上で動く親プロセスがfork()を呼ぶ 2. fork()後にCPU0上で親プロセスが、CPU1上で子プロセスが動く 3. 子プロセスがexec()を呼びプログラムBを実行 3 CPU0
CPU1 fork()呼び出し fork()から復帰 fork()から復帰 親プロセス (プログラムA) カーネル 親プロセス (プログラムA) 子プロセス (プログラムA) 処理が分岐(fork) カーネル 子プロセス (プログラムB) exec()呼び出し exec()から復帰
fork&exec: 物理メモリの観点 4 親プロセスの メモリ (プログラムA) (1) fork呼び出し時 カーネルの メモリ
親プロセスの メモリ (プログラムA) カーネルの メモリ 子プロセスの メモリ (プログラムA) CPU0上で 実行中のコード (2) fork()復帰後 (3) exec()復帰後 CPU0上で 実行中のコード CPU1上で 実行中のコード 親プロセスの メモリ (プログラムA) カーネルの メモリ 子プロセスの メモリ (プログラムB) CPU1上で 実行中のコード CPU0上で 実行中のコード
コード: fork-and-exec.py #!/usr/bin/python3 import os, sys ret = os.fork() if
ret == 0: print("子プロセス: pid={}, 親プロセスのpid={}".format(os.getpid(), os.getppid())) os.execve("/bin/echo", ["echo", "pid={} からこんにちは ".format(os.getpid())], {}) exit() elif ret > 0: print("親プロセス: pid={}, 子プロセスのpid={}".format(os.getpid(), ret)) exit() sys.exit(1) 5
実行結果 $ ./fork-and-exec.py 親プロセス: pid=137998, 子プロセスのpid=137999 子プロセス: pid=137999, 親プロセスのpid=137998 pid=137999
からこんにちは 6
まとめ • あるプログラムを実行しているプロセスから別のプログラムを別プロセスとして実行 するにはforkとexecを併用する ◦ まわりくどいうようだが本当にこうなっている ◦ こういうことをするposix_spawnという関数もあるが、内部的には fork,execを順番に呼び出している だけ
• 過去動画で説明した「CoWを使った実際のfork」の挙動がわかればうれしさがわ かってくる。これについては後日紹介 7
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Btrfsのsnapshotとランダム書き込み
sat
PRO
0
23
ファイルシステムのデフラグ
sat
PRO
1
31
コピーオンライト型ファイルシステムと ランダム書き込み
sat
PRO
2
95
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
86
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
120
あなたの知らないバージョン命名規則
sat
PRO
3
940
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
84
Machine Check Exception
sat
PRO
2
75
バイナリダンプの模様を読む
sat
PRO
0
120
Other Decks in Technology
See All in Technology
Linuxネットワークスタック進化の軌跡: 過去10年の歩みと最新トレンド
orimanabu
4
710
DevOps Agentにあらゆるセキュリティインシデントのトリアージを任せた件
jirtosterone
1
150
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
340
落とし穴にハマってわかった 開発生産性を測るときに気をつけたいこと
munakata
2
230
MCPでネットワーク障害調査を自動化する前に直すべき3つのこと
yama3133
0
350
あの日、見つかっていなかったらどうなっていたか
kazzpapa3
2
220
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
900
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
270
常時稼働エージェントの作り方(Claude公式ブログを資料化)
minorun365
PRO
11
18k
81天的 AI Agent 軟體開發團隊治理實務分享
regionbbs
0
170
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
390
ラクスル会社紹介資料|エンジニア向け / RAKSUL Introduction for Engineers
raksulrecruiting
0
110
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
320
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
570
Building an army of robots
kneath
307
47k
Unsuck your backbone
ammeep
672
58k
The Curse of the Amulet
leimatthew05
4
17k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
580
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
1
240
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Everyday Curiosity
cassininazir
0
400
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
310
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k