ระบบคอมพิวเตอร์: มุมมองจากนักพัฒนาโปรแกรม (ฉบับโลก)
การสำรวจอย่างละเอียดเกี่ยวกับวิธีที่ระบบคอมพิวเตอร์ดำเนินการโปรแกรมและจัดเก็บข้อมูล หลักสูตรนี้เชื่อมโยงช่องว่างระหว่างการเขียนโปรแกรมระดับสูงกับฮาร์ดแวร์ที่อยู่เบื้องหลัง โดยครอบคลุมการแทนค่าระดับเครื่องจักร สถาปัตยกรรมของโปรเซสเซอร์ โครงสร้างหน่วยความจำ และการเขียนโปรแกรมแบบขนาน
ภาพรวมคอร์สเรียน
สรุปเนื้อหา
การศึกษาอย่างลึกซึ้งเกี่ยวกับวิธีที่ระบบคอมพิวเตอร์ดำเนินการโปรแกรมและจัดเก็บข้อมูล การเรียนนี้เชื่อมโยงช่องว่างระหว่างการเขียนโปรแกรมระดับสูงกับฮาร์ดแวร์พื้นฐาน โดยครอบคลุมหัวข้อต่าง ๆ เช่น การแทนค่าระดับเครื่องจักร สถาปัตยกรรมของโปรเซสเซอร์ ลำดับชั้นหน่วยความจำ และการเขียนโปรแกรมแบบขนาน
เชี่ยวชาญศิลปะของการเขียนโปรแกรมระบบโดยเข้าใจพื้นที่เชื่อมต่อระหว่างฮาร์ดแวร์และซอฟต์แวร์
ผู้แต่ง: รันดาล เอ. ไบรแอนต์, เดวิด อาร์. โอฮอลลารอน
คำขอบคุณ: ได้รับการสนับสนุนจากนักเรียนและอาจารย์ผู้สอนรายวิชา 15-213 ที่มหาวิทยาลัยคาร์เนกีเมล론 คำขอบคุณรวมถึงข้อเสนอแนะจาก มานาสา เอส. และ โมฮิต ทาฮิเลียนี
เป้าหมายการเรียนรู้
- ระบุว่าข้อมูลถูกแทนค่าด้วยบิตและบริบทภายในระบบอย่างไร
- ติดตามขั้นตอนสี่ขั้นตอนของระบบการคอมไพล์ จากโค้ดต้นฉบับไปยังโปรแกรมที่สามารถทำงานได้
- อธิบายโครงสร้างองค์ประกอบของฮาร์ดแวร์และลักษณะเชิงลำดับชั้นของอุปกรณ์จัดเก็บข้อมูล
- แปลงระหว่างสัญลักษณ์ฐานสิบ ฐานสอง และฐานสิบหก และอธิบายการกำหนดที่อยู่ระดับเครื่อง (การจัดเรียงบิต - Endianness)
- ดำเนินการปฏิบัติการระดับบิตและตรรกะในภาษา C และทำนายผลจากการเลื่อนทางคณิตศาสตร์
- วิเคราะห์การเข้ารหัสจำนวนเต็มเพื่อระบุช่องโหว่ที่อาจเกิดการล้น (overflow) และข้อผิดพลาดจากการแปลงชนิดข้อมูล
- วิเคราะห์ ความสัมพันธ์ระหว่างโครงสร้างภาษา C (ลูป สาขา ฟังก์ชัน) กับคำสั่งในภาษาแอสเซมบลี x86-64
- แยกองค์ประกอบ โครงสร้างสแตกเวลาทำงาน เพื่ออธิบายว่าพารามิเตอร์ถูกส่งผ่านอย่างไร ตัวแปรท้องถิ่นถูกจัดเก็บไว้ที่ใด และการเรียกซ้ำ (recursive calls) ถูกจัดการอย่างไร
- ประเมิน โครงสร้างหน่วยความจำสำหรับโครงสร้างข้อมูลที่หลากหลาย และใช้กฎการจัดเรียง (alignment rules) เพื่อคำนวณความจุรวมของการจัดเก็บ
- กำหนดสถานะที่ผู้เขียนโปรแกรมสามารถมองเห็นได้ใน Y86-64 และเข้ารหัส/ถอดรหัสคำสั่งเป็นลำดับไบต์