RSS

หัวข้อยากประจำสัปดาห์กลับมาอีกครั้ง Flat Segmentation Model, Multi-Segment Model และ Paging

Wed, Dec 9, 2009

Computer, Genaral Talk, Hardware, Software

สวัสดีท่านผู้อ่านทุกท่านครับ วันนี้หัวข้อการเขียนแบบมัดมือชกได้กลับเข้ามาอีกครั้งครับ หลังจากห่างหายไปไม่นาน นับตั้งแต่ เรื่องของ VM หรือ virtual machine รอบนนี้หนักกว่าครับ เจอของยาก

หัวข้อประจำสัปดาห์นี้มาจากการเรียนเกี่ยวกับสถาปัตยกรรมคอมพิวเตอร์แบบ 32-bit หรือ IA-32 ครับ ซึ่งมันเป็นอะไรที่ยากมากเพราะหนังสือไทยไม่มีให้อ่าน หนังสือฝรั่งก็ยิ่งอ่านยากเพราะมันเป็น Technical Term ล้วนๆเลย ผมเองยังไม่มั้นใจในความถูกต้องของ การตีความและทำความเข้าใจจากหนังสือภาษาอังกฤษเลยครับ

เริ่มกันเลยที่หัวข้อแรก Flat Segmentation Model หรือ โมเดลการจัดการแบ่งกลุ่มหน่วยความจำ

ในการจัดกลุ่มของหน่วยความจำ physical address แบบ 32 bit บนพื้นที่ของคอมพิวเตอร์ นั้นจะต้องสร้างเซ็กเมนต์อย่างน้อยสองส่วน ส่วนหนึ่งสำหรับโค๊ตโปรแกรมและอีกส่วนหนึ่งสำหรับข้อมูล ซึ่งในแต่ละ segment นั้นจะถูกกำหนดด้วย segment descriptor  และจะถูกกำหนดโดยตาราง the global descriptor table (GDT)

http://img.spacethai.net/images/flat.jpg

ซึ่งขอบเขตของข้อมูล ที่พร้อมใช้งานจะถูกชี้ไปยังตำแหน่งแรกของหน่วยความจำที่ (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 นั้นจะมีช่องว่างแยกออกจากกันดังรูป

http://img.spacethai.net/images/muti.jpg

ซึ่งจากรูปจะแสดงให้เห็นว่า LDT หรือ local descriptor table ของแต่ละเซกเมนต์นั้นมีความแตกต่างกัน และแต่ละเซ็กเมนต์นั้นจะมี descriptor specifies ที่จะคอยบอกถึงขนาดของแต่ละเซ็กเมนต์

ตัวอย่าง เซ็กเมนต์เริ่มต้นที่ 3000 มีขนาด 2000 เลขฐานสิบหก ซึ่งได้จากคำนวณเป็น (0002 * 1000 เลขฐานสิบหก) จุดเริ่มต้นของเซ็กเมนต์ที่ 8000 มีขนาด A000 เลขฐานสิบหก

หัวข้อสุดท้าย Paging

http://img.spacethai.net/images/virtualmem.png

ในระบบสถาปัตยกรรมทางคอมพิวเตอร์แบบ 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

http://img.spacethai.net/images/0132383101.jpg

เรียบเรียงและวิเคราะห์เป็นภาษาไทย โดย เพชร อิ่มทองคำ ในนาม Phet.in.th

บทความนี้ให้ถือเป็นลิขสิทธิ ตามขอกำหนดของบล็อกนี้คือการอ้างอิงที่มา ตาม Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License รบกวนทำความเข้าใจก่อนนะครับ

ท่านผู้อ่านสามารถเพิ่มเติมข้อมูลหรือหากข้อมูลส่วนใหญ่ผิดก็รบกวนแจ้งผมด้วยนะครับจะได้ทำการแก้ไข ผ่านทาง Comment ได้เลยนะครับ

IA-32 Processor Architecture

  • Share/Bookmark
, , , , , , , , , , , , ,

5 Comments For This Post

  1. Prew Says:

    ขอบคุณครับ เจ๋ง!
    [ยาจกสีเทา]

  2. KhonBanNa Says:

    [ ขอบคุณสำหรับบทความ ]

  3. Sine-Comsci Says:

    ว้าวววว เยี่ยมไปเลยคับลูกเพ่

    ขอบคุนมากๆน้าาา ^^”

  4. tool Says:

    Ja, sannsynligvis sa det er

  5. Phet Says:

    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

Leave a Reply