Linuxã«ãŒãã«ã®ä»çµã¿ â ãã¡ã€ã«ãèªããšãã誰ãä»äºãããïŒ
ãã¡ã€ã«ãèªããé¡ãããOSã®äžæ žãž
ãŸãã¯ãèªåã®ã¡ã¢ãèªã¿è¿ã
ã«ãŒãã«ã¯OSã®äžæ žã§ããã¢ããªã®æäœãããŒããŠã§ã¢ãè³æºç®¡çãžã€ãªã圹å²ããå°ããªãã¡ã€ã«ãäœã£ãŠèªãå Žé¢ããèŠãŠã¿ãŸãããã
Python 3ã䜿ãããªããæ°ããç·Žç¿çšãã©ã«ããŒã«read-demo.pyãä¿åããpython read-demo.pyãå®è¡ããŸãããã®ã¹ã¯ãªãããšåãå Žæã«notes-demo.txtãäœãã®ã§ããã®ååã®æ¢åãã¡ã€ã«ããªããã©ã«ããŒã䜿ããŸãã
from pathlib import Path
memo = Path(__file__).with_name("notes-demo.txt")
memo.write_text("ããããè²·ã", encoding="utf-8")
print(memo.read_text(encoding="utf-8"))
åºåã¯ãããããè²·ããã§ããå 容ãå€ããŠä¿åããããäžåºŠå®è¡ãããšãæžãçŽããå 容ã衚瀺ãããŸãã
PythonåŽã¯ãã¡ã€ã«ã®æäœãäŸé ŒããŸããLinuxã§ã¯ããã¡ã€ã«ãéãã»èªãçã®ã·ã¹ãã ã³ãŒã«ãšVFSããã¡ã€ã«ã·ã¹ãã ã®åŠçãžã€ãªãããŸããããŒã¿ããã£ãã·ã¥ã«ããã°ãæ¯åSSDã®èªã¿åºããå¿ èŠã«ãªããšã¯éããŸããã
ãã®Pythonã®äŸèªäœã¯Windowsçã§ãåããŸãããäžã®å³ã¯Linuxã§ã®åœ¹å²ã®èª¬æã§ããPythonã1ååŒãã ãLinuxã®open/readãå¿ ãäœåã«ãªãããšå¯Ÿå¿ä»ããå³ã§ã¯ãããŸããã
ã¢ããªã»çªå£ã»ä¿åå ãåããŠèŠã
| åœ¹å² | ãã®äŸã§èããä»äº |
|---|---|
| ã¢ããªãšã©ã€ãã©ãª | èªã¿ãããã¡ã€ã«ãæåã³ãŒããæå® |
| ã·ã¹ãã ã³ãŒã«ã»VFS | æš©éãéããŠãããã¡ã€ã«ãæ±ããå®è£ ãžã€ãªã |
| ãã¡ã€ã«ã·ã¹ãã ç | ä¿åå å®¹ã®æ±ããšãå¿ èŠãªI/O |
openç³»ã®æäœãæåãããšãã¡ã€ã«èšè¿°åãšããçªå·ãåãåããreadãªã©ã®æäœã§äœ¿ããŸããVFSã¯ç°ãªããã¡ã€ã«ã·ã¹ãã ãžå ±éã®æäœãã€ãªãå±€ã§ãext4ã»XFSã»ãããã¯ãŒã¯ãã¡ã€ã«ã·ã¹ãã çã®å éšããã¹ãŠåãä¿å圢åŒã«ãããã®ã§ã¯ãããŸããã
ããå°ã詳ããïŒã«ãŒãã«ã管çãããã®
CPUã®å®è¡é ãããã»ã¹ãã¹ã¬ãããã¢ãã¬ã¹ç©ºéããã¡ã€ã«ãããã€ã¹ãªã©ã管çããŸããã¢ããªã®èšç®åœä»€ãã¹ãŠãæ¯åã·ã¹ãã ã³ãŒã«ã«ãªãããã§ã¯ãªããOSãžä»äºãé Œãå¢çãšãéåžžã®èšç®ãåããŸãããã
Linuxã®forkã¯åãäœããexecç³»ã¯ãã®ããã»ã¹ã®å®è¡å 容ã眮ãæããŸããã¡ã¢ãªã®ã¢ãã¬ã¹å€æã¯ãã«ãŒãã«ãçšæãã察å¿è¡šãšCPUã®æ©èœãååããŠæ±ããŸããããŒãžãµã€ãºã¯æ§æã«ãã£ãŠéããŸãã
ãã©ã€ããŒã«ã¯çµã¿èŸŒã¿ãã¢ãžã¥ãŒã«çã®åœ¢ããããŸããã¢ãžã¥ãŒã«ã䜿ã£ãŠãããã®ããããããåŠç¿ã®ããã«ããã¿ã«åãå€ãå¿ èŠã¯ãããŸããããŸããã«ãŒãã«ã®å®å®ãããŠãŒã¶ãŒç©ºéABIãšãã«ãŒãã«å éšã®APIã®å®å®æ§ã¯å¥ã§ããã¢ããªãåãæ¡ä»¶ã«ã¯ã©ã€ãã©ãªãCPUãå«ãŸããŸãã
ã«ãŒãã«ãã®ãã®ã®èŠæš¡ã®å€§ããããããŸããã©ã®åœ¹å²ãžäŸé ŒããŠãããããèŠãŸããããã³ãã³ããèŠããæ®µéããããšã©ãŒãé ãã調ã¹ã段éãžã€ãªãããŸãã
èŠãæ¹ã𿬡ã®äžæ©
ãã«ãŒãã«ãã£ãŠåºãŠããããã¢ããªã®äŸé Œãšè³æºãæ±ããOSã®äžæ žããšæãã°ã ãããOKïŒ
Linuxå ¥éã§ãã¡ã€ã«æäœããããã»ã¹ç®¡çã§CPUã®é çªããã¡ã¢ãªç®¡çã§äœæ¥å Žæã®å¯Ÿå¿ã確èªã§ããŸãã
åèè³æ
- Linux kernelïŒVirtual File System â å ±éã®ãã¡ã€ã«æäœãšç°ãªããã¡ã€ã«ã·ã¹ãã å®è£
- Linux man-pagesïŒopen(2) â ãã¡ã€ã«ãéãæäœãšãã¡ã€ã«èšè¿°å
- Linux kernelïŒABI description â å®å®æ§ã®ç°ãªããŠãŒã¶ãŒç©ºéã€ã³ã¿ãŒãã§ãŒã¹
- PythonïŒpathlib â Pathã®ãã¡ã€ã«èªã¿æžããšæåã³ãŒã
- Linux man-pagesïŒfork(2) â åããã»ã¹ãšã³ããŒãªã³ã©ã€ã