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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Advertisements

ครั้งที่ 9 Function(ต่อ).
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
การซ้อนทับกัน และคลื่นนิ่ง
ตารางแฮช Hash Table.
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์
นายรังสฤษดิ์ตั้งคณารหัส นายวสันต์ชานุชิตรหัส
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
การเขียนผังงาน.
Hashing Function มีหลายฟังก์ชั่น การเลือกใช้ขึ้นอยู่กับความเหมาะสมของข้อมูล ตัวอย่างของฟังก์ชั่นแฮชมีดังนี้ 1. Mod คือการนำค่าคีย์มา mod ด้วยค่า n ใด.
Intermediate Representation (รูปแบบการแทนในระยะกลาง)
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
รหัสระหว่างกลาง (Intermediate code)
Data Type part.III.
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
โดย นางสาวกนกอร ศิริอำนาจ รหัสนิสิต กลุ่ม 2 Detailed VM Example.
การเรียงลำดับและการค้นหาแบบง่าย
Structure Programming
2.2 ภาษาเครื่อง (Machine language)
ความรู้ทั่วไปเกี่ยวกับโปรแกรม Microsoft Office Access 2003
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
ภาษาคอมพิวเตอร์.
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
ตัวชี้ P O I N T E R Created By Tasanawan Soonklang
โปรแกรมย่อย : Pascal Procedure
Lecture no. 6 Structure & Union
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
บทที่ 5 โหลดเดอร์ (Loader) Loader.
Macro Language and the Macro Processor
ขั้นตอนการแปลงไฟล์.
การขอเบิกเงินนอกงบประมาณ
C Programming Lecture no. 9 Structure.
C Programming Lecture no. 6: Function.
Functions & Sub Program ฟังก์ชันและโปรแกรมย่อย
Network programming Asst. Prof. Dr. Choopan Rattanapoka
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
การสร้างตาราง (Table)
บทที่ 3 ตัวดำเนินการ และ นิพจน์
Chapter 2 Database systems Architecture
ธนาวินท์ รักธรรมานนท์
การเขียนโปรแกรมภาษาซี
Memory Management ในยุคก่อน
วิธีสายงานวิกฤต Critical Path Method แบบ Activity on Arrow.
Flow Chart INT1103 Computer Programming
Linked List (ลิงค์ลิสต์)
Vm.odp. Detailed VM Example ตัวอย่างการทำงานของ page fault ISR ที่ จะสนับสนุนการทำงานของหน่วยความจำ เสมือน โดยการย้ายบิตที่ไม่จำเป็นออก จากหน้าเว็บ เนื่องจากว่ามันทำให้สับสน.
ระบบฐานข้อมูล (Database Management System)
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
ระบบคอมพิวเตอร์และการประมวลผล
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ลิงค์ลิสต์ (Linked List)
ฟังก์ชัน.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
ง การงานอาชีพและเทคโนโลยี 1 ครูสหรัฐ บัวทอง
PHP: [8] การสร้างฟังก์ชั่นขึ้นใช้เอง (User-defined functions)
ณ โรงแรมมารวยการ์เด็น ธันวาคม 2555
บทที่ 9 พอยเตอร์. สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อ การศึกษาเท่านั้น พอยเตอร์ (Pointer) พอยเตอร์คือต้นฉบับของชนิดข้อมูล เป็นชนิด ข้อมูลที่สร้างจากข้อมูลมาตรฐานชนิดหนึ่ง.
Chapter 11 Instruction Sets: Addressing Modes
Magnetic Tape แบ่งออกเป็น 2 ประเภท
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การเขียนผังงาน ผังงาน (Flowchart)
บทที่ 5 โปรแกรมย่อย.
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
Subroutine ธนวัฒน์ แซ่ เอียบ. Subrountine – คือส่วนหนึ่งของ code จากโปรแกรมทั้งหมด สำหรับปฏิบัติงานโดยเฉพาะ และเป็นอิสระ จาก code ส่วนอื่นของโปรแกรม ประโยชน์
ใบสำเนางานนำเสนอ:

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

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

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

Addr. Relocation Object code 0 00 ‘SQRT’ 4 00 ‘ERRb’ 8 01 ST 14,36 Source program MAIN START EXTRN SQRT EXTRN ERR ST 14,SAVE Save return address L 1,=F’9’ Load test value BAL 14,SQRT Call SQRT C 1,=F’3’ Compare answer BNE ERR Transfer to ERR L 14,SAVE Get return Address BR 14 Return to Caller SAVE DS F Temp. loc. END Program length = 48 bytes Transfer vector = 8 byte Rel. Addr. Relocation Object code 0 00 ‘SQRT’ 4 00 ‘ERRb’ 8 01 ST 14,36 12 01 L 1,40 16 01 BAL 14,0 20 01 C 1,44 24 01 BC 7,4 28 01 L 14,36 32 00 BCR 15,14 34 00 (Skipped for alignment) 36 00 (Temp location) 40 00 9 44 00 3 05/09/47 Loader

05/09/47 Loader

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

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

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

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

Program Card No. 1. JOHN START 2. ENTRY RESULT 3. EXTRN SUM 4. BALR 12,0 5. USING *,12 6. ST 14,SAVE 7. L 1,POINTER 8. L 15,ASUM 9. BALR 14,15 10. ST 1,RESULT 11. L 14,SAVE BR 14 TABLE DC F’1,7,9,10,3’ POINTER DC A(TABLE) RESULT DS F 16. SAVE DS F 17. ASUM DC A(SUM) END Translation Rel. loc. 0 BALR 12,0 2 ST 14,54(0,12) 6 L 1,46(0,12) 10 L 15,58(0,12) 14 BALR 14,15 16 ST 1,50(0,12) 20 L 14,54(0,12) 24 BCR 15,14 26 --- 28 1 32 7 36 9 40 10 44 3 48 28 52 --- 56 --- 60 ? 64 05/09/47 Loader

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

Program Card No. 1. JOHN START 2. ENTRY RESULT 3. EXTRN SUM 4. BALR 12,0 5. USING *,12 6. ST 14,SAVE 7. L 1,POINTER 8. L 15,ASUM 9. BALR 14,15 10. ST 1,RESULT 11. L 14,SAVE BR 14 TABLE DC F’1,7,9,10,3’ POINTER DC A(TABLE) RESULT DS F 16. SAVE DS F 17. ASUM DC A(SUM) END Translation Rel. loc. 0 BALR 12,0 2 ST 14,54(0,12) 6 L 1,46(0,12) 10 L 15,58(0,12) 14 BALR 14,15 16 ST 1,50(0,12) 20 L 14,54(0,12) 24 BCR 15,14 26 --- 28 1 32 7 36 9 40 10 44 3 48 28 52 --- 56 --- 60 ? 64 05/09/47 Loader

05/09/47 Loader

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

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

การเรียงลำดับข้อมูลในโปรแกรมย่อย ESD โปรแกรมย่อย A TXT RLD END โปรแกรมย่อย B TXT โปรแกรมย่อย C TXT 05/09/47 Loader

05/09/47 Loader

5.1.7 โหลดเดอร์ชนิดอื่นๆ – ชนิด Binders – ชนิด Overlays 05/09/47 Loader

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

Overlay Structure ถ้าขนาดของโปรแกรมใหญ่กว่าขนาดของหน่วยความจำ 05/09/47 Loader

(b) Overlay Structure 05/09/47 Loader