1. Trang chủ >
  2. Luận Văn - Báo Cáo >
  3. Công nghệ thông tin >

Quản lý tiến trình (process management):

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 (355.14 KB, 22 trang )


H ệ th ống phân c ấp

Th ứ bậc c ủa process trong Android được chia thành 5 c ấp theo 5 m ức độ

quan trọng t ừ cao đến th ấp:

Foreground process (t ạm dịch: ti ến trình n ổi b ật) : Đây chính là những

process dùng để ch ạy ứng d ụng (app) b ạn đang dùng. Nh ững process

khác c ũng có th ể được xem là foreground khi chúng có liên h ệ tr ức ti ếp v ới

process “x ử lý” app đang ch ạy. T ại m ột th ời đi ểm c ũng ch ỉ có vài

foreground process mà thơi.

Visible process (t ạm dịch: ti ến trình nhìn th ấy được) : Visible process không

liên quan đến app đang ch ạy nh ưng có tác động đến nh ững gì th ể hi ện

trên màn hình. Ví d ụ, foreground process có tính n ăng “trong su ốt”

(transparent) và nh ững ứng d ụng được hi ển th ị đằng sau chính là visible

process. D ễ th ấy nh ất là khi cài các theme h ỗ tr ợ kh ả n ăng “làm m ờ” ứng

dụng hoặc “ghim” ứng dụng lên màn hình.

Service process (t ạm dịch: ti ến trình d ịch v ụ) : Tiến trình d ạng này khơng

liên quan đến b ất kì ứng d ụng c ả đang ch ạy và “d ưới” đang ch ạy nào.

Chúng th ực hi ện công vi ệc m ột cách âm th ầm nh ư ch ơi nh ạc hay t ải t ập

tin. Ví d ụ b ạn đang nghe nh ạc và mu ốn chuy ển sang ch ơi game, khi b ạn

m ở game c ũng là lúc process phát nh ạc tr ở thành service process, v ẫn ti ếp

tục chơi nhạc khi bạn làm việc khác.

Background process (t ạm dịch: ti ến trình n ền) : Background process không

xu ất hi ện, c ũng không th ực hi ện vai trò d ễ nh ận ra (nh ư ch ơi nh ạc), chúng

không ảnh h ưởng đến tr ải nghi ệm s ử d ụng. T ại m ột th ời đi ểm, có r ất nhi ều

background process đang ch ạy và b ạn có th ể xem chúng là nh ững ứng

d ụng đang “t ạm d ừng”. Background process v ẫn s ử d ụng RAM, cho phép

b ạn nhanh chóng chuy ển đổi tr ở l ại nh ưng không s ử d ụng thêm tài nguyên

phần c ứng nào khác. Ví d ụ khi dùng Chrome và b ấm phím Home, Chrome



trở thành background process và khi mở lại Chrome, nó c ũng l ập t ức m ở

lại tab đang xem.

Empty process (t ạm dịch: ti ến trình r ỗng) : Tiến trình này khơng còn tiêu tốn

tài ngun nào n ữa. Chúng đượ c gi ữ l ại nh ằm m ục đích t ạo b ộ nh ớ đệm

cho lần khởi động sau và hệ thống có thể tùy ý lo ại b ỏ chúng.



Service process đang phát nhạc

Một ví d ụ tổng quát s ẽ giúp b ạn hình dung d ễ h ơn: Angry Birds là

foreground process khi b ạn đang “b ắn heo”. Ng ừng ch ơi và m ở Gmail,

Angry Birds trở thành background process và Gmail thành foreground

process. Kiểm tra xong email và trở lại Angry Birds, trò ch ơi hi ện l ại ngay

màn bạn đang chơi. Trong khoảng thời gian đó, Angry Birds được duy trì

trên RAM, bộ nh ớ đệm và ln trong tình tr ạng s ẵn sàng khơi ph ục.



Tính năng t ự động quản lý ti ến trình c ủa Android

Android có khả năng quản lý process một cách t ự động, do đó b ạn khơng

cần cài đặt bất kì ứng dụng “quản lý ứng dụng” nào.



Khi cần nhiều tài nguyên, Android tự động xóa các process ít quan tr ọng

nhất, bắt đầu t ừ empty và background process. Khi c ần nhi ều tài nguyên

hơn nữa như lúc chơi game nặng, hệ thống t ự động loại bỏ thêm service

process. Chơi game n ặng, nh ạc c ủa b ạn s ẽ t ự t ắt, t ập tin t ải v ề t ự động

dừng.

Trong đa số trường hợp, bạn không cần lo về lượng RAM c ủa máy. Nhi ều

ng ười lo rằng máy mình chỉ còn 1 ít RAM và “ đổ th ừa” cho h ệ th ống là

không đúng. Cơ chế quản lý thông minh của Android t ự động l ưu gi ữ các

ứng dụng và dữ liệu khác trên RAM cho bạn trải nghi ệm t ốt nhất có th ể.

Dĩ nhiên, sự linh hoạt cũng có điểm yếu. N ếu một ứng d ụng được l ập trình

khơng tốt, một service process có thể tiếp tục s ử dụng tài nguyên CPU và

RAM khiến máy nóng lên và tụt pin nhanh chóng. V ề m ặt k ĩ thu ật, tình

trạng này được gọi là “memory leaked” (rò rỉ bộ nhớ).

Một số ứng dụng được lập trình đặt icon trên thanh thơng báo notification

nh ư avast!, TrustGo Antivirus hay… Advanced Task Killer. N ếu b ạn c ố t ắt

icon này, ứng d ụng “ch ống l ại”. B ằng cách luôn gi ữ icon trên thanh thơng

báo, chúng cho biết mình khơng phải là background process để kh ỏi b ị h ệ

thống loại bỏ khi cần tài nguyên.



avast! “chống lệnh” t ắt icon



Ứng d ụng Android có th ể t ự đáp ứng các s ự ki ện

Các lập trình viên có thể cho ứng dụng c ủa mình quy ền t ự kh ởi động cùng

hệ thống hay ch ạy m ột dịch v ụ ng ầm. Ứng d ụng có th ể t ự kh ởi động b ởi

nhiều loại “sự kiện” khác nhau: khi m ở máy, khi ch ụp ảnh, khi thay đổi

mạng. Khả năng này cho phép ứng dụng làm việc mà không c ần tiêu t ốn

tài nguyên “chạy nền” (background process). Ví d ụ Facebook Messenger

biết khi nào b ạn m ở wifi để t ự nh ận tin nh ắn.



“Quyền đặc biệt” của ứng dụng



Có thể nói, đây là cách trình bày đơn gi ản và d ễ hi ểu nh ất cho vi ệc Androi

quản lí tiến trình như thế nào dành cho các đối tượng là nh ững người

không chuyên sâu v ề m ảng ki ến th ức này mà v ẫn mu ốn n ắm rõ cách v ận

hành của hệ điều hành.



Còn chúng ta, nh ững sinh viên đang h ọc

chuyên sâu v ề Cơng ngh ệ thơng tin thì vi ệc

Android qu ản lí các ti ến trình có th ể hi ểu theo

m ột cách tr ừu t ượng nh ư sau:

Theo mặc định, tất cả thành phần của cùng ứng dụng sẽ chạy trong cùng

tiến trình và hầu hết các ứng dụng sẽ không thay đổi điều này.

Android có th ể quy ết định t ắt m ột ti ến trình t ại m ột th ời đi ểm nào đó, khi bơ ̣

nhớ thấp và theo u cầu của các tiến trình khác đang ph ục v ụ ng ười dùng

tức thì h ơn. Các thành ph ần ứng d ụng đang ch ạy trong ti ến trình b ị t ắt b ỏ



thì sau đó sẽ bị hủy. Tiến trình đượ c khởi độ ng lại cho những thành ph ần

đó khi lại có việc cho chúng thực hiện.

Khi quy ết đị nh b ỏ nh ững ti ến trình nào, h ệ th ống Android s ẽ cân nh ắc t ầm

quan trọng t ươ ng đố i so v ới ng ườ i dùng. Ví d ụ, h ệ th ống s ẵn sàng h ơn khi

tắt một ti ến trình l ưu tr ữ các ho ạt độ ng khơng còn hi ển th ị trên màn hình,

so với một tiến trình lưu trữ các hoạt độ ng đang hi ển thị. Vì th ế, quy ết đị nh

về việc có chấm dứt một tiến trình hay khơng phụ thuộc vào tr ạng thái c ủa

các thành ph ần đang ch ạy trong ti ến trình đó. Các quy t ắc đượ c s ử d ụng

để quyết định sẽ chấm dứt tiến trình nào được trình bày ở bên d ưới.



Vòng đờ i ti ến trình

Hệ thống Android c ố g ắng duy trì m ột ti ến trình ứng d ụng lâu nh ất có th ể,

nhưng cuối cùng thì nó cũng cần loại bỏ các ti ến trình c ũ để lấy l ại bô ̣ nh ớ

cho các tiến trình mới hoặc quan trọng hơn. Để xác đị nh gi ữ l ại nh ững ti ến

trình nào và loại bỏ những tiến trình nào, hệ thống sẽ đặ t t ừng ti ến trình

vào một "phân cấp tầm quan trọng" dựa trên những thành ph ần đang ch ạy

trong tiến trình và trạng thái của những thành phần đó. Nh ững ti ến trình có

tầm quan trọng thấp nhất bị loại bỏ trướ c, rồi đế n những tiến trình có t ầm

quan trọng th ấp th ứ hai, và c ứ th ế ti ếp t ục, mi ễn là còn c ần thi ết để khơi

phục tài nguyên của hệ thống.

Có năm cấp trong phân cấp tầm quan trọng. Danh sách sau trình bày các

loại tiến trình khác nhau theo thứ tự tầm quan trọng (ti ến trình th ứ nh ất

là quan trọng nhất và đượ c tắt b ỏ sau cùng):

1.



Ti ến trình ti ền c ảnh

M ột ti ến trình đượ c yêu c ầu cho vi ệc mà ng ười dùng đang th ực hi ện.

M ột ti ến trình đượ c coi là đang trong ti ền c ảnh n ếu b ất k ỳ đi ều nào

sau đây là đúng:

o



Nó l ưu tr ữ m ột Activity mà ng ười dùng đang t ương tác v ới

(ph ương pháp c ủa Activity, onResume(), đã đượ c g ọi).



o



Nó l ưu tr ữ m ột Service g ắn k ết v ới ho ạt độ ng mà ng ười dùng

đang t ương tác v ới.



o



Nó l ưu tr ữ m ột Service đang ch ạy "trong ti ền c ảnh"—mà d ịch

v ụ đã g ọi startForeground().



o



Nó l ưu tr ữ m ột Service mà đang th ực thi m ột trong các l ệnh g ọi

l ại c ủa vòng đờ i c ủa nó (onCreate(), onStart(),

ho ặc onDestroy()).



o



Nó l ưu tr ữ m ột BroadcastReceiver mà đang th ực thi ph ương

pháp onReceive() c ủa nó.



Nhìn chung, t ại b ất k ỳ th ời đi ểm xác đị nh nào c ũng ch ỉ t ồn t ại m ột vài

ti ến trình ti ền c ảnh. Chúng ch ỉ b ị t ắt b ỏ nh ư m ột gi ải pháp cu ối cùng

—n ếu bộ nh ớ quá th ấp t ới m ức chúng đề u không th ể ti ếp t ục ch ạy

được. Nhìn chung, t ại th ời đi ểm đó, thi ết b ị đã đạt t ới tr ạng thái phân

trang b ộ nh ớ, vì th ế vi ệc t ắt b ỏ m ột s ố ti ến trình ti ền c ảnh là b ắt bu ộc

để đảm b ảo giao di ện ng ười dùng có ph ản h ồi.

2.



Ti ến trình hi ển th ị

M ột ti ến trình mà khơng có b ất k ỳ thành ph ần ti ền c ảnh nào, nh ưng

v ẫn có th ể ảnh h ưởng t ới n ội dung mà ng ười dùng nhìn th ấy trên

màn hình. M ột ti ến trình đượ c coi là hi ển th ị n ếu m ột trong hai đi ều

ki ện sau là đúng:

o



Nó l ưu tr ữ m ột Activity mà không n ằm trong ti ền c ảnh, nh ưng

v ẫn hi ển th ị v ới ng ười dùng (ph ương pháp onPause() c ủa nó

đã được g ọi). Đi ều này có th ể x ảy ra, ví d ụ, n ếu ho ạt động ti ền

c ảnh đã b ắt đầ u m ột h ộp tho ại, nó cho phép ho ạt độ ng tr ước

được nhìn th ấy phía sau nó.



o



Nó l ưu tr ữ m ột Service được g ắn k ết v ới m ột ho ạt động hi ển th ị

(ho ặc ti ền c ảnh).



M ột ti ến trình ti ền c ảnh đượ c coi là c ực k ỳ quan tr ọng và s ẽ không b ị

t ắt b ỏ tr ừ khi làm v ậy là b ắt bu ộc để gi ữ cho t ất c ả ti ến trình ti ền c ảnh

chạy.

3.



Ti ến trình d ịch v ụ



M ột ti ến trình mà đang ch ạy m ột d ịch v ụ đã đượ c b ắt đầ u b ằng

phương pháp startService() và không r ơi vào m ột trong hai th ể lo ại

cao h ơn. M ặc dù ti ến trình d ịch v ụ không tr ực ti ếp g ắn v ới b ất k ỳ th ứ

gì mà ng ười dùng th ấy, chúng th ường đang làm nh ững vi ệc mà

ng ười dùng quan tâm đế n (ch ẳng h ạn nh ư phát nh ạc ch ạy ng ầm

ho ặc t ải xu ống d ữ li ệu trên m ạng), vì th ế h ệ th ống v ẫn gi ữ chúng

ch ạy tr ừ khi khơng có đủ b ộ nh ớ để duy trì chúng cùng v ới t ất c ả ti ến

trình ti ền c ảnh và hi ển th ị.

4.



Ti ến trình n ền

M ột ti ến trình l ưu tr ữ m ột ho ạt độ ng mà hi ện t ại không hi ển th ị v ới

ng ười dùng (ph ương pháp onStop() c ủa ho ạt độ ng đã đượ c g ọi).

Nh ững ti ến trình này khơng có tác độ ng tr ực ti ếp t ới tr ải nghi ệm

ng ười dùng, và h ệ th ống có th ể b ỏ chúng đi vào b ất c ứ lúc nào để l ấy

l ại b ộ nh ớ cho m ột ti ến trình ti ền c ảnh, hi ển th ị ho ặc d ịch v ụ. Th ường

thì có nhi ều ti ến trình ng ầm đang ch ạy, vì th ế chúng đượ c gi ữ trong

m ột danh sách LRU (ít s ử d ụng g ần đây nh ất) để đả m b ảo r ằng ti ến

trình v ới ho ạt độ ng mà ng ười dùng nhìn th ấy g ần đây nh ất là ti ến

trình cu ối cùng s ẽ b ị t ắt b ỏ. N ếu m ột ho ạt độ ng tri ển khai các ph ương

pháp vòng đờ i c ủa nó đúng cách, và l ưu tr ạng thái hi ện t ại c ủa nó,

vi ệc t ắt b ỏ ti ến trình c ủa ho ạt độ ng đó s ẽ khơng có ảnh h ưởng có th ể

th ấy đượ c t ới tr ải nghi ệm ng ười dùng, vì khi ng ười dùng đi ều h ướng

l ại ho ạt độ ng đó, ho ạt độ ng s ẽ khôi ph ục t ất c ả tr ạng thái hi ển th ị c ủa

nó. Xem tài li ệu Ho ạt độ ng để bi ết thông tin v ề vi ệc l ưu và khôi ph ục

trạng thái.



5.



Ti ến trình tr ống

M ột ti ến trình mà khơng gi ữ b ất k ỳ thành ph ần ứng d ụng hi ện ho ạt

nào. Lý do duy nh ất để gi ữ cho ki ểu ti ến trình này ho ạt độ ng đó là

nh ằm m ục đích l ưu b ộ nh ớ ẩn, để c ải thi ện th ời gian kh ởi độ ng vào

l ần t ới khi thành ph ần c ần ch ạy trong nó. H ệ th ống th ường t ắt b ỏ

nh ững ti ến trình này để cân b ằng tài nguyên t ổng th ể c ủa h ệ th ống

gi ữa các b ộ đệ m ẩn ti ến trình và b ộ đệ m ẩn nhân liên quan.



Android x ếp h ạng m ột ti ến trình ở m ức cao nh ất mà nó có th ể, d ựa vào

t ầm quan tr ọng c ủa các thành ph ần đang ho ạt độ ng trong ti ến trình đó. Ví



d ụ, n ếu m ột ti ến trình l ưu gi ữ m ột d ịch v ụ và ho ạt độ ng hi ển th ị, ti ến trình

đó s ẽ được x ếp h ạng là ti ến trình hi ển th ị ch ứ khơng ph ải ti ến trình d ịch v ụ.

Ngồi ra, x ếp h ạng c ủa m ột ti ến trình có th ể t ăng b ởi các ti ến trình khác

ph ụ thu ộc vào nó—m ột ti ến trình mà đang ph ục v ụ m ột ti ến trình khác

khơng th ể b ị x ếp th ấp h ơn ti ến trình mà nó đang ph ục v ụ. Ví d ụ, n ếu m ột

trình cung c ấp n ội dung trong ti ến trình A đang ph ục v ụ m ột máy khách

trong ti ến trình B, ho ặc n ếu m ột d ịch v ụ trong ti ến trình A đượ c g ắn k ết v ới

m ột thành ph ần trong ti ến trình B, ít nh ất ti ến trình A s ẽ ln đượ c coi là

quan tr ọng nh ư ti ến trình B.

Do m ột ti ến trình đang ch ạy m ột d ịch v ụ đượ c x ếp h ạng cao h ơn m ột ti ến

trình có các ho ạt độ ng n ền, m ột ho ạt độ ng mà kh ởi độ ng m ột thao tác

nh ấp gi ữ có th ể làm t ốt vi ệc kh ởi độ ng m ột dịch v ụ cho thao tác đó, thay vì

ch ỉ t ạo m ột lu ồng trình th ực hi ện—nh ất là khi thao tác đó s ẽ có th ể di ễn ra

lâu h ơn ho ạt độ ng. Ví d ụ, m ột ho ạt độ ng mà đang t ải m ột ảnh lên m ột

trang web nên b ắt đầ u m ột d ịch v ụ để th ực hi ện vi ệc t ải lên sao cho vi ệc t ải

lên có th ể ti ếp t ục ch ạy ng ầm ngay c ả khi ng ười dùng r ời kh ỏi ho ạt độ ng.

Vi ệc s ử d ụng m ột d ịch v ụ s ẽ b ảo đả m r ằng thao tác ít nh ất s ẽ có m ức ưu

tiên nh ư "ti ến trình d ịch v ụ", khơng ph ụ thu ộc vào đi ều x ảy ra v ới ho ạt

động. Đây c ũng chính là lý do hàm nh ận qu ảng bá nên s ử d ụng d ịch v ụ

thay vì ch ỉ đư a các thao tác t ốn th ời gian vào m ột lu ồng.



2.Qu ản lý b ộ nh ớ (memory management):





Theo vi.wikipedia.org thì Qu ản lý b ộ nh ớ (ti ếng Anh: memory

management) là vi ệc đi ều hành b ộ nh ớ máy tính ở c ấp b ậc h ệ th ống.

M ục đích quan tr ọng c ủa vi ệc qu ản lý b ộ nh ớ là cung c ấp nh ững

cách th ức để c ấp phát độ ng các ô nh ớ cho ch ương trình khi đượ c

yêu c ầu và gi ải phóng các ơ nh ớ đó khi khơng c ần dùng n ữa. Đây là



vi ệc r ất quan tr ọng đối v ới b ất k ỳ h ệ th ống máy tính cao c ấp nào vì

s ẽ có nhi ều cơng vi ệc được ti ến hành ở m ọi th ời đi ểm.

• Trong vi ệc qu ản lý b ộ nh ớ ấy, chúng ta có 2 lo ại b ộ nh ớ c ần qu ản lí,

đó là:

- Quản lý bộ nhớ thật.

- Quản lý bộ nhớ ảo:

 Quản lý bộ nhớ ảo phân trang.

 Quản lý bộ nhớ ảo phân đo ạn.

 Quản lý bộ nhớ ảo phân trang và phân đo ạn.

 Quản lý bộ nhớ của CPU Intel:

Với mục tiêu phải tương thích ng ược với các CPU đời c ũ

hơn, các CPU 80x86 (x>=3) cung c ấp 3 c ơ ch ế qu ản lý b ộ

nhớ :

1. real mode : đã có trong CPU 8088, CPU đượ c dùng để

xây dựng máy IBM PC đầu tiên. Đây là c ơ ch ế qu ản lý b ộ

nhớ thật dùng kỹ thuật phân đoạn (segmentation).

2. protected mode : đã có trong CPU 80286. Đây là c ơ ch ế

quản lý bộ nhớ ảo dùng kỹ thuật phân đoạn (segmentation).

3. 386 enchanced mode : mới thêm vào cho các CPU từ

80386 tr ở lên. Đây là c ơ ch ế qu ản lý b ộ nh ớ t ổng h ợp v ừa

phân đoạn vừa phân trang.



Chúng ta đã khái quát xong vi ệc Qu ản lý b ộ

nh ớ trong H ệ Đi ều Hành nói chung; V ậy v ới

H ệ Đi ều Hành riêng bi ệt nh ư Android thì

vi ệc qu ản lý b ộ nh ớ di ễn ra nh ư th ế nào?

Qu ản lý b ộ nh ớ c ủa ứng d ụng trong Android

Performance, một thứ vô cùng quan trọng đối với một ứng dụng trong

Android, ảnh hưởng trực tiếp đến cảm quan ng ười dùng, đặc biệt v ới các



Xem Thêm
Tải bản đầy đủ (.docx) (22 trang)

×