ในยุคก่อนที่ Google และ Stack Overflow จะมีอยู่ โปรแกรมเมอร์ต้องพึ่งพาคัมภีร์อีกชนิดหนึ่งสำหรับการพัฒนา PC ระดับล่าง Ralf Brown's Interrupt List หรือที่ผู้มีประสบการณ์เรียกขานอย่างคุ้นเคยว่า RBIL นั้น เป็นตัวแทนหนึ่งของโครงการเอกสารที่รักษาโดยชุมชนที่เก่าแก่และครอบคลุมที่สุดสำหรับสถาปัตยกรรม IBM PC เมื่อไม่นานนี้มีการพูดถึงในชุมชนโปรแกรมเมอร์อีกครั้ง คอลเลกชันไฟล์ข้อความ ASCII ที่มีขนาดเกือบแปดเมกะไบต์นี้ ยังคงกระตุ้นความนึกคิดถึงและความชื่นชมในบทบาทของมันที่ทำให้ความรู้ในการเขียนโปรแกรม PC เป็นประชาธิปไตยในช่วงยุค DOS
อาวุธลับของโปรแกรมเมอร์
สำหรับนักพัฒนาในยุคที่ทำงานกับ MS-DOS ช่วงทศวรรษ 1980 และ 1990 แล้ว RBIL ทำหน้าที่เป็นคู่มืออ้างอิงขั้นสุดยอด คอลเลกชันนี้บันทึกทุกอย่างตั้งแต่การเรียกอินเตอร์รัปต์และพอร์ต I/O ไปจนถึงตำแหน่งหน่วยความจำและอินเตอร์เฟสการเรียกแบบ far-call — ทั้งฟีเจอร์ที่ถูกบันทึกไว้และไม่ถูกบันทึกไว้ ในเวลาที่เอกสารทางการหายากและมีราคาแพง แหล่งข้อมูลฟรีนี้ได้กลายเป็นสิ่งจำเป็นสำหรับใครก็ตามที่ผลักดันขีดจำกัดของสิ่งที่ PC สามารถทำได้
«เมื่อนานมาแล้ว ก่อนที่การเข้าถึงอินเทอร์เน็ตจะถูกลงและมีอย่างล้นหลาม และนานมากก่อนที่เครื่องมือค้นหาจะทำให้การหาข้อมูลประเภทนี้ง่ายขึ้น สิ่งนี้คือการค้นพบที่ประเมินค่าไม่ได้สำหรับโปรแกรมเมอร์ระดับล่างที่กำลังเริ่มต้น»
ธรรมชาติที่ครอบคลุมของรายการนี้หมายความว่าโปรแกรมเมอร์สามารถสำรวจเรจิสเตอร์ฮาร์ดแวร์ ทำความเข้าใจว่าองค์ประกอบต่าง ๆ มีปฏิสัมพันธ์กันอย่างไร และสร้างซอฟต์แวร์ที่ใช้ประโยชน์จากความสามารถของ PC ได้อย่างเต็มที่ โดยไม่ต้องพึ่งพาเอกสารจากผู้ผลิตซึ่งมักจะไม่สมบูรณ์หรือเข้าถึงได้ยาก
การขัดจังหวะสำคัญจากยุค DOS
- INT 21h: การเรียกใช้ระบบ MS-DOS สำหรับการดำเนินการไฟล์ การจัดการหน่วยความจำ และการรันโปรแกรม
- INT 10h: บริการวิดีโอของ BIOS สำหรับควบคุมการแสดงผลข้อความและกราฟิก
- INT 13h: บริการดิสก์ของ BIOS สำหรับการเข้าถึงดิสก์ในระดับต่ำ
- INT 16h: บริการคีย์บอร์ดของ BIOS สำหรับจัดการอินพุตจากคีย์บอร์ด
- INT 33h: บริการเมาส์สำหรับควบคุมอินพุตและเคอร์เซอร์ของเมาส์
จากโปรแกรม TSR สู่การทดลองระบบปฏิบัติการ
รายการอินเตอร์รัปต์ช่วยให้โปรแกรมเมอร์สร้างโปรแกรม Terminate and Stay Resident (TSR) ได้ — แอปพลิเคชันที่ยังคงอยู่ในหน่วยความจำหลังการทำงาน คล้ายกับกระบวนการพื้นหลังในยุคใหม่ โปรแกรมเหล่านี้ต้องการความรู้ที่แม่นยำเกี่ยวกับการจัดการอินเตอร์รัปต์เพื่อหลีกเลี่ยงความขัดแย้งของระบบและการล่ม นักพัฒนายังคงจำความรู้สึกตื่นเต้นเมื่อสร้างยูทิลิตี้ TSR เช่น นาฬิกาปลุกและตัวเสริมประสิทธิภาพคีย์บอร์ดได้สำเร็จ และทำงานร่วมกับซอฟต์แวร์อื่น ๆ ได้อย่างน่าเชื่อถือ
โปรแกรมเมอร์ที่มีความทะเยอทะยานมากขึ้นใช้ RBIL เพื่อสำรวจการพัฒนาระบบปฏิบัติการ เอกสารนี้ให้ข้อมูลเชิงลึกที่สำคัญเกี่ยวกับวิธีที่ Windows 32-bit มีปฏิสัมพันธ์กับ DOS extender ทำให้ผู้ที่หลงใหลสามารถทดลองสร้างระบบปฏิบัติการพื้นฐานของตัวเองได้ การทดลองปฏิบัติด้วยการเขียนโปรแกรมระบบระดับล่างนี้ทำให้ผู้พัฒนาหลายคนมีความเข้าใจในระดับลึกซึ่งหาได้ยากในสภาพแวดล้อมการเขียนโปรแกรมระดับสูงของปัจจุบัน
โครงการที่โดดเด่นที่เกี่ยวข้องกับ RBIL
- RBPCI: โปรแกรมข้อมูลอุปกรณ์ PCI พร้อมฐานข้อมูลข้อความที่แก้ไขได้
- SPAWNO: ตัวแทนแบบ Swapping สำหรับฟังก์ชัน spawn ใน C runtime
- AMISLIB: ไลบรารีสำหรับเขียน TSR ที่โหลดตัวเองไปยังหน่วยความจำส่วนบนและถอดออกได้
- RBcomm: โปรแกรมเทอร์มินัลที่รองรับ DESQview พร้อมการจำลองหลายรูปแบบ
- ZipRec: โปรแกรมกู้คืนไฟล์ ZIP ด้วยการสร้างใหม่ตามภาษา
วิวัฒนาการที่ก้าวข้ามอินเตอร์รัปต์
ในขณะที่รายการอินเตอร์รัปต์ดั้งเดิมมุ่งเน้นไปที่กลไกคำสั่ง INT ที่ครอบงำการเขียนโปรแกรม PC ในยุคเริ่มต้น การอภิปรายได้เน้นย้ำว่าสถาปัตยกรรมคอมพิวเตอร์มีวิวัฒนาการอย่างไร ชุมชนตั้งข้อสังเกตว่าในอดีตการเรียกระบบของ Linux ใช้ INT 80h บนโปรเซสเซอร์ x86 แต่ระบบสมัยใหม่ได้ย้ายไปใช้กลไกที่มีประสิทธิภาพมากขึ้นแล้ว
x86-64 ได้แนะนำคำสั่ง syscall โดยเฉพาะเพื่อลดโอเวอร์เฮดของการเรียกระบบเมื่อเทียบกับอินเตอร์รัปต์แบบดั้งเดิม แม้แต่ระบบ x86 32-bit ก็ได้รับคำสั่ง sysenter และ sysexit เพื่อจุดประสงค์เดียวกัน วิวัฒนาการนี้สะท้อนให้เห็นถึงการปรับปรุงประสิทธิภาพอย่างต่อเนื่องของสถาปัตยกรรมคอมพิวเตอร์ แม้ว่าดังที่ผู้แสดงความคิดเห็นหนึ่งระบุไว้ Int 80h ยังคงใช้งานได้ดีเช่นเดิมบน i386 สำหรับผู้ที่ทำงานกับระบบรุ่นเก่าก็ตาม
กลไกการเรียกใช้ระบบสมัยใหม่
- x86-64: คำสั่ง
syscall(แทนที่ INT 80h ใน Linux) - 32-bit x86: คำสั่ง
sysenter/sysexit - ARM: คำสั่ง
swi(Software Interrupt) - การรองรับระบบเก่า: INT 80h ยังคงใช้งานได้บนสถาปัตยกรรม i386
ผลกระทบทางการศึกษาและศาสตร์ที่สูญหาย
รายการอินเตอร์รัปต์มีบทบาทสำคัญในการศึกษาด้านคอมพิวเตอร์ แม้ว่ามักจะอยู่นอกเหนือหลักสูตรทางการก็ตาม ในขณะที่ชั้นเรียนคอมพิวเตอร์ในโรงเรียนอาจมุ่งเน้นไปที่แนวคิดทางทฤษฎี เช่น การเพิ่มประสิทธิภาพการไหลของกราฟ นักเรียนที่มีความหลงใหลกลับหันไปหา RBIL เพื่อหาความรู้เชิงปฏิบัติเกี่ยวกับการเขียนโปรแกรม EGA และการจัดการอินเตอร์รัปต์ IRQ การเรียนรู้ด้วยตนเองนี้ได้สร้างโปรแกรมเมอร์รุ่นหนึ่งที่มีความเข้าใจอย่างลึกซึ้งเกี่ยวกับสถาปัตยกรรมคอมพิวเตอร์
ผู้แสดงความคิดเห็นหลายคนยังจำได้ว่าพวกเขาพิมพ์ส่วนต่าง ๆ ของรายการนี้ออกมาด้วยเครื่องพิมพ์ดอตเมทริกซ์ สร้างสมุดอ้างอิงที่เป็นกายภาพซึ่งพวกเขาเก็บไว้ข้างคอมพิวเตอร์ การเชื่อมต่อที่จับต้องได้กับเอกสารนี้แตกต่างอย่างมากกับแหล่งข้อมูลออนไลน์ในปัจจุบันที่เข้าถึงได้ทันทีแต่มักจะตื้นเขิน การทดลองด้วยมือที่ RBIL ส่งเสริมได้บ่มเพาะทักษะการแก้ปัญหาและความเข้าใจในสถาปัตยกรรมซึ่งพิสูจน์แล้วว่ามีคุณค่าตลอดอาชีพการงานในวงการเทคโนโลยี
มรดกในคอมพิวเตอร์ยุคใหม่
แม้ว่าความรู้เฉพาะทางจำนวนมากใน RBIL จะล้าสมัยไปแล้วจากระบบปฏิบัติการสมัยใหม่และการ abstraction ฮาร์ดแวร์ แต่หลักการที่มันสอนยังคงมีความเกี่ยวข้อง ความเข้าใจว่าซอฟต์แวร์มีปฏิสัมพันธ์กับฮาร์ดแวร์อย่างไร การเรียกระบบทำงานอย่างไร และวิธีการทำงานภายในสภาพแวดล้อมที่มีข้อจำกัด ยังคงเป็นประโยชน์ต่อนักพัฒนาที่ทำงานบนระบบสมองกลฝังตัว ระบบปฏิบัติการ และแอปพลิเคชันที่สำคัญต่อประสิทธิภาพ
ธรรมชาติที่รักษาโดยชุมชนของ RBIL ยังเป็นการบ่งบอกถึงโครงการเอกสารโอเพนซอร์สสมัยใหม่ เช่นเดียวกับแหล่งข้อมูลร่วมสมัยอย่าง MDN Web Docs สำหรับการพัฒนาเว็บ RBIL ได้แสดงให้เห็นถึงพลังของการรวบรวมและแบ่งปันความรู้แบบร่วมมือกัน — ปรัชญาที่ยังคงขับเคลื่อนระบบนิเวศการพัฒนาซอฟต์แวร์ในปัจจุบันเป็นส่วนใหญ่
การอภิปรายที่ยั่งยืนเกี่ยวกับ Ralf Brown's Interrupt List หลังจากยุคทองของมันผ่านไปหลายทศวรรษ พูดถึงผลกระทบอันลึกซึ้งที่มีต่อโปรแกรมเมอร์ทั้งรุ่น มันไม่ได้เป็นเพียงแค่แหล่งข้อมูลทางเทคนิค แต่ยังเป็นสัญลักษณ์ของยุคสมัยหนึ่งที่การทำความเข้าใจว่าคอมพิวเตอร์ทำงานในระดับพื้นฐานที่สุดอย่างไร เป็นทั้งสิ่งที่เข้าถึงได้และจำเป็นสำหรับการผลักดันขอบเขตทางเทคโนโลยีให้ก้าวไปข้างหน้า
อ้างอิง: Public Files on FTP.CS.CMU.EDU
