Windowsã¯ãªãœå‹•ãã®ã‹
目次
概è¦
2002å¹´ã€WindowsXPç™ºå£²å¾Œã®æ›¸ç±ã€‚
「10年後も通用ã™ã‚‹åŸºæœ¬ã‚’身ã«ã¤ã‘よã†ã€ã®ã‚³ãƒ³ã‚»ãƒ—トã§å‡ºç‰ˆã•れãŸã€Œãªãœï½žã€ã‚·ãƒªãƒ¼ã‚º2作目。
CPUã®ã‚¢ãƒ¼ã‚テクãƒãƒ£ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã«å¯¾ã™ã‚‹ãƒ¡ãƒ¢ãƒªç®¡ç†ã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ç®¡ç†ã€ãƒ‡ãƒã‚¤ã‚¹ãƒžãƒãƒ¼ã‚¸ãƒ£ã€ãƒ—ãƒã‚»ã‚¹ç®¡ç†ç‰ã€10年経ã£ãŸä»Šã§ã‚‚有用ãªçŸ¥è˜ã‚’å¦ã¹ã¾ã™ã€‚
åˆå¿ƒè€…å‘ã‘を謳ã£ã¦ã¾ã™ãŒåˆ†ã‹ã‚Šã‚„ã™ã書ã„ã¦ã‚ã‚‹ã‚‚ã®ã®å分深ã„ã§ã™ã€‚
åŸºæœ¬æƒ…å ±æŠ€è¡“è€…è³‡æ ¼ç‰ã§å‡ºã¦ãる仮想記憶ç‰ã®æŠ€è¡“ã«ã¤ã„ã¦ã€
「ã“れを勉強ã—ã¦ä½•ã«ãªã‚‹ã‚“ã ?ã€
ã¨ã„ã†ç–‘å•ãŒã“ã®æœ¬ã‚’èªã‚“ã§ä»Šæ›´è§£æ¶ˆã•れã¾ã—ãŸã€‚
ã—ã£ã‹ã‚ŠWindowsã§ã‚‚使ã‚れã¦ã¾ã—ãŸã€‚
OSã€ãƒ‡ãƒã‚¤ã‚¹ã€ãƒ¡ãƒ¢ãƒªç®¡ç†ã®è©±ã¯éžåŒæœŸå‡¦ç†ã‚„排他処ç†ã€ãƒ—ãƒã‚°ãƒ©ãƒ 連æºã‚’行ã†éš›ã«æœ‰ç”¨ã§ã™ã€‚
ã¨è¨€ã†ã‚ˆã‚Šã“ã“ã‚’ç†è§£ã—ã¦ã„ã‚‹å‰æã§æŠ€è¡“æ›¸ãŒæ›¸ã‹ã‚Œã¦ã„ã‚‹ã®ã§å¿…é ˆã§ã™ã€‚
å¤ã„本ã§ã™ãŒã‚‚ã£ã¨æ—©ãã«èªã‚“ã§ãŠã‘ã°è‰¯ã‹ã£ãŸã§ã™ã€‚
オペレーティング・システムã¨ã¯
システムコール(WindowsAPI)
OSãŒã€OS上ã§å‹•ãプãƒã‚°ãƒ©ãƒ ã®ç‚ºã«å‘¼ã³å‡ºã™å‘½ä»¤ã€‚
・メモリã®ç¢ºä¿ã€è§£æ”¾
・プãƒã‚»ã‚¹ã€ã‚¹ãƒ¬ãƒƒãƒ‰ã®åˆ‡ã‚Šæ›¿ãˆ
・入出力装置ã®åˆ¶å¾¡
ç‰ã€å€‹ã€…ã®ãƒ—ãƒã‚°ãƒ©ãƒ ãŒå‹æ‰‹ã«è¡Œã†ã¨å•題ãŒã‚る処ç†ã«ã¤ã„ã¦OSã«ä¾é ¼ã—ã¦ã‚„ã£ã¦ã‚‚らã†ã€‚
ライブラリ
システムコールãŒå‹•作ã™ã‚‹å®Ÿè¡Œãƒ•ァイル。
マルãƒã‚¿ã‚¹ã‚¯ã®ãµã—ãŽ
メモリー管ç†
リãƒã‚±ãƒ¼ã‚¿ãƒ–ル
å˜ä¸€ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã ã‘ãŒå‹•作ã™ã‚‹å‰æã®OSã§ã¯ã€ãƒ—ãƒã‚°ãƒ©ãƒ é ˜åŸŸãƒ»ãƒ‡ãƒ¼ã‚¿é ˜åŸŸã®é–‹å§‹ä½ç½®ã‚’固定ã—ã¦ã„ãŸã€‚
ã“れã«å¯¾ã—ã€OS上ã§è¤‡æ•°ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’èµ·å‹•ã•ã›ã‚‹å‰æã§ã€ãƒ—ãƒã‚°ãƒ©ãƒ é ˜åŸŸãƒ»ãƒ‡ãƒ¼ã‚¿é ˜åŸŸã®é–‹å§‹ä½ç½®ã‚’å‹•çš„ã«ãšã‚‰ã—ã¦å‹•作ã•ã›ã‚‹ä»•組ã¿ã€‚
セグメント
CPUãŒä¸€åº¦ã«ã‚¢ã‚¯ã‚»ã‚¹å¯èƒ½ãªãƒ¡ãƒ¢ãƒªé ˜åŸŸã€‚
CPUã®æ€§èƒ½ã«ã‚ˆã‚Šå¤§ãã•ãŒé•ã†ã€‚
(ãƒãƒ¼ã‚«ãƒ«)ディスクリプタテーブル(LDT)
32bitCPU以é™ã§åˆ©ç”¨ã•ã‚Œã‚‹ãƒ¡ãƒ¢ãƒªé ˜åŸŸã€‚
プãƒã‚°ãƒ©ãƒ ãŒãƒ¡ãƒ¢ãƒªé ˜åŸŸã«ãŠã„ã¦ã©ã“ã‹ã‚‰ã©ã“ã¾ã§ä½¿ç”¨ã™ã‚‹ã®ã‹ï¼Ÿ
を記憶ã—ã¦ãŠãã€ä¾‹ãˆãƒ—ãƒã‚°ãƒ©ãƒ ã«ã‚ˆã£ã¦å‘½ä»¤ã•れãŸã¨ã—ã¦ã‚‚範囲外ã®é ˜åŸŸã«æ›¸ã込む事ã¯ã§ããªã„æ§‹é€ ã«ãªã£ã¦ã„る為ã€
マルãƒã‚¿ã‚¹ã‚¯ç’°å¢ƒã«ãŠã‘る安定性ãŒä¿éšœã•ã›ã‚‹ã€‚
ã¾ãŸã€å˜åœ¨ãƒ•ラグã«ã‚ˆã£ã¦ä»®æƒ³è¨˜æ†¶ã‚‚実ç¾ã•れる。
仮想記憶
ãƒ¡ãƒ¢ãƒªé ˜åŸŸã®ä¸è¶³ã«å¯¾ã—ã¦ã€ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚’メモリã¨ã—ã¦æ‰±ã†æŠ€è¡“。
OS上ã§å‹•作ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ ãŒä½¿ç”¨ã™ã‚‹ãƒ¡ãƒ¢ãƒªé ˜åŸŸã®ä¸€éƒ¨ã‚’仮想記憶ã¸ã‚³ãƒ”ーã—ã€å¿…è¦ã«ãªã£ãŸå ´åˆã«ã¯ã¾ãŸæˆ»ã™ã€‚
スワップ方å¼/ページング方å¼ãŒã‚る。
å˜åœ¨ãƒ•ラグ(P:Presentフラグ)
仮想記憶利用ã®ç‚ºã®ãƒ•ラグ。
本æ¥ã®ãƒ¡ãƒ¢ãƒªé ˜åŸŸã«ã¯ãƒ‡ãƒ¼ã‚¿ãŒç„¡ã„å ´åˆã€å˜åœ¨ãƒ•ラグã¯OFF。ã‚ã‚‹å ´åˆã¯ON。
ON/OFFã«å¿œã˜ã¦ä»®æƒ³è¨˜æ†¶ã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿ã®å¾©å…ƒãŒè¡Œã‚れる。
セグメントä¸åœ¨å‰²ã‚Šè¾¼ã¿
プãƒã‚°ãƒ©ãƒ を実行ã™ã‚‹éš›ã€èªã¿è¾¼ã¿å…ˆãƒ¡ãƒ¢ãƒªé ˜åŸŸã«ãƒ—ãƒã‚°ãƒ©ãƒ ãŒç„¡ã„å ´åˆ(ä»®æƒ³è¨˜æ†¶é ˜åŸŸã«ãƒšãƒ¼ã‚¸ã‚¢ã‚¦ãƒˆã•れã¦ã„ã‚‹å ´åˆ)ã€
OSã¯ã‚»ã‚°ãƒ¡ãƒ³ãƒˆä¸åœ¨å‰²ã‚Šè¾¼ã¿ã‚’発生ã•ã›ã€ã‚らゆる処ç†ã«å„ªå…ˆã—ã¦ãƒ¡ãƒ¢ãƒªé ˜åŸŸã«ãƒ—ãƒã‚°ãƒ©ãƒ を復元ã•ã›ã‚‹ã€‚
スワップ
(スワップイン/スワップアウト)
ä»®æƒ³è¨˜æ†¶åˆ©ç”¨ã®æ–¹æ³•。
プãƒã‚°ãƒ©ãƒ (セグメント)å˜ä½ã§ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’ä»®æƒ³è¨˜æ†¶é ˜åŸŸã«é€€é¿ã€å¾©å…ƒã™ã‚‹ã€‚
32bitCPUã§ã¯ã‚»ã‚°ãƒ¡ãƒ³ãƒˆãŒå¤§ãã„為ページングãŒä½¿ç”¨ã•れる。
ページング
(ページイン/ページアウト)
ページ(4KB)ã®ãƒ¡ãƒ¢ãƒªé ˜åŸŸå˜ä½ã§ä»®æƒ³è¨˜æ†¶é ˜åŸŸã«ãƒ—ãƒã‚°ãƒ©ãƒ を退é¿ã€å¾©å…ƒã™ã‚‹ã€‚
ã“ã®éš›ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã«ãŠã‘ã‚‹ã©ã®éƒ¨åˆ†ã‚’ページアウトã—ã¦ã„ã‚‹ã‹ï¼Ÿã¯ãƒšãƒ¼ã‚¸ãƒ†ãƒ¼ãƒ–ルã§ç®¡ç†ã™ã‚‹ã€‚
DLL
通常ã®ã‚³ãƒ³ãƒ‘ã‚¤ãƒ«ãƒ»ãƒªãƒ³ã‚¯æ‰‹é †(StaticLinkLibraryæ–¹å¼)
・ソースファイル
↓(Byコンパイラ)
・オブジェクトファイル
・ライブラリ
↓(Byリンカ)
・実行ファイル
DLLを利用ã™ã‚‹æ‰‹é †(DynamicLinkLibraryæ–¹å¼)
・ソースファイル
↓(Byコンパイラ)
・オブジェクトファイル
・ライブラリ
・スタブ
↓(Byリンカ)
・実行ファイル
※DLLã¯å®Ÿè¡Œãƒ•ァイルã¨ã—ã¦ã¯å–り込ã¾ã‚Œãªã„。
スタブを用ã„ã¦å‚照経路を確ä¿ã™ã‚‹ã ã‘ã§ã€å®Ÿè¡Œæ™‚ã«(å‹•çš„ã«)åˆã‚ã¦å–り込ã¾ã‚Œã‚‹ã€‚
スタブ
実行時ã«DLLを呼ã¹ã‚‹æ§˜ã«ã€ãƒªãƒ³ã‚¯ã®éš›ã«ä½œæˆã•れるプãƒã‚°ãƒ©ãƒ 。
オブジェクトファイルã‹ã‚‰DLLã®å‘¼ã³å‡ºã—を仲立ã¡ã™ã‚‹ã€‚
マルãƒã‚¦ã‚£ãƒ³ãƒ‰ã‚¦
ウィンドウãƒãƒ³ãƒ‰ãƒ«
Windows上ã§å„ウィンドウをè˜åˆ¥ã™ã‚‹ç‚ºã®ç•ªå·
厳密ã«ã¯ä¸€ã¤ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦å†…ã§ã‚‚ãƒœã‚¿ãƒ³ã‚„ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸é ˜åŸŸç‰ã§åˆ¥ã®æ•°å—ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŠã‚Šã€
ã“れã«ã‚ˆã‚Šå„オブジェクトã€å„イベントã«å¿œã˜ãŸã‚¤ãƒ™ãƒ³ãƒˆãƒãƒ³ãƒ‰ãƒ©ã‚’発生ã•ã›ã‚‹äº‹ãŒå¯èƒ½ã«ãªã‚‹ã€‚
イベントãƒãƒ³ãƒ‰ãƒ©
ボタン押下やマウスクリックç‰ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ“作ã«å¯¾ã—ã¦ãƒ—ãƒã‚°ãƒ©ãƒ ã™ã‚‹ç‰¹å®šã®å‡¦ç†ã€‚
イベントãŒç™ºç”Ÿã™ã‚‹åº¦ã«å‡¦ç†ã‚’分å²ã•ã›ã‚‹ã®ã§ã¯ãªãã€ã‚¤ãƒ™ãƒ³ãƒˆç™ºç”Ÿå‰ã«ã‚¤ãƒ™ãƒ³ãƒˆæ¯Žã«å‡¦ç†å†…容を登録ã—ã¦ãŠã。
ï¼ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãƒ»ãƒ—ãƒã‚·ãƒ¼ã‚¸ãƒ£
イベントドリブン
イベントãƒãƒ³ãƒ‰ãƒ©ã‚’実行ã™ã‚‹ã«å½“ãŸã£ã¦ã€ãƒ—ãƒã‚°ãƒ©ãƒ ãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ“作を常ã«ç›£è¦–ã™ã‚‹å¿…è¦ã¯ãªã„。
マルãƒã‚¿ã‚¹ã‚¯å®Ÿè¡Œä¸ã§ã€ä»–ã®ãƒ—ãƒã‚»ã‚¹ãŒå®Ÿè¡Œä¸ã§ã‚ã£ã¦ã‚‚ã€
自プãƒã‚»ã‚¹ã«å¯¾ã™ã‚‹æ“作ãŒã‚れã°ã‚¤ãƒ™ãƒ³ãƒˆã‚’検知ã™ã‚‹ã®ã¯OSã®ä»•事。
OSãŒæ¤œçŸ¥ãŒè¡Œã†äº‹ã‚’剿ã«ã—ãŸã‚·ã‚¹ãƒ†ãƒ やプãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã®äº‹ã‚’イベントドリブン型ã€ã‚¤ãƒ™ãƒ³ãƒˆé§†å‹•型言語ç‰ã¨å‘¼ã¶ã€‚
ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ»ã‚µãƒãƒ¼ãƒˆ
I/Oãƒãƒ¼ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹
Windows上ã§å„ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚’è˜åˆ¥ã™ã‚‹ç‚ºã®æ•°å—
プラグ&プレイã«ã‚ˆã‚Šé‡è¤‡ã—ãªã„番å·ãŒè‡ªå‹•ã§å‰²ã‚ŠæŒ¯ã‚‰ã‚Œã‚‹ã€‚
デãƒã‚¤ã‚¹ãƒ‰ãƒ©ã‚¤ãƒ
OSãŒè¡Œã†ã€ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã«å¯¾ã™ã‚‹æ“作を仲介ã™ã‚‹ã‚½ãƒ•トウェア。
本æ¥ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æ¯Žã«ä»•様ãŒç•°ãªã‚Šã€ã“れをæ“作ã™ã‚‹ç‚ºã«ã¯å€‹åˆ¥ã®æ“作プãƒã‚°ãƒ©ãƒ ãŒå¿…è¦ã«ãªã‚‹ãŒã€
ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ¡ãƒ¼ã‚«ãƒ¼ãŒã€OSã®æ“作命令ã«å¯¾å¿œã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆãƒ»æä¾›ã™ã‚‹äº‹ã«ã‚ˆã£ã¦OSå´ã¯ãƒ—ãƒã‚°ãƒ©ãƒ を変更ã™ã‚‹äº‹ãªããƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚’æ“作ã§ãる。
プラグ&プレイ
ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã‚’OSã«æŽ¥ç¶šã—ãŸéš›ã«è‡ªå‹•ã§OSã‹ã‚‰æ“作å¯èƒ½ã«ã™ã‚‹æ©Ÿèƒ½ã€‚
プãƒã‚°ãƒ©ãƒ 連æº
プãƒã‚»ã‚¹é–“通信
別々ã®ãƒ—ãƒã‚»ã‚¹åŒå£«ãŒè‡ªãƒ—ãƒã‚°ãƒ©ãƒ ã®ãƒ‡ãƒ¼ã‚¿é ˜åŸŸä»¥å¤–ã®ãƒ¡ãƒ¢ãƒªé ˜åŸŸã‚’使ã£ã¦ãƒ‡ãƒ¼ã‚¿é€£æºã‚’行ã†äº‹ã€‚
プãƒã‚»ã‚¹ã¯ãƒ—ãƒã‚°ãƒ©ãƒ é ˜åŸŸã«åŠ ãˆãƒ‡ãƒ¼ã‚¿é ˜åŸŸã‚’æŒã¡å¤‰æ•°ã‚„スタックã«åˆ©ç”¨ã™ã‚‹ã€‚
ã—ã‹ã—他プãƒã‚»ã‚¹ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿é ˜åŸŸã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹äº‹ã¯OSã«ã‚ˆã‚Šç¦æ¢ã•れã¦ã„る。
ファイルマッピング
プãƒã‚»ã‚¹é–“通信ã®ä¸€æ‰‹æ³•。
ä»–OSã§ã¯å…±æœ‰ãƒ¡ãƒ¢ãƒªã¨å‘¼ã°ã‚Œã‚‹ã€‚
ファイルをメモリ上ã«ä½œæˆ(マッピング)ã—ã€ãƒ—ãƒã‚»ã‚¹åŒå£«ã§ã“ã®ãƒ•ァイルã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹äº‹ã§ãƒ‡ãƒ¼ã‚¿ã‚’連æºã™ã‚‹ã€‚
例:クリップボード
åå‰ä»˜ãパイプ
プãƒã‚»ã‚¹é–“通信ã®ä¸€æ‰‹æ³•。
ä»–OSã§ã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãƒ»ã‚ューã¨å‘¼ã°ã‚Œã‚‹ã€‚
ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’介ã—ã¦ä»–コンピュータã‹ã‚‰ã‚‚共有ã•ã‚Œã‚‹ãƒ¡ãƒ¢ãƒªé ˜åŸŸã€‚
ãƒ•ã‚¡ã‚¤ãƒ«ã®æ§˜ã«Create/Read/Write/Close命令を用ã„ã¦ã‚¢ã‚¯ã‚»ã‚¹ã§ãã€Closeã™ã‚‹ã¨æ¶ˆæ»…ã™ã‚‹ã€‚
匿åパイプもã‚ã‚‹ãŒOSã«ã‚ˆã£ã¦è‡ªå‹•çš„ã«ãƒ©ãƒ³ãƒ€ãƒ ãªãƒ‘イプåãŒä»˜ã‘られるã ã‘ã§ä»•組ã¿ã¯åŒã˜ã€‚
パイプãŒå‹æ‰‹ã«æ¶ˆãˆãŸã‚Šã€ä»–アプリケーションã«ã‚ˆã£ã¦ä¸Šæ›¸ãã•れãŸã‚Šã™ã‚‹äº‹ãŒç„¡ã„。
共用メモリー方å¼ã‚ˆã‚Šå°‘é‡ã®ãƒ‡ãƒ¼ã‚¿ã‚’連æºã™ã‚‹å ´åˆã€ãƒ—ãƒã‚»ã‚¹é–“ã§åŒæœŸã‚’å–ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã«ä½¿ç”¨ã€‚
ミューテックス
プãƒã‚»ã‚¹é–“通信ã®ä¸€æ‰‹æ³•。
CreateMutex()関数ã§ãƒ¡ãƒ¢ãƒªç©ºé–“ã«ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚ªãƒ–ジェクトを作æˆã€‚
ã“ã®éš›ã€æ‰€æœ‰è€…åã€ã‚ªãƒ–ジェクトåを引数ã¨ã—ã¦æ¸¡ã™ã€‚
外プãƒã‚»ã‚¹ã‹ã‚‰åŒåã®ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚ªãƒ–ジェクトãŒä½œæˆã•れã¦ã„ã‚‹å ´åˆã€
OSã¯æ—¢å˜ã®ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚ªãƒ–ジェクトを探ã—ã¦æ‰€æœ‰è€…æƒ…å ±ã‚’è¿”ã™ã®ã§åŒåã®ã‚ªãƒ–ジェクトãŒè¤‡æ•°ä½œã‚‰ã‚Œã‚‹äº‹ã¯ç„¡ã„。
OpenMutex()
æ‰€æœ‰è€…æƒ…å ±ã‚’å–å¾—
WaitForSingleObject()
所有権ãŒç©ºãã¾ã§å¾…機。
ReleaseMutex()
所有権を離ã™ã€‚
セマフォ
プãƒã‚»ã‚¹é–“通信ã®ä¸€æ‰‹æ³•。
ミューテックスãŒï¼‘プãƒã‚»ã‚¹ã®æ‰€æœ‰ã—ã‹èªã‚ãªã„ã®ã«å¯¾ã—ã€è¤‡æ•°ã®æ‰€æœ‰ãŒèªã‚られる。
複数ã®ãƒ—ãƒã‚»ã‚¹ã®åŒæ™‚処ç†ã¯å¯èƒ½ã ãŒã€è² è·ã‚’軽減ã™ã‚‹ç‚ºã«ãã®æ•°ã‚’制é™ã—ãŸã„å ´åˆç‰ã«ä½¿ç”¨ã€‚
åˆ¶é™æ•°ã‚’1ã«ã—ã¦ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã¨åŒæ©Ÿèƒ½ã®ä½¿ã„方もå¯èƒ½ã€‚
作æˆã€é–‹å§‹ã€å¾…機ã€çµ‚了ã¯ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã¨ã»ã¼åŒã˜
CreateSemaphore()
OpenSemaphore()
WaitForSingleObject()
ReleaseSemaphore()
ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯
ãƒãƒ¼ãƒˆç•ªå·
ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸Šã§ã‚³ãƒ³ãƒ”ュータをè˜åˆ¥ã™ã‚‹IPアドレスã«ä»˜åŠ ã™ã‚‹ã‚µãƒ–アドレス
IPアドレス+ãƒãƒ¼ãƒˆç•ªå·ã‚’ソケットã¨å‘¼ã³ã€ã‚³ãƒ³ãƒ”ュータ上ã®å„アプリケーションを区別ã™ã‚‹ã€‚
Windows上ã§èµ·å‹•ã™ã‚‹ã‚¢ãƒ—リケーションã¯ãƒ‡ãƒ•ォルトã§ä½¿ç”¨ã™ã‚‹ãƒãƒ¼ãƒˆç•ªå·ãŒæ±ºã¾ã£ã¦ã„る。
※メールサービス:110ç‰
起動時ã«åˆ¥ã®ã‚¢ãƒ—リã«ã‚ˆã£ã¦ãã®ç•ªå·ãŒä½¿ç”¨ã•れã¦ã„ã‚‹å ´åˆã¯ç©ºã„ã¦ã„る別ã®ç•ªå·ã‚’使用ã™ã‚‹ã€‚