Sul cellulare esiste un motivo per cui i processi sono spesso di breve durata e devono persistere esplicitamente nel loro stato?

7

La maggior parte delle piattaforme mobili (come Android, iOS, Windows Phone 7 e credo che il nuovo WinRT) può uccidere i processi di applicazioni inattivi sotto pressione di memoria. Per evitare che ciò influisca sull'esperienza utente, le applicazioni dovrebbero salvare e ripristinare il loro stato man mano che il loro processo viene ucciso e riavviato.

Avere processi di applicazione uccisi in questo modo rende gli sviluppatori più difficili.

In varie occasioni ho visto un'app mobile che avrebbe:

  • Torna alla schermata di benvenuto ogni volta che torno ad esso.
  • Arresto anomalo del sistema quando torno ad esso (probabilmente accedendo ad uno stato che non esiste più dopo la morte del processo)
  • Si comporta male quando torno indietro (a volte richiede un riavvio o task killer da risolvere)
  • In caso contrario si comporterebbe diversamente in modo difficile da riprodurre (ad esempio, il servizio Android è stato ucciso e riavviato al momento errato )

Non capisco davvero perché questi sistemi operativi mobili siano progettati per uccidere le attività in questo modo, soprattutto perché rende lo sviluppo di applicazioni più difficile e soggetto a errori.

I sistemi operativi desktop non uccidono processi del genere. Scambiano le pagine di memoria inutilizzate nella memoria di massa. C'è una ragione per cui lo stesso approccio non viene utilizzato sui dispositivi mobili? L'hardware mobile è solo alcuni anni dietro l'hardware del PC in termini di prestazioni.

Sono sicuro che ci sono ottime ragioni per cui i sistemi operativi mobili sono progettati in questo modo. Se riesci a indicarmi un articolo o un post sul blog che spieghi questi motivi o possa darmi qualche idea, lo apprezzerei molto.

    
posta Alex Jasmin 07.06.2012 - 07:56
fonte

5 risposte

17

Per la maggior parte degli utenti, la funzione principale di uno smartphone è quella di un telefono, seguita dalla ricezione di messaggi di testo e dalla ricezione di e-mail. I progettisti di un sistema operativo smart phone devono garantire che nessuna applicazione possa interferire con queste funzioni primarie.

L'altro vincolo del cellulare è la durata della batteria, qualsiasi app che "gira" in background consumerà corrente e accorcerà la durata della batteria. I progettisti di un sistema operativo per smartphone devono assicurarsi che tutte le applicazioni che non sono attualmente in uso vengano messe a riposo, in modo che la durata della batteria possa essere estesa.

    
risposta data 07.06.2012 - 09:07
fonte
9
  • Durata della batteria: molte applicazioni in esecuzione in background consumano la batteria molto velocemente.
  • Memoria disponibile
  • Processore
  • Schermata piccola
  • Ho parlato della durata della batteria? :)

Ecco un articolo su questa funzione sulla piattaforma Windows Phone. Inizia spiegando il motivo per cui questo è un "male necessario": Questioni mobili - Windows Phone 7 Tombstoning

A good mobile platform should acknowledge the hardware constraints that mobility imposes on the device. Compared to desktops, mobile devices have less memory, less processing power, limited screen real-estate and limited battery life. Add up these constraints and you should conclude that, on a non-dedicated device where many applications will run, applications will eventually be closed or shut down to make resources available to other applications...

    
risposta data 07.06.2012 - 09:25
fonte
5

Non è un compito facile completamente ibernare e risvegliare un processo anche sul sistema operativo desktop. Oltre alle pagine di memoria, i processi necessitano di altre risorse per funzionare correttamente - connessioni di rete, file locali, blocchi, semafori, ecc. - tutti i tipi di oggetti dello spazio del kernel / utente che è necessario considerare. E la lista sta crescendo. Penso che questo risponda al motivo per cui le app sono necessarie per gestire autonomamente il problema di dump & restore.

Sospendi un processo nella domanda Linux da StackOverflow

    
risposta data 07.06.2012 - 11:43
fonte
2

Quindi, vuoi una quantità infinita di spazio di swap per memorizzare in modo persistente gli stati delle app? Non puoi garantire che l'utente abbia anche una scheda di memoria installata, quindi dove proponi di archiviare lo stato di un'app caricata 23 ore fa, di eseguire per 30 secondi e di generare 2Mb di dati?

Inoltre, quanta energia della batteria ci vorrà per spostare costantemente queste informazioni?

Il confronto tra la progettazione di sistemi operativi mobili e la progettazione di sistemi operativi desktop sembra un po 'sciocco. Voglio dire, con un sistema operativo desktop puoi (praticamente) garantire che hai una potenza illimitata e (rispetto agli smartphone) infinitamente più memoria e capacità di archiviazione.

Suppongo che il problema principale con l'implementazione del multitasking tradizionale (desktop) su uno smartphone sia che potremmo finire con il thrashing - quando lo storage / ram / swap scarseggia, che potrebbe portare ad un panico del kernel. questo sarebbe disastroso su uno smartphone.

    
risposta data 07.06.2012 - 12:51
fonte
1

Lo swapping va in qualche modo verso la risoluzione del problema, ma non è necessariamente una soluzione completa. Ecco alcuni motivi per cui potresti non voler scambiare:

  • Quando lo spazio di swap si riduce, dovresti comunque uccidere le app e gestire il loro potenziale bug. Potresti parzialmente mitigare ciò riservando dello spazio sul flash per lo scambio, ma poi stai prendendo quello spazio lontano dagli utenti.
  • Alcuni tipi di memoria non possono essere scambiati. La memoria normalmente dipende dal sistema operativo. Un esempio potrebbe essere un'applicazione di galleria che utilizza l'accelerazione hardware per ridimensionare le foto: in tal caso, una parte considerevole della sua memoria potrebbe non essere scambiabile perché è mappata nella GPU.
  • Lo swapping costa energia e un po 'di tempo (anche se non è molto), mentre le app di uccisione normalmente risparmiano energia.

Un altro motivo (anche se questa è solo speculazione) potrebbe essere che se si esaurisce lo swap e le app che normalmente si comportano bene iniziano a comportarsi in modo anomalo perché si devono uccidere, gli utenti percepiranno che si tratta di un problema con il sistema operativo. Se alcune app si comportano sempre male perché le uccidi sempre e non riescono a gestirle, è più probabile che gli utenti la vedano come un bug nell'app.

    
risposta data 07.06.2012 - 22:30
fonte

Leggi altre domande sui tag