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
86
Other Decks in Technology
See All in Technology
現実的なCompose化戦略 ~既存リスト画面の置き換え~
sansantech
PRO
0
160
インシデントキーメトリクスによるインシデント対応の改善 / Improving Incident Response using Incident Key Metrics
nari_ex
0
4.1k
20250125_Agent for Amazon Bedrock試してみた
riz3f7
2
110
Enhancing SRE Using AI
yoshiiryo1
1
270
Windows Server 2025 へのアップグレードではまった話
tamaiyutaro
2
260
Redmineの意外と知らない便利機能 (Redmine 6.0対応版)
vividtone
0
190
Power BI は、レポート テーマにこだわろう!テーマのティア表付き
ohata_ds
0
120
Women in Agile
kawaguti
PRO
2
170
GraphRAG: What I Thought I Knew (But Didn’t)
sashimimochi
1
230
HCP TerraformとAzure:イオンスマートテクノロジーのインフラ革新 / HCP Terraform and Azure AEON Smart Technology's Infrastructure Innovation
aeonpeople
3
980
extensionとschema
yahonda
1
100
消し忘れリソースゼロへ!私のResource Explorer活用法
cuorain
0
140
Featured
See All Featured
Designing Experiences People Love
moore
139
23k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building Adaptive Systems
keathley
39
2.4k
We Have a Design System, Now What?
morganepeng
51
7.4k
RailsConf 2023
tenderlove
29
980
Agile that works and the tools we love
rasmusluckow
328
21k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
520
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
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