Có thật là Android tốn RAM hơn iOS?

Việc quản lý đa nhiệm trên iOS luôn tốt hơn Android, vì sao vậy?

1 trong những câu hỏi gây ra nhiều tranh cãi nhất giữa 2 hệ điều hành Mobile phổ biến nhất thế giới, Android và iOS. Khi nhìn vào cấu hình của các thế hệ điện thoại iPhone và các dòng flagship Android thì bạn có thể dễ dàng nhận ra rằng iPhone thường được trang bị ít bộ nhớ RAM hơn hẳn so với iPhone. Và suy ra rằng các ứng dụng chạy trên iOS cần ít bộ nhớ hơn so với Android, rằng hệ điều hành Android thường "ngốn" Ram nhiều hơn so với iOS. Vậy thực sự về mặt kỹ thuật, Android có dùng nhiều bộ nhớ hơn iOS hay không? Mời các bạn theo dõi bài viết dưới đây của Quản Trị Mạng.

1. RAM

Cái chúng ta cần bàn luận chính ở đây là RAM - Random Access Memory, hiểu nôm na là bộ nhớ lưu trữ tạm thời của điện thoại, Memory ở đây được CPU sử dụng để lưu trữ và xử lý, thực thi ứng dụng, chương trình. Và chúng ta không bàn luận gì về Internal Storage, bộ nhớ lưu trữ hay thường được gọi là Memory, Flash Memory.

Để cụ thể hơn, các bạn hãy xem video giải thích của Gary Sims từ Android Authority:

Rõ ràng rằng, trên thực tế thì các dòng máy iPhone luôn có bộ nhớ RAM ít hơn so với Android. Duy nhất chỉ có trường hợp của Nexux 5X có 2GB Ram vào thời điểm iPhone6S cũng có 2GB Ram. Và trong video thử nghiệm trên của Gary, ông dùng Nexux 5X bản 2GB và iPhone 7 cũng 2GB Ram.

Phần lớn các ý kiến đều cho rằng điện thoại iPhone dùng ít RAM hơn so với Android. Và khi bạn tìm kiếm câu trả lời (Search Google chẳng hạn) thì chắc chắn sẽ nhận được lời giải thích là vì JAVA - nguyên nhân chính khiến Android cần nhiều Ram hơn. Vậy thực hư thế nào?

2. Free RAM là gì?

Việc quản lý bộ nhớ trên các thiết bị hiện đại ngày nay (PC, laptop, tablet hoặc điện thoại smartphone) là 1 việc khá phức tạp. Trong những ngày đầu tiên của máy tính, Ram chỉ cần dùng để dành cho hệ điều hành chạy, và 1 phần khác dành cho các chương trình đang chạy cùng với dữ liệu. Và dần dần, đã có sự ra đời các các thế hệ OS sau này, cùng với khả năng đa nhiệm và sự ra đời của bộ nhớ ảo - Virtual Memory.

Điều này có nghĩa là, ở hệ điều hành Android và iOS cũng sẽ có 1 phần Ram để quản lý phần OS (tạm gọi là Pages) để chạy ứng dụng. Và có những phần Ram bị bỏ trống, gọi là Free. Nhưng, cách xử lý và phân phối Ram ở đây lại không hiệu quả. Ví dụ: tất cả các giao thức Input và Output đều được cải thiện bằng cách dùng bộ nhớ tạm - Cache. Và việc tạo Cache này cũng khá quan trọng trong toàn bộ hệ điều hành, nhưng không được ưu tiên so với chạy các chương trình hiện thời. Do vậy, hệ điều hành - OS đưa thêm phần Ram Free vào trong Cache này. Sau đó, nếu các chương trình cần nhiều Ram hơn thì phần Cache này có thể bị bỏ qua và bộ nhớ cung cấp trực tiếp cho ứng dụng. Và tất cả những điều này được xử lý bởi hệ điều hành - OS. Có nghĩa là gì? Đối với các hệ điều hành hiện đại thì luôn có các khoảng Free Ram, các phần Ram có sẵn là Ram đang được dùng nhưng không được tái cơ cấu vào mục đích khác. 

Khi tiến hành thử nghiệm thực tế trên chiếc Nexux 5 và iPhone 7, chính xác là lúc vừa khởi động lên thì chiếc iPhone 7 có 739MB Ram có sẵn, còn Android là 840MB Ram. 

Mức độ dùng RAM trên Android

3. Resident Set Size:

Gần tương tự như Free Ram, nhưng lại không giống như Ram có sẵn, đó là Resident Set Size. Giả sử rằng, chương trình cần nhiều hơn 1MB bộ nhớ để load ảnh từ phân vùng, tại thời điểm đó thì bộ nhớ ảo của ứng dụng sẽ tăng lên (về mặt lý thuyết), tuy nhiên hệ điều hành - OS lại không, hoặc chưa kịp đáp ứng yêu cầu này. Vậy phần bộ nhớ Ram vật lý được dùng bởi chương trình cũng không tăng lên. Sau đó, khi chương trình bắt đầu đọc file và ghi dữ liệu vào bộ nhớ thì hệ điều hành mới bắt đầu phân phát bộ nhớ về mặt vật lý. 

Phần bộ nhớ vật lý đang được dùng bởi 1 chương trình nào đó được gọi là Resident Set Size - RSS, và đồng thời đây là thước đo chính xác nhất bộ nhớ Ram được dùng bởi ứng dụng. Để kiểm tra phần lý thuyết này, tác giả sẽ cài lên 1 số chương trình, game để xác định chính xác mức độ RSS trong khi đang chạy (ở đây là cài và chạy lẫn Crossy Road cùng với Microsoft Word).

RSS của ứng dụng

Như hình này bạn có thể thấy Star Wars Force Arena yêu cầu bộ nhớ vật lý là 254MB

Mức RSS của một số chương trình, bộ nhớ càng ít càng tốt

Như hình trên, các bạn có thể thấy Crossy Road trên Android dùng hết 383 MB Ram, trong khi iOS chỉ là 308MB Ram, và với Temple Run 2 thì có vẻ ngược lại, trên Android là 211MB Ram và iOS là 364 MB Ram. Và không có chương trình nào dùng quá 400MB Ram, đối với cả 2 hệ điều hành. 

4. Background chứ không phải là Foreground:

Phương pháp đo lường RSS trên là dành cho những ứng dụng Foreground, hiểu nôm nà các chương trình mà chúng ta đang tương tác trực tiếp. Nhưng trên cả iOS và Android thì 2 hệ điều hành này đều có tính năng chuyển từ ứng dụng đang chạy sang ứng dụng khác, và sau đó sẽ quay lại ứng dụng đang dùng. Đó gọi là các chương trình background - chạy ngầm, hay chạy nền. Điểm khác biệt chính ở đây là User Experience, ví dụ nếu bạn đang soạn thảo Gmail thì cần thư giãn, chuyển sang chơi game bài Solitaire rồi sau đó quay lại Gmail. Điều tác giả mong muốn ở đây là Gmail sẽ giữ nguyên hiện trạng khi chuyển sang Solitaire và quay lại. Nhưng thực tế thì có thể tác giả sẽ quên luôn Gmail, và chuyển sang chơi tiếp game nào đó, hoặc dùng chương trình nào đó trong 1 thời gian dài. Và khi nhớ lại Gmail thì chương trình có giữ nguyên hiện trạng đó không? Hay là đóng ứng dụng?

Áp dụng với bảng dữ liệu RSS trên, nếu tác giả đang bật Microsoft Word, sau đó là game Crossy Road, quay lại Word và mở thêm Temple Run 2 thì thiết bị sẽ phải cần tới khoảng 750 MB Ram có sẵn. Và tất nhiên luôn có giới hạn ở những con số này. Đối với Nexux 5X và iPhone 7 thì như nhau trong trường hợp này (cùng có 2GB Ram bộ nhớ). 

Các thứ tự ưu yên của hệ điều hành là để cho các ứng dụng được tải - load hết và chạy bình thường, nhưng nếu không có đủ bộ nhớ vật lý thì chuyện gì sẽ xảy ra? Nếu trên bộ máy Desktop hoặc Server thì hệ điều hành sẽ dùng dung lượng trống của ổ cứng như bộ nhớ lưu trữ tạm thời và phân phát cho các chương trình background. Đó là Swapping, tuy nó chậm hơn so với dung lượng bộ nhớ vật lý được cấp phát nhưng vẫn đủ khi cần dùng đến. 

Và về mặt lý thuyết, hệ điều hành Android không dùng đến dung lượng lưu trữ trên phân vùng swapping bộ nhớ, bởi vì tốc độ ghi dữ liệu của Flash Memory khá thấp, thêm nữa là việc ghi dữ liệu như vậy rất dễ dẫn đến hiện tượng hỏng thẻ nhớ. 1 phương pháp của hệ điều hành Android là nén các bộ nhớ được swapping lại. Hệ điều hành sẽ xem các pages đó là đã được di chuyển vào phân vùng, thay vì việc ghi chúng vào ổ đĩa và nén, lưu trữ trên Ram. Phần khoảng trống được giữ lại bởi việc nén giữ liệu sẽ trở thành Ram. Kỹ thuật này cũng được áp dụng trên hệ điều hành Mac OS từ phiên bản 10.9 Mavericks.

Vấn đề của quá trình nén bộ nhớ là tỉ lệ nén cố định, chúng không ổn định. Nếu phần Memory page lưu trữ thông tin dạng text hoặc dữ liệu đơn giản thì tỉ lệ này sẽ khá cao, dẫn đến việc dung lượng Ram tạo thành cũng cao. Ngược lại, nếu dữ liệu nén với tỉ lệ thấp, ví dụ ảnh JPEG đã được lưu trên bộ nhớ thì tỉ lệ này cũng thấp đi. 

Tuy nhiên, phần CPU phải load thêm và tỉ lệ nén không tốn tài nguyên hệ thống là bao nhiêu. Trong trường hợp hệ điều hành không thể giải phóng được bộ nhớ cần thiết đủ thì OS sẽ phải bắt buộc đóng 1 ứng dụng nào đó để lấy thêm Ram vật lý. Đó là lý do tại sao nếu bạn mở nhiều chương trình trên Android thì sẽ có 1 vài chương trình cũ bắt buộc đóng.

Và khi bắt buộc đóng những chương trình đó, tình trạng tại thời điểm đó của chương trình vẫn sẽ được lưu trữ đầy đủ. Trên iOS thì kỹ thuật đó cũng tương tự, và chỉ có 1 vài điểm khác biệt ở hệ điều hành iOS mà thôi. Đó là tần suất xảy ra việc bắt buộc đóng ứng dụng ít hơn hẳn so với Android. Do vậy người dùng iOS có cảm giác rằng hệ điều hành của họ có thể xử lý nhiều chương trình, hay đa nhiệm tốt hơn Android là vì như vậy. Ví dụ cụ thể, với game Crossy Road khi đang chạy trên iOS yêu cầu 308 MB Ram, và khi chuyển về chế độ background, dung lượng RSS của Crossy Road thu gọn lại chỉ còn khoảng 10 MB lưu trữ. Và các tình trạng của game được giữ nguyên, các bạn có tin được không? Chỉ với 10MB bộ nhớ Ram thôi nhé. Vì sao Apple có thể làm được điều này thì nó vẫn còn là bí mật.

5. Kết luận:

Về mặt kỹ thuật, iOS không dùng ít bộ nhớ hơn so với Android hay ngược lại, Android không hề dùng nhiều Ram hơn so với iOS. Chẳng qua sự khác biệt ở đây là cách 2 hệ điều hành xử lý các chương trình ở chế độ chạy ngầm - background mà thôi. Về mặt này thì iOS đã và đang tỏ ra vượt trội so với Android, và các hãng điện thoại Android đã bù đắp nhược điểm này bằng cách tăng dung lượng bộ nhớ Ram trên các thiết bị của họ. 

Xem thêm:

Thứ Tư, 20/06/2018 14:34
31 👨 1.210