{"id":84030,"date":"2026-07-26T07:33:24","date_gmt":"2026-07-25T23:33:24","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/84030.html"},"modified":"2026-07-26T07:33:24","modified_gmt":"2026-07-25T23:33:24","slug":"%e3%80%8a%e6%b7%b1%e5%85%a5%e7%90%86%e8%a7%a3%e8%ae%a1%e7%ae%97%e6%9c%ba%e7%b3%bb%e7%bb%9f%e3%80%8b%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b016-%e5%85%a8%e4%b9%a6%e6%80%bb%e7%bb%93%ef%bc%9a%e4%b8%ba","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/84030.html","title":{"rendered":"\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f"},"content":{"rendered":"<h3>\u5168\u4e66\u603b\u7ed3&#xff1a;\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d&#xff1f;<\/h3>\n<p>\u4f5c\u8005: andylin02<br \/>\n\u5b66\u4e60\u7ae0\u8282: \u5168\u4e66\u603b\u89c8<br \/>\n\u5173\u952e\u8bcd&#xff1a; CSAPP&#xff1b;\u8ba1\u7b97\u673a\u7cfb\u7edf\u6f2b\u6e38&#xff1b;\u4fe1\u606f\u7684\u8868\u793a&#xff1b;\u673a\u5668\u7ea7\u8868\u793a&#xff1b;\u5904\u7406\u5668\u4f53\u7cfb\u7ed3\u6784&#xff1b;\u6027\u80fd\u4f18\u5316&#xff1b;\u5b58\u50a8\u5668\u5c42\u6b21\u7ed3\u6784&#xff1b;\u94fe\u63a5&#xff1b;\u5f02\u5e38\u63a7\u5236\u6d41&#xff1b;\u865a\u62df\u5185\u5b58&#xff1b;\u7cfb\u7edf\u7ea7I\/O&#xff1b;\u7f51\u7edc\u7f16\u7a0b&#xff1b;\u5e76\u53d1\u7f16\u7a0b&#xff1b;Data Lab&#xff1b;Bomb Lab&#xff1b;Attack Lab&#xff1b;Cache Lab&#xff1b;Shell Lab&#xff1b;Malloc Lab&#xff1b;Proxy Lab<\/p>\n<hr \/>\n<p>\u201c\u672c\u4e66\u7684\u6838\u5fc3\u4ef7\u503c\u5728\u4e8e&#xff0c;\u5b83\u4ee5\u4e00\u4efd Hello World \u7a0b\u5e8f\u5f00\u7bc7&#xff0c;\u5e26\u7740\u8bfb\u8005\u8d70\u5b8c\u4e86\u8fd9\u4e2a\u7b80\u5355\u7a0b\u5e8f\u5728\u8ba1\u7b97\u673a\u7cfb\u7edf\u4e2d\u7684\u6574\u4e2a\u751f\u547d\u5468\u671f\u3002\u901a\u8fc7\u5b66\u4e60\u672c\u4e66\u4e2d\u7684\u6982\u5ff5&#xff0c;\u6df1\u5165\u7406\u89e3\u5e95\u5c42\u8ba1\u7b97\u673a\u7cfb\u7edf\u4ee5\u53ca\u5b83\u5bf9\u5e94\u7528\u7a0b\u5e8f\u7684\u5f71\u54cd&#xff0c;\u4f60\u5c06\u6b65\u4e0a\u6210\u4e3a\u2018\u5927\u725b\u2019\u7684\u9053\u8def\u3002\u201d\u2014\u2014CSAPP \u4f5c\u8005<\/p>\n<p>\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b&#xff08;Computer Systems: A Programmer\u2019s Perspective&#xff0c;\u7b80\u79f0CSAPP&#xff09;\u88ab\u8a89\u4e3a\u8ba1\u7b97\u673a\u9886\u57df\u7684&#034;\u5723\u7ecf&#034;&#xff0c;\u8c46\u74e3\u8bc4\u5206\u9ad8\u8fbe9.8\u3002\u7531CMU\u6559\u6388Randal E. Bryant\u548cDavid R. O\u2019Hallaron\u5408\u8457&#xff0c;\u57fa\u4e8e\u5361\u5185\u57fa\u6885\u9686\u5927\u5b66\u7684&#034;\u8ba1\u7b97\u673a\u7cfb\u7edf\u5bfc\u8bba&#034;\u8bfe\u7a0b\u7f16\u5199&#xff0c;\u65e8\u5728\u4e3a\u8ba1\u7b97\u673a\u4e13\u4e1a\u5b66\u751f\u548c\u5f00\u53d1\u4eba\u5458\u6784\u5efa\u7cfb\u7edf\u6027\u77e5\u8bc6\u4f53\u7cfb\u3002<\/p>\n<p>\u5982\u679c\u628a\u8ba1\u7b97\u673a\u7cfb\u7edf\u7684\u77e5\u8bc6\u6bd4\u4f5c\u4e00\u5ea7\u5927\u53a6&#xff0c;CSAPP \u5c31\u50cf\u662f\u8fd9\u5f20\u5927\u53a6\u7684\u5b8c\u6574\u5efa\u9020\u84dd\u56fe\u3002\u5b83\u628a\u5927\u5b66\u8bfe\u7a0b\u4e2d\u770b\u4f3c\u72ec\u7acb\u7684\u300a\u8ba1\u7b97\u673a\u7ec4\u6210\u539f\u7406\u300b\u3001\u300a\u64cd\u4f5c\u7cfb\u7edf\u300b\u3001\u300a\u7f16\u8bd1\u539f\u7406\u300b\u548c\u300a\u8ba1\u7b97\u673a\u7f51\u7edc\u300b\u6709\u673a\u5730\u4e32\u8054\u8d77\u6765&#xff0c;\u4ece\u7a0b\u5e8f\u5458\u89c6\u89d2\u63ed\u793a&#034;\u5e95\u5c42\u5230\u5e95\u53d1\u751f\u4e86\u4ec0\u4e48&#034;\u3002<\/p>\n<h3>\u4e00\u3001\u5168\u4e66\u6982\u89c8<\/h3>\n<p>CSAPP \u5171\u5206 12 \u7ae0&#xff08;\u4ee5\u53ca\u9644\u5f55&#xff09;&#xff0c;\u5927\u81f4\u53ef\u5206\u4e3a\u4e09\u5927\u677f\u5757&#xff1a;<\/p>\n<p>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br \/>\n\u2502                    CSAPP \u5168\u4e66\u67b6\u6784\u793a\u610f\u56fe                                \u2502<br \/>\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2502   \u3010\u7b2c1\u7ae0\u3011\u8ba1\u7b97\u673a\u7cfb\u7edf\u6f2b\u6e38&#xff08;\u5168\u4e66\u7684\u201c\u603b\u7eb2\u201d&#xff09;                              \u2502<br \/>\n\u2502   \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510   \u2502<br \/>\n\u2502   \u2502         \u4ee5\u4e00\u4e2a Hello World \u7a0b\u5e8f\u8d2f\u7a7f\u6574\u4e2a\u8ba1\u7b97\u673a\u7cfb\u7edf            \u2502   \u2502<br \/>\n\u2502   \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518   \u2502<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2502   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550   \u2502<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2502   \u3010\u7b2c\u4e00\u90e8\u5206 \u7a0b\u5e8f\u7ed3\u6784\u548c\u6267\u884c\u3011&#xff08;1-6\u7ae0&#xff09;               \u3010\u7eaf\u786c\u4ef6\u89c6\u89d2\u3011   \u2502<br \/>\n\u2502   \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510   \u2502<br \/>\n\u2502   \u2502 2\u7ae0 \u2192 3\u7ae0 \u2192 4\u7ae0 \u2192 5\u7ae0 \u2192 6\u7ae0                                 \u2502   \u2502<br \/>\n\u2502   \u2502 \u4fe1\u606f\u7684\u8868\u793a \u2502 \u673a\u5668\u7ea7\u8868\u793a \u2502 \u5904\u7406\u5668\u8bbe\u8ba1 \u2502 \u6027\u80fd\u4f18\u5316 \u2502 \u7f13\u5b58\u4f53\u7cfb  \u2502   \u2502<br \/>\n\u2502   \u2502            \u6cbf\u6808\u6307\u9488\u5411\u4e0b\u8ffd\u6eaf\u6267\u884c\u8f6f\u4ef6\u7684\u672c\u8d28                    \u2502   \u2502<br \/>\n\u2502   \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518   \u2502<br \/>\n\u2502                              \u2502                                       \u2502<br \/>\n\u2502                              \u2193 &#xff08;\u501f\u52a9\u6c47\u7f16\/\u673a\u5668\u7801\u64cd\u4f5c\u5185\u5b58&#xff09;           \u2502<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2502   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550   \u2502<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2502   \u3010\u7b2c\u4e8c\u90e8\u5206 \u5728\u7cfb\u7edf\u4e0a\u8fd0\u884c\u7a0b\u5e8f\u3011&#xff08;7-9\u7ae0&#xff09;              \u3010\u8f6f\u4ef6\u5f15\u5165\u3011   \u2502<br \/>\n\u2502   \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510   \u2502<br \/>\n\u2502   \u2502 7\u7ae0 \u2192 8\u7ae0 \u2192 9\u7ae0                                             \u2502   \u2502<br \/>\n\u2502   \u2502 \u94fe\u63a5 \u2502 \u5f02\u5e38\u63a7\u5236\u6d41 \u2502 \u865a\u62df\u5185\u5b58                                 \u2502   \u2502<br \/>\n\u2502   \u2502    &#xff08;\u53ef\u8131\u79bbOS&#xff09;    &#xff08;\u4f9d\u8d56OS\u5e95\u5c42\u670d\u52a1&#xff09;           &#xff08;\u5f15\u5165OS&#xff09;    \u2502   \u2502<br \/>\n\u2502   \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518   \u2502<br \/>\n\u2502                              \u2502                                       \u2502<br \/>\n\u2502                              \u2193 &#xff08;\u5fc5\u987b\u4f9d\u8d56OS\u4e0e\u786c\u4ef6\u534f\u540c\u5b9e\u73b0&#xff09;          \u2502<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2502   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550   \u2502<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2502   \u3010\u7b2c\u4e09\u90e8\u5206 \u7a0b\u5e8f\u95f4\u7684\u4ea4\u4e92\u548c\u901a\u4fe1\u3011&#xff08;10-12\u7ae0&#xff09;        \u3010OS\u9ad8\u5c42\u62bd\u8c61\u3011   \u2502<br \/>\n\u2502   \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510   \u2502<br \/>\n\u2502   \u2502 10\u7ae0 \u2192 11\u7ae0 \u2192 12\u7ae0                                          \u2502   \u2502<br \/>\n\u2502   \u2502 \u7cfb\u7edf\u7ea7I\/O \u2502 \u7f51\u7edc\u7f16\u7a0b \u2502 \u5e76\u53d1\u7f16\u7a0b&#xff08;\u591a\u8fdb\u7a0b\/\u591a\u7ebf\u7a0b&#xff09;             \u2502   \u2502<br \/>\n\u2502   \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518   \u2502<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/p>\n<p>&#x1f4a1; \u677f\u5757\u8bbe\u8ba1\u903b\u8f91&#xff1a;\u5168\u4e66\u6cbf\u7740&#034;\u6570\u636e\u8868\u793a \u2192 CPU\u6267\u884c \u2192 \u7a0b\u5e8f\u8fd0\u884c \u2192 \u8fdb\u7a0b\u901a\u4fe1&#034;\u7684\u4e3b\u7ebf\u9010\u6b65\u6df1\u5165\u3002\u7b2c6\u7ae0\u4e4b\u524d\u4e3b\u8981\u7ed3\u5408\u6c47\u7f16\u8bb2\u89e3CPU\u548c\u5185\u5b58\u786c\u4ef6&#xff0c;\u4e0e\u88f8\u673a\u6253\u4ea4\u9053\u3002\u7b2c7\u7ae0\u5f15\u5165\u94fe\u63a5\u2014\u2014\u7531\u7f16\u8bd1\u5668\/\u94fe\u63a5\u5668\u5728\u7528\u6237\u6001\u5b8c\u6210&#xff0c;\u53ef\u8131\u79bb\u64cd\u4f5c\u7cfb\u7edf\u3002\u7b2c8\u7ae0\u8d77\u64cd\u4f5c\u7cfb\u7edf\u6982\u5ff5\u6b63\u5f0f\u767b\u573a\u2014\u2014\u8fdb\u7a0b\u3001\u865a\u62df\u5185\u5b58\u7b49\u9ad8\u5c42\u62bd\u8c61\u5fc5\u987b\u7531OS\u4e0e\u786c\u4ef6\u534f\u540c\u5b9e\u73b0&#xff0c;\u4f9d\u8d56\u4e2d\u65ad\u3001\u7279\u6743\u7ea7\u5207\u6362\u7b49\u5e95\u5c42\u673a\u5236\u3002<\/p>\n<h3>\u4e8c\u3001\u5168\u4e66\u7cbe\u534e\u5185\u5bb9\u603b\u7ed3<\/h3>\n<h4>\u7b2c1\u7ae0&#xff1a;\u8ba1\u7b97\u673a\u7cfb\u7edf\u6f2b\u6e38<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;\u786c\u4ef6\u7ec4\u6210&#xff1b;\u7f16\u8bd1\u7cfb\u7edf&#xff1b;\u5b58\u50a8\u5c42\u6b21&#xff1b;\u8fdb\u7a0b&#xff1b;\u865a\u62df\u5185\u5b58&#xff1b;\u5e76\u53d1\u4e0e\u5e76\u884c<\/p>\n<p>\u672c\u7ae0\u662f\u5168\u4e66\u7684&#034;\u603b\u7eb2&#034;\u3002\u4ece\u4e00\u4e2a\u6700\u7b80\u5355\u7684hello.c\u7a0b\u5e8f\u5165\u624b&#xff0c;\u5b8c\u6574\u8ddf\u8e2a\u4e86\u7a0b\u5e8f\u4ece\u7f16\u5199\u3001\u7f16\u8bd1\u3001\u94fe\u63a5\u3001\u52a0\u8f7d\u5230\u8fd0\u884c\u7684\u6574\u4e2a\u751f\u547d\u5468\u671f\u3002<\/p>\n<ul>\n<li>\u4fe1\u606f\u5c31\u662f\u4f4d &#043; \u4e0a\u4e0b\u6587&#xff1a;\u7cfb\u7edf\u4e2d\u6240\u6709\u4fe1\u606f\u90fd\u662f\u6bd4\u7279\u6d41&#xff0c;\u4e0a\u4e0b\u6587\u51b3\u5b9a\u89e3\u91ca\u65b9\u5f0f\u3002<\/li>\n<li>\u7f16\u8bd1\u7cfb\u7edf\u7684\u56db\u4e2a\u9636\u6bb5&#xff1a;\n<ul>\n<li>\u9884\u5904\u7406&#xff08;cpp&#xff09;&#xff1a;\u5904\u7406#include\u3001#define\u3002\u751f\u6210.i\u6587\u4ef6\u3002<\/li>\n<li>\u7f16\u8bd1&#xff08;ccl&#xff09;&#xff1a;C \u2192 \u6c47\u7f16\u3002\u751f\u6210.s\u6587\u4ef6\u3002<\/li>\n<li>\u6c47\u7f16&#xff08;as&#xff09;&#xff1a;\u6c47\u7f16 \u2192 \u673a\u5668\u7801\u3002\u751f\u6210.o\u76ee\u6807\u6587\u4ef6\u3002<\/li>\n<li>\u94fe\u63a5&#xff08;ld&#xff09;&#xff1a;\u5408\u5e76.o\u6587\u4ef6\u4e0e\u5e93\u3002\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u5b58\u50a8\u5c42\u6b21\u7ed3\u6784&#xff1a;L0&#xff08;\u5bc4\u5b58\u5668&#xff09;\u2192 L1\/L2\/L3&#xff08;Cache&#xff09;\u2192 L4&#xff08;\u4e3b\u5b58&#xff09;\u2192 L5\/L6&#xff08;\u78c1\u76d8\/\u7f51\u7edc&#xff09;&#xff0c;\u6bcf\u5c42\u4f5c\u4e3a\u4e0b\u4e00\u5c42\u7684&#034;\u7f13\u5b58&#034;\u3002<\/li>\n<li>\u64cd\u4f5c\u7cfb\u7edf\u62bd\u8c61&#xff1a;\u8fdb\u7a0b&#xff08;CPU&#043;\u5185\u5b58&#043;I\/O&#xff09;\u3001\u865a\u62df\u5185\u5b58&#xff08;\u4e3b\u5b58&#043;\u78c1\u76d8&#xff09;\u3001\u6587\u4ef6&#xff08;I\/O\u8bbe\u5907&#xff09;\u3002<\/li>\n<li>Amdahl\u5b9a\u5f8b&#xff1a;\u7cfb\u7edf\u52a0\u901f\u4e0a\u9650\u7531\u4e0d\u53ef\u4f18\u5316\u90e8\u5206\u51b3\u5b9a\u2014\u2014\u60f3\u83b7\u5f97\u663e\u8457\u52a0\u901f&#xff0c;\u5fc5\u987b\u4f18\u5316\u6267\u884c\u65f6\u95f4\u5360\u6bd4\u6700\u5927\u7684\u90e8\u5206\u3002<\/li>\n<li>\u5e76\u53d1 vs \u5e76\u884c&#xff1a;\u5e76\u53d1\u662f\u903b\u8f91\u540c\u65f6&#xff1b;\u5e76\u884c\u7684\u7269\u7406\u672c\u8eab&#xff08;\u591a\u6838\u540c\u65f6\u8fd0\u7b97&#xff09;\u3002<\/li>\n<\/ul>\n<p>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510<br \/>\n\u2502              \u7f16\u8bd1\u7cfb\u7edf\u6d41\u7a0b\u56fe&#xff08;\u7b2c1\u7ae0\u6838\u5fc3&#xff09;                              \u2502<br \/>\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2502   hello.c \u2500\u2500\u2192 \u9884\u5904\u7406\u5668 \u2500\u2500\u2192 hello.i \u2500\u2500\u2192 \u7f16\u8bd1\u5668 \u2500\u2500\u2192 hello.s           \u2502<br \/>\n\u2502   (\u6587\u672c)       (cpp)       (\u6587\u672c)       (ccl)       (\u6c47\u7f16)           \u2502<br \/>\n\u2502                                                      \u2502               \u2502<br \/>\n\u2502                                                      \u2193               \u2502<br \/>\n\u2502   hello \u2190\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u94fe\u63a5\u5668 \u2190\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hello.o \u2190\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u6c47\u7f16\u5668             \u2502<br \/>\n\u2502  (\u53ef\u6267\u884c)        (ld)         (\u76ee\u6807\u6587\u4ef6)         (as)                \u2502<br \/>\n\u2502                                                                      \u2502<br \/>\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/p>\n<h4>\u7b2c2\u7ae0&#xff1a;\u4fe1\u606f\u7684\u8868\u793a\u548c\u5904\u7406<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;\u65e0\u7b26\u53f7\u7f16\u7801&#xff1b;\u8865\u7801\u7f16\u7801&#xff1b;IEEE 754&#xff1b;\u6574\u6570\u8fd0\u7b97&#xff1b;\u4f4d\u8fd0\u7b97&#xff1b;\u6ea2\u51fa<\/p>\n<p>\u8ba1\u7b97\u673a\u4ee5\u4e8c\u8fdb\u5236\u5b58\u50a8\u6570\u636e\u3002\u672c\u7ae0\u6df1\u5165\u5c55\u5f00&#034;\u4fe1\u606f&#061;\u4f4d&#043;\u4e0a\u4e0b\u6587&#034;\u8fd9\u4e00\u89c2\u70b9&#xff0c;\u7814\u7a76\u4e09\u79cd\u6700\u91cd\u8981\u7684\u6570\u5b57\u8868\u793a&#xff1a;\u65e0\u7b26\u53f7\u7f16\u7801\u3001\u8865\u7801\u7f16\u7801\u548c\u6d6e\u70b9\u6570\u7f16\u7801\u3002<\/p>\n<p>\u6838\u5fc3\u77e5\u8bc6\u70b9&#xff1a;<\/p>\n<ul>\n<li>\u5341\u516d\u8fdb\u5236&#xff08;hex&#xff09;\u793a\u4f8b&#xff1a;0x141 &#061; 321&#xff0c;\u6bcf\u4e2a\u5341\u516d\u8fdb\u5236\u6570\u5b57\u5bf9\u5e94 4 \u4e2a\u4e8c\u8fdb\u5236\u4f4d\u3002<\/li>\n<li>\u5b57\u8282\u987a\u5e8f&#xff08;\u5927\u7aef\/\u5c0f\u7aef&#xff09;&#xff1a;int 0x01234567 \u5b58\u50a8\u65f6&#xff0c;\u5c0f\u7aef\u5e8f\u4e3a 67 45 23 01&#xff0c;\u5927\u7aef\u5e8f\u4e3a 01 23 45 67\u3002<\/li>\n<li>\u4f4d\u8fd0\u7b97&#xff08;&amp;\u3001|\u3001^\u3001~&#xff09;\u4e0e\u63a9\u7801&#xff1a;\u63a9\u7801\u662f\u4e00\u4e2a\u4f4d\u6a21\u5f0f&#xff0c;\u6307\u5b9a\u4ece\u5b57\u4e2d\u9009\u51fa\u7684\u4f4d\u96c6\u5408\u2014\u2014\u4f4d\u6e05\u96f6(x &amp; mask)\u3001\u4f4d\u7f6e 1(x | mask)\u3001\u4f4d\u7ffb\u8f6c(x ^ mask)\u3001\u4f4d\u63d0\u53d6(x &amp; mask)\u3002<\/li>\n<li>\u65e0\u7b26\u53f7\u6570\u7f16\u7801&#xff08;B2U&#xff09;\u4e0e\u8865\u7801\u7f16\u7801&#xff08;B2T&#xff09;&#xff1a;\n<ul>\n<li>\u65e0\u7b26\u53f7&#xff1a;(B2U_w(\\\\vec{x}) &#061; \\\\sum_{i&#061;0}^{w-1} x_i \\\\cdot 2^i)<\/li>\n<li>\u8865\u7801&#xff1a;(B2T_w(\\\\vec{x}) &#061; -x_{w-1} \\\\cdot 2^{w-1} &#043; \\\\sum_{i&#061;0}^{w-2} x_i \\\\cdot 2^i)<\/li>\n<\/ul>\n<\/li>\n<li>\u6574\u6570\u52a0\u6cd5\u6ea2\u51fa\u68c0\u6d4b\u4e0e\u9664\u4ee52\u7684\u5e42\u7684\u504f\u7f6e\u6280\u5de7\u3002<\/li>\n<li>IEEE 754 float\/double\u683c\u5f0f&#xff1a;V &#061; (-1)^s \u00d7 M \u00d7 2^E&#xff0c;\u89c4\u683c\u5316\/\u975e\u89c4\u683c\u5316\/\u7279\u6b8a\u503c\u7684\u5206\u7c7b\u3002<\/li>\n<\/ul>\n<p><span class=\"token comment\">\/\/ \u5b57\u8282\u5e8f\u68c0\u6d4b\u7a0b\u5e8f<\/span><br \/>\n<span class=\"token keyword\">typedef<\/span> <span class=\"token keyword\">unsigned<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>byte_pointer<span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">show_bytes<\/span><span class=\"token punctuation\">(<\/span>byte_pointer start<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">size_t<\/span> len<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">size_t<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> len<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%.2x &#034;<\/span><span class=\"token punctuation\">,<\/span> start<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u63a9\u7801\u64cd\u4f5c\u793a\u4f8b<\/span><br \/>\n<span class=\"token keyword\">int<\/span> x <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0x87654321<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%x\\\\n&#034;<\/span><span class=\"token punctuation\">,<\/span> x <span class=\"token operator\">&amp;<\/span> <span class=\"token number\">0xFF<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>     <span class=\"token comment\">\/\/ \u63d0\u53d6\u6700\u4f4e\u5b57\u8282: 0x21<\/span><br \/>\n<span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%x\\\\n&#034;<\/span><span class=\"token punctuation\">,<\/span> x <span class=\"token operator\">^<\/span> <span class=\"token operator\">~<\/span><span class=\"token number\">0xFF<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>    <span class=\"token comment\">\/\/ \u9664\u6700\u4f4e\u5b57\u8282\u5916\u5168\u90e8\u53d6\u53cd<\/span><br \/>\n<span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%x\\\\n&#034;<\/span><span class=\"token punctuation\">,<\/span> x <span class=\"token operator\">|<\/span> <span class=\"token number\">0xFF<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>     <span class=\"token comment\">\/\/ \u6700\u4f4e\u5b57\u8282\u5168\u7f6e1: 0x876543FF<\/span><\/p>\n<h4>\u7b2c3\u7ae0&#xff1a;\u7a0b\u5e8f\u7684\u673a\u5668\u7ea7\u8868\u793a<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;x86-64&#xff1b;\u5bc4\u5b58\u5668&#xff1b;\u6c47\u7f16\u8bed\u8a00&#xff1b;\u6808\u5e27&#xff1b;\u8fc7\u7a0b\u8c03\u7528&#xff1b;\u6761\u4ef6\u7801&#xff1b;\u5faa\u73af&#xff1b;\u8df3\u8f6c\u8868&#xff1b;\u7f13\u51b2\u533a\u6ea2\u51fa&#xff1b;Bomb Lab&#xff1b;Attack Lab<\/p>\n<p>\u672c\u7ae0\u63ed\u5f00\u9ad8\u7ea7\u8bed\u8a00&#xff08;C\u3001Java&#xff09;\u7684\u62bd\u8c61\u5c42&#xff0c;\u8fd1\u8ddd\u79bb\u89c2\u5bdf\u7a0b\u5e8f\u7684\u673a\u5668\u7ea7\u8868\u793a\u2014\u2014\u6c47\u7f16\u4ee3\u7801&#xff0c;\u662f\u5168\u4e66\u7684\u6838\u5fc3\u7ae0\u8282\u4e4b\u4e00\u3002<\/p>\n<p>x86-64\u5904\u7406\u5668\u72b6\u6001&#xff1a;<\/p>\n<ul>\n<li>%rip&#xff1a;\u7a0b\u5e8f\u8ba1\u6570\u5668&#xff08;PC&#xff09;&#xff0c;\u6307\u5411\u4e0b\u4e00\u6761\u6307\u4ee4\u5730\u5740\u3002<\/li>\n<li>16\u4e2a\u901a\u7528\u5bc4\u5b58\u5668&#xff08;%rax~%r15&#xff09;&#xff1a;\u7528\u4e8e\u53c2\u6570\u4f20\u9012\u3001\u5c40\u90e8\u53d8\u91cf\u3001\u8fd4\u56de\u503c\u3002\u6bcf\u4e2a\u5bc4\u5b58\u5668\u6709\u591a\u79cd\u5927\u5c0f\u8bbf\u95ee\u65b9\u5f0f\u2014\u2014%rax&#xff08;64\u4f4d&#xff09;\u3001%eax&#xff08;\u4f4e32\u4f4d&#xff09;\u3001%ax&#xff08;\u4f4e16\u4f4d&#xff09;\u3001%al&#xff08;\u4f4e8\u4f4d&#xff09;\u3002<\/li>\n<li>\u6761\u4ef6\u7801&#xff1a;CF&#xff08;\u8fdb\u4f4d&#xff09;\u3001ZF&#xff08;\u96f6&#xff09;\u3001SF&#xff08;\u7b26\u53f7&#xff09;\u3001OF&#xff08;\u6ea2\u51fa&#xff09;\u3002<\/li>\n<li>\u5411\u91cf\u5bc4\u5b58\u5668&#xff08;%xmm0~%xmm15&#xff09;&#xff1a;\u7528\u4e8e\u6d6e\u70b9\u8fd0\u7b97\u3002<\/li>\n<\/ul>\n<p>\u6838\u5fc3\u6307\u4ee4&#xff1a;<\/p>\n<ul>\n<li>\u6570\u636e\u4f20\u9001&#xff1a;movb\/w\/l\/q&#xff08;\u5206\u522b\u5bf9\u5e941\/2\/4\/8\u5b57\u8282&#xff09;\u3001movabsq&#xff08;\u7edd\u5bf964\u4f4d\u7acb\u5373\u6570&#xff09;\u3001pushq\/popq\u3002<\/li>\n<li>\u7b97\u672f\u8fd0\u7b97&#xff1a;leaq&#xff08;\u52a0\u8f7d\u6709\u6548\u5730\u5740&#xff0c;\u5e38\u7528\u4e8e\u7b97\u672f\u4f18\u5316&#xff09;\u3001addq\u3001subq\u3001imulq\u3001xor\/and\/or\u3001\u79fb\u4f4d&#xff08;salq\/shrq\/sarq&#xff09;\u3002<\/li>\n<li>\u63a7\u5236\u6d41&#xff1a;cmp\/test\u8bbe\u7f6e\u6761\u4ef6\u7801\u3001setXX\/jXX\u6761\u4ef6\u8df3\u8f6c\u3001cmovXX\u6761\u4ef6\u4f20\u9001\u3002<\/li>\n<li>\u8fc7\u7a0b\u8c03\u7528&#xff1a;call&#xff08;\u538b\u5165\u8fd4\u56de\u5730\u5740\u5e76\u8df3\u8f6c&#xff09;\u3001ret&#xff08;\u5f39\u51fa\u8fd4\u56de\u5730\u5740\u5e76\u8df3\u8f6c&#xff09;\u3002<\/li>\n<li>\u53c2\u6570\u4f20\u9012&#xff1a;\u524d6\u4e2a\u6574\u6570\/\u6307\u9488\u53c2\u6570\u7528%rdi\u3001%rsi\u3001%rdx\u3001%rcx\u3001%r8\u3001%r9\u4f20\u9012&#xff0c;\u8d85\u51fa\u90e8\u5206\u4ece\u53f3\u81f3\u5de6\u538b\u6808\u3002\u8fd4\u56de\u503c\u901a\u8fc7%rax\u8fd4\u56de\u3002<\/li>\n<\/ul>\n<p>; C\u4ee3\u7801: long absdiff(long x, long y) { if (x &lt; y) return y &#8211; x; else return x &#8211; y; }<br \/>\n; \u6c47\u7f16\u5b9e\u73b0&#xff08;-Og\u4f18\u5316&#xff09;<br \/>\nabsdiff:<br \/>\n    cmpq    %rsi, %rdi       # \u6bd4\u8f83 x \u548c y<br \/>\n    jge     .L2              # \u5982\u679c x &gt;&#061; y&#xff0c;\u8df3\u8fc7<br \/>\n    subq    %rdi, %rsi       # y &#8211; x<br \/>\n    movq    %rsi, %rax<br \/>\n    ret<br \/>\n.L2:<br \/>\n    subq    %rsi, %rdi       # x &#8211; y<br \/>\n    movq    %rdi, %rax<br \/>\n    ret<\/p>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;\u672c\u7ae0\u914d\u5957\u5b9e\u9a8c Bomb Lab&#xff08;\u53cd\u6c47\u7f16\u62c6\u89e3\u4e8c\u8fdb\u5236\u70b8\u5f39&#xff0c;\u5206\u6790\u6c47\u7f16\u627e\u51fa\u6b63\u786e\u8f93\u51656\u4e2a\u9636\u6bb5&#xff09;\u548c Attack Lab&#xff08;\u7f13\u51b2\u533a\u6ea2\u51fa\u653b\u51fb\u4e0e\u4ee3\u7801\u6ce8\u5165&#xff09;\u3002Bomb Lab \u9002\u5408\u5728\u9605\u8bfb 3.1\u20133.6 \u8282\u540e\u7acb\u5373\u52a8\u624b&#xff0c;Attack Lab \u5219\u9700\u5728\u7406\u89e3\u6808\u5e27\u7ed3\u6784\u548c\u7f13\u51b2\u533a\u6ea2\u51fa\u539f\u7406\u540e\u518d\u4e0a\u624b\u3002<\/p>\n<h4>\u7b2c4\u7ae0&#xff1a;\u5904\u7406\u5668\u4f53\u7cfb\u7ed3\u6784<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;Y86-64&#xff1b;ISA&#xff1b;SEQ&#xff1b;\u6d41\u6c34\u7ebf(PIPE)&#xff1b;\u6570\u636e\u5192\u9669&#xff1b;\u63a7\u5236\u5192\u9669&#xff1b;\u524d\u9012&#xff1b;Archlab<\/p>\n<p>\u672c\u7ae0\u5b9a\u4e49\u4e86\u4e00\u4e2a\u7b80\u5316\u7684Y86-64\u6307\u4ee4\u96c6&#xff0c;\u4ece\u96f6\u5f00\u59cb\u8bbe\u8ba1\u5904\u7406\u5668&#xff0c;\u7406\u89e3\u6307\u4ee4\u5982\u4f55\u5728\u7845\u7247\u4e2d\u88ab&#034;\u6267\u884c&#034;\u3002Y86-64\u6307\u4ee4\u91c7\u7528\u56fa\u5b9a\u957f\u5ea6\u7f16\u7801\u2014\u2014\u7b2c\u4e00\u4e2a\u5b57\u8282\u9ad84\u4f4d\u4e3aicode&#xff08;\u6307\u4ee4\u7801&#xff09;&#xff0c;\u4f4e4\u4f4d\u4e3aifun&#xff08;\u529f\u80fd\u7801&#xff09;\u3002\u5bc4\u5b58\u5668ID\u53d60x0~0xE\u5bf9\u5e9415\u4e2a\u5bc4\u5b58\u5668&#xff0c;0xF\u8868\u793a&#034;\u65e0\u5bc4\u5b58\u5668&#034;\u3002\u5e38\u6570\u5b57\u603b\u662f8\u5b57\u8282&#xff08;\u5c0f\u7aef&#xff09;\u3002<\/p>\n<ul>\n<li>\u6307\u4ee4\u5904\u7406\u76846\u4e2a\u9636\u6bb5&#xff1a;\u53d6\u6307(F)\u2192\u8bd1\u7801(D)\u2192\u6267\u884c(E)\u2192\u8bbf\u5b58(M)\u2192\u5199\u56de(W)\u2192\u66f4\u65b0PC\u3002\n<ul>\n<li>\u53d6\u6307(F)&#xff1a;\u4ecePC\u6307\u5411\u7684\u5185\u5b58\u8bfb\u6307\u4ee4\u5b57\u8282&#xff1b;\u8bd1\u7801(D)&#xff1a;\u4ece\u5bc4\u5b58\u5668\u6587\u4ef6\u8bfbvalA\/valB&#xff1b;\u6267\u884c(E)&#xff1a;ALU\u8ba1\u7b97&#xff1b;\u8bbf\u5b58(M)&#xff1a;\u8bfb\u5199\u5185\u5b58&#xff1b;\u5199\u56de(W)&#xff1a;\u5199\u56de\u5bc4\u5b58\u5668&#xff1b;\u66f4\u65b0PC&#xff1a;\u8bbe\u7f6e\u4e0b\u4e00\u6761\u6307\u4ee4\u5730\u5740\u3002<\/li>\n<\/ul>\n<\/li>\n<li>SEQ&#xff08;\u987a\u5e8f\u5b9e\u73b0&#xff09;&#xff1a;\u4e00\u4e2a\u65f6\u949f\u5468\u671f\u5185\u5b8c\u6210\u5168\u90e86\u9636\u6bb5&#xff0c;\u7b80\u5355\u4f46\u65f6\u949f\u5468\u671f\u957f\u3001\u6027\u80fd\u5dee\u3002<\/li>\n<li>\u6d41\u6c34\u7ebf\u539f\u7406&#xff1a;\u5206\u89e3\u4e3a5\u7ea7&#xff08;F\u2192D\u2192E\u2192M\u2192W&#xff09;&#xff0c;\u63d0\u9ad8\u541e\u5410\u7387\u22481\u6307\u4ee4\/\u5468\u671f\u3002<\/li>\n<li>\u4e09\u7c7b\u5192\u9669&#xff1a;\n<ul>\n<li>\u7ed3\u6784\u5192\u9669&#xff08;\u786c\u4ef6\u8d44\u6e90\u51b2\u7a81&#xff09;\u2192\u54c8\u4f5b\u7ed3\u6784&#xff08;\u6307\u4ee4\/\u6570\u636e\u5b58\u50a8\u5668\u5206\u79bb&#xff09;&#xff1b;<\/li>\n<li>\u6570\u636e\u5192\u9669&#xff08;RAW\u5199\u540e\u8bfb\u4f9d\u8d56&#xff09;\u2192\u524d\u9012&#xff0c;Load-Use\u5192\u914d\u7f6e\u6682\u505c1\u5468\u671f&#xff1b;<\/li>\n<li>\u63a7\u5236\u5192\u9669&#xff08;jXX\u8df3\u8f6c&#xff09;\u2192&#034;\u603b\u662f\u53d6&#034;\u5206\u652f\u9884\u6d4b&#xff0c;\u9884\u6d4b\u9519\u8bef\u65f6\u51b2\u5237\u6d41\u6c34\u7ebf\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u6d41\u6c34\u7ebf\u5b9e\u73b0PIPE&#xff1a;\u6d41\u6c34\u7ebf\u5bc4\u5b58\u5668\u95f4\u63d2\u5165\u4fdd\u7559\u7ad9\u3001\u91cd\u547d\u540d\u4e0e\u524d\u9012\u5904\u7406\u3002<\/li>\n<\/ul>\n<p># \u987a\u5e8f\u5904\u7406\u5668SEQ\u7684HCL\u63cf\u8ff0&#xff08;\u6307\u4ee4\u8ba1\u7b97\u90e8\u5206&#xff09;<br \/>\n# \u63a7\u5236\u4fe1\u53f7\u6839\u636eicode\u7801\u5b57\u51b3\u5b9a<br \/>\nword Out &#061; [<br \/>\n    s1 : expr1;    # \u9009\u62e9\u7b2c\u4e00\u79cd\u60c5\u51b5<br \/>\n    s2 : expr2;    # \u9009\u62e9\u7b2c\u4e8c\u79cd\u60c5\u51b5<br \/>\n    s3 : expr3;    # \u9009\u62e9\u7b2c\u4e09\u79cd\u60c5\u51b5<br \/>\n    1  : expr4;    # \u4ee5\u4e0a\u90fd\u4e0d\u6ee1\u8db3\u65f6&#xff0c;\u9009\u62e9expr4<br \/>\n];<\/p>\n<p># case \u8868\u8fbe\u5f0f\u4e0e\u96c6\u5408\u5173\u7cfb\u7684\u7ec4\u5408<br \/>\nbool need_regids &#061; icode in { IRRMOVQ, IOPQ, IPUSHQ, IPOPQ, IIRMOVQ, IRMMOVQ, IMRMOVQ };<\/p>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;\u672c\u7ae0\u914d\u5957\u5b9e\u9a8c Archlab \u4e09\u4e2a\u4efb\u52a1\u2014\u2014Part A: Y86-64\u6c47\u7f16\u7f16\u7a0b&#xff08;\u5b9e\u73b0\u94fe\u8868\u6c42\u548c\u7b49\u51fd\u6570&#xff09;&#xff1b;Part B: \u5411SEQ\u6dfb\u52a0iaddq\u6307\u4ee4&#xff08;\u4fee\u6539seq-full.hcl&#xff09;&#xff1b;Part C: \u4f18\u5316ncopy.ys\u548c\u6d41\u6c34\u7ebf&#xff0c;\u6700\u5c0f\u5316\u6bcf\u4e2a\u5143\u7d20\u7684\u5e73\u5747\u5468\u671f\u3002<\/p>\n<h4>\u7b2c5\u7ae0&#xff1a;\u4f18\u5316\u7a0b\u5e8f\u6027\u80fd<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;CPE&#xff1b;\u4ee3\u7801\u79fb\u52a8&#xff1b;\u6d88\u9664\u5185\u5b58\u5f15\u7528&#xff1b;\u5faa\u73af\u5c55\u5f00&#xff1b;\u591a\u8def\u5e76\u884c&#xff1b;\u91cd\u65b0\u7ed3\u5408&#xff1b;\u5ef6\u8fdf\u754c\u9650&#xff1b;\u541e\u5410\u91cf\u754c\u9650&#xff1b;PerfLab<\/p>\n<p>\u672c\u7ae0\u805a\u7126\u4e8e&#034;\u4ece\u6b63\u786e\u5230\u9ad8\u6548&#034;\u7684\u8fdb\u9636&#xff0c;\u5b66\u4e60\u5199\u51fa\u7f16\u8bd1\u5668\u53cb\u597d\u578b\u7684\u9ad8\u6027\u80fd\u4ee3\u7801\u3002<\/p>\n<p>\u6838\u5fc3\u4f18\u5316\u7b56\u7565\u6f14\u8fdb&#xff1a;<\/p>\n<li>\u7f16\u8bd1\u5668\u4f18\u5316\u9009\u9879&#xff08;-Og\u8c03\u8bd5\u3001-O1\u5f00\u53d1\u3001-O2\u751f\u4ea7\u3001-O3\u6fc0\u8fdb&#xff09;\u3002<\/li>\n<li>\u4ee3\u7801\u79fb\u52a8&#xff1a;\u4ece\u5faa\u73af\u4e2d\u63d0\u53d6\u4e0d\u53d8\u7684\u8ba1\u7b97\u3002<\/li>\n<li>\u6d88\u9664\u5185\u5b58\u5f15\u7528&#xff1a;\u4f7f\u7528\u5c40\u90e8\u53d8\u91cf&#xff08;\u7d2f\u52a0\u5668&#xff09;\u4ee3\u66ff\u53cd\u590d\u8bbf\u95ee\u5185\u5b58&#xff0c;\u907f\u514d\u5185\u5b58\u522b\u540d\u4f7f\u7528xp&#061;&#061;yp\u5bfc\u81f4\u7f16\u8bd1\u5668\u4fdd\u5b88\u4f18\u5316\u3002<\/li>\n<li>\u5faa\u73af\u5c55\u5f00&#xff08;\u7b80\u5355\u5c55\u5f002\u00d71&#xff09;&#xff1a;\u6bcf\u6b21\u8fed\u4ee3\u5904\u7406\u591a\u4e2a\u5143\u7d20&#xff0c;\u51cf\u5c11\u5faa\u73af\u5f00\u9500&#xff0c;\u4f46\u5173\u952e\u8def\u5f84\u64cd\u4f5c\u6570\u672a\u51cf\u5c11\u2192CPE\u4e0d\u53d8\u3002<\/li>\n<li>\u591a\u8def\u5e76\u884c\u5c55\u5f00&#xff08;2\u8def\u5e76\u884c&#xff09;&#xff1a;\u4f7f\u7528\u591a\u4e2a\u7d2f\u79ef\u53d8\u91cf\u6253\u7834\u6570\u636e\u4f9d\u8d56\u94fe&#xff0c;CPE\u4ece\u5ef6\u8fdfL\u964d\u81f3L\/2\u3002<\/li>\n<li>\u91cd\u65b0\u7ed3\u5408\u53d8\u6362&#xff1a;\u6539\u53d8\u5408\u5e76\u987a\u5e8f&#xff0c;\u521b\u5efa\u989d\u5916\u72ec\u7acb\u64cd\u4f5c&#xff0c;\u51cf\u5c11\u5173\u952e\u8def\u5f84\u957f\u5ea6\u3002<\/li>\n<p><span class=\"token comment\">\/\/ C\u4ee3\u7801: \u5411\u91cf\u6c42\u548c\u76847\u4e2a\u4f18\u5316\u7248\u672c\u6f14\u8fdb<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">combine1<\/span><span class=\"token punctuation\">(<\/span>vec_ptr v<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">data_t<\/span> <span class=\"token operator\">*<\/span>dest<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\">\/\/ v1: \u539f\u59cb<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">combine2<\/span><span class=\"token punctuation\">(<\/span>vec_ptr v<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">data_t<\/span> <span class=\"token operator\">*<\/span>dest<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\">\/\/ v2: \u4ee3\u7801\u79fb\u52a8(length\u63d0\u53d6)<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">combine3<\/span><span class=\"token punctuation\">(<\/span>vec_ptr v<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">data_t<\/span> <span class=\"token operator\">*<\/span>dest<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\">\/\/ v3: \u51cf\u5c11\u8c03\u7528(\u76f4\u63a5\u7528\u6307\u9488)<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">combine4<\/span><span class=\"token punctuation\">(<\/span>vec_ptr v<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">data_t<\/span> <span class=\"token operator\">*<\/span>dest<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\">\/\/ v4: \u6d88\u9664\u5185\u5b58\u5f15\u7528(\u5c40\u90e8acc)<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">combine5<\/span><span class=\"token punctuation\">(<\/span>vec_ptr v<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">data_t<\/span> <span class=\"token operator\">*<\/span>dest<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\">\/\/ v5: 2\u00d71\u7b80\u5355\u5c55\u5f00: CPE\u4e0d\u53d8<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">combine6<\/span><span class=\"token punctuation\">(<\/span>vec_ptr v<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">data_t<\/span> <span class=\"token operator\">*<\/span>dest<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>        <span class=\"token comment\">\/\/ v6: 2\u8def\u5e76\u884c\u5c55\u5f00 \u2192 CPE\u2248L\/2<\/span><br \/>\n    <span class=\"token class-name\">data_t<\/span> acc0 <span class=\"token operator\">&#061;<\/span> IDENT<span class=\"token punctuation\">,<\/span> acc1 <span class=\"token operator\">&#061;<\/span> IDENT<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> limit<span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        acc0 <span class=\"token operator\">&#061;<\/span> acc0 OP data<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        acc1 <span class=\"token operator\">&#061;<\/span> acc1 OP data<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">&#043;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">combine7<\/span><span class=\"token punctuation\">(<\/span>vec_ptr v<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">data_t<\/span> <span class=\"token operator\">*<\/span>dest<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>        <span class=\"token comment\">\/\/ v7: \u91cd\u65b0\u7ed3\u5408\u53d8\u6362<\/span><br \/>\n    acc <span class=\"token operator\">&#061;<\/span> acc <span class=\"token function\">OP<\/span> <span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> OP data<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">&#043;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>        <span class=\"token comment\">\/\/ \u5148\u5408\u5e76\u4e24\u4e2a\u6570\u636e\u5143\u7d20<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>CPE\u5ea6\u91cf&#xff1a;T(n) &#061; a &#043; b \u00d7 n&#xff0c;\u659c\u7387 b &#061; CPE\u3002\u6d88\u9664\u5185\u5b58\u5f15\u7528\u63d0\u5347\u7ea65\u500d&#xff0c;\u591a\u8def\u5e76\u884c\u5c55\u5f00\u518d\u63d0\u5347\u7ea62\u500d&#xff0c;\u6700\u7ec8\u6027\u80fd\u53ef\u8fbe\u521d\u59cb\u7248\u672c\u7ea620\u500d\u3002<\/p>\n<p>\u5ef6\u8fdf\u754c\u9650 vs \u541e\u5410\u91cf\u754c\u9650&#xff1a;\u5ef6\u8fdf\u754c\u9650&#xff08;\u6570\u636e\u4f9d\u8d56\u94fe\u9650\u5236&#xff09;\u3001\u541e\u5410\u91cf\u754c\u9650&#xff08;\u529f\u80fd\u5355\u5143\u7269\u7406\u6781\u9650\u662f\u5404\u529f\u80fd\u5355\u5143\u53d1\u5c04\u65f6\u95f4\u7684\u5012\u6570&#xff09;\u3002<\/p>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;Performance Lab&#xff08;PerfLab&#xff09;\u4f18\u5316\u56fe\u50cf\u5904\u7406&#xff08;rotate\u65cb\u8f6c\u3001smooth\u5e73\u6ed1&#xff09;&#xff0c;\u9700\u805a\u7126\u5185\u5b58\u8bbf\u95ee\u6a21\u5f0f\u4f18\u5316\u4e0e\u5206\u5757\u3002<\/p>\n<h4>\u7b2c6\u7ae0&#xff1a;\u5b58\u50a8\u5668\u5c42\u6b21\u7ed3\u6784<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;SRAM&#xff1b;DRAM&#xff1b;\u5c40\u90e8\u6027\u539f\u7406&#xff1b;\u9ad8\u901f\u7f13\u5b58&#xff1b;\u76f4\u63a5\u6620\u5c04&#xff1b;\u7ec4\u76f8\u8054&#xff1b;\u5168\u76f8\u8054&#xff1b;\u5199\u7b56\u7565&#xff1b;\u5206\u5757&#xff1b;Cache Lab<\/p>\n<p>\u672c\u7ae0\u63ed\u793aCPU\u4e0e\u4e3b\u5b58\u4e4b\u95f4\u7684\u901f\u5ea6\u9e3f\u6c9f\u2014\u2014\u201c\u5b58\u50a8\u5899\u201d&#xff08;Memory Wall&#xff09;&#xff0c;\u4ee5\u53ca\u5982\u4f55\u901a\u8fc7\u7f13\u5b58\u548c\u5c40\u90e8\u6027\u539f\u7406\u8de8\u8d8a\u5b83\u3002CPU\u8bbf\u95ee\u5bc4\u5b58\u56680\u5468\u671f&#xff0c;L1\/L2\/L3\u7f13\u5b584~75\u5468\u671f&#xff0c;\u4e3b\u5b58DRAM\u4e0a\u767e\u5468\u671f&#xff0c;\u78c1\u76d8\u6570\u5343\u4e07\u5468\u671f\u3002<\/p>\n<p>\u5c40\u90e8\u6027\u539f\u7406&#xff1a;\u65f6\u95f4\u5c40\u90e8\u6027&#xff08;\u88ab\u5f15\u7528\u7684\u4f4d\u7f6e\u8fd1\u671f\u53ef\u80fd\u518d\u6b21\u88ab\u5f15\u7528&#xff09;\u3001\u7a7a\u95f4\u5c40\u90e8\u6027&#xff08;\u88ab\u5f15\u7528\u4f4d\u7f6e\u9644\u8fd1\u4e5f\u53ef\u80fd\u88ab\u5f15\u7528&#xff09;\u3002\u6b65\u957f\u8d8a\u5c0f&#xff08;1\u4e3a\u4f18&#xff0c;\u6307\u987a\u5e8f\u8bbf\u95ee\u6570\u7ec4&#xff09;&#xff0c;\u7a7a\u95f4\u5c40\u90e8\u6027\u8d8a\u597d\u3002<\/p>\n<p>\u9ad8\u901f\u7f13\u5b58&#xff1a;\u5c06\u5730\u5740\u5206\u4e3atag&#xff08;\u6807\u8bb0&#xff09;\u3001set index&#xff08;\u7ec4\u7d22\u5f15&#xff09;\u3001block offset&#xff08;\u5757\u5185\u504f\u79fb&#xff09;&#xff0c;\u6839\u636e\u6620\u5c04\u65b9\u5f0f\u5b9a\u4f4d&#xff1a;<\/p>\n<ul>\n<li>\u76f4\u63a5\u6620\u5c04&#xff08;E&#061;1&#xff09;&#xff1a;\u7b80\u5355\u4f46\u51b2\u7a81\u4e25\u91cd&#xff1b;<\/li>\n<li>\u7ec4\u76f8\u8054&#xff08;1&lt;E&lt;C\/B&#xff09;&#xff1a;\u7f13\u89e3\u51b2\u7a81\u4f46\u786c\u4ef6\u5f00\u9500\u589e\u52a0&#xff1b;<\/li>\n<li>\u5168\u76f8\u8054&#xff08;E&#061;C\/B&#xff09;&#xff1a;\u65e0\u51b2\u7a81\u4f46\u786c\u4ef6\u6700\u590d\u6742&#xff0c;\u9002\u7528\u4e8eTLB\u7b49\u573a\u666f\u3002<\/li>\n<li>\u4e0d\u547d\u4e2d\u7c7b\u578b&#xff1a;\u5f3a\u5236\u6027\/\u51b7\u4e0d\u547d\u4e2d&#xff08;\u51b7\u542f\u52a8&#xff09;\u3001\u51b2\u7a81\u4e0d\u547d\u4e2d&#xff08;\u5bf9\u540c\u4e00\u7ec4\u7684\u6620\u5c04\u4f4d\u7f6e\u4e89\u62a2&#xff09;\u3001\u5bb9\u91cf\u4e0d\u547d\u4e2d&#xff08;\u5de5\u4f5c\u96c6&gt;\u7f13\u5b58\u5bb9\u91cf&#xff09;\u3002<\/li>\n<li>\u5199\u7b56\u7565&#xff1a;\u5199\u547d\u4e2d\u65f6\u201c\u5199\u76f4\u8fbe\u201d\u548c\u201c\u5199\u56de\u201d&#xff0c;\u5199\u7f3a\u5931\u65f6\u201c\u5199\u5206\u914d\u201d\u548c\u201c\u975e\u5199\u5206\u914d\u201d\u3002<\/li>\n<\/ul>\n<p>\u7f16\u5199\u7f13\u5b58\u53cb\u597d\u4ee3\u7801&#xff1a;\u7528\u5206\u5757\u4f18\u5316\u77e9\u9635\u4e58\u6cd5\u2014\u2014\u5c06\u5927\u77e9\u9635\u5212\u4e3a\u5757&#xff08;\u59828\u00d78&#xff09;&#xff0c;\u5757\u5185\u5b8c\u5168\u653e\u5165\u7f13\u5b58\u518d\u8fd0\u7b97&#xff0c;\u63a7\u5236\u547d\u4e2d\u7387&#xff0c;\u4ee5\u51cf\u5c11\u5bb9\u91cf\/\u51b2\u7a81\u4e0d\u547d\u4e2d\u3002<\/p>\n<p>\u5b58\u50a8\u5668\u5c71&#xff1a;\u8bfb\u541e\u5410\u91cf\u968f\u5de5\u4f5c\u96c6\u5927\u5c0f&#xff08;\u5c0f\u5757\u4f18\u4e8e\u5927\u5757&#xff09;\u548c\u8bbf\u95ee\u6b65\u957f&#xff08;\u5c0f\u6b65\u957f\u4f18\u4e8e\u5927\u6b65\u957f&#xff09;\u7684\u53d8\u5316\u51fd\u6570&#xff0c;\u4f53\u73b0\u6574\u673a\u7684\u5c40\u90e8\u6027\u6f5c\u529b\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u5206\u5757\u77e9\u9635\u4e58\u6cd5\u4f18\u5316<\/span><br \/>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#<\/span><span class=\"token directive keyword\">define<\/span> <span class=\"token macro-name\">BLOCK<\/span> <span class=\"token expression\"><span class=\"token number\">8<\/span><\/span><\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">matrix_multiply_block<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> n<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> A<span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> B<span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> C<span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&#043;&#061;<\/span> BLOCK<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> j <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> j <span class=\"token operator\">&#043;&#061;<\/span> BLOCK<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> k <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> k <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> k <span class=\"token operator\">&#043;&#061;<\/span> BLOCK<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i1 <span class=\"token operator\">&#061;<\/span> i<span class=\"token punctuation\">;<\/span> i1 <span class=\"token operator\">&lt;<\/span> i<span class=\"token operator\">&#043;<\/span>BLOCK<span class=\"token punctuation\">;<\/span> i1<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> k1 <span class=\"token operator\">&#061;<\/span> k<span class=\"token punctuation\">;<\/span> k1 <span class=\"token operator\">&lt;<\/span> k<span class=\"token operator\">&#043;<\/span>BLOCK<span class=\"token punctuation\">;<\/span> k1<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j1 <span class=\"token operator\">&#061;<\/span> j<span class=\"token punctuation\">;<\/span> j1 <span class=\"token operator\">&lt;<\/span> j<span class=\"token operator\">&#043;<\/span>BLOCK<span class=\"token punctuation\">;<\/span> j1<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                            C<span class=\"token punctuation\">[<\/span>i1<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>j1<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;&#061;<\/span> A<span class=\"token punctuation\">[<\/span>i1<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>k1<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> B<span class=\"token punctuation\">[<\/span>k1<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span>j1<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;Cache Lab Part A\u7528C\u5b9e\u73b0LRU\u7f13\u5b58\u6a21\u62df\u5668&#xff0c;\u89e3\u6790valgrind\u5185\u5b58\u8ddf\u8e2a\u6587\u4ef6\u8f93\u51fa\u547d\u4e2d\/\u672a\u547d\u4e2d\/\u9010\u51fa\u6570\u3002Part B\u4f18\u5316\u77e9\u9635\u8f6c\u7f6e&#xff1a;32\u00d732\u77e9\u9635\u4f7f\u75288\u00d78\u5206\u5757&#xff0c;64\u00d764\u77e9\u9635\u9700\u66f4\u7cbe\u7ec6\u7b56\u7565&#xff08;4\u00d74\u5206\u5757\u7ed3\u5408\u5bf9\u89d2\u7ebf\u7279\u6b8a\u5904\u7406&#xff09;&#xff0c;\u4ee5\u9002\u5e94\u76f4\u63a5\u6620\u5c04\u7f13\u5b58\u5e03\u5c40&#xff08;s&#061;5,E&#061;1,b&#061;5,\u575732\u5b57\u8282\u5b588\u4e2aint&#xff09;\u3002<\/p>\n<h4>\u7b2c7\u7ae0&#xff1a;\u94fe\u63a5<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;ELF&#xff1b;\u7b26\u53f7\u89e3\u6790&#xff1b;\u91cd\u5b9a\u4f4d&#xff1b;\u9759\u6001\u5e93&#xff1b;\u52a8\u6001\u94fe\u63a5&#xff1b;\u5171\u4eab\u5e93&#xff1b;\u4f4d\u7f6e\u65e0\u5173\u4ee3\u7801(PIC)&#xff1b;GOT&#xff1b;PLT<\/p>\n<p>\u94fe\u63a5\u662f\u7f16\u7a0b\u4e2d&#034;\u88ab\u5ffd\u89c6\u7684\u5173\u952e\u73af\u8282&#034;&#xff0c;\u5c06\u591a\u4e2a\u76ee\u6807\u6587\u4ef6\u7ec4\u5408\u4e3a\u4e00\u4e2a\u5355\u4e00\u53ef\u6267\u884c\u6587\u4ef6\u3002<\/p>\n<p>ELF\u76ee\u6807\u6587\u4ef6\u683c\u5f0f&#xff1a;.text&#xff08;\u673a\u5668\u7801&#xff09;\u3001.data&#xff08;\u5df2\u521d\u59cb\u5316\u5168\u5c40\/\u9759\u6001\u53d8\u91cf&#xff09;\u3001.bss&#xff08;\u672a\u521d\u59cb\u5316\/0\u521d\u59cb\u5316\u7684\u5168\u5c40\/\u9759\u6001\u53d8\u91cf&#xff0c;\u4e0d\u5360\u78c1\u76d8\u7a7a\u95f4&#xff09;\u3001.symtab&#xff08;\u7b26\u53f7\u8868&#xff09;\u3001.rel.text&#xff08;\u91cd\u5b9a\u4f4d\u4fe1\u606f&#xff09;\u3001.debug&#xff08;\u8c03\u8bd5\u4fe1\u606f&#xff09;\u7b49\u3002<\/p>\n<p>\u7b26\u53f7\u89e3\u6790\u4e09\u4e2a\u6838\u5fc3\u89c4\u5219&#xff1a;<\/p>\n<li>\u4e0d\u5141\u8bb8\u591a\u4e2a\u5f3a\u7b26\u53f7&#xff08;\u5982\u51fd\u6570\u548c\u5df2\u521d\u59cb\u5316\u7684\u5168\u5c40\u53d8\u91cf&#xff09;\u3002<\/li>\n<li>\u4e00\u4e2a\u5f3a\u7b26\u53f7 &#043; \u591a\u4e2a\u5f31\u7b26\u53f7&#xff08;\u672a\u521d\u59cb\u5316\u7684\u5168\u5c40\u53d8\u91cf&#xff09;\u2192 \u4efb\u9009\u5f3a\u7b26\u53f7&#xff0c;\u8b66\u544a&#xff1f;<\/li>\n<li>\u591a\u4e2a\u5f31\u7b26\u53f7 \u2192 \u4efb\u9009\u4e00\u4e2a\u3002-fno-common\u53ef\u5c06\u5f31\u7b26\u53f7\u8f6c\u4e3a\u5f3a\u7b26\u53f7&#xff0c;\u68c0\u6d4b\u9690\u85cf\u51b2\u7a81\u3002<\/li>\n<p>\u91cd\u5b9a\u4f4d&#xff1a;\u5206\u4e3a\u4e24\u4e2a\u6b65\u9aa4\u2014\u2014\u2460\u5408\u5e76\u76f8\u540c\u7c7b\u578b\u8282\u5e76\u8d4b\u8fd0\u884c\u65f6\u5185\u5b58\u5730\u5740&#xff1b;\u2461\u4fee\u6539\u4ee3\u7801\u548c\u6570\u636e\u7684\u7b26\u53f7\u5f15\u7528&#xff08;PC\u76f8\u5bf9\u5bfb\u5740R_X86_64_PC32\u548c\u7edd\u5bf9\u5bfb\u5740R_X86_64_32&#xff09;\u3002<br \/>\nPC\u76f8\u5bf9\u5bfb\u5740\u8ba1\u7b97\u516c\u5f0f&#xff1a;*refptr &#061; ADDR(r.symbol) &#043; r.addend &#8211; refaddr\u3002<\/p>\n<p>\u52a8\u6001\u94fe\u63a5\u4e0ePIC&#xff1a;\u5171\u4eab\u5e93.so&#xff0c;\u7f16\u8bd1\u65f6\u9644\u52a0-shared -fPIC\u3002\u4f4d\u7f6e\u65e0\u5173\u4ee3\u7801&#xff08;PIC&#xff09;&#xff1a;\u901a\u8fc7GOT&#xff08;\u5168\u5c40\u504f\u79fb\u8868&#xff09;\u95f4\u63a5\u5bfb\u5740\u6570\u636e&#xff0c;\u901a\u8fc7PLT&#xff08;\u8fc7\u7a0b\u94fe\u63a5\u8868&#xff09;&#043;GOT\u7ec4\u5408\u5b9e\u73b0\u5ef6\u8fdf\u7ed1\u5b9a&#xff08;\u51fd\u6570\u9996\u6b21\u8c03\u7528\u65f6\u624d\u89e3\u6790\u7b26\u53f7&#xff09;\u3002\u52a8\u6001\u94fe\u63a5\u5668ld-linux.so\u5728\u52a0\u8f7d\u6216\u8fd0\u884c\u65f6\u6267\u884c\u7b26\u53f7\u89e3\u6790\u3002<\/p>\n<p>\u5e93\u6253\u6869&#xff08;\u7f16\u8bd1\u65f6\u5b8f\u91cd\u5b9a\u4e49\u3001\u94fe\u63a5\u65f6&#8211;wrap\u3001\u8fd0\u884c\u65f6LD_PRELOAD&#xff09;\u2014\u2014\u65e0\u9700\u4fee\u6539\u76ee\u6807\u7a0b\u5e8f\u5c31\u80fd\u66ff\u6362\u7cfb\u7edf\u8c03\u7528&#xff0c;\u5e38\u7528\u4f5c\u8c03\u8bd5\u4e0e\u6027\u80fd\u5206\u6790\u5de5\u5177\u3002<\/p>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;Link Lab\u7528\u4e8c\u5236\u5236\u7f16\u8f91\u5de5\u5177\u4fee\u6539.o\u6587\u4ef6&#xff08;\u91cd\u5b9a\u4f4d\u8868\u3001\u4ee3\u7801\u8282\u6216\u6570\u636e\u8282&#xff09;&#xff0c;\u5b9e\u73b0\u94fe\u63a5\u540e\u7684\u9884\u671f\u8f93\u51fa&#xff0c;\u8986\u76d6\u7b26\u53f7\u89e3\u6790\u548c\u91cd\u5b9a\u4f4d\u4e8c\u8fdb\u5236\u5c42\u6b21\u7684\u5168\u6d41\u7a0b\u3002<\/p>\n<h4>\u7b2c8\u7ae0&#xff1a;\u5f02\u5e38\u63a7\u5236\u6d41<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;\u5f02\u5e38&#xff1b;\u4e2d\u65ad&#xff1b;\u9677\u9631&#xff1b;\u7cfb\u7edf\u8c03\u7528&#xff1b;\u8fdb\u7a0b&#xff1b;\u4e0a\u4e0b\u6587\u5207\u6362&#xff1b;\u4fe1\u53f7&#xff1b;Shell Lab<\/p>\n<p>\u63a7\u5236\u6d41\u7a81\u53d8&#034;\u5f02\u5e38&#034;\u2014\u2014\u5f02\u5e38\u662f\u786c\u4ef6\u548c\u64cd\u4f5c\u7cfb\u7edf\u7684\u5e95\u5c42\u4e2d\u63a7&#xff0c;\u4e5f\u662f\u7528\u6237\u7ea7\u6784\u9020\u7684\u57fa\u7840\u3002\u5f02\u5e38\u5206\u7c7b&#xff1a;\u4e2d\u65ad&#xff08;\u5f02\u6b65&#xff0c;\u6765\u81eaI\/O\u8bbe\u5907&#xff09;\u3001\u9677\u9631&#xff08;\u540c\u6b65&#xff0c;\u7cfb\u7edf\u8c03\u7528&#xff09;\u3001\u6545\u969c&#xff08;\u540c\u6b65&#xff0c;\u6bb5\u6545\u969c\u3001\u7f3a\u9875\u2192\u53ef\u4fee\u590d\u65f6\u91cd\u8bd5\u5f53\u524d\u6307\u4ee4&#xff09;\u3001\u7ec8\u6b62&#xff08;\u540c\u6b65&#xff0c;\u4e0d\u53ef\u6062\u590d\u786c\u4ef6\u9519\u8bef&#xff09;\u3002<\/p>\n<p>\u8fdb\u7a0b&#xff1a;\u6bcf\u4e2a\u8fdb\u7a0b\u62e5\u6709\u72ec\u7acb\u7684\u903b\u8f91\u63a7\u5236\u6d41&#xff08;\u597d\u50cf\u72ec\u5360CPU&#xff09;\u548c\u79c1\u6709\u5730\u5740\u7a7a\u95f4&#xff08;\u597d\u50cf\u72ec\u5360\u5185\u5b58&#xff09;\u3002\u8fdb\u7a0b\u72b6\u6001&#xff1a;\u7528\u6237\u6a21\u5f0f&#xff08;\u65e0\u7cfb\u7edf\u7ea7\u8d44\u6e90\u8bbf\u95ee&#xff09;\u3001\u5185\u6838\u6a21\u5f0f&#xff08;\u5168\u9762\u6743\u9650&#xff09;\u3002\u4e0a\u4e0b\u6587\u5207\u6362&#xff1a;\u901a\u8fc7\u5b9a\u65f6\u5668\u4e2d\u65ad\u6216\u7cfb\u7edf\u8c03\u7528\u89e6\u53d1&#xff0c;\u5185\u6838\u4fdd\u5b58\/\u6062\u590d\u5404\u8fdb\u7a0b\u5bc4\u5b58\u5668\u3001\u9875\u8868\u3001\u6587\u4ef6\u8868\u7b49\u4e0a\u4e0b\u6587\u3002<\/p>\n<p>\u8fdb\u7a0b\u63a7\u5236&#xff1a;<\/p>\n<ul>\n<li>fork()&#xff1a;\u5199\u65f6\u590d\u5236&#xff08;COW&#xff09;&#xff0c;\u8c03\u7528\u4e00\u6b21\u8fd4\u56de\u4e24\u6b21\u3002<\/li>\n<li>execve()&#xff1a;\u66ff\u6362\u8fdb\u7a0b\u6620\u50cf&#xff0c;\u8c03\u8bd5\u4e0d\u8fd4\u56de\u3002<\/li>\n<li>wait()\/waitpid()&#xff1a;\u56de\u6536\u50f5\u5c38\u8fdb\u7a0b\u3002<\/li>\n<li>exit()&#xff1a;\u7ec8\u6b62\u8fdb\u7a0b&#xff0c;\u8bbe\u7f6e\u9000\u51fa\u72b6\u6001\u3002<\/li>\n<\/ul>\n<p>\u4fe1\u53f7&#xff1a;\u8f6f\u4ef6\u4e2d\u65ad\u3002\u8fdb\u7a0b\u53ef\u963b\u585e&#xff08;sigprocmask&#xff09;\u6216\u63a5\u6536\u4fe1\u53f7&#xff08;SIGINT&#061;2\u3001SIGTSTP&#061;20\u3001SIGCHLD&#061;17&#xff09;\u5e76\u6267\u884chandler\u3002\u5f02\u6b65\u4fe1\u53f7\u5b89\u5168\u2014\u2014\u4fe1\u53f7\u5904\u7406\u51fd\u6570\u4e2d\u53ea\u80fd\u8c03\u7528write\u3001waitpid\u7b49\u5b89\u5168\u51fd\u6570&#xff0c;\u4e0d\u80fd\u7528printf\u3001malloc\u3001exit\u7b49\u975e\u5b89\u5168\u51fd\u6570\u3002<br \/>\n\u975e\u672c\u5730\u8df3\u8f6c setjmp\/longjmp&#xff1a;\u8de8\u8d8a\u591a\u4e2a\u6808\u5e27\u76f4\u63a5\u8df3\u56de&#xff0c;\u7528\u4e8e\u6df1\u5ea6\u5d4c\u5957\u9519\u8bef\u5904\u7406\/C&#043;&#043;\u5f02\u5e38\u5e95\u5c42\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u4fe1\u53f7\u5904\u7406\u4e0e\u963b\u585e\u793a\u4f8b<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">sigchld_handler<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> sig<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">waitpid<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> WNOHANG<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">;<\/span>    <span class=\"token comment\">\/\/ \u56de\u6536\u50f5\u5c38\u5b50\u8fdb\u7a0b<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">void<\/span> <span class=\"token function\">sigint_handler<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> sig<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\nCaught SIGINT!\\\\n&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">exit<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">int<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">Signal<\/span><span class=\"token punctuation\">(<\/span>SIGINT<span class=\"token punctuation\">,<\/span> sigint_handler<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>         <span class=\"token comment\">\/\/ \u6355\u83b7 Ctrl&#043;C<\/span><br \/>\n    <span class=\"token function\">Signal<\/span><span class=\"token punctuation\">(<\/span>SIGCHLD<span class=\"token punctuation\">,<\/span> sigchld_handler<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ \u6355\u83b7\u5b50\u8fdb\u7a0b\u72b6\u6001\u53d8\u5316<\/span><\/p>\n<p>    <span class=\"token class-name\">sigset_t<\/span> mask<span class=\"token punctuation\">,<\/span> prev<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">sigemptyset<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>mask<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">sigaddset<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>mask<span class=\"token punctuation\">,<\/span> SIGINT<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">sigprocmask<\/span><span class=\"token punctuation\">(<\/span>SIG_BLOCK<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&amp;<\/span>mask<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&amp;<\/span>prev<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>   <span class=\"token comment\">\/\/ \u963b\u585e SIGINT<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230; \u4e34\u754c\u533a\u4ee3\u7801 &#8230;<\/span><br \/>\n    <span class=\"token function\">sigprocmask<\/span><span class=\"token punctuation\">(<\/span>SIG_SETMASK<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&amp;<\/span>prev<span class=\"token punctuation\">,<\/span> <span class=\"token constant\">NULL<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6062\u590d\u539f\u6765\u7684\u4fe1\u53f7\u63a9\u7801<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;Shell Lab\u5b9e\u73b0\u652f\u6301\u4f5c\u4e1a\u63a7\u5236(jobs\/fg\/bg\/quit)\u548c\u4fe1\u53f7\u5904\u7406\u7684\u7b80\u6613Shell&#xff0c;\u7efc\u5408fork&#043;execve&#043;waitpid\u8fdb\u7a0b\u63a7\u5236&#xff0c;sigaction\u4fe1\u53f7\u6355\u83b7\u4e0esigprocmask\u963b\u585e\u65f6\u5e8f\u8bbe\u8ba1\u3002<\/p>\n<h4>\u7b2c9\u7ae0&#xff1a;\u865a\u62df\u5185\u5b58<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;\u7f3a\u9875\u5f02\u5e38&#xff1b;\u9875\u8868&#xff1b;MMU&#xff1b;TLB&#xff1b;\u591a\u7ea7\u9875\u8868&#xff1b;\u5185\u5b58\u6620\u5c04&#xff1b;mmap&#xff1b;\u52a8\u6001\u5185\u5b58\u5206\u914d&#xff1b;malloc&#xff1b;Malloc Lab<\/p>\n<p>\u865a\u62df\u5185\u5b58\u662f\u8ba1\u7b97\u673a\u7cfb\u7edf\u6700\u6210\u529f\u7684\u62bd\u8c61\u2014\u2014\u6bcf\u4e2a\u8fdb\u7a0b\u4ee5\u4e3a\u81ea\u5df1\u72ec\u5360\u6574\u4e2a\u5185\u5b58&#xff0c;\u80cc\u540e\u7531\u786c\u4ef6&#xff08;MMU&#xff09;\u548cOS\u5408\u4f5c\u5b9e\u73b0\u5730\u5740\u7ffb\u8bd1\u3002<\/p>\n<ul>\n<li>\u865a\u62df\u5730\u5740\u7a7a\u95f4VA&#xff1a;\u6bcf\u4e2a\u8fdb\u7a0b\u62e5\u6709\u7edf\u4e00\u7684\u5730\u5740\u7a7a\u95f4\u5e03\u5c40&#xff08;\u4ee3\u7801\u6bb5\u2192\u6570\u636e\u6bb5\u2192\u5806\u2192\u5171\u4eab\u5e93\u2192\u7528\u6237\u6808&#xff09;&#xff0c;\u7b80\u5316\u4e86\u94fe\u63a5\u3001\u52a0\u8f7d\u548c\u8fdb\u7a0b\u9694\u79bb\u3002<\/li>\n<li>\u865a\u62df\u9875&#xff08;VP&#xff09;\u4e0e\u7269\u7406\u9875&#xff08;PP&#xff09;&#xff1a;\u9875\u8868\u8d1f\u8d23\u5c06VP\u53f7\u6620\u5c04\u5230PP\u53f7\u6216\u78c1\u76d8\u4f4d\u7f6e\u3002<\/li>\n<li>\u5730\u5740\u7ffb\u8bd1\u6d41\u7a0b&#xff1a;CPU\u751f\u6210VA \u2192 MMU\u63d0\u53d6VPN \u2192 \u67e5\u9875\u8868&#xff08;\u547d\u4e2d\u5219\u5f97PPN&#xff09;\u2192 \u6784\u9020PA &#061; (PPN &lt;&lt; n) &#043; VPO\u3002<\/li>\n<li>TLB&#xff08;Translation Lookaside Buffer&#xff09;&#xff1a;MMU\u786c\u4ef6\u7f13\u5b58\u52a0\u901f\u9875\u8868\u67e5\u627e&#xff0c;\u51cf\u5c11\u591a\u7ea7\u8bbf\u95ee\u3002<\/li>\n<li>\u7f3a\u9875\u5f02\u5e38&#xff1a;\u5f53PTE\u6709\u6548\u4f4d\u4e3a0\u65f6\u89e6\u53d1&#xff0c;\u5185\u6838\u4ece\u78c1\u76d8\u52a0\u8f7d\u6240\u9700\u9875\u9762&#xff0c;\u66f4\u65b0\u9875\u8868\u540e\u91cd\u65b0\u6267\u884c\u539f\u6307\u4ee4\u3002<\/li>\n<li>\u5185\u5b58\u6620\u5c04&#xff08;mmap&#xff09; &#xff1a;\u5c06\u6587\u4ef6\u5185\u5bb9\u6620\u5c04\u5230\u8fdb\u7a0b\u865a\u62df\u5730\u5740\u7a7a\u95f4&#xff0c;\u5b9e\u73b0\u9ad8\u6027\u80fdI\/O\u548c\u5171\u4eab\u5185\u5b58\u3002<\/li>\n<li>\u52a8\u6001\u5185\u5b58\u5206\u914d&#xff1a;\u5806\u5206\u914d\u5668\u7ba1\u7406\u8fd0\u884c\u65f6\u5185\u5b58&#xff0c;\u6838\u5fc3\u7ed3\u6784&#xff1a;\n<ul>\n<li>\u5757\u7ed3\u6784&#xff1a;\u5934\u90e8&#xff08;\u5757\u5927\u5c0f&#043;\u5206\u914d\u4f4d&#xff09;\u3001\u8f7d\u8377&#xff08;payload&#xff09;\u3001\u5c3e\u90e8&#xff08;\u53ef\u9009&#xff0c;\u7528\u4e8e\u9690\u5f0f\u5408\u5e76&#xff09;\u3002<\/li>\n<li>\u9690\u5f0f\u7a7a\u95f2\u94fe\u8868&#xff1a;\u901a\u8fc7\u5934\u90e8\u5927\u5c0f\u5b57\u6bb5\u987a\u5e8f\u626b\u63cf&#xff1b;\u663e\u5f0f\u7a7a\u95f2\u94fe\u8868&#xff1a;\u7a7a\u95f2\u5757\u4e2d\u7528prev\/next\u6307\u9488\u8fde\u63a5&#xff0c;\u4ec5\u904d\u5386\u7a7a\u95f2\u5757&#xff1b;\u5206\u79bb\u9002\u914d&#xff1a;\u6309\u5927\u5c0f\u7c7b\u7ef4\u62a4\u591a\u4e2a\u94fe\u8868&#xff0c;glibc\u5b9e\u9645\u91c7\u7528\u3002<\/li>\n<li>\u5185\u5b58\u788e\u7247&#xff1a;\u5916\u90e8\u788e\u7247&#xff08;\u603b\u7a7a\u95f2\u8db3\u591f\u4f46\u65e0\u8fde\u7eed\u5927\u5757&#xff09;\u3001\u5185\u90e8\u788e\u7247&#xff08;\u5206\u914d\u5668\u5bf9\u9f50\/\u5934\u90e8\u7a7a\u95f4\u6d6a\u8d39&#xff09;\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span class=\"token comment\">\/\/ \u57fa\u672c\u5730\u5740\u7ffb\u8bd1\u5b8f&#xff08;\u9690\u5f0f\u7a7a\u95f2\u94fe\u8868&#xff09;<\/span><br \/>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#<\/span><span class=\"token directive keyword\">define<\/span> <span class=\"token macro-name function\">GET<\/span><span class=\"token expression\"><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">unsigned<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token operator\">*<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><br \/>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#<\/span><span class=\"token directive keyword\">define<\/span> <span class=\"token macro-name function\">HDRP<\/span><span class=\"token expression\"><span class=\"token punctuation\">(<\/span>bp<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">(<\/span>bp<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> WSIZE<span class=\"token punctuation\">)<\/span><\/span><\/span><br \/>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#<\/span><span class=\"token directive keyword\">define<\/span> <span class=\"token macro-name function\">FTRP<\/span><span class=\"token expression\"><span class=\"token punctuation\">(<\/span>bp<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">(<\/span>bp<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token function\">GET_SIZE<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">HDRP<\/span><span class=\"token punctuation\">(<\/span>bp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> DSIZE<span class=\"token punctuation\">)<\/span><\/span><\/span><br \/>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#<\/span><span class=\"token directive keyword\">define<\/span> <span class=\"token macro-name function\">PACK<\/span><span class=\"token expression\"><span class=\"token punctuation\">(<\/span>size<span class=\"token punctuation\">,<\/span> alloc<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>size<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">|<\/span> <span class=\"token punctuation\">(<\/span>alloc<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/span><\/span><\/p>\n<p><span class=\"token keyword\">int<\/span> <span class=\"token function\">mm_init<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    heap_listp <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">mem_sbrk<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">4<\/span><span class=\"token operator\">*<\/span>WSIZE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">PUT<\/span><span class=\"token punctuation\">(<\/span>heap_listp<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">PUT<\/span><span class=\"token punctuation\">(<\/span>heap_listp <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token operator\">*<\/span>WSIZE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">PACK<\/span><span class=\"token punctuation\">(<\/span>DSIZE<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5e8f\u8a00\u5757\u5934\u90e8<\/span><br \/>\n    <span class=\"token function\">PUT<\/span><span class=\"token punctuation\">(<\/span>heap_listp <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token operator\">*<\/span>WSIZE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">PACK<\/span><span class=\"token punctuation\">(<\/span>DSIZE<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5e8f\u8a00\u5757\u5c3e\u90e8<\/span><br \/>\n    <span class=\"token function\">PUT<\/span><span class=\"token punctuation\">(<\/span>heap_listp <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token operator\">*<\/span>WSIZE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">PACK<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>     <span class=\"token comment\">\/\/ \u7ed3\u5c3e\u5757<\/span><br \/>\n    heap_listp <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token operator\">*<\/span>WSIZE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">extend_heap<\/span><span class=\"token punctuation\">(<\/span>CHUNKSIZE<span class=\"token operator\">\/<\/span>WSIZE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u5783\u573e\u6536\u96c6&#xff1a;\u4fdd\u5b88\u7684\u6807\u8bb0-\u6e05\u626b&#xff0c;\u57fa\u4e8e\u53ef\u8fbe\u6808\u6307\u9488\u5224\u5b9a\u662f\u5426\u5b58\u6d3b\u3002<\/p>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;Malloc Lab\u5b9e\u73b0\u5b8c\u6574\u7684\u52a8\u6001\u5185\u5b58\u5206\u914d\u5668mm_init\/mm_malloc\/mm_free\/mm_realloc\u3002\u4f18\u5316\u6838\u5fc3\u2014\u2014\u663e\u5f0f\u7a7a\u95f2\u94fe\u8868\u4e0e\u5206\u79bb\u9002\u914d\u51cf\u5c11\u7ebf\u6027\u626b\u63cf\u5f00\u9500&#xff0c;\u6743\u8861\u541e\u5410\u7387\u548c\u7a7a\u95f4\u5229\u7528\u7387\u53cc\u6307\u6807\u3002<\/p>\n<h4>\u7b2c10\u7ae0&#xff1a;\u7cfb\u7edf\u7ea7I\/O<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;Unix I\/O&#xff1b;\u6587\u4ef6\u63cf\u8ff0\u7b26&#xff1b;\u63cf\u8ff0\u7b26\u8868\/\u6587\u4ef6\u8868\/v-node\u8868&#xff1b;RIO\u5305&#xff1b;\u6807\u51c6I\/O vs \u7cfb\u7edfI\/O&#xff1b;\u6587\u4ef6\u91cd\u5b9a\u5411<\/p>\n<p>\u672c\u7ae0\u4ece\u5185\u6838\u89c6\u89d2\u63a2\u7d22\u6587\u4ef6\u7cfb\u7edf\u3001I\/O\u64cd\u4f5c\u4ee5\u53ca\u7a0b\u5e8f\u4e0e\u5916\u90e8\u4e16\u754c\u7684\u4ea4\u4e92\u3002<\/p>\n<ul>\n<li>\u7edf\u4e00I\/O\u6a21\u578b&#xff1a;\u5185\u6838\u5c06I\/O\u8bbe\u5907&#xff08;\u78c1\u76d8\u3001\u7ec8\u7aef\u3001\u7f51\u7edc&#xff09;\u62bd\u8c61\u4e3a\u6587\u4ef6\u3002\u6587\u4ef6\u63cf\u8ff0\u7b26&#xff08;0&#061;stdin&#xff0c;1&#061;stdout&#xff0c;2&#061;stderr&#xff09;\u901a\u8fc7open\/close\/read\/write\u7cfb\u7edf\u8c03\u7528\u8bfb\u5199\u3002\u6210\u529f\u65f6\u8fd4\u56de\u6709\u7528\u7ed3\u679c&#xff08;\u5982\u6587\u4ef6\u63cf\u8ff0\u7b26&#xff09;&#xff0c;\u5931\u8d25\u65f6\u8fd4\u56de-1\u5e76\u7f6eerrno\u3002<\/li>\n<li>\u4e0d\u8db3\u503c\u5904\u7406\u65b9\u6cd5&#xff1a;read\/write\u5728\u7ec8\u7aef\u6216\u7f51\u7edc\u73af\u5883\u4e0b\u53ef\u80fd\u672a\u8bfb\u5b8c\u6570\u636e\u3002RIO\u5065\u58eeI\/O\u5305\u7528rio_readn\/rio_writen\u5faa\u73af\u8bfb\u5199\u786e\u4fdd\u7cbe\u786e\u5b57\u8282\u6570\u91cf&#xff0c;\u7528rio_readlineb\/rio_readnb\u901a\u8fc7\u7528\u6237\u7ea7\u7f13\u51b2\u533a\u5927\u5e45\u51cf\u5c11\u7cfb\u7edf\u8c03\u7528\u3002<\/li>\n<li>\u6587\u4ef6\u5171\u4eab&#xff1a;\u4e09\u4e2a\u5185\u6838\u6570\u636e\u7ed3\u6784\u2014\u2014\u6bcf\u4e2a\u8fdb\u7a0b\u72ec\u4eab\u63cf\u8ff0\u7b26\u8868\u3001\u5168\u7cfb\u7edf\u5171\u4eab\u7684\u6587\u4ef6\u8868&#xff08;\u542b\u6587\u4ef6\u4f4d\u7f6ek\u548c\u5f15\u7528\u8ba1\u6570&#xff09;\u548cv-node\u8868&#xff08;\u542bstat\u5143\u6570\u636e&#xff09;\u3002\u5b50\u8fdb\u7a0b\u590d\u5236\u6574\u4e2a\u63cf\u8ff0\u7b26\u8868&#xff0c;\u6587\u4ef6\u8868\u9879\u7684\u5f15\u7528\u8ba1\u6570\u968f\u4e4b\u589e\u52a0\u3002<\/li>\n<li>dup2\u91cd\u5b9a\u5411&#xff1a;\u4fee\u6539\u63cf\u8ff0\u7b26\u8868\u9879newfd&#xff0c;\u4f7f\u5176\u6307\u5411oldfd\u6240\u6307\u5411\u7684\u6587\u4ef6\u8868\u9879&#xff0c;\u5728Shell Lab\u4e2d\u5b9e\u73b0\u8f93\u5165\u8f93\u51fa\u91cd\u5b9a\u5411\u3002<\/li>\n<li>**\u6807\u51c6I\/O\u5e93(FILE *\u7f13\u51b2\u6d41)&#xff1a;\u5168\u7f13\u51b2&#xff08;\u78c1\u76d8\u6587\u4ef6&#xff09;\u3001\u884c\u7f13\u51b2&#xff08;\u7ec8\u7aef&#xff09;\u3001\u65e0\u7f13\u51b2&#xff08;stderr&#xff09;\u3002\u7f51\u7edc\u5957\u63a5\u5b57\u4e00\u822c\u4e0d\u9002\u7528&#xff08;\u7f13\u51b2\u8bed\u4e49\u590d\u6742\u4e14\u4f9d\u8d56\u3002<\/li>\n<\/ul>\n<p>\u6838\u5fc3\u5173\u7cfb&#xff1a;\u6587\u4ef6\u63cf\u8ff0\u7b26\u8868\u3001\u6587\u4ef6\u8868\u4e0ev-node\u8868\u534f\u540c\u5de5\u4f5c\u2014\u2014dup2\u6539\u53d8\u63cf\u8ff0\u7b26\u8868\u9879\u6307\u5411&#xff1b;fork\u590d\u5236\u6574\u4e2a\u63cf\u8ff0\u7b26\u8868&#xff0c;\u589e\u52a0\u6587\u4ef6\u8868\u5f15\u7528\u8ba1\u6570\u3002\u5173\u95ed\u63cf\u8ff0\u7b26\u65f6\u5f15\u7528\u8ba1\u6570\u51cf1&#xff0c;\u5f52\u96f6\u540e\u56de\u6536\u6761\u76ee\u3002<\/p>\n<h4>\u7b2c11\u7ae0&#xff1a;\u7f51\u7edc\u7f16\u7a0b<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;\u5ba2\u6237\u7aef-\u670d\u52a1\u5668\u6a21\u578b&#xff1b;\u5957\u63a5\u5b57&#xff1b;socket\/bind\/listen\/accept\/connect&#xff1b;HTTP\u534f\u8bae&#xff1b;Web\u670d\u52a1\u5668&#xff1b;Proxy Lab<\/p>\n<p>\u672c\u7ae0\u5c06\u8fdb\u7a0b\u3001\u4fe1\u53f7\u3001\u5b57\u8282\u987a\u5e8f\u3001\u5185\u5b58\u6620\u5c04\u3001I\/O\u7b49\u591a\u6a21\u5757\u878d\u4f1a\u8d2f\u901a&#xff0c;\u6784\u5efa\u7f51\u7edc\u5e94\u7528\u3002<\/p>\n<p>\u5ba2\u6237\u7aef-\u670d\u52a1\u5668\u6a21\u578b&#xff1a;\u670d\u52a1\u5668\u8fdb\u7a0b\u7ba1\u7406\u8d44\u6e90&#xff0c;\u5ba2\u6237\u7aef\u8fdb\u7a0b\u53d1\u8d77\u8bf7\u6c42\u3002\u4e8b\u52a1\u56db\u6b65\u2014\u2014\u53d1\u9001\u8bf7\u6c42\u2192\u64cd\u4f5c\u8d44\u6e90\u2192\u53d1\u9001\u54cd\u5e94\u2192\u5904\u7406\u54cd\u5e94\u3002<\/p>\n<p>TCP\/IP\u534f\u8bae\u6808&#xff1a;\u94fe\u8def\u5c42&#xff08;\u4ee5\u592a\u7f51&#xff09;\u2192 \u7f51\u7edc\u5c42&#xff08;IP&#xff1a;\u4e3b\u673a\u95f4\u4e0d\u53ef\u9760\u4f20\u8f93&#xff09;\u2192 \u4f20\u8f93\u5c42&#xff08;TCP\/UDP&#xff1a;UDP\u8fdb\u7a0b\u95f4\u4f20\u9001&#xff0c;TCP\u53ef\u9760\u5168\u53cc\u5de5&#xff09;\u2192 \u5e94\u7528\u5c42&#xff08;HTTP\u7b49&#xff09;\u3002<\/p>\n<p>\u5957\u63a5\u5b57\u63a5\u53e3\u51fd\u6570&#xff1a;<\/p>\n<ul>\n<li>socket&#xff1a;\u521b\u5efa\u5957\u63a5\u5b57\u63cf\u8ff0\u7b26&#xff08;\u4e3b\u52a8\/\u76d1\u542c&#xff09;&#xff1b;<\/li>\n<li>bind&#xff1a;\u5c06\u670d\u52a1\u5668\u5957\u63a5\u5b57\u7ed1\u5b9a\u77e5\u540d\u7aef\u53e3&#xff1b;<\/li>\n<li>listen&#xff1a;\u5c06\u4e3b\u52a8\u5957\u63a5\u5b57\u8f6c\u5316\u4e3a\u76d1\u542c\u5957\u63a5\u5b57&#xff1b;<\/li>\n<li>accept&#xff1a;\u63a5\u6536\u8fde\u63a5\u8bf7\u6c42\u8fd4\u56de\u5df2\u8fde\u63a5\u63cf\u8ff0\u7b26&#xff08;\u963b\u585e\u76f4\u5230\u8fde\u63a5\u5230\u8fbe&#xff09;&#xff1b;<\/li>\n<li>connect&#xff1a;\u5ba2\u6237\u7aef\u5efa\u7acb\u8fde\u63a5&#xff08;\u963b\u585e\u76f4\u5230\u5b8c\u6210\u6216\u51fa\u9519&#xff09;\u3002<\/li>\n<li>getaddrinfo\/getnameinfo&#xff08;\u73b0\u4ee3\u7528\u6cd5&#xff09;&#xff1a;\u534f\u8bae\u65e0\u5173\u7684\u5730\u5740\u8f6c\u6362&#xff0c;\u66ff\u4ee3gethostbyname\u3002<\/li>\n<\/ul>\n<p>HTTP\u534f\u8bae&#xff1a;\u8bf7\u6c42\u683c\u5f0f&lt;method&gt; &lt;uri&gt; &lt;version&gt;\\\\r\\\\n&lt;headers&gt;\\\\r\\\\n\\\\r\\\\n&lt;body&gt;\u3002\u54cd\u5e94\u683c\u5f0f&lt;version&gt; &lt;status-code&gt; &lt;status-message&gt;\\\\r\\\\n&lt;headers&gt;\\\\r\\\\n\\\\r\\\\n&lt;body&gt;\u3002\u72b6\u6001\u7801200 OK\/301 Moved Permanently\/302 Found\/400 Bad Request\/403 Forbidden\/404 Not Found\/500\u670d\u52a1\u5668\u5185\u90e8\u9519\u8bef\u3002<\/p>\n<p>Tiny Web\u670d\u52a1\u5668&#xff1a;\u96c6\u6210open_listenfd\u3001doit&#xff08;HTTP\u89e3\u6790&#xff09;\u3001parse_uri&#xff08;\u9759\u6001\u5185\u5bb9vs\u52a8\u6001\u5185\u5bb9CGI&#xff09;\u3001serve_static&#xff08;mmap\u65b9\u5f0f\u53d1\u9001\u6587\u4ef6&#xff09;\u548cserve_dynamic&#xff08;fork&#043;execve\u6267\u884cCGI\u7a0b\u5e8f&#xff09;\u3002<\/p>\n<p>\u5e76\u53d1\u670d\u52a1\u5668&#xff1a;\u9884\u89c8\u4e09\u79cd\u5e76\u53d1\u6a21\u5f0f&#xff08;\u8fdb\u7a0bfork\u3001I\/O\u591a\u8def\u590d\u7528select\/poll\/epoll\u3001\u7ebf\u7a0b&#xff09;\u3002<\/p>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;Proxy Lab\u4e09\u9636\u6bb5\u9012\u8fdb\u2014\u2014Part I\u987a\u5e8f\u4ee3\u7406&#xff08;\u89e3\u6790URL&#xff0c;\u7edd\u5bf9URI\u8f6c\u76f8\u5bf9URI&#xff0c;\u8f6c\u53d1\u6d88\u606f&#xff09;&#xff1b;Part II\u591a\u7ebf\u7a0b\u4ee3\u7406&#xff08;\u751f\u4ea7\u8005-\u6d88\u8d39\u8005\u6709\u754c\u7f13\u51b2\u533a\u5e76\u53d1&#xff09;&#xff1b;Part III\u5b9e\u73b0LRU\u7f13\u5b58&#xff08;\u8bfb\u8005-\u5199\u8005\u6a21\u578b&#xff09;\u3002\u8be5\u5b9e\u9a8c\u662f\u7f51\u7edc\u7f16\u7a0b\u548c\u5e76\u53d1\u7f16\u7a0b\u7684\u7efc\u5408\u6027\u7ec8\u6781\u6d4b\u8bc4\u3002<\/p>\n<h4>\u7b2c12\u7ae0&#xff1a;\u5e76\u53d1\u7f16\u7a0b<\/h4>\n<p>\u5173\u952e\u8bcd&#xff1a;\u8fdb\u7a0b&#xff1b;I\/O\u591a\u8def\u590d\u7528&#xff1b;\u7ebf\u7a0b&#xff1b;\u5171\u4eab\u53d8\u91cf&#xff1b;\u4fe1\u53f7\u91cf&#xff1b;\u4e92\u65a5\u751f\u4ea7\u8005-\u6d88\u8d39\u8005\u6a21\u578b&#xff1b;\u7ebf\u7a0b\u5b89\u5168&#xff1b;\u53ef\u91cd\u5165\u6027&#xff1b;\u6b7b\u9501<\/p>\n<p>\u672c\u7ae0\u662fCSAPP\u7ec8\u7ae0&#xff0c;\u7cfb\u7edf\u4ecb\u7ecd\u73b0\u4ee3\u5e76\u53d1\u7f16\u7a0b\u6838\u5fc3\u6280\u672f\u3002\u5e76\u53d1 &#061; \u903b\u8f91\u540c\u65f6&#xff08;\u5355\u6838\u4ea4\u66ff\u6267\u884c&#xff09;&#xff0c;\u5e76\u884c &#061; \u7269\u7406\u540c\u65f6&#xff08;\u591a\u6838\u771f\u6b63\u540c\u65f6&#xff09;\u3002<\/p>\n<p>\u4e09\u79cd\u5e76\u53d1\u6a21\u578b\u5bf9\u6bd4&#xff1a;<\/p>\n<ul>\n<li>\u8fdb\u7a0b\u6a21\u578b&#xff1a;fork&#xff0c;\u5730\u5740\u7a7a\u95f4\u9694\u79bb\u5b89\u5168&#xff0c;IPC\u5f00\u9500\u5927&#xff0c;\u56de\u6536SIGCHLD\u4fe1\u53f7\u3002<\/li>\n<li>I\/O\u591a\u8def\u590d\u7528\u6a21\u578b&#xff1a;select\/poll\/epoll&#xff0c;\u4e8b\u4ef6\u9a71\u52a8\u72b6\u6001\u673a&#xff0c;\u9ad8\u6548\u4f46\u7f16\u7801\u590d\u6742&#xff0c;\u65e0\u6cd5\u5229\u7528\u591a\u6838\u3002<\/li>\n<li>\u7ebf\u7a0b\u6a21\u578b&#xff1a;Pthread&#xff08;pthread_create\u3001pthread_join\u3001pthread_detach&#xff09;&#xff0c;\u5171\u4eab\u5730\u5740\u7a7a\u95f4\u7684\u8f7b\u91cf\u7ea7\u6267\u884c\u6d41&#xff0c;\u540c\u6b65\u673a\u5236\u590d\u6742\u3002\u7ebf\u7a0b\u79c1\u6709&#xff1a;\u6808\u3001PC\u3001TID\u3001\u5bc4\u5b58\u5668&#xff1b;\u5171\u4eab&#xff1a;\u4ee3\u7801\u6bb5\u3001\u6570\u636e\u6bb5\u3001\u5806\u3001\u6253\u5f00\u7684\u6587\u4ef6\u3002<\/li>\n<\/ul>\n<p>\u5171\u4eab\u53d8\u91cf\u4e0e\u540c\u6b65&#xff1a;<\/p>\n<ul>\n<li>\u5168\u5c40\u53d8\u91cf&#xff08;\u5171\u4eab&#xff09;&#xff0c;\u672c\u5730\u9759\u6001\u53d8\u91cf&#xff08;\u5171\u4eab&#xff09;&#xff0c;\u672c\u5730\u81ea\u52a8\u53d8\u91cf&#xff08;\u7ebf\u7a0b\u79c1\u6709&#xff09;\u3002<\/li>\n<li>\u4fe1\u53f7\u91cf&#xff08;Dijkstra&#xff09;&#xff1a;P(s)&#xff08;sem_wait&#xff09;&#xff1a;s&gt;0\u65f6s\u2013&#xff0c;\u5426\u5219\u963b\u585e&#xff1b;V(s)&#xff08;sem_post&#xff09;&#xff1a;s&#043;&#043;\u5e76\u5524\u9192\u7b49\u5f85\u7ebf\u7a0b\u3002<\/li>\n<li>\u7ecf\u5178\u540c\u6b65\u6a21\u578b&#xff1a;\u751f\u4ea7\u8005-\u6d88\u8d39\u8005&#xff08;\u6709\u754c\u7f13\u51b2\u533a&#xff09;\u7528slots&#043;items\u4fe1\u53f7\u91cf&#043;mutex&#xff1b;\u8bfb\u8005-\u5199\u8005\u901a\u8fc7\u4fe1\u53f7\u91cf\u533a\u5206\u8bfb\u5199\u9501\u3002<\/li>\n<\/ul>\n<p>\u7ebf\u7a0b\u5b89\u5168\u4e0e\u53ef\u91cd\u5165\u6027&#xff1a;<\/p>\n<ul>\n<li>\u56db\u7c7b\u4e0d\u5b89\u5168\u51fd\u6570&#xff1a;\u4e0d\u4fdd\u62a4\u5171\u4eab\u53d8\u91cf\u3001\u4f9d\u8d56\u8de8\u8c03\u7528\u72b6\u6001&#xff08;rand&#xff09;\u3001\u8fd4\u56de\u9759\u6001\u6570\u636e\u6307\u9488&#xff08;ctime&#xff09;\u3001\u8c03\u7528\u4e0d\u5b89\u5168\u51fd\u6570\u3002<\/li>\n<li>\u53ef\u91cd\u5165\u51fd\u6570&#xff1a;\u4e0d\u5f15\u7528\u5171\u4eab\u6570\u636e&#xff0c;\u53ea\u4f9d\u8d56\u53c2\u6570&#xff0c;\u7ebf\u7a0b\u5b89\u5168\u51fd\u6570\u7684\u771f\u5b50\u96c6\u3002\u7eaf\u51fd\u6570\u5929\u7136\u7ebf\u7a0b\u5b89\u5168\u4e14\u65e0\u9700\u52a0\u9501&#xff0c;\u6027\u80fd\u66f4\u4f18\u3002<\/li>\n<\/ul>\n<p>\u5e76\u53d1\u5e38\u89c1\u9677\u9631&#xff1a;<\/p>\n<ul>\n<li>\u7ade\u4e89&#xff08;\u987a\u5e8f\u4e0d\u6070\u5f53&#xff09;&#xff1a;\u65e0\u65f6\u949f\u524d\u68c0\u67e5\u8bbf\u95ee\u5171\u4eab\u6570\u636e\u5bfc\u81f4\u3002<\/li>\n<li>\u6b7b\u9501&#xff08;\u4e92\u65a5\u7b49\u5f85\u5faa\u73af&#xff09;&#xff1a;\u6309\u56fa\u5b9a\u5168\u5c40\u987a\u5e8f\u83b7\u53d6\u9501\u6765\u907f\u514d\u5faa\u73af\u4f9d\u8d56\u3002<\/li>\n<\/ul>\n<p>&#x1f4a1; \u5b9e\u9a8c\u5173\u8054&#xff1a;Proxy Lab\u4e8c\u3001\u4e09\u9636\u6bb5\u7531\u751f\u4ea7\u8005-\u6d88\u8d39\u8005\u6709\u754c\u7f13\u51b2\u6c60\u5b9e\u73b0\u591a\u7ebf\u7a0b\u5e76\u53d1&#xff0c;LRU\u7f13\u5b58\u8bfb\u8005-\u5199\u8005\u6a21\u578b\u3002Malloc Lab\u4e0ePerfLab\u7b49\u5b9e\u9a8c\u4e5f\u5145\u5206\u5229\u7528\u7ebf\u7a0b\u5b89\u5168\u7684\u5e76\u53d1\u8bbe\u8ba1\u3002<\/p>\n<h3>\u4e09\u3001\u4e03\u4e2a\u7ecf\u5178\u6838\u5fc3\u5b9e\u9a8c<\/h3>\n<p>\u201c\u518d\u591a\u7406\u8bba\u4e5f\u4e0d\u5982\u4eb2\u624b\u505a\u4e00\u904d\u5b9e\u9a8c\u3002\u4f60\u5982\u679c\u80fd\u628a\u8fd97\u4e2alab\u505a\u5b8c&#xff0c;\u4f60\u5bf9\u8ba1\u7b97\u673a\u7684\u4f1a\u6709\u975e\u5e38\u5168\u9762\u7684\u7406\u89e3&#xff0c;\u4ee5\u540e\u4e0d\u7ba1\u4f60\u4ece\u4e8b\u54ea\u65b9\u9762\u7684\u5de5\u4f5c\u6216\u8005\u7814\u7a76&#xff0c;\u4f60\u7edd\u5bf9\u4f1a\u4ece\u4e2d\u53d7\u76ca\u3002\u201d\u2014\u2014CSAPP\u793e\u533a\u5171\u8bc6<\/p>\n<table>\n<tr>\u5e8f\u53f7\u5b9e\u9a8c\u540d\u79f0\u5bf9\u5e94\u7ae0\u8282\u6838\u5fc3\u6311\u6218\u5b9e\u9645\u5de5\u7a0b\u6536\u76ca<\/tr>\n<tbody>\n<tr>\n<td align=\"center\">1<\/td>\n<td align=\"left\">Data Lab<\/td>\n<td align=\"center\">\u7b2c2\u7ae0<\/td>\n<td align=\"left\">\u53d7\u9650C\u5b50\u96c6\u5b9e\u73b0\u4f4d\u8fd0\u7b97\u3001\u6574\u6570\u548c\u6d6e\u70b9\u6570\u51fd\u6570\u3002<\/td>\n<td align=\"left\">\u6df1\u523b\u7406\u89e3\u6570\u636e\u5728\u4e8c\u8fdb\u5236\u7684\u8868\u793a&#xff0c;\u4e3a\u4f4d\u63a9\u7801\u3001\u5e95\u5c42\u4f18\u5316\u6253\u4e0b\u57fa\u7840<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">2<\/td>\n<td align=\"left\">Bomb Lab<\/td>\n<td align=\"center\">\u7b2c3\u7ae0<\/td>\n<td align=\"left\">\u53cd\u6c47\u7f16\u62c6\u89e3\u4e8c\u8fdb\u5236\u70b8\u5f39&#xff0c;\u5206\u6790\u627e\u51fa6\u4e2a\u9636\u6bb5\u6b63\u786e\u8f93\u5165\u5b57\u7b26\u4e32\u3002<\/td>\n<td align=\"left\">\u6c47\u7f16\u9605\u8bfb\u529f\u5e95\u5feb\u901f\u63d0\u5347&#xff0c;\u638c\u63e1GDB\u5355\u6b65\u8c03\u8bd5<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">3<\/td>\n<td align=\"left\">Attack Lab<\/td>\n<td align=\"center\">\u7b2c3\u7ae0<\/td>\n<td align=\"left\">\u7f13\u51b2\u533a\u6ea2\u51fa\u6ce8\u5165\u4ee3\u7801&#xff0c;ROP\u653b\u51fb\u7ed5\u8fc7\u6808\u4fdd\u62a4\u3002<\/td>\n<td align=\"left\">\u771f\u6b63\u7406\u89e3\u6808\u5e27\u5e03\u5c40\u548c\u5b89\u5168\u9632\u5fa1\u673a\u5236<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">4<\/td>\n<td align=\"left\">Cache Lab<\/td>\n<td align=\"center\">\u7b2c6\u7ae0<\/td>\n<td align=\"left\">\u5b9e\u73b0LRU\u7f13\u5b58\u6a21\u62df\u5668(Part A)&#xff1b;\u4f18\u5316\u77e9\u9635\u8f6c\u7f6emiss\u6570&#xff08;Part B&#xff09;\u3002<\/td>\n<td align=\"left\">\u7406\u89e3\u5c40\u90e8\u6027\u539f\u7406&#xff0c;\u5199\u51fa\u7f13\u5b58\u53cb\u597d\u7684\u4ee3\u7801<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">5<\/td>\n<td align=\"left\">Shell Lab<\/td>\n<td align=\"center\">\u7b2c8\u7ae0<\/td>\n<td align=\"left\">\u5b9e\u73b0\u652f\u6301\u4f5c\u4e1a\u63a7\u5236&#xff08;jobs\/fg\/bg&#xff09;\u7684Shell\u3002<\/td>\n<td align=\"left\">\u7efc\u5408\u4e86\u8fdb\u7a0b\u63a7\u5236\u3001\u4fe1\u53f7\u5904\u7406\u548cI\/O\u91cd\u5b9a\u5411\u7684\u7cfb\u7edf\u7ea7\u7f16\u7a0b<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">6<\/td>\n<td align=\"left\">Malloc Lab<\/td>\n<td align=\"center\">\u7b2c9\u7ae0<\/td>\n<td align=\"left\">\u5b8c\u6574\u5b9e\u73b0\u52a8\u6001\u5185\u5b58\u5206\u914d\u5668&#xff08;mm_init\/mm_malloc\/mm_free\/mm_realloc&#xff09;\u3002<\/td>\n<td align=\"left\">\u6df1\u523b\u7406\u89e3\u5806\u7ba1\u7406\u3001\u5185\u5b58\u788e\u7247\u548c\u5206\u914d\u5668\u7684\u6027\u80fd\u6743\u8861<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">7<\/td>\n<td align=\"left\">Proxy Lab<\/td>\n<td align=\"center\">\u7b2c11-12\u7ae0<\/td>\n<td align=\"left\">\u591a\u7ebf\u7a0bWeb\u4ee3\u7406&#043;LRU\u7f13\u5b58&#043;\u6709\u754c\u7f13\u51b2\u533a\u751f\u4ea7\u8005-\u6d88\u8d39\u8005\u5e76\u53d1\u3002<\/td>\n<td align=\"left\">\u7f51\u7edc\u7f16\u7a0b\u3001\u5e76\u53d1\u7f16\u7a0b\u548c\u7f13\u5b58\u7b56\u7565\u7684\u7efc\u5408\u6027\u7ec8\u6781\u6d4b\u8bc4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#x1f4a1; \u9ad8\u6548\u987a\u5e8f\u7684\u5efa\u8bae&#xff1a;Bomb Lab\u914d\u5408\u7b2c3\u7ae0\u5c3d\u65e9\u542f\u52a8&#xff1b;Cache Lab\u6295\u5165\u65f6\u95f4\u7406\u89e3\u5206\u5757\u548c\u76f4\u63a5\u6620\u5c04&#xff1b;Malloc Lab\u52a1\u5fc5\u5b9e\u73b0\u663e\u5f0f\u7a7a\u95f2\u94fe\u8868\u548c\u5206\u79bb\u9002\u914d\u7ec4\u5408&#xff1b;Proxy Lab\u4e09\u9636\u6bb5\u9012\u8fdb&#xff0c;\u662f\u5168\u4e66\u4e03\u4e2a\u5b9e\u9a8c\u7684\u6700\u7ec8\u6536\u5b98\u4e0e\u96be\u70b9\u3002<\/p>\n<h3>\u56db\u3001\u5168\u4e66\u77e5\u8bc6\u601d\u7ef4\u5bfc\u56fe<\/h3>\n<p>\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b&#xff08;CSAPP&#xff09;\u5168\u4e66<br \/>\n\u2502<br \/>\n\u251c\u2500\u2500 \u7b2c1\u7ae0 \u8ba1\u7b97\u673a\u7cfb\u7edf\u6f2b\u6e38&#xff08;\u603b\u7eb2&#xff09;<br \/>\n\u2502    \u251c\u2500\u2500 \u4fe1\u606f&#061;\u4f4d&#043;\u4e0a\u4e0b\u6587<br \/>\n\u2502    \u251c\u2500\u2500 \u7f16\u8bd1\u7cfb\u7edf&#xff08;cpp\u2192ccl\u2192as\u2192ld&#xff09;<br \/>\n\u2502    \u2514\u2500\u2500 \u786c\u4ef6\u7ec4\u6210\u4e0e\u5b58\u50a8\u5c42\u6b21<br \/>\n\u2502<br \/>\n\u251c\u2500\u2500 \u3010\u7b2c\u4e00\u90e8\u5206\u3011\u7a0b\u5e8f\u7ed3\u6784\u4e0e\u6267\u884c&#xff08;\u786c\u4ef6&#xff09;<br \/>\n\u2502   \u251c\u2500\u2500 \u7b2c2\u7ae0 \u4fe1\u606f\u7684\u8868\u793a\u548c\u5904\u7406<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u65e0\u7b26\u53f7\/\u8865\u7801\u7f16\u7801<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u4f4d\u8fd0\u7b97\u4e0e\u63a9\u7801<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 IEEE 754\u6d6e\u70b9\u6570<br \/>\n\u2502   \u251c\u2500\u2500 \u7b2c3\u7ae0 \u673a\u5668\u7ea7\u8868\u793a&#xff08;\u6c47\u7f16&#xff09;<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 x86-64\u5bc4\u5b58\u5668<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 mov\/push\/pop\u6307\u4ee4<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u6761\u4ef6\u7801\u4e0e\u8df3\u8f6c<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u8fc7\u7a0b\u8c03\u7528&#xff08;call\/ret\/\u6808\u5e27&#xff09;<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 \u7f13\u51b2\u533a\u6ea2\u51fa&#xff08;Bomb\/Attack Lab&#xff09;<br \/>\n\u2502   \u251c\u2500\u2500 \u7b2c4\u7ae0 Y86-64\u4e0e\u5904\u7406\u5668\u4f53\u7cfb\u7ed3\u6784<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u6307\u4ee4\u5904\u74066\u9636\u6bb5<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 SEQ\u987a\u5e8f\u5b9e\u73b0<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u6d41\u6c34\u7ebf\u539f\u7406&#xff08;\u541e\u5410\u7387\/\u5192\u9669&#xff09;<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 Archlab<br \/>\n\u2502   \u251c\u2500\u2500 \u7b2c5\u7ae0 \u4f18\u5316\u7a0b\u5e8f\u6027\u80fd<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u4ee3\u7801\u79fb\u52a8\/\u6d88\u9664\u5185\u5b58\u5f15\u7528<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u5faa\u73af\u5c55\u5f00\/\u591a\u8def\u5e76\u884c<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u91cd\u65b0\u7ed3\u5408\u53d8\u6362<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 CPE\u5ea6\u91cf<br \/>\n\u2502   \u2514\u2500\u2500 \u7b2c6\u7ae0 \u5b58\u50a8\u5668\u5c42\u6b21\u7ed3\u6784<br \/>\n\u2502       \u251c\u2500\u2500 SRAM&#xff08;cache&#xff09;\/DRAM&#xff08;\u4e3b\u5b58&#xff09;\/\u78c1\u76d8<br \/>\n\u2502       \u251c\u2500\u2500 \u5c40\u90e8\u6027\u539f\u7406<br \/>\n\u2502       \u251c\u2500\u2500 \u7f13\u5b58\u67b6\u6784&#xff08;S\/E\/B\/\u5730\u5740\u5212\u5206&#xff09;<br \/>\n\u2502       \u2514\u2500\u2500 Cache Lab<br \/>\n\u2502<br \/>\n\u251c\u2500\u2500 \u3010\u7b2c\u4e8c\u90e8\u5206\u3011\u7a0b\u5e8f\u8fd0\u884c\u4e0e\u7ba1\u7406&#xff08;\u7cfb\u7edf\u8f6f\u4ef6\u5c42\u7ea7&#xff09;<br \/>\n\u2502   \u251c\u2500\u2500 \u7b2c7\u7ae0 \u94fe\u63a5<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 ELF\u683c\u5f0f&#xff08;.text\/.data\/.bss\/.symtab&#xff09;<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u7b26\u53f7\u89e3\u6790&#xff08;\u5f3a\/\u5f31\u7b26\u53f7\u89c4\u5219&#xff09;<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u91cd\u5b9a\u4f4d&#xff08;PC\u76f8\u5bf9\/\u7edd\u5bf9&#xff09;<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u9759\u6001\u5e93\/\u5171\u4eab\u5e93<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u52a8\u6001\u94fe\u63a5&#xff08;PIC &#043; GOT &#043; PLT&#xff09;<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 Link Lab<br \/>\n\u2502   \u251c\u2500\u2500 \u7b2c8\u7ae0 \u5f02\u5e38\u63a7\u5236\u6d41<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u786c\u4ef6\u5f02\u5e38&#xff08;\u4e2d\u65ad\/\u9677\u9631\/\u6545\u969c\/\u7ec8\u6b62&#xff09;<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u8fdb\u7a0b&#xff08;fork\/execve\/wait\/exit&#xff09;<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u4fe1\u53f7&#xff08;kill\/sigaction\/mask&#xff09;<br \/>\n\u2502   \u2502   \u251c\u2500\u2500 \u975e\u672c\u5730\u8df3\u8f6c<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 Shell Lab<br \/>\n\u2502   \u2514\u2500\u2500 \u7b2c9\u7ae0 \u865a\u62df\u5185\u5b58<br \/>\n\u2502       \u251c\u2500\u2500 \u9875\u8868\u4e0e\u5730\u5740\u7ffb\u8bd1&#xff08;MMU\/TLB&#xff09;<br \/>\n\u2502       \u251c\u2500\u2500 \u7f3a\u9875\u5f02\u5e38<br \/>\n\u2502       \u251c\u2500\u2500 \u5185\u5b58\u6620\u5c04&#xff08;mmap&#xff09;<br \/>\n\u2502       \u251c\u2500\u2500 \u52a8\u6001\u5185\u5b58\u5206\u914d&#xff08;\u9690\u5f0f\/\u663e\u5f0f\u94fe\u8868\/\u5206\u79bb\u9002\u914d&#xff09;<br \/>\n\u2502       \u2514\u2500\u2500 Malloc Lab<br \/>\n\u2502<br \/>\n\u2514\u2500\u2500 \u3010\u7b2c\u4e09\u90e8\u5206\u3011\u7a0b\u5e8f\u95f4\u4ea4\u4e92\u4e0e\u901a\u4fe1&#xff08;\u9ad8\u5c42\u62bd\u8c61&#xff09;<br \/>\n    \u251c\u2500\u2500 \u7b2c10\u7ae0 \u7cfb\u7edf\u7ea7I\/O<br \/>\n    \u2502   \u251c\u2500\u2500 Unix I\/O&#xff08;open\/close\/read\/write&#xff09;<br \/>\n    \u2502   \u251c\u2500\u2500 \u6587\u4ef6\u5171\u4eab&#xff08;\u63cf\u8ff0\u7b26\u8868\/\u6587\u4ef6\u8868\/v-node\u8868&#xff09;<br \/>\n    \u2502   \u251c\u2500\u2500 dup2\u91cd\u5b9a\u5411<br \/>\n    \u2502   \u2514\u2500\u2500 RIO\u5065\u58eeI\/O\u5305<br \/>\n    \u251c\u2500\u2500 \u7b2c11\u7ae0 \u7f51\u7edc\u7f16\u7a0b<br \/>\n    \u2502   \u251c\u2500\u2500 \u5ba2\u6237\u7aef-\u670d\u52a1\u5668\u6a21\u578b<br \/>\n    \u2502   \u251c\u2500\u2500 \u5957\u63a5\u5b57\u63a5\u53e3&#xff08;socket\/bind\/listen\/accept\/connect&#xff09;<br \/>\n    \u2502   \u251c\u2500\u2500 HTTP\u534f\u8bae<br \/>\n    \u2502   \u251c\u2500\u2500 Tiny Web\u670d\u52a1\u5668<br \/>\n    \u2502   \u2514\u2500\u2500 Proxy Lab&#xff08;Part I&#xff09;<br \/>\n    \u2514\u2500\u2500 \u7b2c12\u7ae0 \u5e76\u53d1\u7f16\u7a0b<br \/>\n        \u251c\u2500\u2500 \u8fdb\u7a0b\/\u7ebf\u7a0b\/I\/O\u591a\u8def\u590d\u7528\u6a21\u578b\u5bf9\u6bd4<br \/>\n        \u251c\u2500\u2500 \u4fe1\u53f7\u91cf&#xff08;P\/V\u64cd\u4f5c&#xff09;<br \/>\n        \u251c\u2500\u2500 \u751f\u4ea7\u8005-\u6d88\u8d39\u8005 \u2192 Proxy Lab Part II<br \/>\n        \u251c\u2500\u2500 \u8bfb\u8005-\u5199\u8005 \u2192 Proxy Lab Part III<br \/>\n        \u251c\u2500\u2500 \u7ebf\u7a0b\u5b89\u5168\/\u53ef\u91cd\u5165\u6027<br \/>\n        \u2514\u2500\u2500 \u6b7b\u9501\u4e0e\u7ade\u4e89<\/p>\n<h3>\u4e94\u3001\u5168\u4e66\u603b\u7ed3<\/h3>\n<p>\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u662f\u4e00\u6b21\u5bf9\u8ba1\u7b97\u673a\u7cfb\u7edf\u7684\u5b8c\u6574\u5de1\u793c\u3002\u5168\u4e6612\u7ae0\u6309&#034;\u6570\u636e\u8868\u793a\u2192CPU\u6267\u884c\u2192\u7a0b\u5e8f\u8fd0\u884c\u2192\u8fdb\u7a0b\u901a\u4fe1&#034;\u56db\u4e2a\u5c42\u7ea7&#xff0c;\u63ed\u793a\u4e86\u4ece\u6bd4\u7279\u5230Web\u670d\u52a1\u5668\u7684\u5168\u8c8c\u2014\u2014Hello world\u7a0b\u5e8f\u7684\u5b8c\u6574\u751f\u547d\u5468\u671f\u3002<\/p>\n<p>&#x1f4a1; \u5168\u4e66\u6700\u6838\u5fc3\u7684\u8ba4\u77e5\u5347\u534e&#xff1a;<\/p>\n<li>\u8ba1\u7b97\u673a\u7cfb\u7edf\u7684\u6838\u5fc3\u62bd\u8c61\u662f&#034;\u5c42&#034;&#xff1a;\u4ece\u6307\u4ee4\u96c6\u5230\u865a\u62df\u5185\u5b58\u518d\u5230\u8fdb\u7a0b&#xff0c;\u6bcf\u5c42\u90fd\u662f\u5bf9\u4e0b\u5c42\u529f\u80fd\u7684\u62bd\u8c61\u4e0e\u5c01\u88c5\u3002\u7531\u6b64&#xff0c;\u7a0b\u5e8f\u5458\u53ef\u4ee5\u53ea\u5173\u6ce8\u81ea\u5df1\u5c42\u7ea7\u7684\u76f8\u5173\u7ec6\u8282&#xff0c;\u4e0d\u5fc5\u88ab\u5e95\u5c42\u590d\u6742\u6027\u6df9\u6ca1\u3002<\/li>\n<li>\u6027\u80fd\u7684\u672c\u8d28\u662f&#034;\u5c40\u90e8\u6027&#034;&#xff1a;\u65e0\u8bba\u662f\u7f13\u5b58\u3001\u865a\u62df\u5185\u5b58\u8fd8\u662fTLB&#xff0c;\u5176\u9ad8\u6548\u8fd0\u884c\u90fd\u4ef0\u8d56\u4e8e\u7a0b\u5e8f\u4e2d\u9ad8\u5ea6\u7684\u65f6\u95f4\u5c40\u90e8\u6027\u548c\u7a7a\u95f4\u5c40\u90e8\u6027\u3002\u7f16\u5199\u5c40\u90e8\u6027\u53cb\u597d\u7684\u4ee3\u7801\u662f\u5199\u51fa\u9ad8\u6027\u80fd\u7a0b\u5e8f\u7684\u57fa\u7840\u3002<\/li>\n<li>\u5e76\u53d1\u662f\u6784\u5efa\u9ad8\u6027\u80fd\u7cfb\u7edf\u7684\u5fc5\u7ecf\u4e4b\u8def&#xff0c;\u4e5f\u662fbug\u6700\u5bc6\u96c6\u7684\u5730\u5e26&#xff1a;\u5171\u4eab\u6570\u636e\u7684\u540c\u6b65&#xff08;\u9501\u3001\u4fe1\u53f7\u91cf&#xff09;\u5fc5\u987b\u4e25\u8c28&#xff0c;\u5426\u5219\u5c31\u4f1a\u51fa\u73b0\u6b7b\u9501\u3001\u6570\u636e\u7ade\u4e89\u7b49\u8fde\u8c03\u8bd5\u90fd\u96be\u4ee5\u6d6e\u73b0\u7684\u9690\u853d\u9519\u8bef\u3002<\/li>\n<li>\u638c\u63e1\u7cfb\u7edf\u7ea7\u7f16\u7a0b\u9700\u8981&#034;\u4e09\u4ef6\u5957&#034;&#xff1a;\u624e\u5b9e\u7684C\u8bed\u8a00\u3001\u9605\u8bfb\u6c47\u7f16\u7684\u80fd\u529b\u3001\u5927\u578b\u7cfb\u7edf\u5b9e\u9a8c\u7684\u5b9e\u6218\u6f14\u7ec3\u3002CSAPP\u6bcf\u7ae0\u5b9e\u9a8c\u6b63\u662f\u8fd9&#034;\u4e09\u4ef6\u5957&#034;\u7684\u6838\u5fc3\u843d\u5730\u3002<\/li>\n<p>\u6b63\u5982\u4e66\u4e2d\u6240\u8a00&#xff1a;\u201c\u5982\u679c\u4f60\u5168\u529b\u6295\u8eab\u5b66\u4e60\u672c\u4e66\u4e2d\u7684\u6982\u5ff5&#xff0c;\u6df1\u5165\u7406\u89e3\u5e95\u5c42\u8ba1\u7b97\u673a\u7cfb\u7edf\u4ee5\u53ca\u5b83\u5bf9\u5e94\u7528\u7a0b\u5e8f\u7684\u5f71\u54cd&#xff0c;\u90a3\u4e48\u4f60\u4f1a\u6b65\u4e0a\u6210\u4e3a\u4e3a\u6570\u4e0d\u591a\u7684\u2019\u5927\u725b\u2019\u7684\u9053\u8def\u201d\u3002\u5b83\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u8ba9\u4eba\u77ac\u95f4\u638c\u63e1\u4e00\u5207&#xff0c;\u800c\u5728\u4e8e\u4e3a\u8ba1\u7b97\u673a\u79d1\u5b66\u8fd9\u5ea7\u5927\u53a6\u642d\u8d77\u5b8c\u6574\u7684&#034;\u5efa\u9020\u84dd\u56fe&#034;&#xff0c;\u5e26\u6211\u4eec\u8de8\u8d8a\u4ece&#034;\u4f1a\u5199\u4ee3\u7801&#034;\u5230&#034;\u7406\u89e3\u7cfb\u7edf&#034;\u7684\u5173\u952e\u95e8\u69db&#xff0c;\u6700\u7ec8\u6210\u4e3a\u4e00\u4e2a\u771f\u6b63\u61c2\u5e95\u5c42\u7684\u3002<\/p>\n<p>\u540e\u7eed\u5efa\u8bae&#xff1a;\u2460\u5b8c\u6210\u5168\u90e87\u4e2a\u7ecf\u5178Lab&#xff08;Bomb Lab\u5207\u5165&#xff0c;Proxy Lab\u6536\u5b98&#xff09;&#xff0c;\u7528\u5b9e\u9645\u52a8\u624b\u6765\u5de9\u56fa\u5168\u4e66\u6982\u5ff5&#xff1b;\u2461\u4ee5\u672c\u7ae0\u4e3a\u7d22\u5f15\u6e29\u6545\u5173\u952e\u7ae0\u8282&#xff08;\u6c47\u7f16\u3001\u4f18\u5316\u3001\u7f13\u5b58\u3001\u865a\u62df\u5185\u5b58\u3001\u5e76\u53d1&#xff09;&#xff0c;\u5f62\u6210\u7cfb\u7edf\u6027\u8ba4\u77e5\u7f51\u7edc&#xff1b;\u2462\u914d\u5408CMU\u539f\u7248\u8bfe\u7a0b\u89c6\u9891&#xff08;B\u7ad9\u670915-213\u5168\u7cfb\u5217&#xff09;\u8fdb\u4e00\u6b65\u63d0\u5347\u7406\u89e3\u6df1\u5ea6\u3002<\/p>\n<hr \/>\n<p>\u672c\u6587\u4e3a\u4e2a\u4eba\u5b66\u4e60\u7b14\u8bb0&#xff0c;\u4ec5\u7528\u4e8e\u77e5\u8bc6\u5206\u4eab\u3002\u5982\u6709\u9519\u8bef&#xff0c;\u6b22\u8fce\u6307\u6b63\u3002<br \/>\n&#x1f44d;&#x1f3fb; \u70b9\u8d5e &#043; \u6536\u85cf &#043; \u5206\u4eab&#xff0c;\u8ba9\u66f4\u591a\u5f00\u53d1\u8005\u770b\u5230\u8fd9\u7bc7\u6df1\u5ea6\u89e3\u6790&#xff01;\u2764\ufe0f \u5982\u679c\u89c9\u5f97\u6709\u7528&#xff0c;\u8bf7\u7ed9\u4e2a\u8d5e\u652f\u6301\u4e00\u4e0b\u4f5c\u8005&#xff01;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5168\u4e66\u603b\u7ed3&#xff1a;\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d&#xff1f;\u4f5c\u8005: andylin02<br \/>\n\u5b66\u4e60\u7ae0\u8282: \u5168\u4e66\u603b\u89c8<br \/>\n\u5173\u952e\u8bcd&#xff1a; CSAPP&#xff1b;\u8ba1\u7b97\u673a\u7cfb\u7edf\u6f2b\u6e38&#xff1b;\u4fe1\u606f\u7684\u8868\u793a&#xff1b;\u673a\u5668\u7ea7\u8868\u793a&#xff1b;\u5904\u7406\u5668\u4f53\u7cfb\u7ed3\u6784&#xff1b;\u6027\u80fd\u4f18\u5316&#xff1b;\u5b58\u50a8\u5668\u5c42\u6b21\u7ed3\u6784&#xff1b;\u94fe\u63a5&#xff1b;\u5f02\u5e38\u63a7\u5236\u6d41&#xff1b;\u865a\u62df\u5185\u5b58&#xff1b;\u7cfb\u7edf\u7ea7I\/O&#xff1b;\u7f51\u7edc\u7f16\u7a0b&#xff1b;\u5e76\u53d1\u7f16\u7a0b&amp;#xff<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[3011],"topic":[],"class_list":["post-84030","post","type-post","status-publish","format-standard","hentry","category-server","tag-3011"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/84030.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u5168\u4e66\u603b\u7ed3&#xff1a;\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d&#xff1f;\u4f5c\u8005: andylin02 \u5b66\u4e60\u7ae0\u8282: \u5168\u4e66\u603b\u89c8 \u5173\u952e\u8bcd&#xff1a; CSAPP&#xff1b;\u8ba1\u7b97\u673a\u7cfb\u7edf\u6f2b\u6e38&#xff1b;\u4fe1\u606f\u7684\u8868\u793a&#xff1b;\u673a\u5668\u7ea7\u8868\u793a&#xff1b;\u5904\u7406\u5668\u4f53\u7cfb\u7ed3\u6784&#xff1b;\u6027\u80fd\u4f18\u5316&#xff1b;\u5b58\u50a8\u5668\u5c42\u6b21\u7ed3\u6784&#xff1b;\u94fe\u63a5&#xff1b;\u5f02\u5e38\u63a7\u5236\u6d41&#xff1b;\u865a\u62df\u5185\u5b58&#xff1b;\u7cfb\u7edf\u7ea7I\/O&#xff1b;\u7f51\u7edc\u7f16\u7a0b&#xff1b;\u5e76\u53d1\u7f16\u7a0b&amp;#xff\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/84030.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-25T23:33:24+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/84030.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/84030.html\",\"name\":\"\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-07-25T23:33:24+00:00\",\"dateModified\":\"2026-07-25T23:33:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/84030.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/84030.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/84030.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/84030.html","og_locale":"zh_CN","og_type":"article","og_title":"\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u5168\u4e66\u603b\u7ed3&#xff1a;\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d&#xff1f;\u4f5c\u8005: andylin02 \u5b66\u4e60\u7ae0\u8282: \u5168\u4e66\u603b\u89c8 \u5173\u952e\u8bcd&#xff1a; CSAPP&#xff1b;\u8ba1\u7b97\u673a\u7cfb\u7edf\u6f2b\u6e38&#xff1b;\u4fe1\u606f\u7684\u8868\u793a&#xff1b;\u673a\u5668\u7ea7\u8868\u793a&#xff1b;\u5904\u7406\u5668\u4f53\u7cfb\u7ed3\u6784&#xff1b;\u6027\u80fd\u4f18\u5316&#xff1b;\u5b58\u50a8\u5668\u5c42\u6b21\u7ed3\u6784&#xff1b;\u94fe\u63a5&#xff1b;\u5f02\u5e38\u63a7\u5236\u6d41&#xff1b;\u865a\u62df\u5185\u5b58&#xff1b;\u7cfb\u7edf\u7ea7I\/O&#xff1b;\u7f51\u7edc\u7f16\u7a0b&#xff1b;\u5e76\u53d1\u7f16\u7a0b&amp;#xff","og_url":"https:\/\/www.wsisp.com\/helps\/84030.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-07-25T23:33:24+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"13 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/84030.html","url":"https:\/\/www.wsisp.com\/helps\/84030.html","name":"\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-07-25T23:33:24+00:00","dateModified":"2026-07-25T23:33:24+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/84030.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/84030.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/84030.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u300a\u6df1\u5165\u7406\u89e3\u8ba1\u7b97\u673a\u7cfb\u7edf\u300b\u8bfb\u4e66\u7b14\u8bb016: \u5168\u4e66\u603b\u7ed3\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u672c\u4e66\u662f\u7a0b\u5e8f\u5458\u7684\u201c\u5185\u529f\u5fc3\u6cd5\u201d\uff1f"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/84030","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=84030"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/84030\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=84030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=84030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=84030"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=84030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}