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
プロセスの生成 exec編
Search
Satoru Takeuchi
PRO
December 29, 2024
Technology
99
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プロセスの生成 exec編
以下動画のテキストです。
https://youtu.be/0qsIC-lpP8E
Satoru Takeuchi
PRO
December 29, 2024
Transcript
7 slides
プロセスの生成 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
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
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.2k
SREのためのFinOps入門
muziyoshiz
3
1.6k
会社説明資料_最新版
demaecan
0
32k
市販IoT機器や自作IoT機器とHomeAssistantを駆使して家の電気代をできる限り見える化する方法の考案
harutiro
0
240
速くなるほど、深く考える AI時代のQAに学ぶ
kobayashiyorimitsu
0
220
Agent Harnessはどう作る?事例から学ぶAI Agentの設計思想
sergicalsix
0
320
常時稼働エージェントの作り方(Claude公式ブログを資料化)
minorun365
PRO
11
18k
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
270
Intro to Kiro (One agent, every surface) | Kiro: Zero to Hero 01
inariku
PRO
2
140
高品質と高スピードを支える品質のシフトレフトのアプローチ
goyoki
4
1.3k
JAWSコミュニティに 参加して1年経った結果
ssakita
0
150
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
430
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
3
950
The Pragmatic Product Professional
lauravandoore
37
7.5k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.3k
Making the Leap to Tech Lead
cromwellryan
135
10k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
590
Darren the Foodie - Storyboard
khoart
PRO
5
4.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
380
Into the Great Unknown - MozCon
thekraken
41
2.8k
Statistics for Hackers
jakevdp
799
230k
Being A Developer After 40
akosma
PRO
92
590k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560