æä½ç³»ç»å¸¸è§é¢è¯é¢æ»ç»
è¿æ¯ä¸åæè®¸å¯¹ä½ æå¸®å©çä¿¡æ¯
- é¢è¯æåï¼è¿æ¯ä¸ä»½å¤§å½¬ç²¾å¿æ´çç大åé¢è¯æåææ°çï¼ç®åå·²ç»æ´æ°è¿ä»£äº19ä¸ªçæ¬ï¼è´¨éå¾é«ï¼ä¸ä¸ºé¢è¯æé ï¼
- ç¥è¯æçï¼ä¸å±é¢è¯æå/ä¸å¯¹ä¸äº¤æµ/ç®åä¿®æ¹/è¶ æ£çå¦ä¹ æ°å´/å¦ä¹ 路线è§åï¼æ¬¢è¿å å ¥å¤§å½¬çç¥è¯æçï¼ç¹å»é¾æ¥æ¥çæçç详ç»ä»ç»ï¼
æä½ç³»ç»çåä¸ªç¹æ§ï¼
å¹¶åï¼å䏿®µæ¶é´å å¤ä¸ªç¨åºæ§è¡ï¼ä¸å¹¶è¡åºåï¼å¹¶è¡æçæ¯å䏿¶å»æå¤ä¸ªäºä»¶ï¼å¤å¤çå¨ç³»ç»å¯ä»¥ä½¿ç¨åºå¹¶è¡æ§è¡ï¼
å ±äº«ï¼ç³»ç»ä¸çèµæºå¯ä»¥è¢«å åä¸å¤ä¸ªå¹¶åæ§è¡çè¿çº¿ç¨å ±å使ç¨
èæï¼éè¿åæ¶å¤ç¨ï¼å¦åæ¶ç³»ç»ï¼ä»¥å空åå¤ç¨ï¼å¦èæå åï¼ææ¯æä¸ä¸ªç©çå®ä½èæä¸ºå¤ä¸ª
弿¥ï¼ç³»ç»è¿ç¨ç¨ä¸ç§èµ°èµ°ååçæ¹å¼æ§è¡ï¼ï¼å¹¶ä¸æ¯ä¸ä¸åèµ°å®ï¼ï¼è¿ç¨ä»ä¹æ¶åä»¥ææ ·çé度ååæ¨è¿æ¯ä¸å¯é¢ç¥ç
è¿ç¨çº¿ç¨
è¿ç¨æ¯æä¸ä¸ªå åä¸è¿è¡çåºç¨ç¨åºï¼æ¯ä¸ªè¿ç¨é½æèªå·±ç¬ç«çä¸åå å空é´ã
çº¿ç¨æ¯æ¯è¿ç¨æ´å°çæ§è¡åä½ï¼å®æ¯å¨ä¸ä¸ªè¿ç¨ä¸ç¬ç«çæ§å¶æµï¼ä¸ä¸ªè¿ç¨å¯ä»¥å¯å¨å¤ä¸ªçº¿ç¨ï¼æ¯æ¡çº¿ç¨å¹¶è¡æ§è¡ä¸åçä»»å¡ã
è¿ç¨å线ç¨çåºå«å¦ä¸ï¼
- è°åº¦ï¼è¿ç¨æ¯èµæºç®¡ççåºæ¬åä½ï¼çº¿ç¨æ¯ç¨åºæ§è¡çåºæ¬åä½ã
- 忢ï¼çº¿ç¨ä¸ä¸æåæ¢æ¯è¿ç¨ä¸ä¸æåæ¢è¦å¿«å¾å¤ã
- æ¥æèµæºï¼ è¿ç¨æ¯æ¥æèµæºçä¸ä¸ªç¬ç«åä½ï¼çº¿ç¨ä¸æ¥æç³»ç»èµæºï¼ä½æ¯å¯ä»¥è®¿é®é¶å±äºè¿ç¨çèµæºã
- ç³»ç»å¼éï¼ åå»ºææ¤éè¿ç¨æ¶ï¼ç³»ç»é½è¦ä¸ºä¹åé æåæ¶ç³»ç»èµæºï¼å¦å å空é´ï¼I/O设å¤çï¼OSæä»åºçå¼éæ¾è大äºå¨åå»ºææ¤éçº¿ç¨æ¶çå¼éï¼è¿ç¨åæ¢çå¼éä¹è¿å¤§äºçº¿ç¨åæ¢çå¼éã
å¹¶ååå¹¶è¡
å¹¶åå°±æ¯å¨ä¸æ®µæ¶é´å
ï¼å¤ä¸ªä»»å¡é½ä¼è¢«å¤çï¼ä½å¨æä¸æ¶å»ï¼åªæä¸ä¸ªä»»å¡å¨æ§è¡ãåæ ¸å¤çå¨å¯ä»¥åå°å¹¶åãæ¯å¦æä¸¤ä¸ªè¿ç¨AåBï¼Aè¿è¡ä¸ä¸ªæ¶é´çä¹åï¼åæ¢å°Bï¼Bè¿è¡ä¸ä¸ªæ¶é´çä¹åå忢å°Aãå ä¸ºåæ¢é度足å¤å¿«ï¼æä»¥å®è§ä¸è¡¨ç°ä¸ºå¨ä¸æ®µæ¶é´å
è½åæ¶è¿è¡å¤ä¸ªç¨åºã
å¹¶è¡å°±æ¯å¨å䏿¶å»ï¼æå¤ä¸ªä»»å¡å¨æ§è¡ãè¿ä¸ªéè¦å¤æ ¸å¤ç卿è½å®æï¼å¨å¾®è§ä¸å°±è½åæ¶æ§è¡å¤æ¡æä»¤ï¼ä¸åçç¨åºè¢«æ¾å°ä¸åçå¤çå¨ä¸è¿è¡ï¼è¿ä¸ªæ¯ç©çä¸çå¤ä¸ªè¿ç¨åæ¶è¿è¡ã
å¤çº¿ç¨ç¸è¾å线ç¨ç好å¤
1ãå¹¶åæåç¨åºæ§è¡æç
2ãæåCPUå©ç¨çï¼è®¿åçæ¶åå¯ä»¥åæ¢çº¿ç¨æ¥æ§è¡
3ãæ´å¿«çååºé度ï¼å¯ä»¥æä¸é¨ççº¿ç¨æ¥çå¬ç¨æ·è¯·æ±åä¸é¨ççº¿ç¨æ¥å¤ç请æ±ãæ¯å¦çå¬çº¿ç¨åå·¥ä½çº¿ç¨æ¯ä¸¤ä¸ªçº¿ç¨ï¼è¿æ ·çå¬å°±è´è´£çå¬ï¼å·¥ä½çå°±è´è´£å·¥ä½ï¼çå¬å°ç¨æ·è¯·æ±é©¬ä¸æè¯·æ±è½¬å°å·¥ä½çº¿ç¨å»å¤çï¼çå¬çº¿ç¨ç»§ç»çå¬
ä»ä¹æ¯åç¨ï¼
åç¨æ¯ä¸ç§ç¨æ·æçè½»é级线ç¨ã
åç¨ä¸æ¯ç±æä½ç³»ç»å æ ¸ç®¡çï¼èæ¯å®å ¨ç±ç¨æ·ç¨åºææ§å¶ï¼è¿æ ·å¸¦æ¥ç好å¤å°±æ¯æ§è½å¾å°äºå¾å¤§çæåï¼ä¸ä¼å线ç¨åæ¢é£æ ·æ¶èèµæºã
åç¨å¯ä»¥ç解为å¯ä»¥æåæ§è¡ç彿°ã宿¥æèªå·±çå¯åå¨ä¸ä¸æåæ ãåç¨è°åº¦åæ¢æ¶ï¼å°å¯åå¨ä¸ä¸æåæ ä¿åå°å ¶ä»å°æ¹ï¼å¨ååæ¥çæ¶åï¼æ¢å¤å åä¿åçå¯åå¨ä¸ä¸æåæ ï¼ç´æ¥æä½æ ååºæ¬æ²¡æå æ ¸åæ¢çå¼éï¼å¯ä»¥ä¸å éç访é®å ¨å±åéï¼æä»¥ä¸ä¸æç忢é常快ã
线ç¨ååç¨æä»ä¹åºå«å¢ï¼
1ãçº¿ç¨æ¯æ¢å å¼ï¼èåç¨æ¯éæ¢å å¼çï¼æä»¥éè¦ç¨æ·èªå·±éæ¾ä½¿ç¨ææ¥åæ¢å°å ¶ä»åç¨ï¼å æ¤å䏿¶é´å ¶å®åªæä¸ä¸ªåç¨æ¥æè¿è¡æï¼ç¸å½äºå线ç¨çè½åã 2ãçº¿ç¨æ¯åç¨çèµæºãåç¨éè¿ å¯ä»¥å ³èä»»æçº¿ç¨æçº¿ç¨æ± çæ§è¡å¨ï¼Interceptorï¼æ¥é´æ¥ä½¿ç¨çº¿ç¨çèµæºçã
è¿ç¨éä¿¡
è¿ç¨é´éä¿¡æ¹å¼æä»¥ä¸å ç§ï¼
1ã管ééä¿¡
å¿å管é( pipe )ï¼ç®¡éæ¯ä¸ç§ååå·¥çéä¿¡æ¹å¼ï¼æ°æ®åªè½ååæµå¨ï¼èä¸åªè½å¨å ·æäº²ç¼å ³ç³»çè¿ç¨é´ä½¿ç¨ãè¿ç¨ç亲ç¼å ³ç³»éå¸¸æ¯æç¶åè¿ç¨å ³ç³»ã æåç®¡éæ¯ååå·¥çéä¿¡æ¹å¼ï¼æ°æ®åªè½ååæµå¨ã
2ãæ¶æ¯éå
3ãå ±äº«å åãå ±äº«å 忝æå¿«ç IPC æ¹å¼ï¼å®æ¯éå¯¹å ¶ä»è¿ç¨é´éä¿¡æ¹å¼è¿è¡æçä½èä¸é¨è®¾è®¡çãå®å¾å¾ä¸å ¶ä»éä¿¡æºå¶ï¼å¦ä¿¡å·éï¼é å使ç¨ï¼æ¥å®ç°è¿ç¨é´ç忥åéä¿¡ã
4ãä¿¡å·éãä¿¡å·éæ¯ä¸ä¸ªè®¡æ°å¨ï¼å¯ä»¥ç¨æ¥æ§å¶å¤ä¸ªè¿ç¨å¯¹å ±äº«èµæºç访é®ãå®å¸¸ä½ä¸ºä¸ç§éæºå¶ï¼é²æ¢æè¿ç¨æ£å¨è®¿é®å ±äº«èµæºæ¶ï¼å ¶ä»è¿ç¨ä¹è®¿é®è¯¥èµæºãå æ¤ï¼ä¸»è¦ä½ä¸ºè¿ç¨é´ä»¥ååä¸è¿ç¨å ä¸å线ç¨ä¹é´çåæ¥ææ®µã
ä»ä¹æ¯æ»éï¼
æ»éæ¯æä¸¤ä¸ªæä¸¤ä¸ªä»¥ä¸ç线ç¨å¨æ§è¡è¿ç¨ä¸ï¼å äºå¤ºèµæºèé æçä¸ç§äºç¸çå¾ çç°è±¡ãè¥æ å¤åä½ç¨ï¼å®ä»¬é½å°æ æ³æ¨è¿ä¸å»ã
å¦ä¸å¾æç¤ºï¼çº¿ç¨ A ææèµæº 2ï¼çº¿ç¨ B ææèµæº 1ï¼ä»ä»¬åæ¶é½æ³ç³è¯·å¯¹æ¹ææçèµæºï¼æä»¥è¿ä¸¤ä¸ªçº¿ç¨å°±ä¼äºç¸çå¾ èè¿å ¥æ»éç¶æã

ä¸é¢éè¿ä¾å说æçº¿ç¨æ»éï¼ä»£ç æ¥èªå¹¶åç¼ç¨ä¹ç¾ã
public class DeadLockDemo {
private static Object resource1 = new Object();//èµæº 1
private static Object resource2 = new Object();//èµæº 2
public static void main(String[] args) {
new Thread(() -> {
synchronized (resource1) {
System.out.println(Thread.currentThread() + "get resource1");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread() + "waiting get resource2");
synchronized (resource2) {
System.out.println(Thread.currentThread() + "get resource2");
}
}
}, "çº¿ç¨ 1").start();
new Thread(() -> {
synchronized (resource2) {
System.out.println(Thread.currentThread() + "get resource2");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread() + "waiting get resource1");
synchronized (resource1) {
System.out.println(Thread.currentThread() + "get resource1");
}
}
}, "çº¿ç¨ 2").start();
}
}
代ç è¾åºå¦ä¸ï¼
Thread[çº¿ç¨ 1,5,main]get resource1
Thread[çº¿ç¨ 2,5,main]get resource2
Thread[çº¿ç¨ 1,5,main]waiting get resource2
Thread[çº¿ç¨ 2,5,main]waiting get resource1
çº¿ç¨ A éè¿ synchronized (resource1) è·å¾ resource1 ççè§å¨éï¼ç¶åéè¿ Thread.sleep(1000)ãè®©çº¿ç¨ A ä¼ç 1s ä¸ºçæ¯è®©çº¿ç¨ B å¾å°æ§è¡ç¶åè·åå° resource2 ççè§å¨éãçº¿ç¨ A åçº¿ç¨ B ä¼ç ç»æäºé½å¼å§ä¼å¾è¯·æ±è·å对æ¹çèµæºï¼ç¶åè¿ä¸¤ä¸ªçº¿ç¨å°±ä¼é·å
¥äºç¸çå¾
çç¶æï¼è¿ä¹å°±äº§çäºæ»éã
æ»éæä¹äº§çï¼æä¹é¿å ï¼
æ»é产ççåä¸ªå¿ è¦æ¡ä»¶ï¼
äºæ¥ï¼ä¸ä¸ªèµæºæ¯æ¬¡åªè½è¢«ä¸ä¸ªè¿ç¨ä½¿ç¨
请æ±ä¸ä¿æï¼ä¸ä¸ªè¿ç¨å 请æ±èµæºèé»å¡æ¶ï¼ä¸éæ¾è·å¾çèµæº
ä¸å¥å¤ºï¼è¿ç¨å·²è·å¾çèµæºï¼å¨æªä½¿ç¨ä¹åï¼ä¸è½å¼ºè¡å¥å¤º
循ç¯çå¾ ï¼è¿ç¨ä¹é´å¾ªç¯çå¾ çèµæº
é¿å æ»éçæ¹æ³ï¼
- äºæ¥æ¡ä»¶ä¸è½ç ´åï¼å 为å éå°±æ¯ä¸ºäºä¿è¯äºæ¥
- 䏿¬¡æ§ç³è¯·ææçèµæºï¼é¿å 线ç¨å æèµæºèä¸å¨çå¾ å ¶ä»èµæº
- å æé¨åèµæºç线ç¨è¿ä¸æ¥ç³è¯·å ¶ä»èµæºæ¶ï¼å¦æç³è¯·ä¸å°ï¼ä¸»å¨éæ¾å®å æçèµæº
- æåºç³è¯·èµæº
è¿ç¨è°åº¦çç¥æåªå ç§ï¼
å æ¥å æå¡ï¼éæ¢å å¼çè°åº¦ç®æ³ï¼æç §è¯·æ±ç顺åºè¿è¡è°åº¦ãæå©äºé¿ä½ä¸ï¼ä½ä¸å©äºçä½ä¸ï¼å 为çä½ä¸å¿ é¡»ä¸ç´çå¾ åé¢çé¿ä½ä¸æ§è¡å®æ¯æè½æ§è¡ï¼èé¿ä½ä¸åéè¦æ§è¡å¾é¿æ¶é´ï¼é æäºçä½ä¸çå¾ æ¶é´è¿é¿ãå¦å¤ï¼å¯¹
I/Oå¯éåè¿ç¨ä¹ä¸å©ï¼å 为è¿ç§è¿ç¨æ¯æ¬¡è¿è¡I/Oæä½ä¹ååå¾éæ°æéãçä½ä¸ä¼å ï¼éæ¢å å¼çè°åº¦ç®æ³ï¼æä¼°è®¡è¿è¡æ¶é´æçç顺åºè¿è¡è°åº¦ãé¿ä½ä¸æå¯è½ä¼é¥¿æ»ï¼å¤äºä¸ç´çå¾ çä½ä¸æ§è¡å®æ¯çç¶æãå ä¸ºå¦æä¸ç´æçä½ä¸å°æ¥ï¼é£ä¹é¿ä½ä¸æ°¸è¿å¾ä¸å°è°åº¦ã
æçå©ä½æ¶é´ä¼å ï¼æçä½ä¸ä¼å çæ¢å å¼çæ¬ï¼æå©ä½è¿è¡æ¶é´ç顺åºè¿è¡è°åº¦ã å½ä¸ä¸ªæ°çä½ä¸å°è¾¾æ¶ï¼å ¶æ´ä¸ªè¿è¡æ¶é´ä¸å½åè¿ç¨çå©ä½æ¶é´ä½æ¯è¾ã妿æ°çè¿ç¨éè¦çæ¶é´æ´å°ï¼åæèµ·å½åè¿ç¨ï¼è¿è¡æ°çè¿ç¨ãå¦åæ°çè¿ç¨çå¾ ã
æ¶é´ç轮转ï¼å°ææå°±ç»ªè¿ç¨æ
FCFSçååææä¸ä¸ªéåï¼æ¯æ¬¡è°åº¦æ¶ï¼æCPUæ¶é´åé ç»éé¦è¿ç¨ï¼è¯¥è¿ç¨å¯ä»¥æ§è¡ä¸ä¸ªæ¶é´çã彿¶é´çç¨å®æ¶ï¼ç±è®¡æ¶å¨ååºæ¶é䏿ï¼è°åº¦ç¨åºä¾¿åæ¢è¯¥è¿ç¨çæ§è¡ï¼å¹¶å°å®éå¾å°±ç»ªéåçæ«å°¾ï¼åæ¶ç»§ç»æCPUæ¶é´åé ç»éé¦çè¿ç¨ãæ¶é´çè½®è½¬ç®æ³çæçåæ¶é´çç大尿å¾å¤§å ³ç³»ï¼å 为è¿ç¨åæ¢é½è¦ä¿åè¿ç¨çä¿¡æ¯å¹¶ä¸è½½å ¥æ°è¿ç¨çä¿¡æ¯ï¼å¦ææ¶é´ç太å°ï¼ä¼å¯¼è´è¿ç¨åæ¢å¾å¤ªé¢ç¹ï¼å¨è¿ç¨åæ¢ä¸å°±ä¼è±è¿å¤æ¶é´ã è妿æ¶é´çè¿é¿ï¼é£ä¹å®æ¶æ§å°±ä¸è½å¾å°ä¿è¯ã
ä¼å 级è°åº¦ï¼ä¸ºæ¯ä¸ªè¿ç¨åé ä¸ä¸ªä¼å çº§ï¼æä¼å 级è¿è¡è°åº¦ã为äºé²æ¢ä½ä¼å 级çè¿ç¨æ°¸è¿çä¸å°è°åº¦ï¼å¯ä»¥éçæ¶é´çæ¨ç§»å¢å çå¾ è¿ç¨çä¼å 级ã
è¿ç¨æåªäºç¶æï¼
è¿ç¨ä¸å
±æ5ç§ç¶æï¼å嫿¯å建ã就绪ãè¿è¡ï¼æ§è¡ï¼ãç»æ¢ãé»å¡ã

- è¿è¡ç¶æå°±æ¯è¿ç¨æ£å¨
CPUä¸è¿è¡ãå¨åå¤çæºç¯å¢ä¸ï¼æ¯ä¸æ¶å»æå¤åªæä¸ä¸ªè¿ç¨å¤äºè¿è¡ç¶æã - å°±ç»ªç¶æå°±æ¯è¯´è¿ç¨å·²å¤äºåå¤è¿è¡çç¶æï¼å³è¿ç¨è·å¾äºé¤
CPUä¹å¤çä¸åæéèµæºï¼ä¸æ¦å¾å°CPUå³å¯è¿è¡ã - é»å¡ç¶æå°±æ¯è¿ç¨æ£å¨çå¾
æä¸äºä»¶èæåè¿è¡ï¼æ¯å¦çå¾
æèµæºä¸ºå¯ç¨æçå¾
I/O宿ãå³ä½¿CPU空é²ï¼è¯¥è¿ç¨ä¹ä¸è½è¿è¡ã
è¿è¡æâé»å¡æï¼å¾å¾æ¯ç±äºçå¾ å¤è®¾ï¼çå¾ ä¸»åçèµæºåé æçå¾ äººå·¥å¹²é¢èå¼èµ·çã é»å¡æâ就绪æï¼åæ¯çå¾ çæ¡ä»¶å·²æ»¡è¶³ï¼åªéåé å°å¤çå¨åå°±è½è¿è¡ã è¿è¡æâ就绪æï¼ä¸æ¯ç±äºèªèº«åå ï¼èæ¯ç±å¤çåå 使è¿è¡ç¶æçè¿ç¨è®©åºå¤çå¨ï¼è¿æ¶åå°±åæå°±ç»ªæãä¾å¦æ¶é´çç¨å®ï¼æææ´é«ä¼å 级çè¿ç¨æ¥æ¢å å¤çå¨çã 就绪æâè¿è¡æï¼ç³»ç»ææç§çç¥éä¸å°±ç»ªéåä¸çä¸ä¸ªè¿ç¨å ç¨å¤çå¨ï¼æ¤æ¶å°±åæäºè¿è¡æã
æä½ç³»ç»éçå åç¢çæä¹çè§£ï¼
å åç¢çé常å为å é¨ç¢çåå¤é¨ç¢çï¼
- å é¨ç¢çæ¯ç±äºéç¨åºå®å¤§å°çå åååºï¼å½ä¸ä¸ªè¿ç¨ä¸è½å®å ¨ä½¿ç¨åç»å®çåºå®å ååºåæ¶å°±ä¼äº§çå é¨ç¢çãé常å é¨ç¢çé¾ä»¥å®å ¨é¿å
- å¤é¨ç¢çæ¯ç±äºæäºæªåé çè¿ç»å ååºå太å°ï¼ä»¥è³äºä¸è½æ»¡è¶³ä»»æè¿ç¨çå ååé 请æ±ï¼ä»èä¸è½è¢«è¿ç¨å©ç¨çå ååºåã
æä»ä¹è§£å³åæ³ï¼
ç°å¨æ®ééåçå ååé æ¹å¼æ¯æ®µé¡µå¼å ååé ãå°å åå为ä¸åçæ®µï¼åå°æ¯ä¸æ®µåæåºå®å¤§å°ç页ãéè¿é¡µè¡¨æºå¶ï¼ä½¿æ®µå ç页å¯ä»¥ä¸å¿ è¿ç»å¤äºåä¸å ååºåã
èæå å
èæåå¨å¨å°±æ¯å ·æè¯·æ±è°å ¥åè½ï¼è½ä»é»è¾ä¸å¯¹å å容éå 以æ©å çä¸ç§åå¨å¨ç³»ç»ï¼èæå åæå¤æ¬¡æ§ï¼å¯¹æ¢æ§åèææ§ä¸ä¸ªç¹å¾ï¼å®å¯ä»¥å°ç¨åºå夿¬¡è°å ¥å åï¼ä½¿å¾å¨è¾å°çç¨æ·ç©ºé´å¯ä»¥æ§è¡è¾å¤§çç¨æ·ç¨åºï¼æä»¥åæ¶å®¹çº³æ´å¤çè¿ç¨å¹¶åæ§è¡ï¼ä»èæé«ç³»ç»çååéãåç缺页æ¶å¯ä»¥è°å ¥ä¸ä¸ªæ®µä¹å¯ä»¥è°å ¥ä¸ä¸ªé¡µï¼åå³äºå åçåå¨ç®¡çæ¹å¼ãèææ§è¡¨ç¤ºèæå ååç©çå åçæ å°ã
Linuxä¸ï¼è¿ç¨ä¸è½ç´æ¥è¯»åå åç©çå°åï¼åªè½è®¿é®ãèæå åå°åããæä½ç³»ç»ä¼æèæå åå°å-->ç©çå°åã
èæå åè§£å³æéçå å空é´å è½½è¾å¤§åºç¨ç¨åºçé®é¢ï¼æ ¹æ®éè¦å¨å ååç£çä¹é´æ¥åä¼ éæ°æ®ã
éè¿æ®µé¡µè¡¨çå½¢å¼ï¼èæå åä¸å䏿®µè¿ç»çå åç©ºé´æ å°å°ä¸»å åä¸ï¼ä¸»å å空é´çç¨åºæ®µå¯ä»¥ä¸è¿ç» ã
ä»ä¹æ¯å页ï¼
æå å空é´åå为大å°ç¸çä¸åºå®çåï¼ä½ä¸ºä¸»åçåºæ¬åä½ãå 为ç¨åºæ°æ®åå¨å¨ä¸åç页é¢ä¸ï¼è页é¢å离æ£çåå¸å¨å åä¸ï¼å æ¤éè¦ä¸ä¸ªé¡µè¡¨æ¥è®°å½æ å°å ³ç³»ï¼ä»¥å®ç°ä»é¡µå·å°ç©çåå·çæ å°ã
访é®å页系ç»ä¸å åæ°æ®éè¦ä¸¤æ¬¡çå åè®¿é® (䏿¬¡æ¯ä»å åä¸è®¿é®é¡µè¡¨ï¼ä»ä¸æ¾å°æå®çç©çåå·ï¼å ä¸é¡µå åç§»å¾å°å®é ç©çå°åï¼ç¬¬äºæ¬¡å°±æ¯æ ¹æ®ç¬¬ä¸æ¬¡å¾å°çç©çå°å访é®å åååºæ°æ®)ã
ä»ä¹æ¯å段ï¼
å页æ¯ä¸ºäºæé«å åå©ç¨çï¼èåæ®µæ¯ä¸ºäºæ»¡è¶³ç¨åºåå¨ç¼å代ç çæ¶åçä¸äºé»è¾éæ±(æ¯å¦æ°æ®å ±äº«ï¼æ°æ®ä¿æ¤ï¼å¨æé¾æ¥ç)ã
åæ®µå å管çå½ä¸ï¼å°åæ¯äºç»´çï¼ä¸ç»´æ¯æ®µå·ï¼äºç»´æ¯æ®µå å°åï¼å ¶ä¸æ¯ä¸ªæ®µçé¿åº¦æ¯ä¸ä¸æ ·çï¼è䏿¯ä¸ªæ®µå é¨é½æ¯ä»0å¼å§ç¼åçãç±äºå段管çä¸ï¼æ¯ä¸ªæ®µå 鍿¯è¿ç»å ååé ï¼ä½æ¯æ®µå段ä¹é´æ¯ç¦»æ£åé çï¼å æ¤ä¹åå¨ä¸ä¸ªé»è¾å°åå°ç©çå°åçæ å°å ³ç³»ï¼ç¸åºçå°±æ¯æ®µè¡¨æºå¶ã
å页ååæ®µæä»åºå«ï¼
- å页对ç¨åºåæ¯éæçï¼ä½æ¯å段éè¦ç¨åºåæ¾å¼ååæ¯ä¸ªæ®µã
- å页çå°åç©ºé´æ¯ä¸ç»´å°å空é´ï¼å段æ¯äºç»´çã
- 页ç大å°ä¸å¯åï¼æ®µç大å°å¯ä»¥å¨ææ¹åã
- å页主è¦ç¨äºå®ç°èæå åï¼ä»èè·å¾æ´å¤§çå°å空é´ï¼åæ®µä¸»è¦æ¯ä¸ºäºä½¿ç¨åºåæ°æ®å¯ä»¥è¢«åå为é»è¾ä¸ç¬ç«çå°å空é´å¹¶ä¸æå©äºå ±äº«åä¿æ¤ã
页é¢ç½®æ¢ç®æ³
为ä»ä¹è¦é¡µé¢ç½®æ¢ï¼
å 为åºç¨ç¨åºæ¯å夿¬¡è£ å ¥å åçï¼æä»¥è¿è¡å°ä¸å®çæ¶é´ï¼ä¸å®ä¼åç缺页ãå°åæ å°çè¿ç¨ä¸ï¼å¦æé¡µé¢ä¸åç°è¦è®¿é®ç页é¢ä¸å¨å åä¸ï¼ä¼äº§çç¼ºé¡µä¸æãæ¤æ¶æä½ç³»ç»å¿ é¡»å¨å åééæ©ä¸ä¸ªé¡µé¢æä»ç§»åºå åï¼ä¸ºå³å°è°å ¥ç页é¢è®©åºç©ºé´ãéæ©æ·æ±°åªä¸é¡µçè§åå°±æ¯é¡µé¢ç½®æ¢ç®æ³
å ç§é¡µé¢ç½®æ¢ç®æ³ï¼
æä½³ç½®æ¢ç®æ³ï¼çæ³ï¼ï¼å°å½å页é¢ä¸å¨æªæ¥æé¿æ¶é´å ä¸ä¼è¢«è®¿é®ç页置æ¢åºå»
å è¿å åºï¼æ·æ±°ææ©è°å ¥ç页é¢
æè¿æä¹ æªä½¿ç¨ LRUï¼æ¯ä¸ªé¡µé¢æä¸ä¸ªtæ¥è®°å½ä¸æ¬¡é¡µé¢è¢«è®¿é®ç´å°ç°å¨ï¼æ¯æ¬¡ç½®æ¢æ¶ç½®æ¢t弿大ç页é¢ï¼ç¨å¯å卿æ å®ç°ï¼
æ¶éç®æ³clockï¼ä¹è¢«ç§°ä¸ºæè¿æªä½¿ç¨ç®æ³NRUï¼ï¼é¡µé¢è®¾ç½®è®¿é®ä¸ºï¼å°é¡µé¢é¾æ¥ä¸ºä¸ä¸ªç¯å½¢åè¡¨ï¼æ¯ä¸ªé¡µæä¸ä¸ªè®¿é®ä½0/1, 1表示å䏿¬¡è·æçæºä¼ï¼ä¸æ¬¡å¾ªç¯æéæå宿¶å¯ä»¥å 餿¤æ¬¡ç½®æ¢ï¼ä½æ¯ä¼æè®¿é®ä½ç½®ä¸º0ï¼ ä»£è¡¨ä»ä¸æ¬¡å¦æç¢°å°å¾ªç¯æé就该被置æ¢äºã页é¢è¢«è®¿é®çæ¶å访é®ä½è®¾ä¸º1ã页é¢ç½®æ¢çæ¶åï¼å¦æå½åæéç访é®ä½ä¸º0ï¼ç½®æ¢ï¼å¦åå°è¿ä¸ªå¼ç½®ä¸º0ï¼å¾ªç¯ç´å°éå°è®¿é®ä½ä¸º0ç页é¢ã
æ¹è¿åClockç®æ³ï¼å¨clockç®æ³çåºç¡ä¸æ·»å ä¸ä¸ªä¿®æ¹ä½ï¼ä¼å æ¿æ¢è®¿é®ä½åä¿®æ¹ä½é½æ¯0ç页é¢ï¼å ¶æ¬¡æ¿æ¢è®¿é®ä½ä¸º0ä¿®æ¹ä½ä¸º1ç页é¢ã
æå°ä½¿ç¨ç®æ³LFUï¼è®¾ç½®å¯åå¨è®°å½é¡µé¢è¢«è®¿é®æ¬¡æ°ï¼æ¯æ¬¡ç½®æ¢å½åè®¿é®æ¬¡æ°æå°çã
ç¨æ·æåå æ ¸æ
å æ ¸æï¼cpuå¯ä»¥è®¿é®å åçæææ°æ®ï¼å æ¬å¤å´è®¾å¤ï¼ä¾å¦ç¡¬çï¼ç½å¡ï¼cpuä¹å¯ä»¥å°èªå·±ä»ä¸ä¸ªç¨åºåæ¢å°å¦ä¸ä¸ªç¨åºã
ç¨æ·æï¼åªè½åéç访é®å åï¼ä¸ä¸å 许访é®å¤å´è®¾å¤ï¼å ç¨cpuçè½å被å¥å¤ºï¼cpuèµæºå¯ä»¥è¢«å ¶ä»ç¨åºè·åã
æå¤§çåºå«å°±æ¯æéä¸åï¼å¨è¿è¡å¨ç¨æ·æä¸çç¨åºä¸è½ç´æ¥è®¿é®æä½ç³»ç»å æ ¸æ°æ®ç»æåç¨åºã
为ä»ä¹è¦æè¿ä¸¤ç§ç¶æï¼
å æ ¸éåº¦å¿«ä½æ¯èµæºæéï¼è½æ§å¶çè¿ç¨æ°ä¸å¤ï¼æä»¥éè¦éåº¦æ ¢ä¸äºçç¨æ·æåå©ï¼ä½æ¯ä¸ºäºé¿å ç¨æ·æè¢«æ¶æå©ç¨ï¼æä»¥éå¶äºç¨æ·æç¨åºçæéã
éè¦éå¶ä¸åçç¨åºä¹é´ç访é®è½åï¼é²æ¢ä»ä»¬è·åå«çç¨åºçå åæ°æ®ï¼æè è·åå¤å´è®¾å¤çæ°æ®ï¼å¹¶åéå°ç½ç»ï¼CPUåååºä¸¤ä¸ªæéç级 -- ç¨æ·æåå æ ¸æã
ä»ä¹æ¶å转æ¢
1ãç³»ç»è°ç¨ï¼
ç¨æ·è¿ç¨ä¸»å¨åèµ·çãç¨æ·æè¿ç¨éè¿ç³»ç»è°ç¨ç³è¯·ä½¿ç¨æä½ç³»ç»æä¾çæå¡ç¨åºå®æå·¥ä½ï¼æ¯å¦fork()å°±æ¯æ§è¡ä¸ä¸ªå建æ°è¿ç¨çç³»ç»è°ç¨
ç¨æ·ç¨åºä½¿ç¨ç³»ç»è°ç¨ï¼ç³»ç»è°ç¨ä¼è½¬æ¢ä¸ºå æ ¸æå¹¶è°ç¨æä½ç³»ç»
2ãåçå¼å¸¸ï¼
ä¼ä»å½åè¿è¡è¿ç¨åæ¢å°å¤ç次æ¤å¼å¸¸çå æ ¸ç¸å ³ç¨åºä¸
3ãå¤å´è®¾å¤ç䏿ï¼
ææç¨åºé½è¿è¡å¨ç¨æ·æï¼ä½å¨ä»ç¡¬çè¯»åæ°æ®ãæä»é®çè¾å ¥æ¶ï¼è¿äºäºæ åªææä½ç³»ç»è½åï¼ç¨åºéè¦åæä½ç³»ç»è¯·æ±ä»¥ç¨åºçå乿¥æ§è¡è¿äºæä½ãè¿ä¸ªæ¶åç¨æ·æç¨åºåæ¢å°å æ ¸æã
ä»ä¹æ¯ç¼å²åºæº¢åºï¼æä»ä¹å±å®³ï¼
ç¼å²åºæº¢åºæ¯æå½è®¡ç®æºåç¼å²åºå¡«å æ°æ®æ¶è¶ åºäºç¼å²åºæ¬èº«ç容éï¼æº¢åºçæ°æ®è¦çå¨åæ³æ°æ®ä¸ã
å±å®³æä»¥ä¸ä¸¤ç¹ï¼
- ç¨åºå´©æºï¼å¯¼è´æç»é¢æå¡
- è·³è½¬å¹¶ä¸æ§è¡ä¸æ®µæ¶æä»£ç
é æç¼å²åºæº¢åºç主è¦åå æ¯ç¨åºä¸æ²¡æä»ç»æ£æ¥ç¨æ·è¾å ¥ã
IOå¤è·¯å¤ç¨
IOå¤è·¯å¤ç¨æ¯æå æ ¸ä¸æ¦åç°è¿ç¨æå®çä¸ä¸ªæè å¤ä¸ªIOæ¡ä»¶åå¤è¯»åï¼å®å°±éç¥è¯¥è¿ç¨ãIOå¤è·¯å¤ç¨éç¨å¦ä¸åºåï¼
- å½å®¢æ·å¤çå¤ä¸ªæè¿°åæ¶ï¼ä¸è¬æ¯äº¤äºå¼è¾å ¥åç½ç»å¥æ¥å£ï¼ï¼å¿ 须使ç¨I/Oå¤ç¨ã
- å½ä¸ä¸ªå®¢æ·åæ¶å¤çå¤ä¸ªå¥æ¥å£æ¶ï¼èè¿ç§æ 嵿¯å¯è½çï¼ä½å¾å°åºç°ã
- 妿ä¸ä¸ªTCPæå¡å¨æ¢è¦å¤ççå¬å¥æ¥å£ï¼åè¦å¤çå·²è¿æ¥å¥æ¥å£ï¼ä¸è¬ä¹è¦ç¨å°I/Oå¤ç¨ã
- 妿ä¸ä¸ªæå¡å¨å³è¦å¤çTCPï¼åè¦å¤çUDPï¼ä¸è¬è¦ä½¿ç¨I/Oå¤ç¨ã
- 妿ä¸ä¸ªæå¡å¨è¦å¤çå¤ä¸ªæå¡æå¤ä¸ªåè®®ï¼ä¸è¬è¦ä½¿ç¨I/Oå¤ç¨ã
- ä¸å¤è¿ç¨åå¤çº¿ç¨ææ¯ç¸æ¯ï¼I/Oå¤è·¯å¤ç¨ææ¯çæå¤§ä¼å¿æ¯ç³»ç»å¼éå°ï¼ç³»ç»ä¸å¿ å建è¿ç¨/线ç¨ï¼ä¹ä¸å¿ ç»´æ¤è¿äºè¿ç¨/线ç¨ï¼ä»è大大åå°äºç³»ç»çå¼éã
