สวัสดีท่านผู้อ่านทุกท่านครับ วันนี้หัวข้อการเขียนแบบมัดมือชกได้กลับเข้ามาอีกครั้งครับ หลังจากห่างหายไปไม่นาน นับตั้งแต่ เรื่องของ VM หรือ virtual machine รอบนนี้หนักกว่าครับ เจอของยาก
หัวข้อประจำสัปดาห์นี้มาจากการเรียนเกี่ยวกับสถาปัตยกรรมคอมพิวเตอร์แบบ 32-bit หรือ IA-32 ครับ ซึ่งมันเป็นอะไรที่ยากมากเพราะหนังสือไทยไม่มีให้อ่าน หนังสือฝรั่งก็ยิ่งอ่านยากเพราะมันเป็น Technical Term ล้วนๆเลย ผมเองยังไม่มั้นใจในความถูกต้องของ การตีความและทำความเข้าใจจากหนังสือภาษาอังกฤษเลยครับ
เริ่มกันเลยที่หัวข้อแรก Flat Segmentation Model หรือ โมเดลการจัดการแบ่งกลุ่มหน่วยความจำ
ในการจัดกลุ่มของหน่วยความจำ physical address แบบ 32 bit บนพื้นที่ของคอมพิวเตอร์ นั้นจะต้องสร้างเซ็กเมนต์อย่างน้อยสองส่วน ส่วนหนึ่งสำหรับโค๊ตโปรแกรมและอีกส่วนหนึ่งสำหรับข้อมูล ซึ่งในแต่ละ segment นั้นจะถูกกำหนดด้วย segment descriptor และจะถูกกำหนดโดยตาราง the global descriptor table (GDT)

ซึ่งขอบเขตของข้อมูล ที่พร้อมใช้งานจะถูกชี้ไปยังตำแหน่งแรกของหน่วยความจำที่ (00000000)
ส่วน segment limit นั้นเราไม่สามารถระบุ physical memory ในระบบได้ segment limit นั้นจะถูกตั้งไว้ ที่ 04oo
และในส่วนของ access field นั้นก็จะประกอบด้วยบิตที่สามารถตรวจสอบว่าเซ็กเมนต์ไหนสามารถใช้งานได้อย่างไร
หัวข้อที่ 2 Multi-Segment Model
ใน multi-segment model นั้นในแต่ละ task หรือ โปรแกรมจะถูกกำหนดโดย segment descriptor ของตัวเอง ที่เรียกว่า local descriptor table (LDT) โดย descriptor points ของแต่ละละเซ็กเมนต์นั้นอาจแตกต่างจากเซ็กเมนต์ทั้งหมดที่ใช้กับกระบวนการอื่นๆ โดยแต่ละ segment นั้นจะมีช่องว่างแยกออกจากกันดังรูป

ซึ่งจากรูปจะแสดงให้เห็นว่า LDT หรือ local descriptor table ของแต่ละเซกเมนต์นั้นมีความแตกต่างกัน และแต่ละเซ็กเมนต์นั้นจะมี descriptor specifies ที่จะคอยบอกถึงขนาดของแต่ละเซ็กเมนต์
ตัวอย่าง เซ็กเมนต์เริ่มต้นที่ 3000 มีขนาด 2000 เลขฐานสิบหก ซึ่งได้จากคำนวณเป็น (0002 * 1000 เลขฐานสิบหก) จุดเริ่มต้นของเซ็กเมนต์ที่ 8000 มีขนาด A000 เลขฐานสิบหก
หัวข้อสุดท้าย Paging

ในระบบสถาปัตยกรรมทางคอมพิวเตอร์แบบ IA-32 นั้นสนับสนุนฟีเจอร์ที่ชื่อว่า เพจจิ้ง Paging ซึ่งอนุญาตให้แต่ละเซ็กเมนต์นั้นกันพื้นที่หน่วยความจำขนาด 4096-byte ซึ่งเรียกมันว่า pages เพจ
ซึ่ง เพจจิ้ง Paging อนุญาตให้หน่วยความจำทั้งหมดถูกใช้ในการรันทุกๆโปรแกรมในเวลาเดียวกันซึ่งมักจะมีขนาดของหน่วยความจำที่ใหญ่กว่าหน่วยความจำหลัก(RAM)จริงของเครื่อง ในบางครั้งนั้น Paging เพจจิ้ง อาจถูกเรียกว่า หน่วยความจำเสมือนหรือ virtual memory ซึ่งในโปรแกรมระบบปฏิบัติการหรือ OS นั้นส่วนใหญ่มักจะใส่โปรแกรมที่ใช้บริหารจัดการหน่วยความจำเสมือนเหล่านี้ที่เรียกว่า virtual memory manager เพจจิ้งนั้นเป็น ทางออกที่ช่วยแก้ปัญหาที่นักออกแบบระบบ ทั้งฮาร์ดแวร์และซอร์ฟแวร์ ได้รับประโยชน์
โดยโปรแกรมต่างๆจะในเครื่องคอมพิวเตอร์เรานั้นจะต้องถูกโหลดลงในหน่วยความจำที่หลักก่อนจึงจะสามารถเรียกใช้ได้ แต่หน่วยความจำหลักของคอมพิวเตอร์หรือ RAM นั้นมีราคาแพงมาก แต่การใช้งานนั้นต้องการโหลดโปรแกรมที่ใช้หน่วยความจำมากๆจนเกินขีดความสามรถของ RAM ซึ่งในทางตรงกันข้ามการเก็บข้อมูลบนดิสนั้นมีราคาต้นทุนที่ถูกกว่ามากและยังอยู่คงทนกว่า เพจจิ้ง Paging จึงเป็นเสมือนภาพลวงตาที่เหมือนกับว่าจะเป็นหน่วยความจำหลักที่ไม่จำกัดขนาด แต่ถึงอย่างไรก็ตามการเก็บข้อมูลบนดิสนั้น จะมีการเข้าถึงข้อมูลได้ช้ากว่ามากมากเมื่อเทียบกับหน่วยความจำหลักหรือ RAM หลายเท่า
การใช้หน่วยความจำเสมือน Paging นั้นจะทำให้สามารถทำงานกับโปรแกรมขนาดใหญ่มาก ๆ ได้ โดยไม่มีปัญหาเรื่องหน่วยความจำไม่เพียงพอ ระบบการทำงานของหน่วยความจำเสมือน Paging จะใช้วิธีแบ่งโปรแกรมออกเป็นส่วน ๆ และคอมพิวเตอร์จะทำการสลับ (swap) ส่วนของโปรแกรมที่ยังไม่ได้ใช้ลงไปยังหน่วยเก็บข้อมูลสำรอง และทำการสลับกลับมาในหน่วยความจำหลักเมื่อจำเป็นต้องใช้งาน หลักการของหน่วยความจำเสมือนทำให้สามารถทำงานกับโปรแกรมที่ต้องการใช้แรมไม่ต่ำกว่า 6 เมกะไบต์ บนเครื่องที่มีแรมเพียง 4 เมกะไบต์เท่านั้นได้
ซึ่งเจ้า Paging นี้จะช่วยทำลายข้อจำกัดของขนาดหน่วยความจำหลัก(RAM)ที่ไม่สามารถขยายให้เท่ากับความต้องการใช้งานคอมพิวเตอร์ในสภาวะจริงๆ ได้ virtual memory จึงมีส่วนสำคัญในการช่วยในการที่เราสามารถใช้งานโปรแกรมหลายๆโปรแกรมได้พร้อมๆกัน
**บทความนี้ยังไม่ได้รับการยืนยันความถูกต้องของข้อมูล เนื่องจากเป็น Technical Term ระดับสูง
ข้อมูลจาก หัวข้อ IA-32 Processor Architecture จากหนังสือ Assembly language for intel-based computers โดย Kip R. Irvine ถ่ายสำเนาไว้โดย Google Books

เรียบเรียงและวิเคราะห์เป็นภาษาไทย โดย เพชร อิ่มทองคำ ในนาม Phet.in.th
บทความนี้ให้ถือเป็นลิขสิทธิ ตามขอกำหนดของบล็อกนี้คือการอ้างอิงที่มา ตาม
ท่านผู้อ่านสามารถเพิ่มเติมข้อมูลหรือหากข้อมูลส่วนใหญ่ผิดก็รบกวนแจ้งผมด้วยนะครับจะได้ทำการแก้ไข ผ่านทาง Comment ได้เลยนะครับ
|
IA-32 Processor Architecture |




















































December 10th, 2009 at 6:13 pm
ขอบคุณครับ เจ๋ง!
[ยาจกสีเทา]
December 10th, 2009 at 7:26 pm
[ ขอบคุณสำหรับบทความ ]
December 11th, 2009 at 5:32 am
ว้าวววว เยี่ยมไปเลยคับลูกเพ่
ขอบคุนมากๆน้าาา ^^”
December 27th, 2009 at 4:28 pm
Ja, sannsynligvis sa det er
December 31st, 2009 at 8:38 am
Thank for foreign comment
This Blog is use Translate tool for WordPress to translate all article on this blog to another language
I am sorry If you can’t Understand about article because Translate Tool is not translate well
Thank You