Nạp chương trình khi thực thi

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 44)

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

2.4.2 Nạp chương trình khi thực thi

Các file thực thi chứa 3 loại dữ liệu nhị phân: mã chỉ thị, dữ liệu chỉ đọc (hằng) và dữ liệu động (thay đổi được).

• Chương trình .exe: Khi chương trình .exe được nạp vào RAM từ file .exe

được lưu trên RAM (đĩa C) hoặc từ thẻ nhớ (đĩa D), thì nó được cấp một vùng nhớ

riêng cho mã, dữ liệu chỉ đọc, dữ liệu động. Nếu một phiên bản thứ 2 của chương trình được nạp vào RAM thì một vùng nhớ mới sẽ được cấp cho nó. Với file chương trình .exe chứa trong ROM (ổđĩa Z) thì chỉ có dữ liệu động được nạp vào RAM, mã chỉ thị và dữ liệu chỉđọc được đọc trực tiếp từ ROM.

• Thư viện DLL: Khi một thư viện DLL lần đầu tiên được nạp vào RAM, nó

được cấp một vùng nhớ riêng, khi được yêu cầu sử dụng lần thứ hai, nó không nạp tiếp DLL này vào RAM mà đơn giản chỉ gắn địa chỉ nó trên RAM cho tiểu trình yêu cầu. Hệđiều hành Symbian kiểm tra số lượng tiểu trình tham khảo DLL này và giải phóng nó khi không còn tiểu trình nào sử dụng nó nữa. Với các DLL chứa trên ROM thì nó không cần nạp vào RAM nữa mà được sử dụng trực tiếp trên ROM.

Việc các ứng dụng lưu trữ trên ROM không cần nạp vào RAM khi thực thi là

đặc điểm của Symbian để phù hợp với tài nguyên bộ nhớ giới hạn của điện thoại. Ngoài ra để tối ưu hóa kích thước chương trình, hệ điều hành Symbian sử dụng

điểm vào của DLL là một số thứ tự, trên các hệđiều hành khác có thể dùng số thứ

tự hay tên. Do đó khi nâng cấp DLL thì số thứ tự phải giống như phiên bản trước. 2.4.3 Thực thi ứng dụng và server

• Các server được lưu trữ trong các file .exe, như ewsrv.exe là window server, hay efsrv.exe là file server. Để giảm chi phí chuyển đổi ngữ cảnh các server có cùng nhóm chức năng được dùng chung một tiến trình. Một server chính sẽ tạo tiến trình và các server khác sẽ thực thi tiểu trình của nó với tiểu trình của server chính.

KHOA CNTT –

ĐH KHTN

• Ứng dụng console (không có giao diện đồ họa) được thực thi qua file chương trình .exe. Các ứng dụng dạng này phải tạo một console riêng để tương tác với người dùng.

• Các ứng dụng có giao diện đồ họa (GUI) là những thư viện DLL đa hình với phần mở rộng là .app. Điểm vào của ứng dụng này là NewApplication() tạo và trả

về một đối tượng dẫn xuất từ lớp CEikApplication (Series 80/9200Series/Series90) hay các lớp dẫn xuất từ CEikApplication phù hợp theo từng dòng điện thoại Symbian như CQikApplication (UIQ), CAknApplication (Series 60). Tiến trình ứng dụng được tạo bởi một chương trình nhỏ .exe, apprun.exe, và tên của file chương trình ứng dụng .app được chuyển làm tham số cho apprun.exe.

H2.7 Ứng dụng GUI với chương trình nạp Apprun.exe

2.5 Quả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.

2.6 Quản lý nguồn năng lượng

Do đời sống pin dùng cho điện thoại Symbian khá ngắn nên hệ điều hành Symbian được xây dựng để làm việc hiệu quả trên thiết bị có tốc độ và nguồn năng lượng thấp. Khi không được sử dụng, phần lớn hệ thống sẽ được tắt. Bởi vì các thành phần phần cứng quản lý nguồn năng lượng riêng, khi không cần hoạt động chúng được đưa vào trạng thái tắt. Ví dụ, bộ điều phối nhân sẽ tắt CPU nếu tất cả

các tiểu trình đều ở trạng thái chờ sự kiện. Khi có cuộc gọi hay tin nhắn đến, hệ

thống sẽ được hoạt động trở lại. Đặc biệt, khi tất cả các nguồn năng lượng bị mất

đột ngột, hệ thống vẫn lưu những thông tin cần để sau này chỉ cần khởi động nóng thay vì khởi động nguội do hệ thống đều lưu sau mỗi bước thực hiện.

2.7 Quản lý thời gian

Nhân cung cấp một ngắt thời gian ứng với 64Hz trên CPU ARM và 10Hz cho giả

lập trên PC. Ngắt này được dùng đểđiều khiển bộđiều phối tiến trình với thuật toán

điều phối Round Rubin. Ngắt thời gian sẽ ngừng hoạt động khi máy tắt. Ví dụ, khi muốn thực thi một chỉ thị sau 5 giây nhưng mới được 2 giây trôi qua, ta tắt máy, thì khi máy mở trở lại, sau 3 giây nữa chỉ thị mới được thi hành.

KHOA CNTT –

ĐH KHTN

2.8 An toàn hệ thống

Bảo mật trên hệ điều hành Symbian cho phép bảo vệ, xác nhận sự toàn vẹn của dữ liệu và tăng cường cơ chế cài đặt an toàn. Nó cung cấp các API cho các thuật toán mã hóa chuẩn, phát sinh khóa băm (hash key), phát sinh số ngẫu nhiên và quản lý xác nhận. Kiến trúc bảo mật nền tảng của hệ điều hành Symbian gồm 2 thành phần: • Quản lý xác nhận (Certificate management-certman). • Mã hóa (Cryptography-cryptalg). Đồng thời những phần này tổ chức hoạt động một số thành phần cơ bản khác cấp cao hơn:

• Thanh điều khiển quản lý xác nhận (certman control panel): giao tiếp với trình quản lý xác nhận cho phép điều khiển các xác nhận gốc.

• Cài đặt phần mềm (software install): thẩm định quyền (authentification) hay chữ ký điện tử (digital signature)

• Truyền thông an toàn (secure comms): các chức năng SSL/TLS, WTLS, IPSec,...

Hình vẽ H2.11 sẽ cho thấy rõ hơn kiến trúc bảo mật trong Symbian

- PKIXCert: DLL cài đặt phê chuẩn xác nhận (validation certificate). Nó cung cấp các giao tiếp chính để quản lý xác nhận. Nó cung cấp 2 lớp chính : CPKIXCertChain (thực thi việc phê chuẩn xác nhận) và CPKIXValidationResult (đóng gói kết quả của hoạt động phê chuẩn).

- X500 và X509: đại diện dữ liệu mà PKIXCert thao tác, đây là các đầu vào cho việc phê chuẩn xác nhận. Cấu trúc của chúng được định nghĩa trong ASN.1 (Abstract Syntax Notation 1).

- Certstore: DLL (certstore.dll) chứa các xác nhận gốc. Đây là những xác nhận được sử dụng trực tiếp bởi người dùng và được dùng để hoàn tất các chuỗi xác nhận, được định nghĩa qua 2 lớp CCertStore (cung cấp giao tiếp) và CCertStoreEntry (cung cấp thông tin ứng dụng xác nhận). DLL được lưu trữ trên ROM.

KHOA CNTT –

ĐH KHTN

- Crypto: DLL (crypto.dll) cung cấp các giao tiếp chung cho quản lý xác nhận. Nó cài đặt các đặc tả xác nhận cho X509 hay WTLS. Nó cũng giúp phân tách giao tiếp giữa quản lý xác nhận và các thuật toán mã hóa.

KHOA CNTT –

ĐH KHTN

PHẦN 2

PHÁT TRIN NG DNG ĐỒ HA

KHOA CNTT –

ĐH KHTN

CHƯƠNG 3

CÔNG C VÀ MÔI TRƯỜNG PHÁT TRIN

NG DNG

Chọn thiết bị

Ngôn ngữ lập trình Chọn điện thoại

Điện thoại thông minh Symbian với bản phím số

Điện thoại Symbian giao tiếp bằng bút qua màn hình cảm ứng Điện thoại Symbian có bàn phím QWERTY

Nền hệ thống phần mềm và các bộ SDK tương ứng Hệ thống giao tiếp người dùng

Nền hệ thống Series 60

UIQ

Nokia 9200 Series và Series 80 Series 90

Bộ công cụ phát triển Symbian SDK Symbian SDK

Các bộ SDK

Công cụ phát triển ứng dụng

Công cụ tạo dự án ứng dụng mới Công cụ biên dịch

Môi trường phát triển tích hợp MS Visual C++ 6.0

Borland C++ Builder 6.0 Nokia Edition và C++ BuilderX Metrowerks CodeWarrior

KHOA CNTT –

ĐH KHTN

3.1 Chọn thiết bị

Các điện thoại Symbian được tạo ra cho các mục đích sử dụng khác nhau nên có cơ chế nhập và các đặc điểm hình dạng cũng khác nhau. Với điện thoại màn hình nhỏ và một bản phím số theo mô hình thiết kế Pearl, mục đích chính là phục vụ

chức năng điện thoại. Với các điện thoại giao tiếp bằng bút qua màn hình cảm ứng theo mô hình Quartz, tìm kiếm là rất tiện lợi nhưng nhập dữ liệu thì khó khăn. Các

điện thoại có bàn phím QWERTY theo mô hình Crystal thì rõ ràng là để dùng cho các chức năng nhập liệu lớn. Những khác biệt này đưa đến sự khác nhau về giao tiếp với người dùng, chúng được phát triển cho các thị trường riêng. Để đáp ứng sự

khác biệt này, hệ điều hành Symbian chỉ cung cấp các dịch vụ và khung ứng dụng lõi, còn các phần liên quan đến hệ thống giao tiếp người dùng và giao diện thì do các nhà sản xuất đảm nhận. Sự kết hợp của Symbian bên dưới và hệ thống giao diện GUI bên trên khác nhau tạo thành các nền hệ thống khác nhau. Vì vậy không phải một ứng dụng chạy tốt trên điện thoại này là có thể chạy được trên điện thoại khác. Do đó việc đầu tiên để phát triển ứng dụng trên Symbian là phải xem ứng dụng mình phát triển phù hợp trên dòng điện thoại nào và chọn đúng điện thoại mà mình cần. Nhưng trước hết chúng ta hãy xét đến các ngôn ngữ lập trình mà Symbian hỗ

trợ, một công việc không kém phần quan trọng. 3.1.1 Ngôn ngữ lập trình

Có thể lập trình trên Symbian bằng các ngôn ngữ sau:

• C++: Symbian được viết bằng C++, nên đây được xem là ngôn ngữ lập trình chính, thư viện hỗ trợ nhiều nhất, có thể lập trình các server hay điều khiển thiết bị.

Đề tài này cũng được nghiên cứu để phát triển ứng dụng trên Symbian bằng C++.

• Java: PersonalJava và JavaPhone được hỗ trợ trên Symbian 6.0, 6.1 nhưng không còn được hỗ trợ trên Symbian 7.0. Trên Symbian 7.0 sử dụng J2ME, cụ thể

là MIDP (Mobile Information Device Profile), cung cấp các Java API cho lập trình Java, nó chạy trên CLDC (Connected Limited Device Configuration) và sử dụng KVM (Kilobyte Virtual Machine), một máy ảo Java cho các thiết bị nhỏ. Phiên bản hiện tại là MIDP 2.0.

KHOA CNTT –

ĐH KHTN

• Asembler: thường được sử dụng để xây dựng các chương trình cấp rất thấp chẳng hạn bộđiều phối active scheduler, thường không hỗ trợ cho lập trình viên tự

do.

• C: không còn được sử dụng để viết chương trình trên Symbian nhưng Symbian vẫn hỗ trợ để chuyển đổi các ứng dụng trước kia viết bằng C để có thể

chạy trên hệđiều hành Symbian.

• OPL: là ngôn ngữ tựa Basic, hiện nay trên Symbian 7.0 không còn hỗ trợ

nữa. Muốn sử dụng các ứng dụng viết bằng OPL trên Symbian 7.0 và các phiên bản về sau phải sử dụng một chương trình nền gọi là Booster.

• Các ngôn ngữ hỗ trợ lập trình Web hay theo các giao thức không dây như

JavaScript hay WMLScript.

Đối với các lập trình viên tự do, chủ yếu họ sử dụng C++ hay Java để phát triển ứng dụng trên Symbian và thường các điện thoại cũng chỉ hỗ trợ cho họ 2 ngôn ngữ này.

3.1.2 Chọn điện thoại

Hiện trên thị trường đã có rất nhiều loại điện thoại Symbian, phổ biến nhất vẫn là các điện thoại có giao diện truyền thống của điện thoại di động với bản phím số

theo mô hình Pearl. Có hai điểm lưu ý trước khi chọn điện thoại để phát triển ứng dụng:

- Ngôn ngữ: Không phải điện thoại Symbian nào cũng hỗ trợ đủ 2 ngôn ngữ là C++ và Java, nhất là các điện thoại phát triển trên thị trường Nhật thường chỉ hỗ trợ

Java.

- Hệđiều hành: Các điện thoại sử dụng các phiên bản hệđiều hành khác nhau, không phải cứ phát triển sau thì nhất định sẽ sử dụng hệ điều hành phiên bản mới hơn. Ví dụ Siemens SX1 vừa phát hành nhưng lại dùng hệđiều hành phiên bản 6.1 thay vì 7.0 hay 7.0s. Phải nắm rõ đặc điểm này mới tránh được những lỗi do thiếu hỗ trợ từ các phiên bản trước gây ra.

KHOA CNTT –

ĐH KHTN

Hiện thời các điện thoại vẫn được thiết kế theo các mô hình tham khảo của Symbian:

Điện thoại thông minh Symbian với bản phím số (keypad): Dựa trên thiết kế của các điện thoại di động thông thường theo mô hình Pearl, nhập liệu qua bản phím số. Dòng này chiếm số lượng lớn nhất trên thị trường. Các lập trình viên có thể phát triển ứng dụng cho các điện thoại thông minh dạng này dùng hệ điều hành Symbian trên nền hệ thống Series 60 do Nokia phát triển hỗ trợ đầy đủ C++ và Java: Nokia 7650 , 3650/3600, 3660/3620, N-Gage, 6600, 7610, 6620 hay Panasonic X700, Samsung SGH-D710, Siemens SX1, Sendo X. Ngoài ra còn có các điện thoại không thuộc Series 60 chỉ hỗ trợ Java như FOMA F900i, FOMA F2102V, FOMA F2051 của Fujitsu cho thị trường Nhật trong mạng NTT Docomo.

Nokia 7650 Symbian OS v6.1 Series 60 1.0 Nokia 3650/3600 Symbian OS v6.1 Series 60 1.0 Nokia N-Gage Symbian OS v6.1 Series 60 1.0 Nokia 3660/3620 Symbian OS v6.1 Series 60 1.0 Nokia 6600 Symbian OS v7.0 Series 60 2.0 Nokia 7610 Symbian OS v7.0 Series 60 2.0 Nokia 6620 Symbian OS v7.0 Series 60 2.0

KHOA CNTT – ĐH KHTN Siemens SX1 Symbian OS v6.1 Series 60 1.0 Samsung SGH-D710 Symbian OS v7.0 Series 60 2.0 Panasonic X700 Symbian OS v7.0 Series 60 2.0 Sendo X Symbian OS v6.1 Series 60 1.0 FOMA F900i Symbian OS v6.1 FOMA 2051 Symbian OS v6.1 FOMA F2102V Symbian OS v6.1 H3.1 Các điện thoại Symbian dùng bản phím số

Điện thoại Symbian giao tiếp bằng bút qua màn hình cảm ứng: Được thiết kế theo mô hình Quartz. Các điện thoại này phục vụ chủ yếu cho lấy dữ liệu hơn là nhập dữ liệu. Tuy vậy việc nhập liệu có thể thực hiện thông qua nhận dạng

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 44)

Tải bản đầy đủ (PDF)

(190 trang)