Android
Android có lẽ là hệ điều hành thú vị nhất để tìm hiểu về đa nhiệm, nó có một hệ thống "lai" mở rộng cửa cho phép các ứng dụng chạy nền nhưng lại được ẩn giấu đi để người dùng không phát hiện ra. Chính vì vậy mà bạn không thể chủ động quản lý ứng dụng chạy hay tắt được.
Khi bạn chuyển qua một chương trình khác, chương trình mà bạn đang chạy sẽ không bị dừng lại, toàn bô tiến trình của nó vẫn sẽ được mở cho đến khi nào máy còn chịu được. Khi Android xác định máy đang thiếu bộ nhớ, nó sẽ tự động tắt tiến trình đó đi để giải phóng tài nguyên. Trước khi tắt, trạng thái làm việc của chương trình sẽ được lưu lại để khi truy xuất lần nữa, mọi công việc bạn làm vẫn được giữ nguyên. Tất nhiên, với các quản lý này bạn sẽ không biết được chương trình đó vừa bị tắt.
Vậy các chương trình có thể làm gì khi nó chạy nền? Android có 2 công cụ cho các chương trình của bên thứ 2, đó là boardcast receivers và dịch vụ. Với Boardcast, khi một chương trình chạy nền, nó sẽ luôn được thông báo về các sự kiện nhất định, chẳng hạn như bạn đã di chuyển được 500 mét hay thời lượng pin của bạn giảm còn 47%... Đây cũng là cách thức các chương trình sử dụng cơ chế push của Google hoạt động. Gmail là một ví dụ, thay vì luôn gửi các lệnh về máy chủ để xác định email mới, nó chỉ việc ngồi chơi và chờ thông báo gửi tới là email đã đến. Với cách hoạt động này, các chương trình sẽ không sử dụng tài nguyên hệ thống nhưng vẫn sẵn sàng hoạt động khi cần thiết.
Dịch vụ có lẽ quen thuộc hơn với bạn, nó là các yêu cầu từ chương trình cho hệ thống biết là nó cần chạy những gì, trong khoảng thời gian nào, chẳng hạn như chơi nhạc, định vị...
Vậy những điều gì mà chương trình bên thế ba không thể làm khi chạy nền? Thật là thì Android cũng khá mở và hạn chế không phải là lớn. Chỉ là vì ở Android 1.0, Google hoàn toàn không đưa ra một giới hạn nào cho các chương trình nên chúng liên tục "đốt" pin của máy. Chính vì vậy mà từ Android 1.5 trở đi, tất cả các chương trình chạy nền không được sử dụng quá 5-10% công suất của CPU, ngoài ra thì các chương trình nền cũng không được phép thoát khỏi chạy nền một cách dễ dàng nữa mà phải phụ thuộc vào hệ thống cảnh báo của máy.
iOS:
iPhone luôn là hệ điều hành đa nhiệm kể từ thời điểm nó ra đời, nhưng nó lại bị giới hạn trong các chương trình của chính Apple. Kể từ OS 4.0, giới hạn đó đã phần nào được giảm bớt với việc hỗ trợ đa nhiệm từ phần mềm của bên thứ 3 và cho phép chúng chạy nền. Tuy vậy, những giới hạn của OS 4.0 vẫn là khá nhiều. Cũng như Android, ý tưởng đằng sau iPhone OS là người dùng không thật sự quản lý các chương trình theo ý mình mà hệ thống sẽ làm điều đó. Tuy vậy, không có nhiều tài liệu kỹ thuật nói rõ về việc này. Dù sao, chúng ta vẫn biết được một vài kiến thức cơ bản về nó.
iPhone hoạt động theo 7 dịch vụ đa nhiệm cơ bản mà bạn đã biết trong bài giới thiệu OS 4.0 Tinh Tế đăng tải trước kia. 2 dịch vụ cơ bản là fast-app switching và task finishing sẽ được hoạt động khi một chương trình được chạy nền. Dịch vụ đầu tiên sẽ bảo đảm đóng băng chương trình lại mà không tắt nó đi, cho phép người dùng giữ nguyên những gì đang làm khi thoát khỏi chương trình. Và vì người dùng không tự mình quản lý ứng dụng nào tắt hay mở, hệ điều hành sẽ quyết định điều đó. Nó sẽ tự động tắt các chương trình ngay khi có quá nhiều thứ đang chạy, gần giống với ý tưởng của Android. Khi bạn thoát ra khỏi một chương trình mà chương trình đó vẫn đang cần phải hoạt động để hoàn tất các tác vụ thì nó sẽ thông báo cho hệ điều hành biết để không ngắt tiến trình của nó đi cho đến khi tác vụ được hoàn thành.
Các chương trình bên thứ 3 cũng được Apple cung cấp một số tính năng hạn chế khi hoạt động trong chế độ chạy nền. Điểm khác biệt lớn nhất giữa iPhone và Android là các ứng dụng nền trên iPhone không hoạt động hoàn toàn như Android mà nó dựa vào các dụng vụ của Apple cung cấp, đó chính là dịch vụ VoIP, âm thanh và địa điểm. Dịch vụ địa điểm này hoạt động theo kiểu định vị bằng các trạm phát sóng để tiết kiệm pin và GPS cho các dịch vụ dẫn đường.
Hạn chế của đa nhiệm iPhone là không một phần mềm nào thoát khỏi 7 dịch vụ trên. Chẳng hạn nếu một phần mềm nào không phải là VoIP hay Audio... nó sẽ không thể chạy nền được cho dù phần mềm đó vẫn vẫn giữ nguyên được trang thái của mình trong RAM để quay trở lại nhanh chóng hơn khi được gọi.
Windows Phone
Microsoft đã quay ngược 180 độ, họ đã từng có một trong những hệ điều hành đa nhiệm mở nhất là Windows Mobile nhưng giờ đây, Windows Phone 7 lại là hệ điều hành hạn chế nhất. Mục tiêu của họ là thiết kế Windows Phone 7 sao cho người dùng có những trải nghiệm tốt nhất mà không cần đụng đến đa nhiệm.
Khi bạn chuyển qua một chương trình khác, chương trình hiện tại sẽ không bị tắt đi hoàn toàn mà được lưu trạng thái vào bộ nhớ rồi đóng băng tại đó chờ đợi fast-app switching, giống với cách Android và iPhone thực hiện. Giám đốc bộ phận truyền thông di động của Microsoft, ông Aaron Woodman cho biết: "Khi bạn thoát một chương trình nào đó, tài nguyên hệ thống sẽ được giải phóng nếu hệ điều hành yêu cầu nhưng bạn vẫn có thể quay lại ngay vị trí mà mình tắt chương trình. Khi hệ điều hành cần, chương trình sẽ bị đưa vào quá trình dehydrated và sẽ mở lại ngay lập tức khi bạn truy xuất nó, Microsoft gọi quá trình này là rehydrated. Xếp theo mức độ, dehydrated nằm ngay trên tắt tiến trình 1 nấc, nghĩa là rất gần với việc bị tắt rồi.
Giống như các hệ điều hành iPhone trước bản 4.0, các ứng dụng không thể hoạt động nhiều khi nó bị tắt. Lúc này, hệ điều hành chỉ có thể phát ra các cảnh bảo. Nếu bạn từng coi video trình diễn phần mềm Pandora trên Windows Phone 7, đừng mong chương trình nào cũng được đối xử như vậy, chỉ một vài đối tác cao cấp mới được làm điều đó thôi. Microsoft cũng có rất nhiều cách thức thông báo khác nhau, từ tile notificatiion để push các thông tin lên phần Live Tile ở màn hình chủ, toast notification để hiện lên một cửa sổ pop-up, chẳng hạn như là cuộc gọi cho đến raw notification để phát thông báo đến các chương trình.
Bị giới hạn rất nhiều, hầu hết các phần mềm chỉ có thể nhận và gửi thông báo khi bị ẩn xuống. Tất nhiên là các phần mềm từ "đối tác đặc biệt" sẽ có nhiều quyền hạn hơn một chút. Tuy vậy, Woodman cho biết họ có thể sẽ thay đổi cách thức tùy thuộc và bên thứ ba và người dùng.
Thứ Ba, 30 tháng 6, 2015
Phân biệc về đa nhiệm trên Android và iOS
Đa nhiệm trên iOS
Thông thường, ai sử dụng các thiết bị di động của Apple (iPhone, iPad) cũng biết thao tác nhấn đúp phím Home, bên dưới màn hình để hiện ra một danh sách các ứng dụng đang chạy. Người dùng muốn chuyển sang ứng dụng nào chỉ việc nhấn vào ứng dụng đó, hoặc muốn tắt thì chỉ việc giữ biểu tượng bất kỳ một lúc, sau khi trên mỗi biểu tượng ứng dụng hiện lên dấu tròn đỏ, chỉ việc nhắp vào đó là ứng dụng sẽ được đóng lại. Nhiều người cho rằng, đây là hình thức chạy đa nhiệm trên iOS và để tiết kiệm pin, nên tắt bớt các ứng dụng đang chạy theo cách này.
Tuy nhiên, sự thực thì cái gọi là đa nhiệm này không giống như mọi người thường nghĩ. Các ứng dụng hiện ở thanh quản lý tác vụ khi nhấn đúp phím Home thực chất không phải là các ứng dụng đang chạy nền, mà chỉ là danh sách hiển thị các ứng dụng chạy gần đây. Nền tảng hệ điều hành được kiểm soát chặt chẽ của Apple cho phép hãng này hạn chế hầu như tất cả các ứng dụng tiếp tục thực thi mã lệnh của mình một khi phím Home đã được bấm. Hay nói cách khác, khi nhấn phím Home và quay về màn hình chủ, gần như mọi ứng dụng sẽ dừng hoạt động (theo một nghĩa nhất định).
Về cơ bản, iOS quy định 5 mức tình trạng cho một ứng dụng. Mức độ thấp nhất là Không hoạt động (Not Running), đề cập đến việc ứng dụng đã được đóng hoặc chưa từng được mở. Mức độ Chưa kích hoạt (Inactivate) là mức độ mà một ứng dụng đang chạy nhưng không thực thi mã lệnh nào cả. Mức độ Kích hoạt (Active) là mức độ mà một ứng dụng đang chạy hoặc đang được sử dụng trên màn hình.
Khi người dùng nhấn nút Home, ứng dụng đang chạy (mức Kích hoạt) sẽ chuyển về trạng thái chạy nền (mức Chạy nền (Background). Mức Chạy nền là mức mà ứng dụng dù không hiển thị ở màn hình chính nhưng vẫn tiếp tục thực thi lệnh. Tuy nhiên, hầu hết các ứng dụng mức Chạy nền sẽ ngay lập tức chuyển sang mức cuối cùng là mức Chờ (Suspended). Mức Chờ mà mức mà ứng dụng được lưu vào bộ nhớ nhưng không sử dụng bất kỳ tài nguyên nào của vi xử lý, không thực thi bất cứ mã lệnh nào. Nếu thiết bị cần thêm tài nguyên bộ nhớ cho một trò chơi hay một ứng dụng nặng ký, các ứng dụng ở mức Chờ sẽ bị xóa khỏi bộ nhớ.
Apple chỉ cho phép duy trì các tác vụ đang chạy nền được thực thi mã lệnh trong một vài giây trong những trường hợp đặc biệt (như các ứng dụng liên quan đến VoIP, định vị…) và các mã lệnh (API) này được hãng kiểm soát rất chặt chẽ. Các mã lệnh của các ứng dụng này vì thế có thể vẫn chạy và không lệ thuộc vào việc ứng dụng đó có được hiển thị trên thanh quản lý tác vụ hay không. Theo hãng thì một ứng dụng tốt phải là ứng dụng tự chuyển về chế độ Chờ mỗi khi thực thi xong mã lệnh và người dùng không cần thiết phải quan tâm đến việc tìm cách điều khiển quá trình này một khi đã sử dụng hệ điều hành iOS.
Đa nhiệm trên Android
Kể từ hệ điều hành Android 4.0 Ice Cream Sandwich, Google đã thay đổi đang kể cách thức quản lý đa nhiệm của mình. Bằng việc đưa ra Danh sách những ứng dụng đang chạy gần đây, người dùng chỉ việc tắt bằng cách xóa nó khỏi danh sách. Cũng như iOS, nó mang lại cho người dùng cảm giác là mình đang quản lý các tác vụ chạy đa nhiệm, và tắt bớt ứng dụng có thể giải phóng thêm bộ nhớ. Nhưng sự thật không hoàn toàn như vậy.
Danh sách các ứng dụng chạy gần đây chỉ đơn giản đúng là danh sách liệt kê các ứng dụng vừa chạy với hình ảnh thu nhỏ. Chúng đơn giản chỉ có mặt trên danh sách mà không đảm bảo là đang thực sự thực thi một mã lệnh nào đó. Tuy nhiên khác với iOS, khi người dùng bấm nút quay về màn hình chính (Home), ứng dụng đang chạy không ngay lập tức chuyển về trạng thái Chờ mà các tiến trình liên quan đến ứng dụng này vẫn tiếp tục chạy nền, vẫn cho phép ứng dụng thực thi các công việc của nó..
Khi người dùng muốn quay lại ứng dụng họ đã thoát, tiến trình chạy của ứng dụng đó sẽ được khôi phục lên màn hình chính gần như tức thời. Lý tưởng mà nói, một thiết bị Android sẽ không bao giờ bị hết bộ nhớ và tất cả các tiến trình của các ứng dụng đang chạy có thể trú ngụ ở RAM vĩnh viễn. Nhưng trên thực tế, đến một thời điểm nào đó mà thiết bị của bạn thấy thiếu tài nguyên bộ nhớ, cũng như iOS, Android sẽ đóng tất cả các tiến trình đang chạy ảnh hưởng đến tài nguyên. Và khi người dùng quay lại mở ứng dụng bị đóng đó, toàn bộ tiến trình của ứng dụng sẽ phải tải lại từ đầu. Vì thế mặc dù ứng dụng này có thể ở trong danh sách các ứng dụng chạy gần đây nhưng thực ra nó cũng không liên quan tới việc ứng dụng đó có đang chạy nền hay không.
Trong những lần cập nhật gần đây, Android đã đủ thông minh để quản lý tác vụ đa nhiệm thay cho người dùng. Vì thế chẳng có lý do gì mà hệ điều hành này để người dùng can thiệp vào quá trình quản lý tác vụ cả. Các tác động của người dùng sẽ chỉ gây những ảnh hưởng xấu đến quá trình tự động hóa quản lý của Android trong công cuộc làm cho hệ thống chạy trơn tru hơn.
Tuy nhiên, các nhà phát triển vẫn có cách để tạo ra các ứng dụng thực thi mã lệnh khi chạy nền trên Android mà không bị chính hệ điều hành này tắt mất. Nguyên do là cũng như iOS, một số lệnh liên quan đến truyền dẫn thông tin dùng cho các dịch vụ định vị hay đồng bộ luôn được phép chạy nền mà không bao giờ bị tắt. Thêm vào đó, các nhà phát triển cũng có thể tạo ra các ứng dụng luôn duy trì chạy nền dưới dạng các Dịch vụ (Service), và vì thế có thể vượt qua được hạn chế bị hệ thống giải phóng khỏi bộ nhớ. Đây là cơ chế đa nhiệm đặc trưng trên các thiết bị Android. Do các tiến trình thông thường sẽ bị hệ thống giải phóng trước các tiến trình Dịch vụ, các nhà phát triển sẽ làm cho hệ thống nhận thấy mức độ quan trọng của một ứng dụng Dịch vụ bằng cách đưa các dịch vụ này từ chạy nền lên chạy chính trên màn hình thông qua các Thông báo (Notification) dưới dạng các biểu tượng trên thanh thông báo. Người dùng có thể thấy các mẹo này trên những ứng dụng như Locale (thông tin về vị trí hiện tại) hay các ứng dụng chơi nhạc.
Ai nắm quyền điều khiển tác vụ đa nhiệm?
Dù là iOS hay Android, người dùng cũng cần hiểu là hệ điều hành sẽ là người quản lý hầu hết các tác vụ đa nhiệm. iOS sẽ không bao giờ cho phép người dùng tự ý can thiệp vào các tác vụ đang chạy. Các tiến trình ở mức Chờ sẽ bị hệ thống tự động tắt khi cần thiết, không phụ thuộc vào việc ứng dụng đó có ở trên thanh quản lý tác vụ hay không.
Android cũng tương tự, hệ điều hành sẽ đóng tất cả các tiến trình khi thấy không cần thiết nữa, tuy nhiên nó “rộng rãi” hơn iOS là cho các nhà phát triển một số cơ hội tạo ra các ứng dụng chạy nền. Theo đó các tiến trình liên quan đến một ứng dụng khi ở chế độ nền vẫn có thể tự do thực thi lệnh, chỉ bị tắt khi hệ thống thấy bộ nhớ đệm bị đầy. Nếu muốn tạo ra các ứng dụng chạy nền hiệu quả hơn, các nhà phát triển cũng có thể viết các ứng dụng có dùng các lệnh liên quan đến truyền dẫn thông tin (BroadcastReceiver) hay các ứng dụng dưới dạng các Dịch vụ. Và mặc dù giao diện Android 4.0 cho phép người dùng xem hay thêm bớt danh sách các ứng dụng vừa chạy, điều đó cũng không có nghĩa là người dùng có thể kiểm soát các tác vụ đa nhiệm này. Công việc này vẫn sẽ do hệ điều hành tự quyết định.
Tuy nhiên, người dùng cũng không nên quá lo lắng về điều này. Các ứng dụng chạy nền dù là trên iOS hay Android cũng đều được hệ điều hành quản lý theo cách thức hiệu quả nhất. Cả hai nền tảng này sẽ tự biết cách cho phép ứng dụng nào chạy hay tự tắt các tiến trình không cần thiết, và việc người dùng có thêm hay xóa các ứng dụng trên thanh quản lý tác vụ hầu như chả có ích gì ngoài mang lại một chút yên tâm cho mình.
Thông thường, ai sử dụng các thiết bị di động của Apple (iPhone, iPad) cũng biết thao tác nhấn đúp phím Home, bên dưới màn hình để hiện ra một danh sách các ứng dụng đang chạy. Người dùng muốn chuyển sang ứng dụng nào chỉ việc nhấn vào ứng dụng đó, hoặc muốn tắt thì chỉ việc giữ biểu tượng bất kỳ một lúc, sau khi trên mỗi biểu tượng ứng dụng hiện lên dấu tròn đỏ, chỉ việc nhắp vào đó là ứng dụng sẽ được đóng lại. Nhiều người cho rằng, đây là hình thức chạy đa nhiệm trên iOS và để tiết kiệm pin, nên tắt bớt các ứng dụng đang chạy theo cách này.
Tuy nhiên, sự thực thì cái gọi là đa nhiệm này không giống như mọi người thường nghĩ. Các ứng dụng hiện ở thanh quản lý tác vụ khi nhấn đúp phím Home thực chất không phải là các ứng dụng đang chạy nền, mà chỉ là danh sách hiển thị các ứng dụng chạy gần đây. Nền tảng hệ điều hành được kiểm soát chặt chẽ của Apple cho phép hãng này hạn chế hầu như tất cả các ứng dụng tiếp tục thực thi mã lệnh của mình một khi phím Home đã được bấm. Hay nói cách khác, khi nhấn phím Home và quay về màn hình chủ, gần như mọi ứng dụng sẽ dừng hoạt động (theo một nghĩa nhất định).
Về cơ bản, iOS quy định 5 mức tình trạng cho một ứng dụng. Mức độ thấp nhất là Không hoạt động (Not Running), đề cập đến việc ứng dụng đã được đóng hoặc chưa từng được mở. Mức độ Chưa kích hoạt (Inactivate) là mức độ mà một ứng dụng đang chạy nhưng không thực thi mã lệnh nào cả. Mức độ Kích hoạt (Active) là mức độ mà một ứng dụng đang chạy hoặc đang được sử dụng trên màn hình.
Khi người dùng nhấn nút Home, ứng dụng đang chạy (mức Kích hoạt) sẽ chuyển về trạng thái chạy nền (mức Chạy nền (Background). Mức Chạy nền là mức mà ứng dụng dù không hiển thị ở màn hình chính nhưng vẫn tiếp tục thực thi lệnh. Tuy nhiên, hầu hết các ứng dụng mức Chạy nền sẽ ngay lập tức chuyển sang mức cuối cùng là mức Chờ (Suspended). Mức Chờ mà mức mà ứng dụng được lưu vào bộ nhớ nhưng không sử dụng bất kỳ tài nguyên nào của vi xử lý, không thực thi bất cứ mã lệnh nào. Nếu thiết bị cần thêm tài nguyên bộ nhớ cho một trò chơi hay một ứng dụng nặng ký, các ứng dụng ở mức Chờ sẽ bị xóa khỏi bộ nhớ.
Apple chỉ cho phép duy trì các tác vụ đang chạy nền được thực thi mã lệnh trong một vài giây trong những trường hợp đặc biệt (như các ứng dụng liên quan đến VoIP, định vị…) và các mã lệnh (API) này được hãng kiểm soát rất chặt chẽ. Các mã lệnh của các ứng dụng này vì thế có thể vẫn chạy và không lệ thuộc vào việc ứng dụng đó có được hiển thị trên thanh quản lý tác vụ hay không. Theo hãng thì một ứng dụng tốt phải là ứng dụng tự chuyển về chế độ Chờ mỗi khi thực thi xong mã lệnh và người dùng không cần thiết phải quan tâm đến việc tìm cách điều khiển quá trình này một khi đã sử dụng hệ điều hành iOS.
Đa nhiệm trên Android
Kể từ hệ điều hành Android 4.0 Ice Cream Sandwich, Google đã thay đổi đang kể cách thức quản lý đa nhiệm của mình. Bằng việc đưa ra Danh sách những ứng dụng đang chạy gần đây, người dùng chỉ việc tắt bằng cách xóa nó khỏi danh sách. Cũng như iOS, nó mang lại cho người dùng cảm giác là mình đang quản lý các tác vụ chạy đa nhiệm, và tắt bớt ứng dụng có thể giải phóng thêm bộ nhớ. Nhưng sự thật không hoàn toàn như vậy.
Danh sách các ứng dụng chạy gần đây chỉ đơn giản đúng là danh sách liệt kê các ứng dụng vừa chạy với hình ảnh thu nhỏ. Chúng đơn giản chỉ có mặt trên danh sách mà không đảm bảo là đang thực sự thực thi một mã lệnh nào đó. Tuy nhiên khác với iOS, khi người dùng bấm nút quay về màn hình chính (Home), ứng dụng đang chạy không ngay lập tức chuyển về trạng thái Chờ mà các tiến trình liên quan đến ứng dụng này vẫn tiếp tục chạy nền, vẫn cho phép ứng dụng thực thi các công việc của nó..
Khi người dùng muốn quay lại ứng dụng họ đã thoát, tiến trình chạy của ứng dụng đó sẽ được khôi phục lên màn hình chính gần như tức thời. Lý tưởng mà nói, một thiết bị Android sẽ không bao giờ bị hết bộ nhớ và tất cả các tiến trình của các ứng dụng đang chạy có thể trú ngụ ở RAM vĩnh viễn. Nhưng trên thực tế, đến một thời điểm nào đó mà thiết bị của bạn thấy thiếu tài nguyên bộ nhớ, cũng như iOS, Android sẽ đóng tất cả các tiến trình đang chạy ảnh hưởng đến tài nguyên. Và khi người dùng quay lại mở ứng dụng bị đóng đó, toàn bộ tiến trình của ứng dụng sẽ phải tải lại từ đầu. Vì thế mặc dù ứng dụng này có thể ở trong danh sách các ứng dụng chạy gần đây nhưng thực ra nó cũng không liên quan tới việc ứng dụng đó có đang chạy nền hay không.
Trong những lần cập nhật gần đây, Android đã đủ thông minh để quản lý tác vụ đa nhiệm thay cho người dùng. Vì thế chẳng có lý do gì mà hệ điều hành này để người dùng can thiệp vào quá trình quản lý tác vụ cả. Các tác động của người dùng sẽ chỉ gây những ảnh hưởng xấu đến quá trình tự động hóa quản lý của Android trong công cuộc làm cho hệ thống chạy trơn tru hơn.
Tuy nhiên, các nhà phát triển vẫn có cách để tạo ra các ứng dụng thực thi mã lệnh khi chạy nền trên Android mà không bị chính hệ điều hành này tắt mất. Nguyên do là cũng như iOS, một số lệnh liên quan đến truyền dẫn thông tin dùng cho các dịch vụ định vị hay đồng bộ luôn được phép chạy nền mà không bao giờ bị tắt. Thêm vào đó, các nhà phát triển cũng có thể tạo ra các ứng dụng luôn duy trì chạy nền dưới dạng các Dịch vụ (Service), và vì thế có thể vượt qua được hạn chế bị hệ thống giải phóng khỏi bộ nhớ. Đây là cơ chế đa nhiệm đặc trưng trên các thiết bị Android. Do các tiến trình thông thường sẽ bị hệ thống giải phóng trước các tiến trình Dịch vụ, các nhà phát triển sẽ làm cho hệ thống nhận thấy mức độ quan trọng của một ứng dụng Dịch vụ bằng cách đưa các dịch vụ này từ chạy nền lên chạy chính trên màn hình thông qua các Thông báo (Notification) dưới dạng các biểu tượng trên thanh thông báo. Người dùng có thể thấy các mẹo này trên những ứng dụng như Locale (thông tin về vị trí hiện tại) hay các ứng dụng chơi nhạc.
Ai nắm quyền điều khiển tác vụ đa nhiệm?
Dù là iOS hay Android, người dùng cũng cần hiểu là hệ điều hành sẽ là người quản lý hầu hết các tác vụ đa nhiệm. iOS sẽ không bao giờ cho phép người dùng tự ý can thiệp vào các tác vụ đang chạy. Các tiến trình ở mức Chờ sẽ bị hệ thống tự động tắt khi cần thiết, không phụ thuộc vào việc ứng dụng đó có ở trên thanh quản lý tác vụ hay không.
Android cũng tương tự, hệ điều hành sẽ đóng tất cả các tiến trình khi thấy không cần thiết nữa, tuy nhiên nó “rộng rãi” hơn iOS là cho các nhà phát triển một số cơ hội tạo ra các ứng dụng chạy nền. Theo đó các tiến trình liên quan đến một ứng dụng khi ở chế độ nền vẫn có thể tự do thực thi lệnh, chỉ bị tắt khi hệ thống thấy bộ nhớ đệm bị đầy. Nếu muốn tạo ra các ứng dụng chạy nền hiệu quả hơn, các nhà phát triển cũng có thể viết các ứng dụng có dùng các lệnh liên quan đến truyền dẫn thông tin (BroadcastReceiver) hay các ứng dụng dưới dạng các Dịch vụ. Và mặc dù giao diện Android 4.0 cho phép người dùng xem hay thêm bớt danh sách các ứng dụng vừa chạy, điều đó cũng không có nghĩa là người dùng có thể kiểm soát các tác vụ đa nhiệm này. Công việc này vẫn sẽ do hệ điều hành tự quyết định.
Tuy nhiên, người dùng cũng không nên quá lo lắng về điều này. Các ứng dụng chạy nền dù là trên iOS hay Android cũng đều được hệ điều hành quản lý theo cách thức hiệu quả nhất. Cả hai nền tảng này sẽ tự biết cách cho phép ứng dụng nào chạy hay tự tắt các tiến trình không cần thiết, và việc người dùng có thêm hay xóa các ứng dụng trên thanh quản lý tác vụ hầu như chả có ích gì ngoài mang lại một chút yên tâm cho mình.
Thứ Sáu, 3 tháng 4, 2015
Tools DDOS (udp) tham khảo trên whitehat
Giới thiệu công cụ UDP Unicorn
Giới thiệu công cụ UDP Unicorn
Việc sử dụng các công cụ DoS để thử khả năng chịu tải về băng thông đã không còn lạ với những người quản trị hệ thống. Do vậy ở bài này mình sẽ giới thiệu một công cụ để phục vụ nhu cầu đấy.
UDP Unicorn là một công cụ mã nguồn mở mô tả cho một quá trình DoS bằng cách gửi liên tục các gói tin UDP tới mục tiêu. Công cụ này sử dụng Winsock (Windows Sockets – là một đặc điểm kỹ thuật định nghĩa cách thức các phần mềm của Windows truy cập vào dịch vụ mạng, đặc biệt là TCP/IP) để tạo socket và gửi gói tin UDP.
Tính năng của UDP Unicorn
- Sử dụng đa luồng để đồng thời gửi gói tin UDP.
- ICMP send và receive.
- Quét các cổng đang mở.
- Nhắm vào mục tiêu với cổng ngẫu nhiên hoặc tùy chọn và sử dụng gói tin với kích thước ngẫu nhiên.
Hướng dẫn sử dụng công cụ
Trước khi đi vào sử dụng ta cần hiểu xem các thành phần trên giao diện có ý nghĩa là gì ?
- Port : Ta có thể để cổng random hoặc là chọn một cổng đã định sẵn như là cổng SSH, telnet, …
- Packet Size: Tùy chọn kích thước của gói tin hoặc ta cũng có thể để kích thước ngẫu nhiên.
- Threads: Quy định số luồng.
- Sockets per Thread: Quy định số sockets của mỗi luồng.
- Ping Target: Kiểm
- DNS: Xác định địa chỉ IP của mục tiêu.
- Data Sent : Xem tổng dung lượng gói tin đã tạo ra để nhắm tới mục tiêu.
Ngoài ra ta cũng có thể quét các cổng đang mở của mục tiêu bằng cách vào Tools -> Port Scanner.
Giờ ta sẽ bắt tay vào demo một ví dụ cho mọi người dễ hình dung được hơn.
Bước 1: Thiết lập các thông số để bắt đầu thử nghiệm một cuộc tấn công DoS tới mục tiêu: Target, Port, Packet Size, Threads, Sockets per Thread.
Bước 2: Click vào Attack để bắt đầu một cuộc tấn công DoS
Ở đây mình đã thử nghiệm tấn công trong 10s và sử dụng wireshark để bắt các gói tin.
Mọi người có thể download công cụ ở đây:
Link download: http://sourceforge.net/projects/udpunicorn/
Giới thiệu công cụ DoS LOIC
Chào cả nhà!
Hôm nay mình xin giới thiệu công cụ trợ giúp việc thử nghiệm khả năng chịu tải của dịch vụ mạng bằng các cuộc tấn công DoS.
1. Tính năng
Low Orbit Ion Cannon (LOIC) là tool mã nguồn mở trợ giúp trong việc thử nghiệm khả năng chịu tải của dịch vụ mạng bằng các cuộc tấn công DoS, viết bằng C#. LOIC ban đầu được phát triển bởi Praetox Technologies và sau đó đã được phát hành public dưới dạng mã nguồn mở.
LOIC thực hiện một cuộc tấn công DoS theo kiểu flooding với gói tin TCP và UDP làm gián đoạn dịch vụ của máy chủ mục tiêu.
Một số tính năng chính:
· Cho phép tùy chỉnh sử dụng 3 loại gói tin để tấn công khác nhau TCP, UDP, HTTP.
· Sử dụng hình thức DoS, mở ra nhiều kết nối tới máy chủ mục tiêu và gửi liên tục các thông điệp.
· Cho phép tùy chỉnh tốc độ và số thread để sinh gói tin phù hợp với việc test tải của website.
2. Hướng dẫn sử dụng
Bước 1 : Chạy phần mềm.
Bước 2: Nhập URL (Hoặc địa chỉ IP) của trang web trong trường URL và click vào Lock on. Sau đó chọn phương pháp tấn công (TCP, UDP hoặc HTTP). Ở đây sẽ bắt đầu với TCP.

Bước 3: Thay đổi các thông số theo sự lựa chọn của người dùng hoặc để mặc định sau đó nhấn vào “IMMA CHARGIN MAH ”
Một số tùy chọn:
· Timeout: Cho phép bạn chọn thời gian timeout.
· Method: Cho bạn bạn chọn loại gói tin để tấn công.
· TCP/UDP message: Cho phép bạn ghi tin nhắn để gửi tới server của mục tiêu.
· Speed: Cho phép bạn thay đổi tốc độ sinh gói tin để tấn công mục tiêu.
Ý nghĩa của một số thông số ở mục “Attack status”
· IDLE: Nó cho thấy số lượng các threads đang chờ. Số lượng Idle ở đây nên bằng 0 để cuộc tấn công có hiệu quả cao hơn.
· Connecting: Số lượng các Threads đang cố gắng kết nối với máy chủ nạn nhân.
· Requesting: Số lượng các threads được yêu cầu thông tin từ máy chủ nạn nhân.
· Downloaded: Số lần tải dữ liệu đã được bắt đầu từ máy chủ nạn nhân.
· Requested: Số lần máy chủ nạn nhân nhận dữ liệu.
· Failed: Số lần các máy chủ không đáp ứng với các yêu cầu.
3. Kết quả thực nghiệm
Ở đây mình đã thử nghiệm tool này với mục đích xem khả năng nó hoạt động, tốc độ sinh ra gói tin, kích thước gói tin khi tool DoS một website (cụ thể mình sẽ thử nghiệm với google.com.vn).
Cánh mình thực hiện là thử nghiệm tấn công với 3 loại gói tin: HTTP, TCP, UDP. Đối với mỗi loại ta thử nghiệm với các tốc độ khác nhau: nhanh nhất, trung bình, chậm nhất. Và với mỗi mức tốc độ ta thử nghiệm với 3 số luồng khác nhau: 1 threads, 10 Threads, 100 Threads.
| HTTP | 1 luồng | 10 luồng | 100 luồng | ||||||
| Size (bytes) | So gói tin /5s | Số connect | Size | Số gói tin /5s | Số connect | Size | Số gói tin /1s | Số connect | |
| Tốc độ thấp | 66 | 9 | 8 | 66 | 80 | 77 | 66 | 107 | 102 |
| Tốc độ TB | 66 | 8 | 8 | 66 | 81 | 73 | 66 | 119 | 110 |
| Tốc độ nhanh | 66 | 17 | 17 | 66 | 118 | 111 | 66 | 120 | 112 |
Ta thấy tốc độ sinh gói tin HTTP thay đổi thấp khi ta thay đổi tốc độ nhưng khi thay đổi số luồng thì số gói tin có sự thay đổi khác biệt, hơn kém nhau khoảng 4 lần.
Gói tin TCP
| TCP | 1 luồng | 10 luồng | 100 luồng | ||||||
| Size (bytes) | So gói tin /5s | Số connect | Size (bytes) | So gói tin /5s | Số connect | Size (bytes) | So gói tin /5s | Số connect | |
| Tốc độ thấp | 60 | 341 | 60 | 2237 | 60 | 5267 | |||
| Tốc độ TB | 60 | 753 | 60 | 5844 | 60 | 8026 | |||
| Tốc độ nhanh | 60 | 7789 | 60 | 17771 | 60 | 23026 | |||
Ta nhận thấy xét về kích thước gói tin thì không thay đổi nhiều. Nhưng xét về tốc độ sinh gói tin thì khi ta thay đổi tốc độ thì tốc độ sinh gói tin hơn nhau khoảng 4 lần, còn khi thay đổi số luồng thì tốc độ sinh gói tinh khoảng 2 lần.
Gói tin UDP
| UDP | 1 luồng | 10 luồng | 100 luồng | ||||||
| Size (bytes) | So gói tin /5s | Số connect | Size (bytes) | So gói tin /5s | Số connect | Size (bytes) | So gói tin /5s | Số connect | |
| Tốc độ thấp | 74 | 431 | 74 | 2992 | 74 | 3519 | |||
| Tốc độ TB | 74 | 836 | 74 | 7452 | 74 | 8212 | |||
| Tốc độ nhanh | 74 | 845402 | 74 | 1751035 | 74 | 1751905 | |||
Ta nhận thấy cùng với khoảng thời gian như 2 loại gói tin TCP và HTTP thì gói tin UDP sinh ra nhiều hơn rất nhiều so với 2 loại kia. Và số gói tin thay đổi rất nhiều khoảng 10 lần khi thay đổi từ tốc độ trung bình lên đến tốc độ nhanh.
Giới thiệu công cụ XOIC
Chào tất cả mọi người như bài trước mình đã giới thiệu một tools về DoS LOIC. Mọi người có thể xem link ở đâyhttp://whitehat.vn/threads/9506-Gioi...-DoS-LOIC.html. Trong bài này mình sẽ hướng dẫn thêm một tools DoS nữa. Mọi người tham khảo nhé.
1. Tính năng
XOIC là một công cụ để thử nghiệm việc tấn công DoS. Công cụ này tấn công theo hình thức DoS đến bất kỳ một địa chỉ IP, với cổng và giao thức tùy chọn. Công cụ này còn cho phép thử nghiệm với 3 chế độ: Test Mode, SEMDA MESSAGE, MAKE A DoS.
XOIC là một tool thử nghiệm mạnh mẽ hơn tools DoS LOIC (Low orbit cannon). Nguyên nhân là do XOIC đã bỏ qua những thứ liên quan đến hiệu suất tạo gói tin tấn công mục tiêu (ví dụ như yêu cầu truy cập, các message TCP, UDP, ICMP, …). Đồng thời tools này còn hơn LOIC ở chỗ nó cho phép tùy chọn 3 chế độ thử nghiệm phù hợp với mục đích người dùng.
Một số tính năng chính:
- Thử nghiệm khả năng chịu tải của dịch vụ bằng hình thức DoS.
- Cho phép khả năng tùy chọn các loại gói tin để tấn công: TCP, UDP, ICMP.
- Thử nghiệm theo 3 chế độ phù hợp với nhu cầu người dùng.
Ø TEST MODE: chế độ kiểm tra cho bạn biết thời gian máy chủ đáp ứng được số request được tạo ra từ bạn.
Ø SEMDA MESSAGE: tấn công DoS cho phép tùy chọn message các gói tin TCP/UDP/ICMP.
Ø MAKE A DoS: chế độ tấn công DoS – Normal (Không yêu cầu truy cập và mặc định message cho các gói tin HTTP TCP UDP ICMP).
2. Hướng dẫn sử dụng
Bước 1: Chạy phần mềm.
Bước 2: Nhập địa chỉ IP của mục tiêu vào ô IP và cổng để tấn công.
Bước 3: Chọn kiểu gói tin TCP, UDP, HTTP.
Bước 4: Chọn chế độ tấn công:
- TEST MODE.
- SEMDA MESSAGE.
- MAKE A DoS.
3. Kết quả thực nghiệm
Ở đây tôi đã thử nghiệm tool này với mục đích xem khả năng nó hoạt động, số lượng mỗi gói tin sinh ra, kích thước gói tin ở mỗi loại TCP, UDP, ICMP với 3 chế độ tấn công TEST MODE, SEMDA MESSAGE, MAKE A DoS.
Ở đây mình thử nghiệm DoS tên miền google.com.vn và sử dụng wireshark để bắt các gói tin được tạo ra và tập chung xem đây là loại gói tin gì ? kích thước như thế nào ? số lượng bao nhiêu ?
Đối với chệ độ TEST MODE đây là chế độ kiểm tra cho bạn biết thời gian máy chủ đáp ứng được số request được tạo ra từ bạn.
Kết quả:
| Test Mode | |||
| Size (bytes) | Thời gian đáp ứng | Số connect | |
| TCP | 66 | 33s | 10000 |
| UDP | 49 | 1s | 10000 |
| ICMP | 42 | 20s | 10000 |
Ta thấy đối với 2 loại gói tin là TCP và ICMP thì thời gian đáp ứng với 2 loại này là tương đương với nhau. Còn với gói tin UDP thì thời gian đáp ứng là tương đối nhanh nhỏ hơn hoặc bằng 1s đối với 10000 connect.
Đối với chế độ SEMDA MESSAGE và MAKE A DoS ta có kết quả thực nghiệm số lượng gói tin sinh ra và kích thước gói tin.
| Send Message | Make A DoS | |||||
| Size (bytes) | Số gói tin/10s | Size(bytes) | Số gói tin /10s | |||
| TCP | 63 | 342 | 66 | 298 | ||
| UDP | 51 | 66102 | 51 | 60494 | ||
Từ kết quả thực nghiệm ta nhận thấy khi thử nghiệm chế độ Send Message nếu ta để mặc định thì cả về kích thước hay tốc độ sinh gói tin cũng gần tương đương với Make A DoS. Và còn một điều lưu ý khi thử nghiệm đối với gói tin UDP ở cả hai chế độ Send Message và Make A DoS, nó sẽ gây ảnh hưởng tới mạng lan mà bạn đang ở trong đấy để để thử nghiệm, khiến việc truy cập mạng của các máy tính khác bị chậm, do vậy mọi người lưu ý khi sử dụng tool này.
Download: http://sourceforge.net/projects/xoic/
Thứ Ba, 10 tháng 3, 2015
Thứ Tư, 4 tháng 3, 2015
Thứ Sáu, 16 tháng 1, 2015
Thứ Tư, 12 tháng 11, 2014
Đăng ký:
Bài đăng (Atom)