1 / 21

5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders). หลีกเลี่ยงการแปลภาษาแอสเซมบลี้ของโปรแกรมย่อยทั้งหมดให้เป็นภาษาเครื่องซ้ำอีกครั้ง (Reassembling)

ula
Download Presentation

5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 5.1.5 โหลดเดอร์แบบย้ายโปรแกรมได้(Relocating Loaders) • หลีกเลี่ยงการแปลภาษาแอสเซมบลี้ของโปรแกรมย่อยทั้งหมดให้เป็นภาษาเครื่องซ้ำอีกครั้ง (Reassembling) • แทนที่จะให้โปรแกรมเมอร์ทำหน้าที่หาที่ว่างในหน่วยความจำ (Allocation) และ เชื่อมโยงแอดเดรสระหว่างโปรแกรมย่อย Linkage) เราก็จะใช้โหลดเดอร์วิธีใหม่ที่เรียกว่า โหลดเดอร์แบบย้ายโปรแกรมได้ (Relocating Loaders) • ตัวอย่างของโหลดเดอร์ที่ใช้หลักการของ Relocating Loaders คือ โหลดเดอร์ชื่อ Binary Symbolic Subroutine (BSS) Loader

  2. โหลดเดอร์ BSS • ยอมให้มี Segments ของโปรแกรมย่อย (Procedure segments) จำนวนมาก • แต่ยอมให้มี Segments ของข้อมูล (Data segments) เพียงอันเดียว (ข้อมูลจะถูกโปรแกรมย่อยแต่ละตัวใช้ Segment นี้ร่วมกัน) • ตัวแอสเซมเบลอร์จะทำการแปล Segment โปรแกรมย่อยแต่ละ Segment อย่างอิสระ และส่งต่อให้กับตัวโหลดเดอร์ Loader

  3. Transfer vector, Length และ relocation bit • Transfer vector ค่าที่ใช้อ้างอิงสัญลักษณ์ภายนอกแต่ละตัว ใช้ในการแก้ปัญหาของ Linking • Length ความยาวของโปรแกรม ใช้แก้ปัญหาการจัดสรรหน่วยความจำ • relocation bit ใช้ในการแก้ปัญหาของ Relocation • 00 Fixed • 01 Relocate ได้ Loader

  4. Loader

  5. 1 Loader

  6. ข้อเสียของ BSS • Transfer vector linkage มีประโยชน์แค่การ Transfer เพียงอย่างเดียว มันไม่เอื้ออำนวยต่อการ Loading หรือการเก็บข้อมูลภายนอก (ข้อมูลที่อยู่อีก Segment หนึ่ง) • Transfer vector เพิ่มขนาดของโปรแกรมภาษาเครื่องในหน่วยความจำ • ตัวโหลดเดอร์ BSS จะดีกับ Segments ที่เป็นคำสั่ง แต่ไม่สะดวกกับการเข้าถึง Segment ที่เป็นข้อมูลที่ใช้ร่วมกัน (แก้ไขได้โดยยอมให้มี Segment ข้อมูลที่ใช้ร่วมกันได้ เพียง Segment เดียว ซึ่งเรียกว่า COMMON) Loader

  7. 5.1.6 โหลดเดอร์แบบลิงค์โดยตรง (Direct-Linking Loaders) • เป็นโหลดเดอร์ที่ดีที่สุด • ยอมให้มี Segments คำสั่งได้หลาย Segments และยอมให้มี Segments ข้อมูลได้หลาย Segments และยอมให้มีการ Reference คำสั่งและข้อมูลที่อยู่ใน Segment อื่นๆ Loader

  8. ข้อมูลของแต่ละ Segment • ความยาว (Length) ของ Segment • รายการของสัญลักษณ์ทั้งหมดใน Segment ซึ่งอาจจะถูกอ้างใช้ (Referenced) โดย Segment อื่น และ Relative location ภายใน Segment • รายการของสัญลักษณ์ทั้งหมดที่ไม่ได้ถูกกำหนดหรือประกาศใน Segment แต่มีการใช้สัญลักษณ์นั้น • ข้อมูลเกี่ยวกับ Address constant ว่าจะวางที่ตำแหน่งไหนใน Segment และรายละเอียดว่าเราจะแก้ไขข้อมูลอย่างไร • ภาษาเครื่องที่ได้จากการแปลงมาจากภาษาแอสเซมบลี้ รวมทั้ง Relative address ของมัน Loader

  9. ข้อมูลใน Object ที่เก็บสัญลักษณ์ภายนอก • ESD (External Symbol Dictionary) บรรจุข้อมูลเกี่ยวกับ สัญลักษณ์ทั้งหมดที่ถูกกำหนดในโปรแกรมนี้ แต่อาจถูกอ้างถึง (Referred) จากที่อื่น • TXT (Text) รหัสภาษาเครื่องที่แปลงมาจาก source program • RLD (Relocation and Linkage Directory) บรรจุ รหัสภาษาเครื่องที่แปลงมาจาก Source program บัตรที่เก็บแอดเดรสที่เปลี่ยนตำแหน่ง และใช้ในการลิงค์ • END แสดงการจบของ Object Loader

  10. Loader

  11. ตัวอย่างข้อมูล ESD TXT RLD และ END ของ โหลดเดอร์แบบลิงค์โดยตรง Loader

  12. Loader

  13. Loader

  14. บัตร ESD บรรจุข้อมูลเหล่านี้ • SD ซึ่งหมายถึงสัญลักษณ์ที่ถูกกำหนดให้เป็น Segment (Segment definition) • LD เป็นการกำหนดภายใน Segment ของมัน (Local definition) • ER(External reference) ใช้ในการอ้างอิงภายนอก Loader

  15. บัตร RLD บรรจุข้อมูลเหล่านี้ • ตำแหน่งต่างๆ ของตัวคงที่ (Constant) แต่ละตัว ที่ต้องการการเปลี่ยนแปลงอันเนื่องมาจากการเคลื่อนย้ายโปรแกรม Relocation • มันต้องถูกเปลี่ยนโดยอะไร • การทำงาน (Operation) ที่จะต้องถูกจัดการ Loader

  16. การเรียงลำดับข้อมูลในโปรแกรมย่อยการเรียงลำดับข้อมูลในโปรแกรมย่อย ESD โปรแกรมย่อย A TXT RLD END ESD โปรแกรมย่อย BTXT RLD END ESD โปรแกรมย่อย CTXT RLD END Loader

  17. Loader

  18. 5.1.7 โหลดเดอร์ชนิดอื่นๆ – ชนิด Binders – ชนิด Overlays Loader

  19. Binder • ทำหน้าที่เหมือนกับ Direct-Linking Loader ที่ทำหน้าที่ Binding โปรแกรมย่อยต่างๆ เข้าด้วยกัน แต่แทนที่จะ Relocated และ Linked Text โดยตรงกับหน่วยความจำ แต่มันจะเก็บ Text ลงใน File • File ที่เก็บในดิสก์อยู่ในฟอร์แมทที่พร้อมจะถูกโหลดเรียกว่า โมดุลโหลดเดอร์ • Binder จะทำหน้าที่ Allocation, Relocation, และ Link Loader

  20. Overlay Structure • ถ้าขนาดของโปรแกรมใหญ่กว่าขนาดของหน่วยความจำ Loader

  21. 70K (b) Overlay Structure Loader

More Related