Khác biệt giữa bản sửa đổi của “Dynamic Link Library”

Nội dung được xóa Nội dung được thêm vào
n clean up, replaced: sử dùng → sử dụng (2) using AWB
Dòng 21:
Thư viện liên kết động, đúng như tên gọi của nó, là một [[thư viện (phần mềm)|thư viện]] cho phép các ứng dụng có thể liên kết đến và sử dụng nó. Nó được xem là một tổ hợp các hàm và dữ liệu mà có thể được sử dụng bởi nhiều ứng dụng khác nhau ở cùng một thời điểm. ''Ví dụ'': thư viện user32.dll hoặc kernel32.dll là các thư viện liên kết động mà mỗi ứng dụng Windows đều phải dùng đến.
 
Khi đã được viết và đóng gói trong một DLL, một hàm có thể được sử dụng ở bất cứ ứng dụng nào dưới dạng mã máy của nó mà không phải quan tâm đến mã nguồn nó được viết chi tiết ra sao. Với các ứng dụng trước kia, ta có thể đính kèm [[tập tin|file]] mã nguồn và sử dùngdụng các hàm trong chương trình; tuy nhiên, giả sử như để có thể thao tác với [[máy in]], in một nội dung ta cần gọi hàm print() và ta đã có mã nguồn của hàm print này. Giả sử như không có DLL, thì bất cứ ứng dụng nào muốn sử dụng hàm print() sẽ bao gồm cả hàm này vào trong mã nguồn: từ chương trình [[Microsoft Word|Word]], [[Microsoft Excel|Excel]], [[Internet Explorer]],... như vậy trong hệ thống sẽ có rất nhiều [[bản sao]] của hàm print() này, làm cho dung lượng để chứa các [[chương trình]] tăng lên. Ngoài ra, khi [[phần cứng]] thay đổi, ta lại phải thay đổi mã nguồn của hàm print() để nó hoạt động đúng (nếu cần), việc này đẫn tới việc thay đổi theo dây chuyền đến các ứng dụng, gây ra rất nhiều khó khăn. Sau đây ta sẽ tìm hiểu chi tiết về ưu nhược điểm của việc sử dụng thư viện liên kết động. Các thư viện liên kết động là một thành phần không thể thiếu tạo nên [[hệ điều hành]] [[Microsoft Windows|Windows]]. Ở đó, việc quản lý, trao đổi với [[phần cứng]] hay [[thiết bị ngoại vi]] đều thông qua các hàm có sẵn trong windows mà ta hay gọi là Windows API. Thay vì ta phải đưa lệnh [[điều khiển]] cho màn hình vẽ lên một cửa sổ giao diện như các ứng dụng, thì ta chỉ cần gọi một hàm trong một file DLL nào đó, hệ thống sẽ đảm bảo kết quả như ý muốn.
 
== Ưu và nhược điểm của thư viện liên kết động ==
Dòng 59:
==== Các thành phần chứa trong của DLL: ====
 
Các DLL thường bao gồm [[mã lệnh]], [[dữ liệu]] và các tài nguyên. Mã lệnh được lưu trữ trên một khu vực chỉ đọc (read-only), do đó nó có thể được sử dụng chung cho các yêu cầu từ các ứng dụng. Tuy nhiên, dữ liệu của DLL thì không như vậy. Mỗi một yêu cầu từ phía ứng dụng sẽ nhận được một bản sao riêng của các đoạn[[khối dữ liệu| dữ liệu]] (data segments) trừ phi đoạn đó được đánh dấu shared.
 
Khu vực lưu trữ mã bao gồm các lớp và các hàm độc lập (không có quan hệ qua lại) với nhau được thể hiện qua trong DLL. Trong trường hợp các lớp (class) thì tất cả các chức năng và [[dữ liệu]] đã được [[giới hạn]] trong một thực thể, nhưng với các hàm độc lập có quan hệ với nhau thì ta cũng có một số dữ liệu chia sẻ toàn cục. Các lớp và hàm có trong DLL cung cấp cho ứng dụng sử dụng được gọi là thành phần export từ DLL. Còn nếu DLL của ta sử dụng các hàm từ các DLL khác, thì chúng được gọi là thành phần import tới DLL.
Dòng 146:
* Một tiến trình sử dụng liên kết ở thời điểm nạp có thể bị chấm dứt bởi hệ thống nếu như DLL không tìm thấy ở thời điểm bắt đầu chạy. Tuy nhiên, nếu sử dụng liên kết động ở thời điểm chạy thì chương trình không bị chấm dứt ngay, mà còn cho ta một số phương án để có thể khắc phục lỗi. Ví dụ như, khi không tìm thấy DLL, chương trình không dừng chương trình ngay lập tức mà có thể tùy chọn cho phép người dùng cung cấp một đường dẫn khác tới DLL.
 
* Một tiến trình sử dùngdụng liên kết ở thời điểm nạp cũng có thể bị thoát nếu như một trong số các DLL nó liên kêt đến có hàm Entry-point trả về giá trị không phải là TRUE. Trong khi đó tiến trình sử dụng liên kết ở thời điểm chạy không bị kêt thúc trong trường hợp này nếu như ta có các cách thức xử lý hợp lý.
 
* Một ứng dụng mà liên kết không tường minh tới quá nhiều DLL sẽ khởi động rất chậm bởi vị Windows nạp tất cả các DLL đó khi ứng dụng nạp để chạy. Để tăng hiệu suất khi khởi động, ứng dụng có thể có các liên kết không tường minh đến các DLL cần thiết được dùng ngay khi chương trình bắt đầu, và dùng liên kết tường minh tới các DLL khác ở thời điểm hợp lý hơn.