Tải bản đầy đủ (.pdf) (84 trang)

Xây dựng ứng dụng tra cứu biển số xe ô tô tại việt nam cho thiết bị di động trên hệ điều hành IOS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.26 MB, 84 trang )

LỜI CẢM ƠN
Lời đầu tiên, em xin gửi lời cảm ơn sâu sắc đến thầy giáo Th.S Lê Nam Huy
– bộ môn công nghệ phần mềm đã định hướng và đã tận tình giúp đỡ, động viên
em trong quá trình thực hiện đề tài đồ án. Thầy luôn luôn theo sát chỉ bảo em
những mặt được và chưa được để em có thể hoàn thành đề tài một cách tốt nhất.
Em xin chân thành cảm ơn thầy!
Em xin cảm ơn những người bạn và gia đình đã nhiệt tình giúp đỡ, động
viên em học tập, phấn đấu và vượt qua những khó khăn trong suốt năm năm học
tập và rèn luyện tại Trường Đại học Công nghệ Thông tin và Truyền thông.
Cuối cùng, em xin cảm ơn tất cả các thầy cô giáo Trường Đại học Công
nghệ Thông tin và Truyền thông, đã dạy dỗ, chỉ bảo những kiến thức, tri thức khoa
học và những bài học kinh nghiệm trong cuộc sống trong suốt quá trình học tập,
rèn luyện tại Nhà trường, để em có đầy đủ kiến thức và hành trang bước vào cuộc
sống.
Trong quá trình thực hiện đề tài chắc chắn còn nhiều thiếu sót mà bản thân
em chưa thể rút ra được. Em rất mong nhận được sự quan tâm, đóng góp của thầy
cô giáo và bạn bè.
Em xin chân thành cảm ơn!
Sinh viên
Vương Văn Huy

1


LỜI CAM ĐOAN
Đề tài của em được thực hiện trên cơ sở những kiến thức đã tích lũy được
trong quá trình học tập, sự giúp đỡ tận tình của thầy cô, bạn bè cùng với một số tài
liệu quý báu mà em sưu tầm được cũng như kho tàng tri thức Internet vô tận...
Em xin cam đoan không sao chép nguyên bản bất cứ một đồ án tốt nghiệp
hay đề tài nghiên cứu khoa học nào của bất kỳ ai. Nếu sai, em xin hoàn toàn chịu
trách nhiệm trước mọi kỷ luật của trường đề ra.


Sinh viên
Vương Văn Huy

2


MỤC LỤC
LỜI CẢM ƠN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
LỜI CAM ĐOAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
MỤC LỤC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
DANH MỤC HÌNH ẢNH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
MỞ ĐẦU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1 Mô tả bài toán. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Phương pháp tiếp cận vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Cơ sở lý thuyết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.1 Ios là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.2 Lịch sử hệ điều hành IOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.3 Kiến trúc của IOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Ngôn Ngữ swift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5.1 Giới thiệu:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5.2 Cơ bản về Swift. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.5.3 Toán tử cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.5.4 Kiểu String and Kiểu Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.5.5 Collection Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.5.6 Control Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.5.7 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.5.8 Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG . . . . . . . . . 34

2.1 Khảo sát nhu cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3


2.2 Kiến trúc hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3 Phân tích hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.1 Xác định các tác nhân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.2 Các tác nhân của hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.3 Sơ đồ chức năng của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4 Thiết kế cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.4.1 Biểu đồ lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.4.2 Danh mục các bảng trong cơ sở dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5. Biểu đồ trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.6. Biều đồ trình tự. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.7. Thiết kế giao diện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
CHƯƠNG 3: XÂY DỰNG VÀ CÀI ĐẶT CHƯƠNG TRÌNH. . . . . . . . . . . . . . . . . 49
3.1. Công nghệ và công cụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2. Cài đặt và xây dựng chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.1 Cài đặt CocoaPods trên Mac và thêm thư viện HTMLReader . . . . . . . . 49
3.2.2 Get và Post dữ liệu từ server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3. Một số hình ảnh giao diện của chương trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
KẾT LUẬN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
TÀI LIỆU THAM KHẢO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4


DANH MỤC HÌNH ẢNH
Hình 1.1. Kiến trúc hệ điều hành IOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Hình 1.2. Region và Subregions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Hình 1.3. Các trạng thái của một tiến trình IOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Hình 1.4. Sự phân mảnh bộ nhớ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Hình 1.5. Kiến trúc hệ điều hành iPhone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Hình 1.6. Ảnh demo ứng dụng swift. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Hình 2.1. Số lượng người sử dụng Smartphone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Hình 2.2: Sơ đồ mô tả kiến trúc hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Hình 2.3: Sơ đồ mô tả quá trình lấy dữ liệu từ Server . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Hình 2.4. Biểu đồ Use Case tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Hình 2.5. Biểu đồ UC chức năng Khởi tạo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Hình 2.6. Biểu đồ UC chức năng Tra cứu thông tin xe ô tô . . . . . . . . . . . . . . . . . . . . 39
Hình 2.7. Biểu đồ UC chức năng Xem biển xe cơ giới . . . . . . . . . . . . . . . . . . . . . . . . 40
Hình 2.8. Biểu đồ UC chức năng Xem giới thiệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Hình 2.9 : Sơ đồ lớp ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Hình 2.10 : Sơ đồ lớp dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Hình 2.11. Biểu đồ trang thái UC khởi tạo ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Hình 2.12. Biểu đồ trạng thái UC Tra cứu thông tin xe ô tô . . . . . . . . . . . . . . . . . . . 45
Hình 2.13. Biểu đồ trạng thái UC Xem biển xe cơ giới . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 2.14. Biểu đồ trạng thái UC Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Hình 2.15. Biểu đồ trình tự UC khởi tạo ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Hình 2.16. Biểu đồ trình tự UC Tra cứu thông tin xe ô tô . . . . . . . . . . . . . . . . . . . . . 47
Hình 2.17. Biểu đồ trình tự UC Xem biển xe cơ giới . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Hình 2.18. Biểu đồ trình tự UC Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Hình 3.1. Giao diện đầu tiên khi truy cập chương trình. . . . . . . . . . . . . . . . . . . . . . . . 55
Hình 3.2. Giao diện Xem biển xe cơ giới . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5


Hình 3.3. Giao diện chọn mục Biển Dân Sự và tìm kiếm theo số hoặc theo tỉnh57
Hình 3.4. Giao diện chọn mục Biển Bộ Quốc Phòng và tìm kiếm theo tên cơ quan hoặc
ký hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Hình 3.5. Giao diện chọn mục Biển Ngoại Giao và tìm kiếm theo quốc gia hoặc
theo số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Hình 3.6. Giao diện chọn muc Biển số 80. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Hình 3.7. Giao diện chọn mục Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

6


MỞ ĐẦU
Tổng quan về đề tài .
Điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990 và theo
thời gian, số lượng các thuê bao cũng như các nhà cung cấp dịch vụ di động ngày
càng tăng. Cùng với sự phát triển của số lượng thuê bao di động. Ngày nay, điện
thoại di động không chỉ còn mang chức năng nghe gọi nhắn tin thông thường mà
còn là một thiết bị giải trí, học tập tra cứu thông tin rất tiện lợi. Do đó, xây dựng
các ứng dụng cho điện thoại di động đang là một yêu cầu tất yếu trong xu thế hiện
nay.
Lí do chọn đề tài
Xu hướng người sử dụng điện thoại với mục đích giải trí ngày càng tăng,
như: nghe nhạc, xem phim, chơi game, chat, tra cứu…Nhằm đáp ứng nhu cầu
người dùng, em muốn xây dựng ứng dụng tra cứu biển số xe ô tô tại Việt Nam
trên điện thoại di động, ứng dụng sẽ rất tiện ích, mặc dù dữ liệu tìm được chỉ là
những thông tin cơ bẳn, nhưng rất hứu ích. Chẳng hạn, khi đang đi tìm mua ô tô cũ
và xem giấy tờ xe. Để biết chắc giấy tờ đó có phải là thật không hay giả thì tra cứu
sẽ biết. ngoài rà còn biết biển số xe ở đâu, nước nào, biển loại gì?
Mục đích của đề tài
Với ý tưởng sử dụng Xcode với ngôn ngữ lập trình Swift vào phát triển
phần mềm, thực tập tốt nghiệp này trình bày quá trình xây dựng ứng dụng tra cứu
biển số xe ô tô tại Việt Nam để giúp ích cho người dùng có thể tra cứu thông tin
mọi lúc, mọi nơi..

Qua đây giúp cho em hiểu rõ hơn được về lập trình IOS cụ thể là ngôn ngữ
Swift. Có thể vận dụng ngôn ngữ vào làm nhiều phần mềm bằng cho thiết bị di
động sử dụng hệ diều hành IOS hơn nữa.
Mặc dù đã rất cố gắng vận dụng các kiến thức tổng hợp để xây dựng
chương trình nhưng với kinh nghiệm còn thiếu nên không thể tránh khỏi những

7


thiếu sót. Em rất mong được sự giúp đỡ của thầy cô và các bạn để em có thể hoàn
thành tốt hơn bài thực tập của của mình.
Đề tài: “ Xây dựng ứng dụng tra cứu biển số xe ô tô tại Việt Nam cho
thiết bị di động trên hệ điều hành IOS”. Báo cáo đồ án tốt nghiệp này gồm có
các nội dung sau:
Chương 1: Cơ sở lí thuyết
Chương 2: Phân tích và thiết kế hệ thống
Chương 3: Xây dựng và cài đặt chương trình.
Em xin chân thành cảm ơn

8


 CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
 Mô tả bài toán
Tên đề tài : Xây dựng ứng dụng tra cứu biển số xe ô tô tại Việt Nam cho
thiết bị di động trên hệ điều hành IOS.
Nội dung bài toán đặt ra yêu cầu xây dựng một hệ thống đáp ứng chức năng
của một kho ứng dụng cho di động gồm :
 Một ứng dụng cho phép người dùng có thể tra cứu những thông tin cơ
bản của một chiếc xe ô tô, và còn có thể xem các biển xe cơ giới ở Việt Nam.

 Một ứng dụng cài đặt trên thiết bị di động cho phép người dùng sử dụng
thiết bị di động chạy hệ điều hành IOS truy cập vào kho ứng dụng và tải về miễn phí
ứng dụng hoặc thanh toán qua cổng thanh toán đối với các ứng dụng trả phí.
 Tích hợp cổng thanh toán quốc tế paypal vào hệ thống để thực hiện
nghiệp vụ thanh toán trong quá trình người dùng mua ứng dụng có phí. Paypal là
phương tiện thanh toán phổ biến nhất thế giới hiện nay, đáp ứng nhu cầu thanh
toán của hầu hết các quốc gia trong đó có Việt Nam.
 Đặt vấn đề
Hiện nay thế giới đã bước vào thời kì phát triển mạnh mẽ của các thiết bị
điện thoại thông minh, máy tính bảng. Các nền tảng mới ra đời và ngày càng khẳng
định là yếu tố quyết định cho sự thành công của các thiết bị thông minh mà ta phải
kể đến như Android, IOS và cả Windows Phone .
Hiện nay thủ đoạn làm giả giấy tờ tinh vi để chiếm đoạt tài sản của các chủ
ô tô. Các giấy tờ giả này rất khó phát hiện bằng mắt thường nếu không qua giám
định , rât nhiều người đã bị lừa do không có thông tin về chiêc xe như nào, nó đã
kiểm đinh hay chưa , giấy tờ có chính xác hay không. Mọi người rất muốn kiểm tra
nhưng không biết kiểm tra thế nào. Nhưng rất may là bây giờ mọi người có thế
kiểm tra các thông tin của một chiếc xe đã kiểm định hay chưa giấy tờ đúng vói xe

9


hay không ở trang kiểm định của cục đăng kiểm. Do để thuận tiện hơn cho người
dùng cần xây dụng một ứng dụng để đáp ứng nhu cầu đó:
. Vì vậy đề tài: Xây dựng ứng dụng tra cứu biển số xe ô tô ở Việt Nam
hướng đến mục tiêu sau:
 Hỗ trợ hệ điều hành IOS
 Ứng dụng có thể chạy trên các thiết bị của Apple như iphone, Ipad
 Tạo ra một ứng dụng dễ sử dụng đơn giản, phù hợp với lợi ích người dùng.
 Giúp người dùng có xem những thông tin cơ bản của một chiếc xe ô tô ,

ngoài ra còn có thể tra thêm xe ô tô ở tỉnh nào, thuộc quân đội hay của nước ngoai.
 Phương pháp tiếp cận vấn đề
Xây dựng kho ứng dụng trên nền tảng IOS
Hiện nay có rất nhiều nền tảng cho di động như IOS của Apple, Android
của Google, Windows Phone7 của Microsoft, Bada của SamSung, Symbian của
Nokia… vì vậy số lượng ứng dụng cũng rất phong phú. Việc lựa chọn để xây dựng
kho ứng dụng cho thiết bị nào, cho nền tảng nào cũng rất khó khăn và phải có
hướng đi đúng đắn.
Nhìn chung, dù là iOS hay Android, người dùng hiện nay đều có xu
hướng lựa chọn theo cảm tính, hay nói cách khác là lựa chọn hệ điều hành mà
mình cảm thấy quen thuộc và dễ sử dụng nhất. Nhưng theo tôi lựa chọn hệ điều
hành IOS vì những lý do sau:
iOS luôn luôn hoạt động hiệu quả : Có thể nói, Apple không chỉ nổi tiếng
bởi iPhone, iPad và iPod, mà bản thân hệ điều hành iOS cũng đóng góp một phần
không nhỏ tạo nên danh tiếng của quả táo cắn dở. Do đó, iOS được Apple vô cùng
chăm chút và hoạt động hiệu quả với mức độ tin cậy cao hơn bất cứ hệ điều hành
nào khác. Không giống các ứng dụng trên Android, các ứng dụng của iOS chạy
độc lập với hệ điều hành, điều đó có nghĩa nếu một ứng dụng gặp lỗi và bị hiện
tượng "crash", điện thoại của bạn vẫn hoạt động bình thường - việc bạn cần làm
chỉ là khởi động lại ứng dụng đó. Ngược lại, với Android, nếu một ứng dụng bị lỗi,
10


toàn bộ điện thoại cũng bị sập theo, buộc bạn phải khởi động lại máy.
Ứng dụng của iOS chất lượng hơn và cập nhật nhanh hơn: Mặc dù hầu
hết cả nhà phát triển đều xây dựng các ứng dụng cho cả hai phiên bản iOS và
Android, song thường họ sẽ ưu tiên iOS trước, bởi phát triển ứng dụng cho iOS dễ
hơn so với Android. Android là hệ điều hành có mã nguồn mở và có rất nhiều
phiên bản khác nhau. Do đó, hầu hết các smartphone chạy Android hiện nay đều
không được cài phiên bản mới nhất, điều đó khiến việc phát triển các ứng dụng trở

nên phức tạp và khó khăn hơn. iOS, ngược lại, đều vô cùng nhất quán trên tất cả
các thiết bị của Apple, và do đó việc cập nhật phiên bản mới đều nhanh gọn và dễ
dàng hơn so với Android. Nếu sở hữu một thiết bị cấp cao của Apple, bạn có thể
an tâm máy của bạn bao giờ cũng cập nhật bản mới nhất của hệ điều hàn
iOS an toàn hơn: Có hai lý do để đi đến kết luận iOS có độ bảo mật và an
toàn tốt hơn tất cả các hệ điều hành khác hiện nay, bao gồm cả Android. Thứ nhất
và quan trọng nhất, các nhân viên của Apple đều tự tay kiểm tra và xác nhận từng
ứng dụng được đưa lên iOS App Store trước khi chuyển chúng đến tay người
dùng. Thứ hai, Apple đưa ra những những hạn chế vô cùng nghiêm ngặt nhằm
ngăn chặn những ứng dụng có khả năng thâm nhập trực tiếp vào hệ điều hành, điều
đó giúp ngăn chặn tất cả những virus hay phần mềm độc hại có thể nhiễm vào hệ
điều hành. Apple cũng giúp người dùng có thể kiểm tra xem thiết bị của họ ở đâu
trong trường hợp bị kẻ gian đánh cắp, đồng thời kẻ gian cũng không thể tắt hệ
thống GPS tracker giúp định vị vị trí máy nếu không có mật khẩu của bạn.
 Cơ sở lý thuyết

 Ios là gì?
IOS viết tắt của từ Internetwork Operating System, là hệ điều hành trên các
thiết bị di động của Apple. Ban đầu hệ điều hành này chỉ được phát triển để chạy
trên iPhone (gọi là iPhone OS), nhưng sau đó nó đã được mở rộng để chạy trên các
thiết bị của Apple như iPod touch, iPad và Apple TV.

 Lịch sử hệ điều hành IOS
11


Hệ điều hành này được tiết lộ tại Hội nghị và Triển lãm Macworld diễn ra
vào tháng 1 năm 2007 và được phát hành vào tháng 9 năm đó. Khi đó, hệ điều
hành này chưa có một cái tên riêng nên chỉ đơn giản là "iPhone chạy OS X". Ban
đầu, ứng dụng bên thứ ba không được hỗ trợ. Steve Jobs đã chỉ ra rằng những nhà

phát triển có thể xây dựng các ứng dụng web mà "sẽ cư xử như những ứng dụng
ban đầu trên iPhone". Vào ngày 17 tháng 10 năm 2007, Apple thông báo một bộ
phát triển phần mềm đang được xây dựng và họ dự định sẽ đưa nó đến "tay của các
nhà phát triển vào tháng 2". Ngày 6 tháng 3 năm 2008, Apple đã phát hành bản
dùng thử đầu tiên, cùng với một cái tên mới cho hệ điều hành, đó là "iPhone OS".
Khi chiếc iPhone đầu tiên được công bố, Apple đã khẳng định rằng nó chạy
trên cùng một nhân Unix giống như hệ điều hành Mac OS và cả hai có thể sử dụng
nhiều công cụ chung nhau. Mặc dù có một vài điểm chung giữa Mac OS và iOS
nhưng cũng có một số khác biết cơ bản giữa chúng. Khi chiếc iPhone đầu tiên
được bán ra, hệ điều hành của nó được gọi với cái tên là “iPhone OS” và giữ cái
tên này trong 4 năm và đổi tên thành iOS sau khi ra phiên bản iOS 4 vào tháng 6
năm 2010. Để đơn giản và thân thuộc hơn với mọi người, trong bài viết này, ta sẽ
chỉ gọi hệ điều hành của chiếc iPhone là iOS với tất cả mọi phiên bản.

 Kiến trúc của IOS
 Tổng quan về kiến trúc của IOS
Khi mà lợi ích của việc định tuyến qua mạng trở nên phát triển, đòi hỏi
router phải hỗ trợ một số những giao thức và cung cấp những chức năng khác, như
cầu nối giữa các mạng. Cisco đã thêm những tính năng mới cho phần mềm của
router.Kết quả có nhiều chức năng cầu nối và định tuyến như ngày nay. Nhưng hầu
như cấu trúc cơ bản của hệ điều hành vẫn giống như ban đầu.IOS là một cấu trúc
đơn giản, nhỏ, được thiết kế dựa vào những ràng buộc về bộ nhớ, về tốc độ, phần
cứng của router

12


Hình 1.1. Kiến trúc hệ điều hành IOS

13



Các thành phần của hệ điều hành IOS :
Các tiến trình (Processes): Là những tuyến riêng lẻ kết hợp với dữ liệu để
thực hiện những tác vụ, như duy trì hệ thống, chuyển mạch gói dữ liệu, thực hiện
giao thức định tuyến…
Nhân (Kernel): Cung cấp những dịch vụ cơ bản của hệ thống tùy thuộc vào
IOS như : quản lý bộ nhớ, lập lịch các tiến trình…Nó cung cấp quản lý tài nguyên
phần cứng (CPU, bộ nhớ) cho các tiến trình.
Bộ đệm gói (Packet buffer): Cung cấp các bộ đệm toàn cục và kết hợp với
chức năng quản lý bộ đệm để lưu trữ gói dữ liệu đang được chuyển mạch.
Trình điều khiển thiết bị (Device driver): Làm chức năng điều khiển giao
tiếp giữa phần cứng và thiết bị ngoại vi, giao tiếp giữa các tiến trình IOS, kernel và
phần cứng.Chúng cũng giao tiếp với phần mềm chuyển mạch nhanh (fast
switching software).
Phần mềm chuyển mạch nhanh (Fast switching soft): Chức năng chuyển
mạch gói dữ liệu cao.
 Tổ chức bộ nhớ
IOS ánh xạ toàn bộ bộ nhớ vật lý thành một không gian địa chỉ ảo rộng lớn.
MMU (Memory Map Unit) của CPU có giá trị khi được sử dụng để tạo không gian địa
chỉ ảo thậm chí khi mà IOS không tận dụng một khối nhớ ảo trọn vẹn.
Miền bộ nhớ (Memory region) :
IOS chia không gian địa chỉ này thành những miền bộ nhớ gọi là region,
mỗi region phù hợp với những loại bộ nhớ vật lý khác nhau. Ví dụ : SRAM có thể
lưu trữ gói dữ liệu và DRAM có thể lưu trữ phần mềm hoặc dữ liệu. Phân lớp bộ
nhớ thành các region cho phép IOS phân loại các bộ nhớ khác nhau vì vậy mà
phần mềm không cần biết chi tiết về bộ nhớ trên mỗi platform .Các region được
phân chia thành một trong tám mục như hình :
Memory region


Đặc điểm
14


Local(cục bộ)

Thông thường lưu trữ cấu trúc dữ liệu lúc chạy và local
heap, thường là DRAM
Lomem
Bộ nhớ chia sẻ CPU và bộ điều khiển môi trường mạng
sử dụng thông qua một bus dữ liệu, thường là SRAM
Fast
Bộ nhớ truy xuất nhanh, như SRAM, sử dụng cho mục
đích đặc biệt và những tác vụ xem yêu cầu về tốc độ
Itext
Thực thi mã nguồn của iOS
Idata
Các biên được khởi tạo
IBss
Các biên không được khởi tạo
PCI
Bộ nhớ bus CPI, được sử dụng bởi tất cả thiết bị trên các
bus PCI
Flash
Bộ nhớ flash dùng để lưu trữ iOS chạy từ RAM hoặc
iOS chạy từ flash, nó cũng có thể lưu trữ một bảng file
(tập tin) cấu hình dự phòng và những dữ liệu khác.Thông
thường thì file hệ thống được xây dựng ở miền bộ nhớ
flash này.
Vùng bộ nhớ (Memory pool):

IOS quản lý bộ nhớ rỗi thông qua một chuỗi các memory pool.Mỗi pool là
một tập hợp các khối nhớ mà có thể cấp phát và thu hồi khi cần.Memory pool được
xây dựng bên ngoài các region và được quản lý bởi kernel.Thường thì pool tương
đương với một region đặc biệt.

15


Hình 1.2. Region và Subregions
Một memory pool có thể xây dựng từ một vài region mở rộng, cho phép bộ
nhớ được cấp phát và thu hồi từ các miền bộ nhớ khác nhau để tối đa hiệu quả hoạt
động, có thể dùng lệnh show memory để hiển thị các pool này: router#show
memory Head Total(b) Used(b) Free(b) Lowest(b) Largest(b) Processor 61281540
7858880 3314128 4544752 4377808 4485428 I/O1A00000 6291456 1326936
4964520 4951276 4964476 PCI 4B000000 1048576 407320 641256 6412556
641212 … Mô tả như sau(kích thước tính theo byte):
- Total: kích thước của pool.
- Used: lượng bộ nhớ được cấp phát.
- Free: lượng bộ nhớ sẵn sằng để sử dụng.
- Lowest: lượng bộ nhớ thấp nhất sẵn sàng sử dụng từ khi mà pool được tạo.
- Largest: kích thước khối nhớ liên tục lớn nhất sẵn sàng sử dụng hiện tại.
16


Lệnh show memory ở trên cung cấp ba pool với các tham số tương ứng:
heap, processor và I/O.
 Tiến trình iOS(Processes iOS)
Vòng đời của một tiến trình:
Một tiến trình có thể được tạo ra hoặc kết thúc bất cứ lúc nào trong khi iOS
đang hoạt động ngoại trừ có ngắt xảy ra.Nó được tạo ra bởi kernel hoặc bởi một

tiến trình khác đang chạy khác. Một thành phần có trách nhiệm tạo nhiều tiến trình
trong iOS gọi là parser(bộ phân tách).Parser này là một tập các chức năng làm
phiên dịch cấu hình iOS và dòng lệnh EXEC.Parser được yêu cầu bởi kernel trong
suốt quá trình khởi tạo iOS và các tiến trình EXEC, để cung cấp một giao tiếp
dòng lệnh CLI thông qua giao tiếp console (giao tiếp người và máy) và các phiên
telnet.Tại bất cứ thời điểm nào, một lệnh được nhập bởi người dùng hoặc một cấu
hình được đọc từ file,parser phiên dịch dòng lệnh và đưa ra những hoạt động tức
thời.Một vài lệnh cấu hình bởi việc gán trị, như địa chỉ IP, trong khi cấu hình khác
như định tuyến hoặc giám sát. Một vài lệnh làm cho parser khởi tạo một tiến trình
mới. Ví dụ: khi mà lệnh cấu hình no router eigrp được nhập vào, parser khởi tạo
một tiến trình mới, gọi là ipigrp (nếu như tiến trình ipigrp đã được khởi tạo rồi),
bắt đầu xử lý gói ip. EIGRP.Nếu như lệnh cấu hình no router eigrp được nhập vào,
parser kết thúc tiến trình ipigrpvà không còn chức năng định tuyến EIGRP. Tiến
trình iOS trải qua các trạng thái như sau:

17


Hình 1.3. Các trạng thái của một tiến trình IOS
Trạng thái khởi tạo (Create):
Khi mà một tiến trình mới được tạo, nó nhận vùng stack riêng của mình và
vào trạng thái mới (new).Tiến trình có thể di chuyển đến trạng thái điều chỉnh
(Modify).Nếu không có thay đổi cần thiết, thì tiến trình chuyển sang trạng thái
thực thi (Execute).
Trạng thái điều chỉnh (Modify):
Không giống như hầu hết các hệ điều hành, iOS không tự động truyền tải
các tham số khởi tạo hoặc gán một giao tiếp đến một tiến trình mới khi nó được tạo, bởi
vì nó cho rằng hầu hết các tiến trình không cần tài nguyên này.Nếu một tiến trình cần
nguồn tại nguyên này, tuyến mà tạo nó có thể điều chỉnh để thêm vào.
Trạng thái thức thi (Execute):

Sau khi một tiến trình mới được tạo thành công và điều chỉnh, nó chuyển
sang trạng thái sẵn sàng (Ready) và vào trạng thái thực thi (Execute).Trong suốt

18


trạng thái này, một tiến trình có thể truy cập CPU và chạy.Trong suốt trạng thái
thực thi , một tiến trình có thể truy cập CPU và chạy.Trong suốt trạng thái thực thi
, một tiến trình có thể là một trong 3 trạng thái: sẵn sàng, chạy và rỗi (Idle).Một
tiến trình ở trạng thái sẵn sàng sẽ đợi chuyển sang trạng thái truy cập CPU và bắt
đầu thực thi lệnh.Một tiến trình ở trạng thái rỗi là đang ngủ, đợi sự kiện bên ngoài
xuất hiện trước khi nó có thể chạy.Một tiến trình chuyển từ trạng thái sẵn sàng
sang trạng thái chạy khi mà nó được lập lịch để chạy. Với đa tác vụ mà không ưu
tiên (non-preemptive multitasking), một tiến trình được lập lịch chạy trên CPU cho
đến khi tạm ngừng hoặc kết thúc.Một tiến trình có thể tạm dừng theo 2 cách: nó có
thể tự dừng bởi việc báo cho kernel, nó muốn nhường cho CPU và chuyển sang
trạng thái sẵn sàng, và đợi đến lúc chạy lại.Tiến trình cũng có thể dừng bởi một
hoạt động bên ngoài xảy ra.Khi mà một tiến trình đợi một sự kiện, kernel hoàn
toàn dừng tiến trình này và chuyển nó sang trạng thái rỗi.Sau khi một sự kiện xảy
ra rồi thì kernel chuyển tiến trình trở lại trạng thái sẵn sàng để đợi chạy lại.
Trạng thái kết thúc (Terminal):
Trạng thái cuối cùng trong vòng đời của tiến trình là trạng thái kết thúc.Một
tiến trình vào trạng thái kết thúc khi nó hoàn thành chức năng của mình và đóng lại
hoặc khi một tiến trình khác đóng nó.Khi một tiến trình bị đóng hoặc tự đóng, tiến
trình chuyển sang trạng thái chết (Dead).Tiến trình này ở trạng thái chết (không
hoạt động) cho đến khi kernel thu hồi tất cả các tài nguyên của nó.Sau khi tài
nguyên được thu hồi, tiến trình bị kết thúc thoát khỏi trạng thái chết và xóa khỏi hệ
thống.
Độ ưu tiên tiến trình iOS:
IOS thực hiện chế độ ưu tiên để lập lịch các tiến trình trên CPU.Tại thời

điểm tạo, mỗi tiến trình được gán một trong 4 độ ưu tiên dựa trên mục đích của
tiến trình.Độ ưu tiên là không đổi, chúng được gán khi một tiến trình được tạo và
không bao giờ thay đổi.Các độ ưu tiên:
Critical: Dành riêng cho những tiến trình hệ thống thiết yếu mà giải quyết
19


những vấn đề cấp phát tài nguyên.
High: Được gán cho những tiến trình mà cung cấp đáp ứng nhanh, như tiến
trình nhận gói trực tiếp từ giao tiếp mạng . -Medium: Độ ưu tiên mặc định sử dụng
bởi hầu hết các tiến trình.
Low: Được gán cho những tiến trình cung cấp những tác vụ mang tính định
kỳ như bảng ghi lỗi… Độ ưu tiên các tiến trình cung cấp sự ưu đãi cho một vài tiến
trình để truy cập CPU dựa trên sự quan trọng của nó đối với hệ thống và iOS
không thực hiện quyền ưu tiên.Một tiến trình có sự ưu tiên cao hơn không thể ngắt
một tiến trình có độ ưu tiên thấp hơn, thay vào đó, tiến trình có độ ưu tiên cao hơn
thì có nhiều cơ hội hơn để truy cập CPU hơn.
 Kernel iOS
IOS Kernel không là một đơn vị mà là một tập các thành phần và chức năng
lien kết chặt chẽ với nhau.iOS Kernel thực hiện các chức năng sau: Lập lịch tiến
trình, quản lý bộ nhớ, cung cấp dịch vị retimes để trap (phát hiện) và handle (điều
khiển) những ngắt phần cứng, duy trì timer (bộ định thời gian), và phát hiện ngoại
lệ phần mềm. Các chức năng chính của Kernel:
Lập lịch:
Tác vụ lập lịch các tiến trình được thực hiện bởi scheduler (bộ lập lịch).
Scheduler quản lý tất cả các tiến trình trong hệ thống bằng cách sử dụng một chuỗi
các hang đợi tiến trình mô tả trạng thái của mỗi tiến trình.Các hàng đợi này chứa
nội dung thông tin cho tiến trình ở trạng thái đó.Tiến trình chuyển từ trạng thái này
sang trạng thái khác khi mà scheduler di chuyển ngữ cảnh từ 1 hàng đợi tiến trình
này đến hàng đợi tiến trình khác

Quản lý bộ nhớ:
Bộ quản lý bộ nhớ của Kernel tại mức quá cao quản lý tất cả các vùng nhớ
có sẵn của iOS, bao gồm bộ nhớ chứa iOS của nó.Bộ quản lý bộ nhớ ba thành
phần riêng biệt, với những nhiệm vụ riêng.
Có ba bộ quản lý bộ nhớ sau:Bộ quản lý Region, Bộ quản lý Pool, Bộ quản
20


lý Chunk.
Bộ quản lý Region:
Định nghĩa và duy trì những region khác nhau trên một platform.Bộ quản lý
region có chức năng duy trì tất cả các region.Nó cung cấp các dịch vụ cho phép
những phần khác của iOS tạo region và gán các thuộc tính của chúng.Nó cũng cho
phép những phần khác truy vấn những region có sẵn, ví dụ quyết định tổng lượng
bộ nhớ có sẵn trên một platform.

Hình 1.4. Sự phân mảnh bộ nhớ
Bộ quản lý pool:
Quản lý việc tạo ra các vùng nhớ pool, cấp phát và thu hồi các khối nhớ của
pool.
Bộ quản lý pool là một thành phần quan trọng của Kernel.Trong khi
scheduler quản lý cấp phát tài nguyên CPU để xử lý,bộ quản lý pool cấp phát bộ
nhớ cho các tiến trình.Tất cả các tiến trình phải thông qua bộ quản lý bộ nhớ pool
trực tiếp hoặc
21


Bộ quản lý bộ nhớ được yêu cầu cho mỗi tiến trình sử dụng hàm hệ thống
chuẩn malloc và free để lấy và trả bộ nhớ.Bộ quản lý bộ nhớ hoạt động bởi việc
duy trì danh sách khối nhớ rỗi cho mỗi pool, ban đầu mỗi pool chứa chỉ một khối

nhớ rỗi lớn bằng kích thước một pool.Khi bộ quản lý bộ nhớ pool yêu cầu bộ
nhớ,khởi tạo những khối nhớ có kích thước nhỏ hơn.Tại cùng một thời điểm,các
tiến trình có thể giải phóng vùng nhớ trả về pool, tạo thành một số vùng nhớ rối
không liên tục nhau, nhiều kích thước, trường hợp này gọi là phân mảnh bộ nhớ.
Quản lý Chunk:
Quản lý pool cung cấp nhiều cách hiệu quả để quản lý một tập hợp các khối
có kích thước khác nhau.Tuy nhiên những tính năng này có chi phí của nó, bộ
quản lý pool tạ ra 32 byte overhead trên mỗi bộ nhớ.Mặc dù overhead này không
quan trọng lắm đối với khối dữ liệu lớn, đối với pool có hàng ngàn khối dữ liệu
nhỏ hơn thì overhead mới trở nên đáng quan tâm.Để tạo thêm sự lựa chọn thì
kernel cung cấp bộ quản lý bộ nớ khác gọi là bộ quản lý bộ nhớ Chunk, nó có thể
quản lý lượng lớn pool có nhiều khối nhớ nhỏ mà không có overhead.Không giống
như quản lý pool, bộ quản lý Chunk không tạo ra danh sách vùng nhớ rỗi với kích
thước khác nhau.Thay vào đó bộ quản lý chunk quản lý một tập các khối nhớ cố
định được chỉ định từ một trong các vùng nhớ pool.Trong một vài trường hợp, bộ
quản lý chunk có thể xem như là một bộ quản lý pool vùng nhớ con.
Các chính sách thường được thực hiện là: Một tiến trình yêu cầu một vị trí
của mooth khối nhớ từ một vùng nhớ pool đặc biệt.Một tiến trình sau đó gọi đến
bộ quản lý chunk để chia khối nhớ thành một chuỗi các chunk có kích thước cố
định và nhỏ hơn,.Sử dụng bộ quản lý chunk để định vị ra những vùng nhớ rối khi
cần.Thuận lợi là ổ đây chỉ có 32 byte overhead và bộ quản lý pool thì không bắt
buộc cấp phát và lấy lại hàng ngàn phân mảnh nhỏ hơn.Vì vậy khả năng phân
mảnh trong pool giảm đáng kể.
Quản lý bộ đệm gói:
Trong định tuyến gói dữ liệu, bất cứ hoạt động lưu trữ hay chuyển dữ liệu
22


đều phải cần có một nơi để lưu trữ dữ liệu trong khi dữ liệu đang được định tuyến
trên đường truyền.Thông thường thì tạo ra một bộ đệm để lưu trữ các gói đến trong

khi hoạt động chuyển mạch đang hoạt động.Bởi vì khả năng định tuyến gói là
trung tâm của cấu trúc hệ điều hành iOS.iOS chứa thành phần chuyên biệt để quản
lý những vùng đệm này.Thành phần này được gọi là bộ quản lý vùng đệm bộ
nhớ.iOS sử dụng thành phần này để tạo và quản lý nhất quán một chuỗi các vùng
đệm cho chuyển mạch trên mỗi platform.Bộ đệm trong vùng này được biết chung
là những bộ đệm hệ thống.Bộ quản lý vùng bộ đệm cung cấp một cách tiện lợi để
quản lý một tập các bộ đệm có kích thước cụ thể.Mặt dầu nó có thể được sử dụng
để quản lý bất cứ loại bộ đệm nào, bộ quản lý bộ đệm được sử dụng chính để quản
lý những vùng bộ đệm gói.Những vùng đệm gói được tạo từ các vùng nhớ pool có
sẵn.Đểf. tạo một vùng, bộ quản lý bộ đệm yêu cầu một khối nhớ từ bộ quản lý pool
và chia cho bộ đệm.Bộ quản lý bộ đệm gói sau đó tạo một danh sách cho tất cả các
bộ đệm rỗi và theo dõi các vùng nhớ này.Những vùng đệm có thể là động hay tĩnh,
vùng bộ đệm tĩnh được tạo với số bộ đệm cố định, không thêm bộ đệm vào cùng bộ
đệm tĩnh này.Vùng bộ đệm động được tạo với một số bộ đệm tối thiểu.Gọi là bộ đệm
thường xuyên, có thể thêm hoặc xóa các bộ đệm.Với các vùng nhớ động , nếu bộ quản
lý bộ đệm nhận được yêu cầu khi vùng nhớ rỗng, nó cố gắng mở rộng vùng nhớ và đáp
ứng yêu cầu ngay lập tức.
Nếu nó không thể mở rộng vùng nhớ, thì yêu cầu bị lỗi và thực hiện mở
rộng vùng nhớ sau đó.vùng bộ đệm được phân lớp public (dùng chung) hoặc
private (dùng riêng).
Vùng public được sử dụng bởi bất cứ tiến trình nào của hệ thống.
Private được tạo cho một tập các tiến trình sử dụng.
Bộ đệm hệ thống: Mỗi iOS đều có một tập các bộ đệm public định trước gọi
là những bộ đệm hệ thống, những bộ đệm này được sử dụng cho tiến trình chuyển
mạch các gói dữ liệu và tạo gói (như gói keepalive, gói cập nhật định tuyến).
 Trình điều khiển thiết bị
23


IOS chứa trình điều khiển thiết bị cho các thiết bị phần cứng, như flash

card, NVRAM, nhưng đáng chú ý là trình điều khiển cho các giao tiếp mạng.Trình
điều khiển các giao tiếp mạng cung cấp những khả năng chính cho hoạt động của
gói dữ liệu tại đầu ra của giao tiếp.
Mỗi thiết bị chứa hai thành phần chính: thành phần điều khiển và thành
phần dữ liệu. Thành phần điều khiển có trách nhiệm quản lý tình trạng và trạng
thái của thiết bị (ví dụ: shutdown trên một cổng). Thành phần dữ liệu có trách
nhiệm đối với tất cả các luồng hoạt động chuyển mạch gói dữ liệu. Trình điều
khiển thiết bị có quan hệ chặt chẽ với chức năng chuyển mạch gói. Trình điều
khiển thiết bị giao tiếp mạng dựa trên hệ thống iOS thông qua một cấu trúc điều
khiển đặc biệt gọi là IDB (interface descriptor block). IDB chứa toàn bộ chức năng
điều khiển thiết bị, dữ liệu, trạng thái thiết bị. Ví dụ: địa chỉ IP,trạng thái cổng,
thống kê gói là một trong các trường hiện tại trong IDB.iOS duy trì một IDB cho
mỗi giao tiếp hiện tại trên một platform. *Cấu trúc chuyển mạch gói: Chuyển mạch
gói là một trong các chức năng quan trọng nhất của router, hoạt động bao quát như
sau: - Một gói đến một cổng. - Địa chỉ đích của gói được kiểm tra và so sánh dựa
vào danh sách đích đã biết. - Nếu phù hớp, gói được chuyển tiếp ra cổng phù hợp.
- Nếu không phù hợp, gói bị hủy.Rõ ràng vấn đề chuyển mạch không quá phức tạp,
nhưng để chuyển mạch được nhanh thì vấn đề trở nên phức tạp.Tốc độ hoạt động
không chỉ dựa vào tốc độ CPU, còn có những nhân tố khác, khẳ năng thực thi của
bus I/O. tốc độ bộ nhớ đều có ảnh hưởng đến sự thực thi của chuyển mạch.Đây là
một thử thách lớn đối với các nhà phát triển iOS.Làm thế nào để tốc độ chuyển
mạch nhanh nhất mà có thể giới hạn trên các thành phần CPU, bộ nhớ, bus I/O.Khi
mà kích thước và số mạng định tuyến tăng lên, những người phát triển iOS tiếp tục
tìm ra những cách tốt nhất để giải quyết thử thách thực thi này.
Đầu tiên thì iOS chỉ có chức năng chuyển mạch nhưng đã được cải thiện về
sau, một vài phương thức chuyển mạch dựa trên nhiều platform khác nhau.Ngày
nay iOS có thể chuyển mạch tới vài trăm ngàn gói trên một giây, sử dụng bạn định
24



tuyến tới vài trăm ngàn tuyến đi.
 Kiến trúc của hệ điều hành iPhone
Bao gồm các lớp sau :

Hình 1.5. Kiến trúc hệ điều hành iPhone
Các lớp dưới cùng là nền tảng của hệ điều hành, phụ trách quản lý bộ nhớ,
các file hệ thống, mạng, các hệ điều hành nhiệm vụ và tương tác trực tiếp với các
phần cứng.
Lớp Core OS : Lớp Core OS bao gồm các thành phần : -OS X Kernel Match 3.0 -BSD Sockets -Security -Power Management -Key chain -Certifi cates File System -Bonjour
Lớp Core Services : Lớp Core Services cung cấp một trừu tượng trên các
dịch vụ được cung cấp trong lớp OS X Kernel.Nó cung cấp truy cập cơ bản để các
dịch vụ hệ điều hành iPhone và bao gồm các thành phần sau : -Collection AddressBook -Networking
 Files Access
 SQLite -Core Location -Net Services -Threading -Preferences -URL
Utilities

25


×