แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

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

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

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

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

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

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

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

ตัวแก้ไขการเชื่อมโยง : มันเป็นตัวเชื่อมโยงที่สร้างโมดูล relocatable ที่ปฏิบัติการได้

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

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

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

มีวิธีการโหลดสามแบบ:

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

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

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

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

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

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

สรุป:

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

Top