Runtime linker and loader

Một phần của tài liệu Thiết kế hệ thống hiển thị video trên bảng LED đa sắc – hỗ trợ Flash USB, thẻ nhớ SD và giao tiếp Ethernet (Trang 41 - 42)

1. Nội dung thiết kế tốt nghiệp:

3.2.3Runtime linker and loader

Runtime loaders and linkers là một phần quan trọng của hệ điều hành có nhiệm vụ tải và chạy chương trình. Nó có tác dụng định vị mã của chương trình ứng dụng trong các bộ nhớ thứ cấp và cài đặt vào không gian bộ nhớ hệ thống. Mã chương trình ứng dụng có thể yêu cầu điều chỉnh phù hợp với vị trí nơi mà nó được cài đặt vào. [5]

Trong các hệ thống có MMU, ứng dụng có thể sử dụng lợi thế VM nên các lệnh và các dữ liệu chỉ đọc có thể được chia sẻ giữa các ứng dụng. Trong hệ thống không có MMU, kiến trúc flat memory model sẽ cố định từng ứng dụng vào các vùng bộ nhớ khác nhau trong quá trình thực thi. Linker/loader sẽ sắp xếp các ứng dụng và đưa nó vào không gian nhớ hệ thống. Các ứng dụng chỉ có thể làm việc trên phân vùng mà nó được quy định. Về cơ bản, Linker và loader thực thi ba nhiệm vụ chính:

 Tải chương trình bằng cách copy chương trình vào bộ nhớ chính.  Gán địa chỉ riêng cho mã nguồn và dữ liệu.

 Phân tách các địa chỉ, gán con trỏ địa chỉ tới chương trình con.

Loader và linker trải qua ba bước như trên để tạo ra một thực thi. Gói thư viện dùng để biên dịch (toolchain) của uClinux sử dụng ELF (Execution and Linking Format) đã được sửa đổi chút ít cho phù hợp. Đây là một định dạng file chuẩn của các file thực thi, mã đối tượng, các thư viện được chia sẻ. ELF nguyên bản được phát triển bởi Unix System Laboratories và được sử dụng rộng rãi trong nhiều hệ điều hành. Năm 1999, nó được công nhận như một định dạng file nhị phân chuẩn trong Unix. Không giống như nhiều định dạng file thực thi độc quyền, ELF rất linh hoạt, có thể mở rộng và không phụ thuộc vào vi xử lý hoặc kiến trúc.

ELF định nghĩa liên kết và thực thi của một file. Một file ELF bao gồm bốn phần chính:

42  Program header: header của chương trình.  Section header: nội dung của file.

 Data: dữ liệu.

uClinux cung cấp bộ nhớ như một không gian địa chỉ duy nhất. Điều này có nghĩa là stack tiếp giáp vật lý với dữ liệu tĩnh. Các stack phải có một kích thước cố định và không được chồng lên dữ liệu tĩnh cũng như vùng mã nguồn. Do không có MMU nên uClinux sẽ không có bảo vệ bộ nhớ. Vì kích thước stack là cố định nên sẽ dẫn tới lãng phí một phần không gian bộ nhớ.

Một phần của tài liệu Thiết kế hệ thống hiển thị video trên bảng LED đa sắc – hỗ trợ Flash USB, thẻ nhớ SD và giao tiếp Ethernet (Trang 41 - 42)