Bạn đồng hành song ngữ · 12 chương Bilingual companion · 12 chapters
Computer Systems: A Programmer's Perspective Computer Systems: A Programmer's Perspective
Cuốn sách kể lại hành trình của một chương trình — từ dòng mã C bạn viết, qua trình biên dịch, bộ xử lý, bộ nhớ và hệ điều hành, tới lúc chạy thật. Mười hai chương bóc tách từng tầng trừu tượng mà một lập trình viên cần hiểu để viết mã nhanh hơn, đúng hơn và ít lỗi khó chịu hơn. Mỗi trang ở đây bám sát một chương, giữ nguyên cách nói của tác giả, chú nguồn cho mọi con số.
Hãy hình dung chương trình của bạn như một lá thư. Bạn viết nó bằng tiếng người (mã C), rồi máy phải dịch sang tiếng máy, chọn đường đi qua bộ xử lý và bộ nhớ, cuối cùng mới "đọc" được. Cuốn sách này đi theo lá thư đó từ đầu tới cuối. Nhớ nhé: hiểu hệ thống là hiểu điều gì xảy ra bên dưới một dòng lệnh.
The book follows a program's journey — from the C you write, through the compiler, the processor, memory and the operating system, to the moment it runs. Its twelve chapters peel apart each layer of abstraction a programmer must understand to write code that is faster, more correct and freer of nasty bugs. Each page here tracks one chapter, keeps the author's framing, and cites a source for every specific.
Mỗi trang chương có ba mức đọc (Dễ hiểu · Chuẩn · Đầy đủ) và hai ngôn ngữ (VI · EN). Dùng thanh trên cùng để đổi — lựa chọn của bạn được ghi nhớ giữa các trang.
Ở góc trên có mấy cái nút. Bấm để đổi mức khó, đổi tiếng Việt / tiếng Anh, đổi nền sáng / tối. Máy sẽ nhớ cho bạn. Nhớ nhé: chưa quen thì cứ để "Dễ hiểu".
Every chapter page carries three reading levels (Easy · Standard · Full) and two languages (VI · EN). Use the bar at the top to switch — your choice is remembered across pages.
Mở đầu · 1 chương Opening · 1 chapter
Dạo một vòng toàn hệ thống A tour of the whole system
Chương đầu đi theo một chương trình hello duy nhất từ lúc được gõ ra tới lúc in dòng chữ, chạm qua mọi ý tưởng lớn mà các chương sau sẽ đào sâu: biên dịch, bộ nhớ đệm, phân cấp bộ nhớ, hệ điều hành và mạng.
Chương mở đầu dắt bạn đi một vòng nhanh: một chương trình nhỏ xíu chạy như thế nào, và trên đường đi nó gặp những "nhân vật" nào. Nhớ nhé: đây là tấm bản đồ trước khi vào từng con đường.
The opening chapter follows a single hello program from being typed to printing its line, touching every big idea the later chapters dig into: compilation, caches, the memory hierarchy, the operating system and networking.
Phần I · 5 chương Part I · 5 chapters
Cấu trúc và thực thi chương trình Program Structure and Execution
Năm chương này mở hộp đen giữa mã nguồn và phần cứng: dữ liệu được biểu diễn bằng bit ra sao, chương trình trông thế nào ở mức máy, bộ xử lý thực thi lệnh thế nào, làm sao viết mã chạy nhanh hơn, và vì sao phân cấp bộ nhớ chi phối hiệu năng.
Phần này trả lời câu hỏi: bên dưới một dòng lệnh, máy thật sự làm gì với các con số và với bộ nhớ? Nhớ nhé: đây là phần cốt lõi để viết mã nhanh và đúng.
These five chapters open the black box between source code and hardware: how data is represented in bits, what a program looks like at the machine level, how the processor executes instructions, how to make code run faster, and why the memory hierarchy governs performance.
Phần II · 4 chương Part II · 4 chapters
Chạy chương trình trên hệ thống Running Programs on a System
Một chương trình không chạy một mình. Bốn chương này cho thấy hệ điều hành dựng nên môi trường thực thi: liên kết nhiều mô-đun thành một tệp chạy, xử lý ngoại lệ và chuyển tiến trình, ảo hoá bộ nhớ cho mỗi tiến trình, và trao đổi dữ liệu với thế giới qua vào/ra mức hệ thống.
Phần này kể chuyện hệ điều hành làm "sân khấu" cho chương trình của bạn diễn: ghép các mảnh mã lại, chia bộ nhớ, và cho phép nhiều chương trình chạy xen kẽ. Nhớ nhé: chương trình luôn chạy trong một hệ thống, không phải khoảng không.
A program never runs alone. These four chapters show how the operating system builds the execution environment: linking many modules into one executable, handling exceptions and switching processes, virtualizing memory for each process, and exchanging data with the world through system-level I/O.
Phần III · 2 chương Part III · 2 chapters
Tương tác và giao tiếp giữa các chương trình Interaction and Communication Between Programs
Hai chương cuối mở ra ngoài một máy đơn lẻ: chương trình nói chuyện với nhau qua mạng, và nhiều luồng việc chạy đồng thời trong cùng một chương trình — nơi mọi tầng trừu tượng đã học được dùng cùng lúc.
Phần cuối cho chương trình "bước ra khỏi nhà": gửi dữ liệu qua mạng và làm nhiều việc một lúc. Nhớ nhé: đây là lúc mọi thứ học trước đó được ghép lại.
The last two chapters reach beyond a single machine: programs talk to each other over the network, and several strands of work run concurrently inside one program — where every abstraction learned so far is used at once.
Bản đồ toàn cuốn sách Bản đồ cả cuốn sách Whole-book map
Một trang tổng hợp gom cả mười hai chương thành bốn mạch lập luận, kèm sáu sợi chỉ chạy xuyên các chương và ba lộ trình đọc gợi ý. Đây là một trang tổng hợp, không phải sơ đồ tương tác.
Một trang gom cả mười hai chương lại thành bốn nhóm, chỉ ra sáu ý lặp đi lặp lại suốt sách và ba cách đọc khác nhau. Nhớ nhé: xem bản đồ trước cho khỏi lạc, rồi hãy vào từng chương.
One page gathering all twelve chapters into four movements, with six threads that cut across them and three suggested reading routes. It is a synthesis page, not an interactive graph.
Cách dùng trang này How to use this companion
Ba mức đọc, hai ngôn ngữ Three reading levels, two languages
Dễ hiểu — giải thích bằng đời thường, có ví dụ thêm vào, mỗi đoạn kết bằng một câu "Nhớ nhé". Dành cho người mới.
Easy — plain-language explanation with added analogies, each passage closing on a "Nhớ nhé" takeaway. For newcomers.
Chuẩn — bám sát mạch của tác giả, đủ chi tiết để làm việc thật. Đây là mức mặc định.
Standard — follows the author's own line of argument, detailed enough to work from. This is the default.
Đầy đủ — mở thêm các khối cơ chế: chi tiết kỹ thuật, và những chỗ cần đối chiếu với tài liệu hiện hành.
Full — opens the mechanism blocks: technical detail, and the places worth checking against current documentation.
Nguyên tắc cao nhất của bộ trang này là không bịa. Mọi con số, trích dẫn, lệnh hay ví dụ được gán cho tác giả đều có chú nguồn 1 dẫn tới một nguồn ngoài có thật. Khi sách và tài liệu hiện hành nói khác nhau, phần thân giữ cách nói của sách, còn chỗ lệch được nêu riêng trong khối Đầy đủ kèm nguồn của nó.
Trang này không tự nghĩ ra thông tin. Con số nào cũng có chỗ dẫn nguồn để bạn kiểm tra. Nhớ nhé: thấy số mà không có nguồn thì đừng tin — kể cả ở đây.
The supreme rule across these pages is không bịa — nothing invented. Every figure, quotation, command or author-attributed example carries a citation 1 resolving to a real external source. Where the book and current documentation disagree, the body keeps the book's framing and the divergence is named separately in a Full block with its own source.