UNIX 6th code reading - ã¹ã¯ããã³ã°
ã¯ããã«
ä»åã¯14ç« ã®ãããã°ã©ã ã¹ã¯ããã³ã°ããèªã¿è§£ãã¦ãã¾ãã
ã¹ã¯ããã³ã°å¦çã¨ã¯
é«éã§ããããé«ä¾¡ã»å°å®¹éã§ããç©çã¡ã¤ã³ã¡ã¢ãª(ã³ã¢ã¡ã¢ãª)ãå¹çãã使ç¨ããããã«ããã°ã©ã ã¹ã¯ããã³ã°ã¨ããæ©æ§ãããã¾ãã
ã³ã¢ã¡ã¢ãªã足ããªããªã£ãããå¯ã¦ããã使ã£ã¦ããªãããã»ã¹ã®ãã¼ã¿ã»ã°ã¡ã³ããããã£ã¹ã¯ãªã©ä½éã ã大容éã®ã¹ã¯ããé åã«å¾ é¿ãã¾ã(ã¹ã¯ããã¢ã¦ã)ã
ã¹ã¯ããã¢ã¦ããããã¼ã¿ãå¿ è¦ã«ãªã£ãããã¹ã¯ããé åããã³ã¢ã¡ã¢ãªã«æ»ãã¾ã(ã¹ã¯ããã¤ã³)ã
çµµã«ããã¨ãããªæãã§ãã
ã¹ã¯ããã³ã°ã®åä½ã¯ãã¼ã¿ã»ã°ã¡ã³ããããã¹ãã»ã°ã¡ã³ãåä½ã®ããã§ãããªã®ã§ããã¼ã¸ã³ã°ã¨éããã³ã¢ã¡ã¢ãªä»¥ä¸ã«å¤§ããªããã°ã©ã ã¯å®è¡ã§ããªãã®ã§ã¯ãªããã¨æãã¾ãã(ã¹ã¯ããã³ã°ã¨ãã¼ã¸ã³ã°ã¯æ¯è¼ãããã®ã§ã¯ãªãï¼)
å ±æããã¹ãã»ã°ã¡ã³ãã¨ã¯
ããã»ã¹ãä¿æãã¦ããã»ã°ã¡ã³ãã®ãã¡ãããã¹ãã»ã°ã¡ã³ãã¯ããã°ã©ã ã³ã¼ããå®æ°ãªã©ãããã°ã©ã å®è¡ä¸ã§ãå¤æ´ããããã¨ããªããã¼ã¿ãå ¥ã£ã¦ãã¾ãã
ä¸å¤ãªãã¼ã¿ãªã®ã§ãè¤æ°ã®ããã»ã¹ã§å ±æã§ãã¾ããå ±æãããã¨ã§ã¡ã¢ãªã®ä½¿ç¨å¹çãä¸ããã¾ãã
ããã»ã¹ã使ç¨ããããã¹ãã»ã°ã¡ã³ãã¯procæ§é ä½ã®p_textpã§æå®ãã¾ãã
çµµã«ããã¨ãããªæãã§ãã
å ±æããã¹ãã»ã°ã¡ã³ãã管çããããã«textã¨ããæ§é 対ã®é åã使ç¨ãã¦ãã¾ãããã®é åã¯å¸¸ã«ã³ã¢ã¡ã¢ãªã«åå¨ãã¦ãããããããã¹ãã»ã°ã¡ã³ãã®æ¢ç´¢ãªã©ã¯é«éã§è¡ãã¾ãã
textã«ã¯ããã¹ãã»ã°ã¡ã³ããããã¤ã®ããã»ã¹ããåç §ããã¦ãããã表ãã«ã¦ã³ããæã£ã¦ãã¾ãã
text.x_ccountã¯ãã³ã¢ã«åå¨ããããã»ã¹ããã®ããã¹ãã»ã°ã¡ã³ããåç §ãã¦ããããã»ã¹æ°ã表ãã¾ãããã®æ°ãã¼ãã«ãªãã¨ãã®ããã¹ãã»ã°ã¡ã³ããã³ã¢ãã解æ¾ããã¾ãã
text.x_countã¯ã³ã¢ã ãã§ãªãã¹ã¯ããã«åå¨ããããã»ã¹ãå«ãã¦ããã®ããã¹ãã»ã°ã¡ã³ããåç §ãã¦ããããã»ã¹æ°ã表ãã¾ãããã®æ°ãã¼ãã«ãªãã¨ãã®ããã¹ãã»ã°ã¡ã³ããã¹ã¯ããé åãã解æ¾ããã¾ãã
sched
sched( )ã¯ããã»ã¹ã¹ã¯ããã³ã°ãè¡ãã¾ãã
ã¹ã¯ããã¤ã³å¯¾è±¡ããã»ã¹ãæ¢ã
- 1958 : ã¯ããã¯å²ãè¾¼ã¿ã«ãã£ã¦p_time(å¾è¿°)ãå ç®ãããªãããã«ãããã»ã¹åªå 度ãï¼ã«ä¸ãã
- 1959-1970 : å®è¡å¯è½ã§(SRUN), ã¹ã¯ããã¢ã¦ãããã¦ãã¦(SLOAD = 0)ããã»ã¹ã®ä¸ã§ãä¸çªé·ãã¹ã¯ããé åã«ããããã»ã¹(p_time max)ãæ¢ããp_timeã¯ã¹ã¯ããã¤ã³ãã¹ã¯ããã¢ã¦ããããã¨ãã«ãªã»ãããããã¯ããã¯å²ãè¾¼ã¿ã§1ç§æ¯ã«ã«ã¦ã³ããããããã£ã¦ãã³ã¢ããããã¯ãã¹ã¯ããé åã«åå¨ããæéã表ãããã該å½ããã»ã¹ãè¦ã¤ãããªãã£ãããrunoutãã¤ã³ã¯ãªã¡ã³ããã¦å¯ããrunoutã¯å®è¡å¯è½ãªããã»ã¹ãã¹ã¯ããé åã«åå¨ããªããã¨ã示ããã©ã°ãã¤ã¾ããã¹ã¯ããã¤ã³ããããã¨ãã§ããããã»ã¹ãåå¨ããªããã¨ã表ãã
ã³ã¢ã¡ã¢ãªã®ç©ºãé åã確ä¿ãã
- 1979-1981 : ã¹ã¯ããã¤ã³ããããã»ã¹ãä¿æãã¦ããããã¹ãã»ã°ã¡ã³ããã³ã¢ã«ãªãå ´åãã³ã¢ã«ããã¹ãã»ã°ã¡ã³ããã³ãã¼ããããã«ããã»ã¹ã®ãµã¤ãºããã®åå¢ãã
- 1982-1983 : ã¹ã¯ããã¤ã³ããããã»ã¹ã®ããã«ã³ã¢ã¡ã¢ãªã®é åã確ä¿ãããæåãããfound2(2031)ã¸é£ã¶
ã³ã¢é åã«ç©ºãããªãã£ãå ´åãã³ã¢ã«ããããã»ã¹ãã¹ã¯ããã¢ã¦ããã
ã¾ãã¯ãåªå 度ã¼ã以ä¸ã§å¯ã¦ããããã¬ã¼ã¹ã®ã¹ãããç¶æ ã«ããããã»ã¹ãæ¢ãã¾ãã
sleep( )ã§å¯ãã¨ãã®åªå 度ã¯ã¹ã¯ããã¢ã¦ããããããã«ãå½±é¿ãã¦ããããã§ãã
- 1991-1994 : ã³ã¢ã«åå¨ã(SLOAD)ãã¹ã¯ããã³ã°ä¸ã§ã¯ãªã(!SLOCK)ãã·ã¹ãã ããã»ã¹(!SSYS, proc#0ã®ãã¨?)ã§ã¯ãªãããã»ã¹ã§ãåªå 度ã¼ã以ä¸ã§å¯ã¦ãã(SWAIT)ããã¬ã¼ã¹ã®ã¹ãããç¶æ (SSTOP)ã§ãããã®ãæ¢ããprocé åã®å é ããæ¢ãã¦ããã®ã§ãprocé åã®åæ¹ã«ããã»ã©ã¹ã¯ããã¢ã¦ãããããããè¦ã¤ãã£ããfound1(2021)ã¸
該å½ããã»ã¹ãè¦ã¤ãããªãã£ãå ´åãåªå
åº¦è² ã§å¯ã¦ãããå®è¡å¯è½ãªããã»ã¹ã®ãã¡ãæãã³ã¢ã«åå¨ããæéãé·ãããã»ã¹ãæ¢ãã¾ãã
ãã ããã¹ã¯ããã¤ã³ãããã¨ãã¦ããããã»ã¹ããã¹ã¯ããã¢ã¦ãããã¦ãã3ç§ç«ã£ã¦ããªãå ´åããããã¯ãã¹ã¯ããã¢ã¦ããããã¨ãã¦ããããã»ã¹ãã¹ã¯ããã¤ã³ããã¦ããããããã¯ãçæããã¦ãã2ç§ãã£ã¦ããªãå ´åã¯å¯ã¾ããããã¯ãé度ãªã¹ã¯ããã³ã°ã«ããå¦çå¹çã®ä½ä¸ãé²ãã§ããã®ã§ã¯ãªããã¨æãã¾ãã
- 2003-2004 : ã¹ã¯ããã¤ã³ãããã¨ãã¦ããããã»ã¹ããã¹ã¯ããã¢ã¦ãããã¦ãã3ç§ç«ã£ã¦ããªãå ´åãsloop(1953)ã«æ»ã£ã¦ãruninãã¤ã³ã¯ãªã¡ã³ãããå¯ããruninã¯ãã¹ã¯ããã¢ã¦ãããã¦ããããã»ã¹ã®ä¸ã«å®è¡å¯è½ç¶æ ã®ãã®ãåå¨ããããã¹ã¯ããã¢ã¦ãããã¦ãã3ç§ç«ã£ã¦ããªãã¨ããç¶æ ããããã¯ãã¹ã¯ããã¢ã¦ããããã¨ãã¦ããããã»ã¹ãã¹ã¯ããã¤ã³ããããã¯ãçæããã¦ãã2ç§ãã£ã¦ããªãç¶æ ã表ã
- 2006-2015 : ã³ã¢ã«åå¨ãã¦ãã¦(SLOAD), ã¹ã¯ããã³ã°ä¸ã§ã¯ãªã(!SLOCK), ã·ã¹ãã ããã»ã¹ã§ã¯ãªã(!SSYS)ããã»ã¹ã®ä¸ã§å®è¡å¯è½ç¶æ (SRUN)ãåªå åº¦è² ã§å¯ã¦ãã(SSLEEP)ãã®ã®ãã¡ãä¸çªé·ãã³ã¢ã«åå¨ãã¦ããããã»ã¹ãé¸ã¶ããã ãããã®ããã»ã¹ãã³ã¢ã«å ¥ã£ã¦ãã2ç§ç«ã£ã¦ããªãã£ããsloopã«æ»ã£ã¦å¯ã
ã¹ã¯ããã¢ã¦ãå¦ç
- 2022 : åªå 度ã0ã«æ»ãããã®æç¹ã§ã¹ã¯ããã¢ã¦ã対象ã®ã·ããããrpã«ä¿æããã¦ãã
- 2023 : ã¹ã¯ããã¢ã¦ãããããã»ã¹ã®SLOAD(ã³ã¢ã«ãã)ãã©ã°ããªãã«ãã
- 2024 : xswap( )(4638)ãå¼ã³åºãã¦ã¹ã¯ããã¢ã¦ãããã第äºå¼æ°ã1ãªã®ã§ãããã»ã¹ã¯ã³ã¢ãã解æ¾ããã
- 2025 : loopã¸æ»ã£ã¦ã¹ã¯ããã¤ã³å¯¾è±¡ã®ããã»ã¹ãé¸ã³ç´ããã¾ã ã³ã¢ã®é åã足ããªããã¨ãããããï¼
ã¹ã¯ããã¤ã³å¦ç(ããã¹ãã»ã°ã¡ã³ã)
- 2032-2033 : p1ã«ã¯ã¹ã¯ããã¤ã³ããããã»ã¹ãä¿æããã¦ããããã®ããã»ã¹ãå
±æããã¹ãã»ã°ã¡ã³ããä¿æãã¦ãã¦ããã¤ããã®å
±æããã¹ãã»ã°ã¡ã³ããã³ã¢ã«åå¨ãã¦ããªãã£ãããã¤ã¾ããã¹ã¯ããé åã«ããåå¨ããªãã£ãã
- 2034-2035 : swap( )(5196)ãå¼ã³åºãã¦ããã®ããã¹ãã»ã°ã¡ã³ããã³ã¢ã«ã¹ã¯ããã¤ã³ãããaã¯ããã»ã¹åºæé åã®å é ã¢ãã¬ã¹ãããã¹ãã»ã°ã¡ã³ãã¯ããã»ã¹åºæé åã®å é ã«ãã¼ããããã失æãããpanic
- 2036-2037 ; ãã®ããã¹ãã»ã°ã¡ã³ãã«ã³ã¢ã®ã¢ãã¬ã¹ãè¨å®ããããã»ã¹åºæé åã®ã¢ãã¬ã¹ãããã¹ãã»ã°ã¡ã³ãåå ç®ãã
- 2038 : ãã®ããã¹ãã»ã°ã¡ã³ãã®ãã³ã¢ã«åå¨ããã¦ããããã»ã¹ããã®åç §æ°ããã¤ã³ã¯ãªã¡ã³ããã
ã¹ã¯ããã¤ã³å¦ç(ãã¼ã¿ã»ã°ã¡ã³ã)
- 2042-2043 : ã¹ã¯ããã¤ã³ããããã»ã¹(ã®ãã¼ã¿ã»ã°ã¡ã³ã)ãswap( )ãå¼ã¶ãã¨ã§ã¹ã¯ããã¤ã³ã失æãããpanic
- 2044 : ã¹ã¯ããé åã®ããã»ã¹(ã®ãã¼ã¿ã»ã°ã¡ã³ã)ã解æ¾
- 2045-2048 : ã¹ã¯ããã¤ã³ããããã»ã¹ã®ãã©ã¡ã¼ã¿ãè¨å®ãã¦loopã¸æ»ã
xswap
xswapã¯å¼æ°ã§æ¸¡ãããããã»ã¹ãã¹ã¯ããã¢ã¦ããããå®éã«ã¹ã¯ããã¢ã¦ãå¦çãè¡ãã®ã¯å é¨ã§å¼ã°ãã¦ããswap( )ã§ãããxswap( )ã¯swap( )ã®ã©ããã¼ã¨è¨ãããããããªãã
- 4373-4374 : 第ä¸å¼æ°ã®osã0ãªãã°ãosã«ã¯ã¹ã¯ããã¢ã¦ãããããã»ã¹ã®ãµã¤ãºãå ¥ãããosã¯old sizeã®ãã¨ããã
- 4375-4377 : ã¹ã¯ããé åãmallocã§åå¾ã失æãããpanic
- 4378 : xccdec( )ãå¼ã³åºãã¦ãã¹ã¯ããã¢ã¦ãããããã»ã¹ãåç §ãã¦ããããã¹ãã»ã°ã¡ã³ãã®ãã³ã¢ã«åå¨ããããã»ã¹ããåç §ããã¦ããæ°ãããã¯ãªã¡ã³ããã
- 4379 : ã¹ã¯ããã¢ã¦ãããããã»ã¹ã®SLOCK(ã¹ã¯ããã³ã°å¦çä¸ã表ã)ãã©ã°ãç«ã¦ããsched( )(ãªã©ï¼)ã§å½±é¿ãã¦ãã
- 4380-4381 : swap( )ãå¼ã³åºãã¦ã¹ã¯ããã¢ã¦ãå¦çã失æãããã¨ã©ã¼
- 4382-4383 : 第äºå¼æ°ffã0以ä¸ã§ãªããã°ãã¹ã¯ããã¢ã¦ãããããã»ã¹ãã³ã¢ãã解æ¾ãããã³ã¡ã³ãã«ããã¨ãnewproc( )æã¯ffã0ã«ãªã£ã¦ããããã
- 4384-4386 : ã¹ã¯ããã¢ã¦ãããããã»ã¹ã®ã¢ãã¬ã¹ãã¹ã¯ããé åã§ç¢ºä¿ããã¢ãã¬ã¹ã«å·®ãæ¿ãããSLOAD, SLOCKãã©ã°ããªãã«ããã¹ã¯ããé åã«åå¨ãã¦ããæéã表ãp_timeã0ã«ãã
- 4387-4390 : runout(ã¹ã¯ããã¤ã³ãããããããã»ã¹ãåå¨ããªã)ãã©ã°ãç«ã£ã¦ããããrunoutã§å¯ã¦ããããã»ã¹ãèµ·ãã
xalloc
xallocã¯å ±æããã¹ãã»ã°ã¡ã³ããããã»ã¹ã«å²ãå½ã¦ã¾ãã
u.u_arg[1]ã«ãã¤ãåä½ã§ã®ããã¹ãã»ã°ã¡ã³ãã®ãµã¤ãºãå ¥ã£ã¦ãã¾ãã
texté åãã空ãã¨ã³ããªãæ¢ããããã¹ãã»ã°ã¡ã³ããä»ã®ããã»ã¹ã«ããæ¢ã«ä½¿ããã¦ãããããããæãããã«ãã
- 4439 : ããã¹ãã»ã°ã¡ã³ãã®ãµã¤ãºã0ãªãã°return
- 4440-4450 : texté åãããx_iptrãNULLã®ãã®ãæ¢ããæ¢ã«å¼æ°ã§æ¸¡ãããããã¹ãã»ã°ã¡ã³ã(ã®inode)ãå¥ã®ããã»ã¹ã«ãã£ã¦ä½¿ããã¦ãããããã®ããã¹ãã»ã°ã¡ã³ãã®åç §ã«ã¦ã³ãæ°ãã¤ã³ã¯ãªã¡ã³ãããã«ã¬ã³ãããã»ã¹ãããã®ããã¹ãã»ã°ã¡ã³ããæãããã«ããout(4474)ã¸é£ã¶
ããã¹ãã»ã°ã¡ã³ããæ°è¦ã«ä½æãã¹ã¯ããé åã«ã»ãããã
- 4451 : texté åã«ç©ºãã¨ã³ããªããªããã°panic
- 4452-4456 : ããã¹ãã»ã°ã¡ã³ãã®ãã©ã¡ã¼ã¿ãè¨å®ãããã¹ãã»ã°ã¡ã³ãã®åç §ã«ã¦ã³ãæ°ã1ã«ããã³ã¢ã«åå¨ããããã»ã¹ããã®åç §ã«ã¦ã³ãæ°ã0ã«ãããããã¹ãã»ã°ã¡ã³ãããå¼æ°ã§æ¸¡ãããinodeãæãããã«ãããããã¹ãã»ã°ã¡ã³ãã®ãµã¤ãºãè¨ç®ãã
- 4457-4458 : ããã¹ãã»ã°ã¡ã³ãã®ããã«ã¹ã¯ããé åã確ä¿ããã失æãããpanic
- 4459-4460 : expand( ), estabur( )ã使ã£ã¦ãæ°ãã«ä½æããããã¹ãã»ã°ã¡ã³ããåæ ããã¡ã¢ãªãããã³ã°ãè¡ããããã«ãã
- 4461-4464 : ããã¹ãã»ã°ã¡ã³ããã¢ãã¬ã¹0ã«ãã¼ããã
- 4466 : ã«ã¬ã³ãããã»ã¹ã®SLOCKãã©ã°ãç«ã¦ã
- 4467 : swap( )ãå¼ã³åºãã¦ãã«ã¬ã³ãããã»ã¹ã®ãã¼ã¿ã»ã°ã¡ã³ããã¹ã¯ããã¢ã¦ããããä½ã®ããï¼
- 4468 : SLOCKãã©ã°ã解é¤
- 4469 : ã«ã¬ã³ãããã»ã¹ãæ°è¦ã«ä½æããããã¹ããæãããã«ãã
- 4470-4472 : ããã¹ãã»ã°ã¡ã³ãã®inode?ã®ãã©ã¡ã¼ã¿è¨å®ãITEXTãã©ã°ããã¦ã¦ãåç §ã«ã¦ã³ããã¤ã³ã¯ãªã¡ã³ã
- 4473 : expand( )ã使ã£ã¦ããã¼ã¿ã»ã°ã¡ã³ããµã¤ãºãæå°å(ãªãã®ããï¼)
ããã¹ãã»ã°ã¡ã³ããã³ã¢ã«ããããã»ã¹ããåç §ããã¦ããªãã£ãã
Lionsæ¬ã«ããã¨ããã¼ã¿ã»ã°ã¡ã³ãããå ã«ããã¹ãã»ã°ã¡ã³ããã¹ã¯ããã¤ã³ããå¿ è¦ãããããã§ãããã®ãããããã®å¦çãå¿ è¦ã ããã§ãã(ã¾ã ãã¾ãããç解ã§ãã¦ãã¾ãã)
- 4475 : ããã¹ãã»ã°ã¡ã³ããã³ã¢ã«ããããã»ã¹ããåç
§ããã¦ããªãã£ãã
- 4476-4477 : rsav, ssavã«r5, r6ãä¿åããªãã®ããï¼
- 4478 : ã«ã¬ã³ãããã»ã¹ãã¹ã¯ããã¢ã¦ããã³ã¢ãã解æ¾
- 4479 : ã«ã¬ã³ãããã»ã¹ã®SSWAPãã©ã°(ã¹ã¯ããã¢ã¦ããããç¶æ ã表ãï¼)ãç«ã¦ã
- 4480 : swtch( )ãå¼ã³åºãã¦å®è¡ããã»ã¹ãåãæ¿ãã
- 4483 : ããã¹ãã»ã°ã¡ã³ãã®ãã³ã¢ã«åå¨ããããã»ã¹ããã®åç §æ°ãã¤ã³ã¯ãªã¡ã³ããã
xfree
xfree( )ã¯ã«ã¬ã³ãããã»ã¹ã®å ±æããã¹ãã»ã°ã¡ã³ãã解æ¾ãã¾ãã
- 4401 : ã«ã¬ã³ãããã»ã¹ã®ããã¹ãã»ã°ã¡ã³ããNULLã§ã¯ãªãã£ãããNULLãªãããreturn
- 4402 : ã«ã¬ã³ãããã»ã¹ã®ããã¹ãã»ã°ã¡ã³ããNULLãæãããã«
- 4403 : xccdec( )ãå®è¡ãããã®ããã¹ãã»ã°ã¡ã³ãã®ã³ã¢ã«åå¨ãã¦ããããã»ã¹ããã®åç §ã«ã¦ã³ãæ°ããã¯ãªã¡ã³ããã
- 4404 : ãã®ããã¹ãã»ã°ã¡ã³ãã®åç
§ã«ã¦ã³ãæ°ããã¯ãªã¡ã³ãããããã0ã«ãªã£ãã
- 4405-4412 : ããã¹ãã»ã°ã¡ã³ãã®inode?ã®ã¹ãã£ããã¼ããã(Lionsæ¬375Påç §)ãç«ã£ã¦ããªããã°ããã®ããã¹ãã»ã°ã¡ã³ããã¹ã¯ããããã解æ¾ãããinodeã®ITEXTãã©ã°ããªãã«ãã¦ãiput( )ãå¼ã³åºãinodeã®åç §ã«ã¦ã³ãæ°ããã¯ãªã¡ã³ããã
Lionsæ¬ã«ããã¨ã¹ãã£ããã¼ããã(ISVTX)ãã©ã°ãç«ã£ã¦ããã¨ããã®ããã¹ãã»ã°ã¡ã³ããåç
§ããããã»ã¹ãåå¨ããªããªã£ã¦ããã¹ã¯ããé åãã解æ¾ããªãããã§ããé »ç¹ã«åç
§ããããããªããã¹ãã»ã°ã¡ã³ãã«ãåä½æã®ã³ã¹ããæããããã«ã»ãããããã®ã§ã¯ãªãã§ããããã
çµããã«
ã¹ã¯ããã³ã°å¦çãä¸éãè¦ã¦ãã¾ãããèå¿ã®ã¹ã¯ããå¦çä¸æ ¸ã§ããswap( )ã次ã®ç« ã«ãªããªãã¨åºã¦ããªãã®ã§ãå°ãããããæãæ®ã£ã¦ãã¾ãã
ããã¹ãã»ã°ã¡ã³ãã®çæãã解æ¾ã¾ã§ã®ããã¼ãçµµã«ããã¨ç解ãæ·±ã¾ãã®ã§ã¯ãªããã¨æã£ã¦ãã¾ããæéããã£ããæãã¾ãã
ç´°ããé¨åã®ç解ãèå¯ã追ãã¤ãã¦ããªãç®æãããã¾ãããããã¯Lions本読書会#6ã§è£ããã¨æã£ã¦ãã¾ãã
次åã®ã¨ã³ããªã§ã¯15ç« ãèªã¿è§£ãã¦ããã¾ãã