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
プロセスの生成 exec編
Search
Satoru Takeuchi
PRO
December 29, 2024
Technology
1
35
プロセスの生成 exec編
以下動画のテキストです。
https://youtu.be/0qsIC-lpP8E
Satoru Takeuchi
PRO
December 29, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
RubyでKubernetesプログラミング
sat
PRO
4
180
プロセスの生成 fork&exec編
sat
PRO
0
28
プロセスの生成 コピーオンライトを使ったfork編
sat
PRO
0
28
プロセスの生成 fork編
sat
PRO
0
32
静的ライブラリと 共有ライブラリの違いを実験で確認
sat
PRO
1
46
ハイテク休憩
sat
PRO
2
200
利きプロセススケジューラ
sat
PRO
5
3.3k
俺とVSCode Python Debugger Extension
sat
PRO
1
220
コード再利用のしくみ ライブラリ
sat
PRO
3
85
Other Decks in Technology
See All in Technology
やっちゃえ誤自宅Nutanix
yukiafronia
0
330
re:Invent Recap (January 2025)
scalefactory
0
340
LambdaとSQLiteでシステム構築
ogadra
1
150
パブリッククラウドのプロダクトマネジメントとアーキテクト
tagomoris
3
260
GraphRAG: What I Thought I Knew (But Didn’t)
sashimimochi
0
140
FinJAWS_reinvent2024_recap_database
asahihidehiko
2
320
DevSecOps入門:Security Development Lifecycleによる開発プロセスのセキュリティ強化
yuriemori
0
220
Plants vs thieves: Automated Tests in the World of Web Security
leichteckig
0
140
顧客の声を集めて活かすリクルートPdMのVoC活用事例を徹底解剖!〜プロデザ!〜
recruitengineers
PRO
0
150
消し忘れリソースゼロへ!私のResource Explorer活用法
cuorain
0
130
LLM活用の現在とこれから:LayerXにおける事例とともに 2025/1 ver. / layerx-llm-202501
yuya4
3
260
財務データを題材に、 ETLとは何であるかを考える
shoe116
5
1.9k
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
52k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
220
4 Signs Your Business is Dying
shpigford
182
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
How to Ace a Technical Interview
jacobian
276
23k
Writing Fast Ruby
sferik
628
61k
BBQ
matthewcrist
85
9.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Transcript
プロセスの生成 exec編 Dec. 29th, 2024 Satoru Takeuchi X: satoru_takeuchi 1
exec関数とは • Linuxで新しいプログラムを実行する関数 • forkと似て非なるもの ◦ fork: プロセスを複製して新しいプロセスを作成する ◦ exec:
同じプロセス上で新しいプログラムを実行する 2
exec(): CPU上で動作する処理の観点 1. CPU上で動くプロセスがexec()を呼ぶ 2. exec()後にプロセスはexecで指定したプログラムを実行する 3 CPU exec()呼び出し exec()から復帰
プロセス (プログラムA) カーネル プロセス (プログラムB)
exec: 物理メモリの観点 4 プロセスの メモリ (プログラムA) (1) exec()呼び出し時 カーネルの メモリ
プロセスの メモリ (プログラムA) カーネルの メモリ プロセスの メモリ (プログラムB) カーネルの メモリ CPU上で 実行中のコード (2) カーネルによるexec()の処理 (3) exec()復帰後 CPU上で 実行中のコード CPU上で 実行中のコード (プログラムBの エントリポイント) プロセスの メモリ (プログラムB) 新規割り当て 後で解放
コード #!/usr/bin/python3 import os print(f"プログラムA(exec前): pid={os.getpid()}") os.execve("./b.py", ["b.py"],{}) print("この業は実行されないはず") 5
プログラムA(a.py) プログラムB(b.py) #!/usr/bin/python3 import os print(f"プログラムB(exec後): pid={os.getpid()}")
実行結果 • プログラムAをするとexec呼び出しによってプログラムBが実行される • execの後のprint()文は実行されない • execによってpidは変わらない 6 $ ./a.py
プログラムA(exec前): pid=135225 プログラムB(exec後): pid=135225
まとめ • 新しいプログラムを実行する際はexec関数を呼び出す • forkと似て非なるもの ◦ fork: プロセスを複製して新しいプロセスを作成する ◦ exec:
同じプロセス上で新しいプログラムを実行する • 📝 ひとくちにexecといっても“man 3 exec”を見るとexecl,execlp…など似たような ものがたくさんあるが、全部ただの変種なので気にしなくていい 7