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
57
プロセスの生成 exec編
以下動画のテキストです。
https://youtu.be/0qsIC-lpP8E
Satoru Takeuchi
PRO
December 29, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
デバイスにアクセスするデバイスファイル
sat
PRO
1
25
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
17
デバイスドライバ
sat
PRO
0
21
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
61
共有メモリ
sat
PRO
3
53
マルチスレッドプログラム
sat
PRO
3
40
Linuxのブートプロセス initramfs編
sat
PRO
2
52
Linuxのブートプロセス
sat
PRO
6
160
シェルのジョブ
sat
PRO
1
36
Other Decks in Technology
See All in Technology
技術選定を突き詰める 懇親会LT
okaru
1
300
Cursorを全エンジニアに配布 その先に見据えるAI駆動開発の未来 / 2025-05-13-forkwell-ai-study-1-cursor-at-loglass
itohiro73
2
500
Coding Agentに値札を付けろ
watany
3
480
Gateway H2 モジュールで スマートホーム入門
minoruinachi
0
140
ユーザーコミュニティが海外スタートアップのDevRelを補完する瞬間
nagauta
0
180
Azure × MCP 入門
ry0y4n
8
1.7k
ソフトウェアテスト 最初の一歩 〜テスト設計技法をワークで体験しながら学ぶ〜 #JaSSTTokyo / SoftwareTestingFirstStep
nihonbuson
PRO
1
150
Асинхронная коммуникация в Go: от понятного к душному. Дима Некрасов, Otello, 2ГИС
lamodatech
0
2.1k
UIパフォーマンス最適化: AIを活用して100倍の速度向上を実現した事例
kinocoboy2
0
130
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
650
RubyKaigi NOC 近況 2025
sorah
1
890
AIによるコードレビューで開発体験を向上させよう!
moongift
PRO
0
430
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
KATA
mclloyd
29
14k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Making Projects Easy
brettharned
116
6.2k
Music & Morning Musume
bryan
47
6.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Typedesign – Prime Four
hannesfritz
41
2.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.6k
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