Slide 1

Slide 1 text

1ZUIPOͰֶͿ 6OJYϓϩηεͷجૅ 1Z'VLVPLB

Slide 2

Slide 2 text

ࣗݾ঺հ ͭΔͨ ʢ!UTVSVCFFʣ ΤϯδχΞྺɿ ೥ͪΐ͍ େֶͷઐ߈͸Խֶ લ৬͸ফ๷࢜ झຯ͸ےτϨ ʢಛʹϕϯνϓϨεʣ

Slide 3

Slide 3 text

ࠓճͷ໨త Θ͔ͬͨΑ͏ͰΘ͔Βͳ͍ʮϓϩηεʯʹ͍ͭͯ 1ZUIPOΛ༻͍ͯཧղΛਂΊΔ͜ͱɻ ͜ͷຊΛࢀߟʹ ͠·ͨ͠ɻ ௒Φεεϝʂ ಈ࡞؀ڥɿ6CVOUV ʢ7JSUVBM#PY্ʹߏஙʣ ࢀߟจݙ

Slide 4

Slide 4 text

໨࣍ l ϓϩηεͱ͸ʁ l ϓϩηεͱ͸ʁ l ϓϩηεʹ͸*%͕͋Δ l ϓϩηεʹ͸਌͕͍Δ l ϓϩηεͷϦιʔεΛݟͯΈΑ͏ʂ l ϓϩηεΛ࡞Δ l ϓϩηε͸ࢠϓϩηεΛ࡞ΕΔ l GPSLͷڍಈΛ௥ͬͯΈΑ͏ʂ l ϓϩηεؒ௨৴ l ϓϩηεؒ௨৴ͱ͸ʁ l ύΠϓʹΑΔ௨৴ l ·ͱΊ

Slide 5

Slide 5 text

ϓϩηεͱ͸ʁ

Slide 6

Slide 6 text

ϓϩάϥϜͷ࣮ߦத ͷ࢟Ͱ͋Δɻ ϓϩηεͱ͸ʁ

Slide 7

Slide 7 text

ϓϩηεʹ͸*%͕͋Δ $ ps u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ubuntu 2005 0.0 0.5 21392 5392 pts/0 Ss+ 02:21 0:00 –bash ubuntu 2212 0.1 0.5 21388 5260 pts/1 Ss 06:18 0:00 –bash ubuntu 2228 0.0 0.3 36084 3348 pts/1 R+ 06:18 0:00 ps u 1ZUIPOͰ͸ɾɾ $ python >>> import os >>> os.getpid() 1229 QTίϚϯυ 04ͷػೳΛར༻͢ΔͨΊͷʮPTʯͱ͍͏ඪ४ϥΠϒϥϦ͕͋Δɻ 1*%͸୯ʹ࿈൪ʹͳ͍ͬͯΔ਺஋ͷϥϕϧͰ͋Δɻ

Slide 8

Slide 8 text

ϓϩηεʹ͸਌͕͍Δ QTUSFFίϚϯυ $ pstree systemd─┬─VBoxService─┬─{automount} │ ├─{control} │ ├─{cpuhotplug} │ ├─{memballoon} │ ├─{timesync} │ ├─{vminfo} │ └─{vmstats} ├─polkitd─┬─{gdbus} │ └─{gmain} ├─snapd───6*[{snapd}] ├─sshd─┬─sshd───sshd───bash │ └─sshd───sshd───bash───pstree ├─systemd───(sd-pam) ├─systemd-journal ˞Ұ෦লུ ϓϩηεͷ਌ࢠؔ܎ΛπϦʔදࣔͰ͖Δɻ QTUSFF͸CBTIͷࢠ

Slide 9

Slide 9 text

ϓϩηεʹ͸਌͕͍Δ ਌ϓϩηεͷ*%Λऔಘ͢Δ ͍͍ͨͯͷ৔߹ɺ਌ϓϩηε͸ͦͷϓϩηεΛىಈͨ͠ ϓϩηεͱͳΔɻ $ python >>> import os >>> os.getppid() 1165 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.9 0.5 37916 5976 ? Ss 06:43 0:08 /sbin/init ͢΂ͯͷى఺͸1*%͕ͷJOJUϓϩηε ʢγεςϜىಈ࣌ʹ࠷ॳʹ্ཱ͕ͪΔϓϩηεʣ ਌ΛͨͲ͍ͬͯ͘ͱɾɾ

Slide 10

Slide 10 text

ϓϩηεͷϦιʔεΛݟͯΈΑ͏ʂ l TUBUVT l DXE l FOWJSPO l FYF l UBTL l NBQT ͳͲ QSPDϓϩηε*%

Slide 11

Slide 11 text

ϓϩηεΛ࡞Δ

Slide 12

Slide 12 text

ϓϩηε͸ࢠϓϩηεΛ࡞ΕΔ l GPSL γεςϜίʔϧʹΑͬͯɺ࣮ߦதͷϓϩηε͔Β ৽͍͠ϓϩηεΛੜ੒Ͱ͖Δɻ l GPSL ΛݺͿଆͷϓϩηε͸ʮ਌ϓϩηεʯɺੜ੒͞Ε Δϓϩηε͸ʮࢠϓϩηεʯͱͳΔɻ l ࢠϓϩηε͸ɺ਌ϓϩηεͰ࢖ΘΕ͍ͯΔ͢΂ͯͷϝϞ Ϧͷίϐʔͱɺ਌ϓϩηε͕։͍͍ͯΔϑΝΠϧσΟε ΫϦϓλΛҾ͖ܧ͙ɻ

Slide 13

Slide 13 text

GPSLͷڍಈΛ௥ͬͯΈΑ͏ import os if os.fork(): print("Here in the if block.") else: print("Here in the else block.") $ python fork.py Here in the if block. Here in the else block. ࣮ߦ JG۟΋FMTF۟΋࣮ߦ͞Ε͍ͯΔɻͳʹ͕ى͖ͯΔʁ GPSL͢ΔͱԿ͕ى͖Δͷ͔ʁ fork.py

Slide 14

Slide 14 text

GPSLͷڍಈΛ௥ͬͯΈΑ͏ import os print("---- before fork ----") print("pid: {0}".format(os.getpid())) if os.fork(): print("----- if block ------") print("pid: {0}".format(os.getpid())) else: print("---- else block -----") print("pid: {0}".format(os.getpid())) $ python fork.py ---- before fork ---- pid: 1547 ----- if block ------ pid: 1547 ---- else block ----- pid: 1548 ࣮ߦ JG͕۟਌ϓϩηεɺ FMTF͕۟ࢠϓϩηε ʹΑ࣮ͬͯߦ͞Ε͍ͯΔɻ ϓϩηε*%͕Ͳ͏ͳ͍ͬͯΔ͔ௐ΂Δ fork.py

Slide 15

Slide 15 text

GPSLͷڍಈΛ௥ͬͯΈΑ͏ import os ret = os.fork() if ret: print("----- if block ------") print("return value: {0}".format(ret)) else: print("---- else block -----") print("return value: {0}".format(ret)) $ python fork.py ----- if block ------ return value: 1548 ---- else block ----- return value: 0 ࣮ߦ ਌ϓϩηεଆʹ͸ʮੜ੒ͨ͠ࢠϓϩηεͷ1*%ʯΛฦ͠ɺ ࢠϓϩηεଆʹ͸ʮʯΛฦ͢ɻ GPSLͷฦΓ஋͕Ͳ͏ͳ͍ͬͯΔ͔ௐ΂Δ fork.py

Slide 16

Slide 16 text

ϓϩηεؒ௨৴

Slide 17

Slide 17 text

ϓϩηεؒ௨৴ͱ͸ʁ ϓϩηεؒ௨৴ʢ*1$*OUFS1SPDFTT$PNNVOJDBUJPOʣͱ͸ɺ ෳ਺ͷϓϩηεؒͰσʔλΛ΍ΓͱΓ͢ΔͨΊͷ࢓૊ΈͰ͋Δɻ *1$ͷख๏͸༷ʑ ɾڞ༗ϝϞϦ ɾγάφϧ ɾύΠϓ ɾιέοτ ɾηϚϑΥ ɾϝοηʔδύογϯά ͳͲ

Slide 18

Slide 18 text

ϓϩηεؒ௨৴ͱ͸ʁ ϓϩηεؒ௨৴ʢ*1$*OUFS1SPDFTT$PNNVOJDBUJPOʣͱ͸ɺ ෳ਺ͷϓϩηεؒͰσʔλΛ΍ΓͱΓ͢ΔͨΊͷ࢓૊ΈͰ͋Δɻ *1$ͷख๏͸༷ʑ ɾڞ༗ϝϞϦ ɾγάφϧ ɾύΠϓ ɾιέοτ ɾηϚϑΥ ɾϝοηʔδύογϯά ͳͲ ࠓ೔͸ίϨʂ

Slide 19

Slide 19 text

ύΠϓʹΑΔ௨৴ ύΠϓ͸਌ࢠؔ܎ʹ͋Δϓϩηεؒͷ୯ํ޲ͷ௨৴ Ϣʔβۭؒ Χʔωϧۭؒ ϑΝΠϧσΟεΫϦϓλ ϑΝΠϧσΟεΫϦϓλ ਌ϓϩηε ࢠϓϩηε σΟεϓϨΠ ΩʔϘʔυ ύΠϓ ୺຤ ࢀߟɿIUUQXXXDPJOTUTVLVCBBDKQdZBTDPJOTTZTQSP GPSL

Slide 20

Slide 20 text

ύΠϓʹΑΔ௨৴ import os reader, writer = os.pipe() if os.fork(): os.close(reader) write_pipe = os.fdopen(writer, 'w') write_pipe.write('Hello child!') write_pipe.close() else: os.close(writer) read_pipe = os.fdopen(reader, 'r') message= read_pipe.readline() read_pipe.close() print(message) pipe.py $ python pipe.py Hello child! ࣮ߦ ਌ϓϩηε ࢠϓϩηε

Slide 21

Slide 21 text

·ͱΊ ϓϩηε͸ɺ*%͕͋ͬͯɺ਌͕͍ͯɺࢠΛ࡞Εͯɺ ௨৴͕Ͱ͖Δɻ ͦͯ͠ɺͦͷ༷ࢠΛ1ZUIPO͔Β֬ೝͰ͖Δɻ ࠓճ࿩ͨ͜͠ͱҎ֎ʹ΋͍Ζ͍Ζಛ௃͕͋ΔͷͰɺ ͦΕ͸·ͨ࣍ճʂ ʻྫʼ ɾݽࣇϓϩηε ɾκϯϏϓϩηε ɾσʔϞϯϓϩηε ɾιέοτ௨৴ ɾϚϧνϓϩηεॲཧ

Slide 22

Slide 22 text

͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ