ความแตกต่างระหว่างตัวเชื่อมโยงและตัวโหลด
เนื้อหา
Linker and Loader เป็นโปรแกรมยูทิลิตี้ที่มีบทบาทสำคัญในการทำงานของโปรแกรม ซอร์สโค้ดของโปรแกรมส่งผ่านคอมไพเลอร์แอสเซมเบลอร์ลิงเกอร์โหลดเดอร์ตามลำดับที่เกี่ยวข้องก่อนดำเนินการ ในมือข้างหนึ่งที่ ลิงเกอร์ intakes รหัสวัตถุที่สร้างขึ้นโดยผู้ประกอบและรวมพวกเขาในการสร้างโมดูลปฏิบัติการ ในทางกลับกัน รถตักดิน โหลดโมดูลที่สามารถเรียกใช้งานได้นี้ไปยังหน่วยความจำหลักเพื่อดำเนินการ ให้เราคุยเกี่ยวกับความแตกต่างระหว่าง Linker และโหลดเดอร์ด้วยความช่วยเหลือของกราฟเปรียบเทียบ
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | linker | พับ |
---|---|---|
ขั้นพื้นฐาน | มันสร้างโมดูลที่ปฏิบัติการได้ของโปรแกรมต้นฉบับ | มันโหลดโมดูลที่ปฏิบัติการได้ไปยังหน่วยความจำหลัก |
อินพุต | มันใช้เป็นอินพุตรหัสวัตถุที่สร้างโดยแอสเซมเบลอร์ | ใช้โมดูลปฏิบัติการที่สร้างขึ้นโดย linker |
ฟังก์ชัน | มันรวมโมดูลวัตถุทั้งหมดของซอร์สโค้ดเพื่อสร้างโมดูลที่ปฏิบัติการได้ | มันจัดสรรที่อยู่ไปยังโมดูลที่ปฏิบัติการได้ในหน่วยความจำหลักสำหรับการดำเนินการ |
ประเภท / วิธีการ | ตัวแก้ไขลิงก์, ตัวเชื่อมโยงแบบไดนามิก | การโหลดแบบสัมบูรณ์การโหลดแบบ relocatable และการโหลดแบบรันไทม์แบบไดนามิก |
ความหมายของ Linker
แอสเซมเบลอร์สร้างโค้ดออบเจ็กต์ของซอร์สโปรแกรมและส่งมอบให้กับลิงเกอร์ ตัวเชื่อมโยงใช้รหัสวัตถุนี้และสร้าง รหัสปฏิบัติการ สำหรับโปรแกรมและส่งมอบให้กับ Loader
ภาษาระดับสูงมีบางโปรแกรม ห้องสมุดในตัว และ ไฟล์ส่วนหัว. ซอร์สโปรแกรมอาจมีฟังก์ชั่นไลบรารีบางอย่างที่มีการจัดเก็บคำจำกัดความไว้ในไลบรารีภายใน ตัวเชื่อมโยงเชื่อมโยงฟังก์ชันเหล่านี้กับไลบรารีในตัว ในกรณีที่ไม่พบไลบรารี่ในตัวมันจะแจ้งไปยังคอมไพเลอร์และคอมไพเลอร์จะสร้างข้อผิดพลาด
บางครั้งโปรแกรมขนาดใหญ่จะถูกแบ่งออกเป็นโปรแกรมย่อยที่เรียกว่า โมดูล. ตอนนี้เมื่อรวบรวมและประกอบโมดูลเหล่านี้โมดูลวัตถุของโปรแกรมต้นฉบับจะถูกสร้างขึ้น ตัวลิงก์มีความรับผิดชอบในการรวม / เชื่อมโยงโมดูลวัตถุทั้งหมดเพื่อสร้างไฟล์เรียกทำงานไฟล์เดียวของโปรแกรมต้นฉบับ เรามีลิงเกอร์สองประเภท
แก้ไขการเชื่อมโยง: มันเป็น linker ที่สร้างโมดูล relocatable, executable
Dynamic Linker: มันเลื่อน / เลื่อนการเชื่อมโยงของโมดูลภายนอกบางตัวจนกว่าโมดูลโหลด / โมดูลที่ปฏิบัติการได้จะถูกสร้างขึ้น ที่นี่การเชื่อมโยงจะทำในช่วงเวลาโหลดหรือเวลาทำงาน
คำจำกัดความของ Loader
เนื่องจากโปรแกรมที่จะต้องดำเนินการในปัจจุบันจะต้องอยู่ในหน่วยความจำหลักของคอมพิวเตอร์ มันเป็นความรับผิดชอบของ ยก, โปรแกรมในระบบปฏิบัติการเพื่อโหลดไฟล์ / โมดูลปฏิบัติการของโปรแกรมที่สร้างโดย linker ไปยังหน่วยความจำหลักสำหรับการดำเนินการ มันจัดสรรพื้นที่หน่วยความจำให้กับโมดูลปฏิบัติการในหน่วยความจำหลัก
วิธีการโหลดมีสามประเภท:
- การโหลดแน่นอน
- โหลด relocatable
- การโหลดรันไทม์แบบไดนามิก
การโหลดแน่นอน: วิธีการนี้จะโหลดไฟล์กระทำการของโปรแกรมลงใน ตำแหน่งหน่วยความจำหลักเดียวกัน แต่ละครั้ง. แต่ก็มีบ้าง ข้อเสีย เช่นโปรแกรมเมอร์จะต้องตระหนักถึงกลยุทธ์การกำหนดสำหรับการโหลดโมดูลไปยังหน่วยความจำหลัก ในกรณีที่โปรแกรมจะถูกแก้ไขที่เกี่ยวข้องกับการแทรกและการลบบางส่วนในโปรแกรมแล้วที่อยู่ทั้งหมดของโปรแกรมจะต้องมีการเปลี่ยนแปลง
โหลด relocatable: ในวิธีการนี้คอมไพเลอร์หรือแอสเซมเบลอร์ทำ ไม่สร้างที่อยู่หน่วยความจำหลักที่แท้จริง. มันสร้างที่อยู่ญาติ
การโหลดแบบรันไทม์แบบไดนามิก: ในวิธีการนี้จะสร้างที่อยู่แบบสัมบูรณ์สำหรับโปรแกรมเมื่อคำสั่งของโมดูลที่ปฏิบัติการได้ถูกดำเนินการจริง มีความยืดหยุ่นสูงสามารถโหลดโมดูล / โมดูลที่รันได้ได้ พื้นที่ใด ๆ ของหน่วยความจำหลัก. โปรแกรมการดำเนินการสามารถถูกขัดจังหวะในระหว่างและสามารถสลับออกไปยังดิสก์และกลับไปที่หน่วยความจำหลักในครั้งนี้ที่ที่อยู่หน่วยความจำหลักที่แตกต่างกัน
- ความแตกต่างที่สำคัญระหว่างตัวเชื่อมโยงและตัวโหลดคือตัวเชื่อมโยงสร้าง ปฏิบัติการ ไฟล์ของโปรแกรมในขณะที่โหลดโหลดไฟล์ปฏิบัติการที่ได้รับจาก linker เข้า หน่วยความจำหลักสำหรับการประมวลผล.
- ตัวเชื่อมโยงจะใช้งาน โมดูลวัตถุ ของโปรแกรมที่สร้างโดยแอสเซมเบลอร์ อย่างไรก็ตามตัวโหลดจะใช้งาน โมดูลปฏิบัติการ สร้างขึ้นโดยลิงเกอร์
- ตัวลิงก์รวมโมดูลวัตถุทั้งหมดของโปรแกรมเพื่อสร้าง โมดูลที่ปฏิบัติการได้ มันยังเชื่อมโยง ฟังก์ชั่นห้องสมุด ในโมดูลวัตถุถึง ห้องสมุดในตัว ของภาษาการเขียนโปรแกรมระดับสูง ในอีกทางหนึ่งโหลด จัดสรรพื้นที่ให้กับไฟล์สั่งการ โมดูลในหน่วยความจำหลัก
- ตัวเชื่อมโยงสามารถจำแนกได้เป็น บรรณาธิการเชื่อมโยง และ ตัวเชื่อมโยงแบบไดนามิก ในขณะที่โหลดสามารถจัดเป็น โหลดเดอร์สัมบูรณ์โหลดเดอร์ relocatable และ ตัวโหลดรันไทม์แบบไดนามิก.
สรุป:
ตัวเชื่อมโยงใช้โมดูลวัตถุของโปรแกรมจากแอสเซมเบลอร์และเชื่อมโยงเข้าด้วยกันเพื่อสร้างโมดูลที่สามารถเรียกใช้งานได้ของโปรแกรม จากนั้นโมดูลที่สามารถเรียกใช้งานได้จะถูกโหลดโดยตัวโหลดลงในหน่วยความจำหลักเพื่อดำเนินการ