è®¡ç®æºç³»ç»ç¨åºåæå | AIçæåç¿»è¯
Question: é对ç¨åºåè§è§ä¸çè®¡ç®æºç³»ç»æä¾ä¸ä¸ªå ¨é¢çä»ç»ã
Answer:
ç¨åºåè§è§ä¸çè®¡ç®æºç³»ç» (computer systems from a programming perspective) ä¾§éäºç解软件å¦ä½ä¸åºå±ç hardware 交äºï¼ä»èç¼ååºæ´é«æãæ´å¯é 䏿´å®å ¨çç¨åºãè¿ç§æ¹æ³ä¸ç¡¬ä»¶å·¥ç¨å¸çè§è§ä¸åââå®å¼ºè°ç³»ç»çè¡ä¸ºå¦ä½å½±å代ç çæ£ç¡®æ§ã performance å debuggingï¼è䏿¯å ³æ³¨å¦ä½æå»º CPU æ OS kernelsã
该é¢åæåæ¨å´çèµæºæ¯ Randal E. Bryant å David R. OâHallaron æèçãComputer Systems: A Programmerâs Perspectiveãï¼CS:APPï¼ç¬¬ 3 çï¼2015-2016 å¹´å 容ï¼å° 2026 年仿¯è¡ä¸æ åï¼ã
æ ¸å¿æ¶µç主é¢ï¼å ¸åç»æï¼
- è®¡ç®æºç³»ç»æ¼«è° (A Tour of Computer Systems)ï¼å®è§ç»¼è¿°ï¼
- ä¸ä¸ªç®åç âhello worldâ ç¨åºå¦ä½å¨ç³»ç»ä¸è¿è¡
- å±çº§ç»æï¼programs â compiler â assembly â machine code â processor + memory + OS
- å ³é®æ½è±¡ï¼processes, virtual memory, files
- åºæ¬æ¦å¿µï¼Amdahlâs Law, concurrency vs. parallelism, caching effects
- ä¿¡æ¯ç表示ä¸å¤ç (Information Representation & Manipulation)
- Bits, bytes, hexadecimal
- Integer 表示ï¼unsigned, twoâs complementï¼ä»¥å signed/unsigned 转æ¢é·é±
- Floating-point (IEEE 754)ï¼ç²¾åº¦æå¤±ãèå
¥ï¼ä»¥å为ä»ä¹
0.1 + 0.2 â 0.3 - Bitwise operations åå ¶å¨çå®ä»£ç ä¸çç¨é
- ç¨åºçæºå¨çº§è¡¨ç¤º (Machine-Level Representation of Programs)ï¼C è¯è¨è§è§ä¸çæ±ç¼ï¼
- x86-64 assembly åºç¡ï¼ç®åæå¸¸ç¨ï¼
- C 代ç å¦ä½æ å°å°æä»¤ï¼data movement, arithmetic, control flow
- Stack, function calls, registers, calling conventions
- Buffer overflows â security vulnerabilitiesï¼ç»å ¸åç°ä»£ç¼è§£æªæ½ï¼
- Compiler æåºï¼optimization levels, inlining, loop unrolling
- å¤ç卿¶æä¸æ§è¡ (Processor Architecture & Execution)
- Y86-64ï¼ç®åæå¦ç¨ ISAï¼â çå®ç x86-64 pipeline
- Pipelining, hazards, branch prediction
- Out-of-order execution å speculation å¦ä½å½±å performance ä¸ securityï¼å¦ Spectre/Meltdown ç±»é®é¢ï¼
- ä¼åç¨åºæ§è½ (Optimizing Program Performance)
- Memory hierarchy: registers â L1/L2/L3 cache â DRAM â disk
- Cache locality (temporal & spatial) ââ 为ä»ä¹å¾ªç¯é¡ºåºå¦æ¤éè¦
- æµé performanceï¼é¿å false sharingï¼vectorization åºç¡ (SIMD)
- 龿¥ä¸å è½½ (Linking & Loading)
- Static vs. dynamic linking
- Relocation, symbol resolution
- Shared libraries (.so / .dll), position-independent code (PIC)
- å¼å¸¸æ§å¶æµ (Exceptional Control Flow)
- Exceptions, interrupts, signals
- Process å建 (fork)ãç»æ¢
- Nonlocal jumps (setjmp/longjmp)
- èæå
å (Virtual Memory)
- 为ä»ä¹éè¦ virtual memoryï¼isolation, sparse address spaces, demand paging
- Page tables, TLB (Translation Lookaside Buffer)
- Memory mapping, copy-on-write, memory overcommit
- ç³»ç»çº§ I/O (System-Level I/O)
- Unix file 模åï¼everything is a file
- Standard I/O vs. system calls (read/write)
- Buffering çç¥ãmetadata
- ç½ç»ç¼ç¨ (Network Programming)
- Internet æ½è±¡ï¼IP, TCP, UDP
- Sockets API
- Web serversï¼å¾®åå¹¶åæå¡å¨ç¤ºä¾ï¼
- å¹¶å (Concurrency)ï¼Threads & Synchronizationï¼
- Thread åºç¡, pthreads
- Race conditions, deadlocks
- Synchronization primitives: mutex, semaphore, condition variables
- (é«çº§) åå¨ä¸æ°æ®åºç³»ç» ((Advanced) Storage & Database Systems)ï¼ææ¶ä¼ç¥ææ¶åï¼
为ä»ä¹å¨ 2026 å¹´è¿ä¸è§è§å¯¹ç¨åºåè³å ³éè¦
æ¨èå¦ä¹ è·¯å¾ (2026)
- å ä¿®æ¡ä»¶ï¼æå®ç C programming åºç¡ï¼pointers, memory management, bitwise opsï¼
- 主è¦èµæºï¼ãComputer Systems: A Programmerâs Perspectiveãï¼ç¬¬ 3 çï¼
- è¡¥å
èµæºï¼
- CS:APP labsï¼é常注é宿ï¼bomb lab, attack lab, malloc lab, cache labâ¦ï¼
- Berkeley CS 61C æ CMU 15-213 课ç¨èµæï¼éå¸¸å ¬å¼å¯ç¨ï¼
- âNandGame / Nand2Tetrisâ ç¨äºå»ºç«åºå±ç´è§
- ç°ä»£æ©å±ï¼Rust unsafe code, Zig/C interop, WebAssembly internals
è¿ä¸ç¥è¯ä½ç³»æ¯å°æ®éå¼å人åä¸ä¼ç§ç systems programmersãperformance engineersãsecurity researchersãcompiler writers 以å kernel developers åºå弿¥çåºç³ã
åèèµæï¼
- Computer Systems: A Programmerâs Perspective 宿¹ç½ç« (CMU)
- Teach Yourself Computer Science â Computer Architecture ç« è
