ความแตกต่างระหว่างตัวเชื่อมโยงและตัวโหลด

ผู้เขียน: Laura McKinney
วันที่สร้าง: 3 เมษายน 2021
วันที่อัปเดต: 8 พฤษภาคม 2024
Anonim
ความแตกต่างระหว่าง Framework และ Library? 🤔
วิดีโอ: ความแตกต่างระหว่าง Framework และ Library? 🤔

เนื้อหา


Linker and Loader เป็นโปรแกรมยูทิลิตี้ที่มีบทบาทสำคัญในการทำงานของโปรแกรม ซอร์สโค้ดของโปรแกรมส่งผ่านคอมไพเลอร์แอสเซมเบลอร์ลิงเกอร์โหลดเดอร์ตามลำดับที่เกี่ยวข้องก่อนดำเนินการ ในมือข้างหนึ่งที่ ลิงเกอร์ intakes รหัสวัตถุที่สร้างขึ้นโดยผู้ประกอบและรวมพวกเขาในการสร้างโมดูลปฏิบัติการ ในทางกลับกัน รถตักดิน โหลดโมดูลที่สามารถเรียกใช้งานได้นี้ไปยังหน่วยความจำหลักเพื่อดำเนินการ ให้เราคุยเกี่ยวกับความแตกต่างระหว่าง Linker และโหลดเดอร์ด้วยความช่วยเหลือของกราฟเปรียบเทียบ

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบlinkerพับ
ขั้นพื้นฐานมันสร้างโมดูลที่ปฏิบัติการได้ของโปรแกรมต้นฉบับมันโหลดโมดูลที่ปฏิบัติการได้ไปยังหน่วยความจำหลัก
อินพุตมันใช้เป็นอินพุตรหัสวัตถุที่สร้างโดยแอสเซมเบลอร์ใช้โมดูลปฏิบัติการที่สร้างขึ้นโดย linker
ฟังก์ชันมันรวมโมดูลวัตถุทั้งหมดของซอร์สโค้ดเพื่อสร้างโมดูลที่ปฏิบัติการได้มันจัดสรรที่อยู่ไปยังโมดูลที่ปฏิบัติการได้ในหน่วยความจำหลักสำหรับการดำเนินการ
ประเภท / วิธีการตัวแก้ไขลิงก์, ตัวเชื่อมโยงแบบไดนามิกการโหลดแบบสัมบูรณ์การโหลดแบบ relocatable และการโหลดแบบรันไทม์แบบไดนามิก


ความหมายของ Linker

แอสเซมเบลอร์สร้างโค้ดออบเจ็กต์ของซอร์สโปรแกรมและส่งมอบให้กับลิงเกอร์ ตัวเชื่อมโยงใช้รหัสวัตถุนี้และสร้าง รหัสปฏิบัติการ สำหรับโปรแกรมและส่งมอบให้กับ Loader

ภาษาระดับสูงมีบางโปรแกรม ห้องสมุดในตัว และ ไฟล์ส่วนหัว. ซอร์สโปรแกรมอาจมีฟังก์ชั่นไลบรารีบางอย่างที่มีการจัดเก็บคำจำกัดความไว้ในไลบรารีภายใน ตัวเชื่อมโยงเชื่อมโยงฟังก์ชันเหล่านี้กับไลบรารีในตัว ในกรณีที่ไม่พบไลบรารี่ในตัวมันจะแจ้งไปยังคอมไพเลอร์และคอมไพเลอร์จะสร้างข้อผิดพลาด

บางครั้งโปรแกรมขนาดใหญ่จะถูกแบ่งออกเป็นโปรแกรมย่อยที่เรียกว่า โมดูล. ตอนนี้เมื่อรวบรวมและประกอบโมดูลเหล่านี้โมดูลวัตถุของโปรแกรมต้นฉบับจะถูกสร้างขึ้น ตัวลิงก์มีความรับผิดชอบในการรวม / เชื่อมโยงโมดูลวัตถุทั้งหมดเพื่อสร้างไฟล์เรียกทำงานไฟล์เดียวของโปรแกรมต้นฉบับ เรามีลิงเกอร์สองประเภท

แก้ไขการเชื่อมโยง: มันเป็น linker ที่สร้างโมดูล relocatable, executable

Dynamic Linker: มันเลื่อน / เลื่อนการเชื่อมโยงของโมดูลภายนอกบางตัวจนกว่าโมดูลโหลด / โมดูลที่ปฏิบัติการได้จะถูกสร้างขึ้น ที่นี่การเชื่อมโยงจะทำในช่วงเวลาโหลดหรือเวลาทำงาน


คำจำกัดความของ Loader

เนื่องจากโปรแกรมที่จะต้องดำเนินการในปัจจุบันจะต้องอยู่ในหน่วยความจำหลักของคอมพิวเตอร์ มันเป็นความรับผิดชอบของ ยก, โปรแกรมในระบบปฏิบัติการเพื่อโหลดไฟล์ / โมดูลปฏิบัติการของโปรแกรมที่สร้างโดย linker ไปยังหน่วยความจำหลักสำหรับการดำเนินการ มันจัดสรรพื้นที่หน่วยความจำให้กับโมดูลปฏิบัติการในหน่วยความจำหลัก

วิธีการโหลดมีสามประเภท:

  • การโหลดแน่นอน
  • โหลด relocatable
  • การโหลดรันไทม์แบบไดนามิก

การโหลดแน่นอน: วิธีการนี้จะโหลดไฟล์กระทำการของโปรแกรมลงใน ตำแหน่งหน่วยความจำหลักเดียวกัน แต่ละครั้ง. แต่ก็มีบ้าง ข้อเสีย เช่นโปรแกรมเมอร์จะต้องตระหนักถึงกลยุทธ์การกำหนดสำหรับการโหลดโมดูลไปยังหน่วยความจำหลัก ในกรณีที่โปรแกรมจะถูกแก้ไขที่เกี่ยวข้องกับการแทรกและการลบบางส่วนในโปรแกรมแล้วที่อยู่ทั้งหมดของโปรแกรมจะต้องมีการเปลี่ยนแปลง

โหลด relocatable: ในวิธีการนี้คอมไพเลอร์หรือแอสเซมเบลอร์ทำ ไม่สร้างที่อยู่หน่วยความจำหลักที่แท้จริง. มันสร้างที่อยู่ญาติ

การโหลดแบบรันไทม์แบบไดนามิก: ในวิธีการนี้จะสร้างที่อยู่แบบสัมบูรณ์สำหรับโปรแกรมเมื่อคำสั่งของโมดูลที่ปฏิบัติการได้ถูกดำเนินการจริง มีความยืดหยุ่นสูงสามารถโหลดโมดูล / โมดูลที่รันได้ได้ พื้นที่ใด ๆ ของหน่วยความจำหลัก. โปรแกรมการดำเนินการสามารถถูกขัดจังหวะในระหว่างและสามารถสลับออกไปยังดิสก์และกลับไปที่หน่วยความจำหลักในครั้งนี้ที่ที่อยู่หน่วยความจำหลักที่แตกต่างกัน

  1. ความแตกต่างที่สำคัญระหว่างตัวเชื่อมโยงและตัวโหลดคือตัวเชื่อมโยงสร้าง ปฏิบัติการ ไฟล์ของโปรแกรมในขณะที่โหลดโหลดไฟล์ปฏิบัติการที่ได้รับจาก linker เข้า หน่วยความจำหลักสำหรับการประมวลผล.
  2. ตัวเชื่อมโยงจะใช้งาน โมดูลวัตถุ ของโปรแกรมที่สร้างโดยแอสเซมเบลอร์ อย่างไรก็ตามตัวโหลดจะใช้งาน โมดูลปฏิบัติการ สร้างขึ้นโดยลิงเกอร์
  3. ตัวลิงก์รวมโมดูลวัตถุทั้งหมดของโปรแกรมเพื่อสร้าง โมดูลที่ปฏิบัติการได้ มันยังเชื่อมโยง ฟังก์ชั่นห้องสมุด ในโมดูลวัตถุถึง ห้องสมุดในตัว ของภาษาการเขียนโปรแกรมระดับสูง ในอีกทางหนึ่งโหลด จัดสรรพื้นที่ให้กับไฟล์สั่งการ โมดูลในหน่วยความจำหลัก
  4. ตัวเชื่อมโยงสามารถจำแนกได้เป็น บรรณาธิการเชื่อมโยง และ ตัวเชื่อมโยงแบบไดนามิก ในขณะที่โหลดสามารถจัดเป็น โหลดเดอร์สัมบูรณ์โหลดเดอร์ relocatable และ ตัวโหลดรันไทม์แบบไดนามิก.

สรุป:

ตัวเชื่อมโยงใช้โมดูลวัตถุของโปรแกรมจากแอสเซมเบลอร์และเชื่อมโยงเข้าด้วยกันเพื่อสร้างโมดูลที่สามารถเรียกใช้งานได้ของโปรแกรม จากนั้นโมดูลที่สามารถเรียกใช้งานได้จะถูกโหลดโดยตัวโหลดลงในหน่วยความจำหลักเพื่อดำเนินการ