วันอังคารที่ 24 พฤศจิกายน พ.ศ. 2552

0x104 : Press Power Button

ในการที่จะสร้าง OS ขึ้นมานั้นเราต้องเข้าใจถึงการทำงานของ hardware ของมันซะก่อน ซึ่งถ้าหากพูดถึงคอมพิวเตอร์แล้วก็คงต้องดูกันตั้งแต่กดปุ่ม Power เลยทีเดียว โดยเมื่อเราทำการกดปุ่ม Power นั้นสัญญานอิเลคทรอนิค จะถูกส่งออกไปยังเมนบอร์ด จากนั้นเมนบอร์ดจะทำการส่งสัญญานไปยัง Power Supply (PSU : Power Supply Unit) อีกต่อหนึ่ง สัญญานที่ถูกส่งออกไปนั้นจะเป็น bit ของข้อมูล เช่นถ้าหากเป็น 0 นั้นอาจจะเป็นไปได้ว่าคอมพิวเตอร์ไม่ทำงาน หรือ เมนบอร์ดเกิดความเสียหาย หากข้อมูลเป็น 1 ก็ให้ Power Supply นั้นทำงาน

หากยังพอจำกันได้ถึงระบบ bit ที่ใช้ในคอมพิวเตอร์นั้น คอมพิวเตอร์ได้กำหนดให้มีการแทนเลขของ bit แทนความหมายต่างๆ โดยจะทำงานผ่าน Logic Gate ต่างๆตาม Digital Logic เพื่อประกอบกันเป็นคอมพิวเตอร์

เมื่อ Power Supply ได้รับสัญญานให้ทำงาน Power Supply จะทำการจ่ายพลังงานให้กับอุปกรณ์ต่างๆ แล้วจากนั้นจะส่งสัญญานที่เรียกว่า "Power Good" ไปยังเมนบอร์ดเพื่อให้ BIOS (Basic Input Output System) ได้รู้

เพิ่มเติมเกี่ยวกับ Power Supply

เมื่อ BIOS ได้รับสัญญาน "Power Good" BIOS จะเริ่มต้นการ Process ที่เรียกว่า POST (Power On Self Test) โดย POST จะทำการตรวจสอบกำลังไฟ อุปกรณ์ที่ติดต่อกับเมนบอร์ด(เมาท์ คีบอร์ด Port ต่างๆ เช่น USB Serial Port) แล้วทำการตรวจสอบ Memory ว่ามีความผิดพลาดหรือไม่

จากนั้น POST ทำการโหลด BIOS ไปที่จุดสุดท้ายของ Memory (อาจจะเป็นตำแหน่ง 0xFFFFF0) แล้วใส่คำสั่ง jump ไปที่ตำแหน่งแรกของ Memory ตำแหน่งของการประมวลผลจะถูก set เป็น 0 (CS:IP) จากนั้นจะทำการควบคุมโดยโพรเซสเซอ

เพิ่มเติมเกี่ยวกับ POST

ในการทำงานของ BIOS นั้นจะมีการสร้าง Interrupt Vector Table(IVT) ขึ้นมาเพื่อให้บริการงานต่างๆเกี่ยวกับการ interrupt service ซึ่ง BIOS นั้นจะทำการตรวจสอบให้แน่ใจว่า hardware ไม่มีปัญหาเกิดขึ้น

BIOS จะทำการค้นหา OS จากลำดับการ Boot ที่ได้ตั้งไว้ใน BIOS Setup โดยจะทำการเรียก interrupt(INT) 0x19 เพื่อค้นหาอุปกรณ์ที่ใช้สำหรับการ Boot

หากหาอุปกรณ์ไม่พบ INT 0x19 จะทำการส่งค่ากลับเพื่อให้ค้นหาอุปกรณ์ตัวต่อไปตามลำดับจนสุดท้าย หากยังไม่พบก็จะแสดงข้อความว่า ไม่พบระบบปฏิบัติการ และจะทำการหยุดการทำงานของตัวเอง

Interrupt เป็น subroutine ที่สามารถเรียกใช้งานได้จากมากมายหลายที่ โดยที่ interrupt ที่ถูกเก็บไว้ใน address 0x0 จะถูกเรียกว่า Interrupt Vector Table สำหรับ interrupt พื้นฐานก็มี 0x21 โดยเป็น interrupt ที่เรียกใช้จาก DOS

เมื่อไม่มี DOS แล้ว interrupt ที่ใช้งานได้จะเป็น interrupt ที่ถูกสร้างโดย BIOS เท่านั้น หากมีการเรียกใช้นอกเหนือจากนั้น จะทำให้โปรแกรมเกิดปัญหาได้

หากมีการเปลี่ยนโหมดในการประมวลผลแล้ว IVT จะไม่สามารถทำงานได้ นั้นหมายความว่าจะไม่มี interrupt จาก hardware หรือ software หรือแม้แต่ของ BIOS เองก็ตาม

ข้อมูลเพิ่มเติมเกี่ยวกับ IVT

ไม่มีความคิดเห็น: