Hệ thống Máy tính: Góc nhìn của một Lập trình viên (Phiên bản Toàn cầu)
Một cuộc khảo sát toàn diện về cách các hệ thống máy tính thực thi chương trình và lưu trữ thông tin. Khóa học này nối liền khoảng cách giữa lập trình cấp cao và phần cứng nền tảng, bao gồm biểu diễn mức máy, kiến trúc bộ xử lý, cấu trúc bộ nhớ và lập trình đồng thời.
Tổng quan khóa học
Tóm tắt Nội dung
Một cuộc khảo sát toàn diện về cách các hệ thống máy tính thực thi chương trình và lưu trữ thông tin. Khóa học này nối liền khoảng cách giữa lập trình cấp cao và phần cứng nền tảng, bao gồm biểu diễn ở mức máy, kiến trúc bộ xử lý, phân cấp bộ nhớ và lập trình đồng thời.
Thành thạo nghệ thuật lập trình hệ thống bằng cách hiểu rõ giao diện giữa phần cứng và phần mềm.
Tác giả: Randal E. Bryant, David R. O'Hallaron
Lời cảm ơn: Được hỗ trợ bởi sinh viên và giảng viên khóa học 15-213 tại Đại học Carnegie Mellon. Lời cảm ơn bao gồm những đóng góp từ Manasa S. và Mohit Tahiliani.
Mục tiêu Học tập
- Xác định cách thông tin được biểu diễn bằng bit và ngữ cảnh trong hệ thống.
- Theo dõi bốn giai đoạn của hệ thống biên dịch từ mã nguồn đến tập lệnh thực thi.
- Mô tả cấu trúc tổ chức của phần cứng và tính chất phân cấp của các thiết bị lưu trữ.
- Chuyển đổi giữa các ký hiệu thập phân, nhị phân và hexa, và giải thích địa chỉ ở mức máy (Endianness).
- Thực hiện các thao tác bit và logic trong C, dự đoán kết quả của các phép dịch số học.
- Phân tích mã hóa số nguyên để nhận diện các lỗ hổng tràn và lỗi chuyển kiểu tiềm ẩn.
- Phân tích sự ánh xạ giữa các cấu trúc C (vòng lặp, nhánh, thủ tục) và các lệnh Assembly x86-64.
- Phân tích sâu ngăn xếp thời gian chạy để giải thích cách truyền tham số, lưu biến cục bộ và quản lý lời gọi đệ quy.
- Đánh giá bố cục bộ nhớ cho các cấu trúc dữ liệu đa dạng và áp dụng quy tắc căn chỉnh để tính toán tổng yêu cầu lưu trữ.
- Định nghĩa Trạng thái người dùng nhìn thấy được của Y86-64 và mã hóa/giải mã lệnh thành chuỗi byte.