Quản lý bộ nhớ

Một phần của tài liệu TÌM HIỂU và NGHIÊN cứu kỹ THUẬTPHÁT TRIỂN ỨNG DỤNG TRÊN MÔITRƯỜNG SYMBIAN OS (Trang 45 - 48)

2 Hướng nghiên cứu và giới hạn đề tài

2.5Quản lý bộ nhớ

Bộ nhớ hệ thống được quản lý bằng đơn vị quản lý bộ nhớ (MMU).

• Quản lý ROM khá đơn giản. ROM bao gồm toàn bộ các file trong một cây thư mục trên ổ Z, được gắn với địa chỉ cốđịnh để dữ liệu có thểđược đọc trực tiếp dễ dàng, không cần thông qua file server. Chương trình được thực thi trực tiếp tại ROM và hình ảnh, font được dùng ngay trên ROM cho hiển thị màn hình thay vì phải nạp qua RAM.

Z:

KHOA CNTT –

ĐH KHTN

• Quản lý RAM phức tạp hơn. Bộ nhớ RAM được chia thành các trang 4KB bởi MMU.

H2.9 Bộ nhớ RAM

Mỗi trang có thểđược cấp cho:

- Vùng địa chỉ ảo cho một tiến trình người dùng hay tiến trình phục vụ nhân. Khoảng địa chỉ của tiến trình bao gồm các vùng địa chỉ cho: vùng nhớ hệ thống (ROM và DLL được nạp vào RAM), vùng nhớ tiến trình (hình biểu tượng cho ứng dụng (image) và các dữ liệu động) và vùng nhớ cho mỗi tiểu trình bao gồm một ngăn xếp stack rất nhỏ (12KB) và một vùng heap. Do đó cần tránh dùng các biến cục bộ chiếm nhiều bộ nhớ, có thể làm tràn stack, nên đưa các biến này vào heap bằng phương thức new hay dùng User::Alloc(). Vùng heap mặc định của riêng từng tiểu tình là không thể chia sẻ, các tiểu trình có thể dùng heap chung của tiến trình cha. Vùng heap chung toàn cục có thể được sử dụng bởi nhiều tiến trình khác nhau nhưng ít khi sử dụng.

KHOA CNTT –

ĐH KHTN

H2.10 Vùng nhớ cho các tiến trình

- Vùng đĩa RAM, được ánh xạ với ổ C, chỉ được truy cập thông qua file server. Ở đây, một trang 4 KB được chia nhỏ ra thành các vùng nhỏ hơn gọi là sector có kích thước 512 byte, phù hợp hơn cho các file có dung lượng nhỏ.

- Các DLL nạp từ các bộ nhớ khác ROM. Sau khi nạp, vùng nhớ này của DLL được đánh dấu là vùng nhớ chỉ đọc. Bởi vì DLL trong hệđiều hành Symbian

được quy định chỉ hỗ trợ mã chương trình và dữ liệu chỉ đọc. Đây là một trong những đặc điểm của Symbian để phù hợp với bộ nhớ giới hạn. Ví dụ: hiện nay bộ

nhớ RAM vào khoảng 8MB-16MB, thử tưởng tượng chúng ta có 20 ứng dụng chạy

đồng thời, và 10 server chạy dưới các ứng dụng này, và mỗi ứng dụng hay server sử

dụng khoảng 60 trong tổng số 100 DLL có trong hệ điều hành Symbian 7.0, mỗi DLL chỉ cần một byte cho dữ liệu động (nhưng phải cấp hẳn 1 trang 4KB cho nó) thì ta có tổng cộng 4KB*(20 tiến trình ứng dụng + 10 tiến trình server)*60 DLL = 7MB, chỉ cho dữ liệu động. Trên PC thì 7MB không là gì nhưng đối với trên RAM 16MB thì đây là vấn đề rất đáng quan tâm. Để giải quyết vấn đề cần dữ liệu động cho DLL, hệđiều hành Symbian cung cấp từ nhớ TLS (Thread-local storage) như là

KHOA CNTT –

ĐH KHTN

một phần nối thêm cho dữ liệu động của các DLL. Lúc này, với ví dụ trên khi dùng TLS chỉ cần 1.8 KB.

- Vùng nhớ cho các bảng dịch địa chỉ cho MMU: MMU được thiết kế cẩn thận

để tối ưu hóa kích thước cho các bảng này. - Danh sách các trang trống chưa cấp.

Do không có vùng nhớảo bằng cách thay thế trang trên đĩa cứng như trên PC nên tất cả các trang cần để phải lấy từ danh sách các trang trống. Khi không còn trang trống nào mà lại có yêu cầu về bộ nhớ thì lỗi tràn bộ nhớ hoặc đĩa đầy sẽ xuất hiện.

Một phần của tài liệu TÌM HIỂU và NGHIÊN cứu kỹ THUẬTPHÁT TRIỂN ỨNG DỤNG TRÊN MÔITRƯỜNG SYMBIAN OS (Trang 45 - 48)