-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Ian Chen edited this page Oct 7, 2021
·
8 revisions
Welcome to the SystemProgramming-zh wiki!
本文件為 Lawrence Angrave 教授在伊利諾大學厄巴納-香檳分校開設 "Intro to System Programming (CS241)" 課程時所使用的教材。 該教材從簡單的 C 語言基礎、Process 觀念、同步問題...一路介紹到網路程式與檔案系統,是一個值得花費時間閱讀的好教材。 為了讓更多人能夠輕鬆的學習 System Programming,所以我們開始了教材的翻譯計畫,歡迎有志之士參與文件的翻譯工作。
- 完成所有文件的初步翻譯。
- 修整文件的用詞,例如:
操作系統
應翻為作業系統
、字符串
應翻為字串
、文件系統
應翻為檔案系統
。 - 修正一些翻譯過程中造成的 Markdown 跑版。
標題: 緩衝區溢出的一個例子是什麼? 著名的例子:Heart Bleed(對大小不足的緩衝區執行memcpy)。簡單的例子:在確定所需記憶體的大小時,實現一個strcpy,而忘記給strlen加1。
應修正為:
標題: 緩衝區溢出的實際案例 著名的例子可以參考: Heart Bleed (對大小不足的緩衝區執行 memcpy)。簡單的例子: 在確定所需的記憶體大小後,使用了 strcpy,卻忘記給 strlen 加上 1。
- 中英混用時中間要以空白區隔
- 中英混用時遇到標點符號可以不使用空白區隔
- 若翻譯完後會造成用詞不精確,應使用原文表達,如:
解參考
可以改回Dereference
會更易懂。
- Informal Glossary
- Programming Tricks, Part 1
- System Programming Short Stories and Songs
- Systems Programming Bugs in Industry
- C Programming, Part 1: Introduction
- C Programming, Part 2: Text Input And Output
- C Programming, Part 3: Common Gotchas
- C Programming, Part 4: Strings and Structs
- C Programming, Part 5: Debugging
- C Programming, Review Questions
- Kernel, Shells, Terminals Oh My!
- Processes, Part 1: Introduction
- Forking, Part 1: Introduction
- Forking, Part 2: Fork, Exec, Wait
- Process Control, Part 1: Wait macros, using signals
- Processes Review Questions
- Memory, Part 1: Heap Memory Introduction
- Memory, Part 2: Implementing a Memory Allocator
- Memory, Part 3: Smashing the Stack Example
- Memory Review Questions
- Pthreads, Part 1: Introduction
- Pthreads, Part 2: Usage in Practice
- Pthreads, Part 3: Parallel Problems (Bonus)
- Pthread Review Questions
- Synchronization, Part 1: Mutex Locks
- Synchronization, Part 2: Counting Semaphores
- Synchronization, Part 3: Working with Mutexes And Semaphores
- Synchronization, Part 4: The Critical Section Problem
- Synchronization, Part 5: Condition Variables
- Synchronization, Part 6: Implementing a barrier
- Synchronization, Part 7: The Reader Writer Problem
- Synchronization, Part 8: Ring Buffer Example
- Synchronization, Part 9: Synchronization Across Processes
- Synchronization Review Questions
- Deadlock, Part 1: Resource Allocation Graph
- Deadlock, Part 2: Deadlock Conditions
- Deadlock, Part 3: Dining Philosophers
- Deadlock Review Questions
- Virtual Memory, Part 1: Introduction to Virtual Memory
- Pipes, Part 1: Introduction to pipes
- Pipes, Part 2: Pipe programming secrets
- Files, Part 1: Working with files
- Scheduling, Part 1: Scheduling Processes
- Scheduling, Part 2: Scheduling Processes: Algorithms
- IPC Review Questions
- POSIX, Part 1: Error handling
- Networking, Part 1: Introduction
- Networking, Part 2: Using getaddrinfo
- Networking, Part 3: Building a simple TCP Client
- Networking, Part 4: Building a simple TCP Server
- Networking, Part 5: Shutting down ports, reusing ports and other tricks
- Networking, Part 6: Creating a UDP server
- Networking, Part 7: Nonblocking I O, select(), and epoll
- Networking, Part 8: Protocols (TCP Handshaking, HTTP latency, Heart Bleed)
- RPC, Part 1: Introduction to Remote Procedure Calls
- Networking Review Questions
- File System, Part 1: Introduction
- File System, Part 2: Files are inodes
- File System, Part 3: Permissions
- File System, Part 4: Working with directories
- File System, Part 5: Virtual file systems
- File System, Part 6: Memory mapped files and Shared memory
- File System, Part 7: Scalable and Reliable Filesystems
- File System, Part 8: Removing preinstalled malware from an Android device
- File System, Part 9: Disk blocks example
- File Systems Review Questions
- Process Control, Part 1: Wait macros, using signals
- Signals, Part 2: Pending Signals and Signal Masks
- Signals, Part 3: Raising signals
- Signals, Part 4: Sigaction
- Signals Review Questions
Warning these are good practice but not comprehensive.