Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa Trình liên kết và Trình tải

Trình liên kết và Trình tải là các chương trình tiện ích đóng vai trò chính trong việc thực hiện chương trình. Mã nguồn của một chương trình đi qua trình biên dịch, trình biên dịch, trình liên kết, trình tải theo thứ tự tương ứng, trước khi thực hiện. Một mặt, nơi trình liên kết lấy các mã đối tượng được tạo bởi trình biên dịch chương trình và kết hợp chúng để tạo ra mô-đun thực thi. Mặt khác, trình nạp tải mô-đun thực thi này vào bộ nhớ chính để thực thi. Hãy để chúng tôi thảo luận về sự khác biệt giữa Linker và loader với sự trợ giúp của biểu đồ so sánh.

Biểu đồ so sánh

Cơ sở để so sánhTrình liên kếtMáy xúc lật
Căn bảnNó tạo ra các mô-đun thực thi của một chương trình nguồn.Nó tải mô-đun thực thi vào bộ nhớ chính.
Đầu vàoNó nhận làm đầu vào, mã đối tượng được tạo bởi trình biên dịch chương trình.Nó có mô-đun thực thi được tạo bởi một trình liên kết.
Chức năngNó kết hợp tất cả các mô-đun đối tượng của mã nguồn để tạo ra một mô-đun thực thi.Nó phân bổ các địa chỉ cho một mô-đun thực thi trong bộ nhớ chính để thực thi.
Loại / Cách tiếp cậnTrình chỉnh sửa liên kết, Trình liên kết động.Tải tuyệt đối, tải có thể định vị lại và tải thời gian chạy động.

Định nghĩa của Linker

Trình biên dịch tạo mã đối tượng của một chương trình nguồn và trao nó cho trình liên kết. Trình liên kết lấy mã đối tượng này và tạo mã thực thi cho chương trình và bàn giao nó cho Trình tải.

Ngôn ngữ cấp cao, các chương trình có một số thư việntệp tiêu đề tích hợp . Chương trình nguồn có thể chứa một số hàm thư viện có định nghĩa được lưu trữ trong các thư viện tích hợp. Trình liên kết liên kết các chức năng này với các thư viện tích hợp. Trong trường hợp không tìm thấy các thư viện tích hợp, nó sẽ thông báo cho trình biên dịch và trình biên dịch sẽ tạo ra lỗi.

Đôi khi các chương trình lớn được chia thành các chương trình con được gọi là các mô-đun . Bây giờ khi các mô-đun này được biên dịch và lắp ráp, các mô-đun đối tượng của chương trình nguồn được tạo. Trình liên kết có trách nhiệm kết hợp / liên kết tất cả các mô-đun đối tượng để tạo một tệp thực thi duy nhất của chương trình nguồn. Chúng tôi có hai loại liên kết.

Trình chỉnh sửa liên kết : Đây là một trình liên kết tạo ra mô-đun có thể thực hiện được.

Trình liên kết động : Nó trì hoãn / hoãn liên kết của một số mô-đun bên ngoài cho đến khi mô-đun tải / mô-đun thực thi được tạo. Ở đây, liên kết được thực hiện trong thời gian tải hoặc thời gian chạy.

Định nghĩa của bộ nạp

Vì chương trình phải được thực thi hiện phải nằm trong bộ nhớ chính của máy tính. Trách nhiệm của trình nạp, một chương trình trong hệ điều hành, tải tệp / mô-đun thực thi của chương trình, được tạo bởi trình liên kết, vào bộ nhớ chính để thực thi. Nó phân bổ không gian bộ nhớ cho mô-đun thực thi trong bộ nhớ chính.

Có ba loại phương pháp tải:

  • Tải tuyệt đối
  • Tải di dời
  • Tải thời gian chạy động

Tải tuyệt đối : Cách tiếp cận này tải tệp thực thi của chương trình vào cùng một vị trí bộ nhớ chính mỗi lần. Nhưng nó có một số nhược điểm như lập trình viên phải nhận thức được chiến lược gán để tải các mô-đun vào bộ nhớ chính. Trong trường hợp, chương trình sẽ được sửa đổi liên quan đến một số chèn và xóa trong chương trình, sau đó tất cả các địa chỉ của chương trình phải được thay đổi.

Tải có thể định vị lại: Trong phương pháp này, trình biên dịch hoặc trình biên dịch không tạo ra địa chỉ bộ nhớ chính thực tế . Nó tạo ra các địa chỉ tương đối.

Tải thời gian chạy động : Trong phương pháp này, địa chỉ tuyệt đối cho một chương trình được tạo khi một lệnh của mô-đun thực thi được thực thi. Nó rất linh hoạt, mô-đun có thể tải / mô-đun thực thi có thể được tải vào bất kỳ vùng nào của bộ nhớ chính . Chương trình thực thi có thể bị gián đoạn ở giữa và có thể được hoán đổi ra đĩa và trở lại bộ nhớ chính lần này tại một địa chỉ bộ nhớ chính khác.

Sự khác biệt chính giữa Trình liên kết và Trình tải

  1. Sự khác biệt chính giữa trình liên kết và trình tải là trình liên kết tạo tệp thực thi của chương trình trong khi đó, trình tải tải tệp thực thi thu được từ trình liên kết vào bộ nhớ chính để thực thi .
  2. Trình liên kết lấy mô-đun đối tượng của một chương trình được tạo bởi trình biên dịch chương trình. Tuy nhiên, trình nạp nạp mô-đun thực thi được tạo bởi trình liên kết.
  3. Trình liên kết kết hợp tất cả các mô-đun đối tượng của một chương trình để tạo ra các mô-đun thực thi, nó cũng liên kết chức năng thư viện trong mô-đun đối tượng với các thư viện tích hợp của ngôn ngữ lập trình cấp cao. Mặt khác, bộ nạp phân bổ không gian cho một mô-đun thực thi trong bộ nhớ chính.
  4. Trình liên kết có thể được phân loại là trình soạn thảo liên kếttrình liên kết động trong khi trình tải có thể được phân loại là trình tải tuyệt đối, trình tải có thể định vị lạitrình tải thời gian chạy động .

Phần kết luận:

Trình liên kết lấy các mô đun đối tượng của một chương trình từ trình biên dịch chương trình và liên kết chúng lại với nhau để tạo ra một mô đun thực thi của một chương trình. Mô-đun thực thi sau đó được bộ nạp nạp vào bộ nhớ chính để thực thi.

Top