ความแตกต่างที่สำคัญ – ตัวเชื่อมโยง vs ตัวโหลด
โปรแกรมคอมพิวเตอร์ใช้เพื่อให้คำแนะนำกับคอมพิวเตอร์ มันเขียนโดยใช้ภาษาโปรแกรมเฉพาะ ภาษาการเขียนโปรแกรมเช่น C, Java เป็นภาษาโปรแกรมระดับสูงและมนุษย์สามารถเข้าใจได้ แต่ไม่ใช่คอมพิวเตอร์ ดังนั้นโปรแกรมระดับสูงจึงถูกแปลงเป็นภาษาเครื่องโดยใช้ตัวแปลภาษา โปรแกรมที่เขียนด้วยภาษาระดับสูงคือซอร์สโค้ด หลังจากแปลงแล้ว โค้ดที่แปลแล้วจะเรียกว่าโค้ดอ็อบเจ็กต์ ตัวเชื่อมโยงและตัวโหลดเป็นโปรแกรมซอฟต์แวร์สองโปรแกรมที่ใช้สำหรับการทำงานของโปรแกรม บทความนี้กล่าวถึงความแตกต่างระหว่างตัวเชื่อมโยงและตัวโหลดLinker เป็นซอฟต์แวร์ที่เชื่อมโยงโค้ดอ็อบเจ็กต์กับไฟล์เพิ่มเติม เช่น ไฟล์ส่วนหัว และสร้างไฟล์ปฏิบัติการที่มีนามสกุล.exe ตัวโหลดคือซอฟต์แวร์ระบบที่โหลดไฟล์เรียกทำงานที่สร้างโดยตัวเชื่อมโยงไปยังหน่วยความจำหลัก นั่นคือข้อแตกต่างที่สำคัญระหว่าง Linker และ Loader
ลิงเกอร์คืออะไร
โปรแกรมคอมพิวเตอร์คือชุดคำสั่งที่มอบให้กับคอมพิวเตอร์เพื่อทำงานบางอย่าง โปรแกรมคอมพิวเตอร์สามารถเขียนได้โดยใช้ภาษาโปรแกรม ภาษาโปรแกรมส่วนใหญ่เป็นโปรแกรมระดับสูง โปรแกรมเมอร์สามารถเข้าใจและอ่านได้ง่าย ภาษาเหล่านั้นเป็นไปตามไวยากรณ์ที่คล้ายกับภาษาอังกฤษ ตัวอย่างภาษาระดับสูง ได้แก่ Java, C และ Python โปรแกรมที่เขียนโดยใช้ภาษาโปรแกรมระดับสูงเรียกว่าซอร์สโค้ด ซอร์สไฟล์ หรือโปรแกรมต้นทาง ส่วนขยายของซอร์สโค้ดขึ้นอยู่กับภาษาที่พัฒนาขึ้นด้วย หากซอร์สโค้ดเขียนด้วย C ++ นามสกุลไฟล์จะเป็น.ซีพีพี หากซอร์สโค้ดเขียนด้วย Python ส่วนขยายจะเป็น.py.
โปรแกรมเมอร์สามารถเข้าใจซอร์สโค้ดได้ คอมพิวเตอร์ไม่สามารถเข้าใจได้ ดังนั้น ซอร์สโค้ดควรถูกแปลงเป็นรูปแบบที่เครื่องเข้าใจได้โดยใช้ตัวแปลภาษา อาจเป็นคอมไพเลอร์หรือล่ามก็ได้ รหัสที่แปลแล้วเรียกว่ารหัสวัตถุ รหัสวัตถุเป็นภาษาเครื่อง ประกอบด้วยศูนย์และครั้งเดียว คอมพิวเตอร์สามารถเข้าใจรหัสวัตถุได้โดยตรง มันมีนามสกุล.obj หากมีซอร์สโค้ดเป็น Test.c มันจะผ่านคอมไพเลอร์และโค้ดที่แปลงจะกลายเป็น Test.obj.
Linker เป็นซอฟต์แวร์ที่เชื่อมโยงโค้ดอ็อบเจ็กต์กับไฟล์เพิ่มเติม เช่น ไฟล์ส่วนหัว และสร้างไฟล์ปฏิบัติการที่มีนามสกุล.exe โปรแกรมอาจใช้ฟังก์ชันในตัว ฟังก์ชันสำหรับฟังก์ชันในตัวเหล่านั้นอยู่ในไฟล์ส่วนหัว ตามตัวอย่างที่อธิบายข้างต้น รหัสวัตถุซึ่งก็คือการทดสอบobj ถูกเพิ่มด้วยไฟล์ส่วนหัวที่จำเป็นโดยใช้ Linker มันสร้างไฟล์ใหม่ที่เรียกว่า Test.exe มันเป็นไฟล์ปฏิบัติการ ดังนั้นจึงสามารถเรียกใช้งานได้จากคอมพิวเตอร์
ตัวโหลดคืออะไร
โปรแกรมที่ควรรันต้องอยู่ในหน่วยความจำ ตัวเชื่อมโยงเชื่อมโยงรหัสอ็อบเจ็กต์และไฟล์ส่วนหัวและส่งออกไฟล์เรียกทำงาน ตัวโหลดคือซอฟต์แวร์ระบบที่โหลดไฟล์เรียกทำงานที่สร้างโดยตัวเชื่อมโยงไปยังหน่วยความจำหลัก มันจัดสรรพื้นที่หน่วยความจำให้กับโมดูลปฏิบัติการในหน่วยความจำหลัก ดังนั้นตัวโหลดจึงเป็นส่วนหนึ่งของระบบปฏิบัติการที่รับผิดชอบในการโหลดโปรแกรมและไลบรารี
รูปที่ 01: ลำดับที่ซอร์สโค้ดโหลดไปยังหน่วยความจำ
การโหลดโปรแกรมมีหลายขั้นตอน มันเกี่ยวข้องกับการอ่านเนื้อหาของไฟล์ปฏิบัติการที่มีคำสั่งโปรแกรมลงในหน่วยความจำและเพื่อดำเนินการเตรียมงานที่จำเป็นเพื่อเรียกใช้ไฟล์ปฏิบัติการเมื่อการโหลดเสร็จสิ้น ระบบปฏิบัติการจะเริ่มต้นโปรแกรมโดยส่งการควบคุมไปยังโค้ดโปรแกรมที่โหลด ระบบคอมพิวเตอร์พิเศษเช่นระบบสมองกลฝังตัวโดยทั่วไปไม่มีตัวโหลด รหัสดำเนินการโดยตรงโดย ROM
ความสัมพันธ์ระหว่างตัวเชื่อมโยงและตัวโหลดคืออะไร
ผลลัพธ์ของตัวเชื่อมโยงไปที่ตัวโหลด
ตัวเชื่อมโยงและตัวโหลดต่างกันอย่างไร
ตัวเชื่อมกับตัวโหลด |
|
Linker เป็นซอฟต์แวร์ที่เชื่อมโยงรหัสวัตถุกับไฟล์เพิ่มเติม เช่น ไฟล์ส่วนหัว และสร้างไฟล์ปฏิบัติการที่มีนามสกุล.exe | ตัวโหลดคือซอฟต์แวร์ระบบที่โหลดไฟล์เรียกทำงานที่สร้างโดยตัวเชื่อมโยงไปยังหน่วยความจำหลัก |
อินพุต | |
ตัวเชื่อมโยงใช้เอาต์พุตของตัวแปลภาษา ซึ่งเป็นรหัสวัตถุ | ตัวโหลดใช้เอาต์พุตจากตัวเชื่อมโยง ซึ่งเป็นไฟล์ปฏิบัติการ |
ฟังก์ชั่น | |
ตัวเชื่อมโยงเชื่อมโยงรหัสวัตถุและไฟล์ส่วนหัวและส่งออกไฟล์ปฏิบัติการ | ตัวโหลดโหลดไฟล์เรียกทำงานที่ได้รับจากตัวเชื่อมโยงไปยังหน่วยความจำหลัก |
สรุป – ตัวเชื่อมโยง vs ตัวโหลด
Linker และ Loader เป็นส่วนประกอบซอฟต์แวร์สองอย่างที่เกี่ยวข้องกับการทำงานของโปรแกรม บทความนี้กล่าวถึงความแตกต่างระหว่างตัวเชื่อมโยงและตัวโหลด Linker เป็นซอฟต์แวร์ที่เชื่อมโยงโค้ดอ็อบเจ็กต์กับไฟล์เพิ่มเติม เช่น ไฟล์ส่วนหัว และสร้างไฟล์ปฏิบัติการที่มีนามสกุล.exe ตัวโหลดคือซอฟต์แวร์ระบบที่โหลดไฟล์เรียกทำงานที่สร้างโดยตัวเชื่อมโยงไปยังหน่วยความจำหลักนั่นคือข้อแตกต่างระหว่างตัวเชื่อมโยงและตัวโหลด